anders 01/04/03 09:37:43
Modified: src/java/org/apache/log4j AppenderSkeleton.java
AsyncAppender.java ConsoleAppender.java
DailyRollingFileAppender.java HTMLLayout.java
PatternLayout.java RollingFileAppender.java
SimpleLayout.java TTCCLayout.java
src/java/org/apache/log4j/helpers DateLayout.java
OnlyOnceErrorHandler.java
src/java/org/apache/log4j/net JMSAppender.java
SMTPAppender.java SocketAppender.java
SyslogAppender.java
src/java/org/apache/log4j/nt NTEventLogAppender.java
src/java/org/apache/log4j/spi OptionHandler.java
src/java/org/apache/log4j/varia DenyAllFilter.java
ExternallyRolledFileAppender.java
PriorityMatchFilter.java StringMatchFilter.java
src/java/org/apache/log4j/xml XMLLayout.java
Log:
Reinserted now deprecated OptionHandler methods setOptions() and
getOptionStrings() for backwards compatibility.
Revision Changes Path
1.12 +2 -1 jakarta-log4j/src/java/org/apache/log4j/AppenderSkeleton.java
Index: AppenderSkeleton.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/AppenderSkeleton.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- AppenderSkeleton.java 2001/03/21 22:03:36 1.11
+++ AppenderSkeleton.java 2001/04/03 16:37:06 1.12
@@ -188,7 +188,8 @@
additional options they accept.
@deprecated We now use JavaBeans introspection to configure
- components. Options strings are no longer needed. */
+ components. Options strings are no longer needed.
+ */
public
String[] getOptionStrings() {
return new String[] {THRESHOLD_OPTION};
1.14 +85 -0 jakarta-log4j/src/java/org/apache/log4j/AsyncAppender.java
Index: AsyncAppender.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/AsyncAppender.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- AsyncAppender.java 2001/03/21 21:33:51 1.13
+++ AsyncAppender.java 2001/04/03 16:37:07 1.14
@@ -43,6 +43,33 @@
public class AsyncAppender extends AppenderSkeleton
implements AppenderAttachable {
+ /**
+ A string constant used in naming the option for setting the
+ location information flag. Current value of this string
+ constant is <b>LocationInfo</b>.
+
+ <p>Note that all option keys are case sensitive.
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+ */
+ public static final String LOCATION_INFO_OPTION = "LocationInfo";
+
+
+ /**
+ A string constant used in naming the option for setting the size of the
+ internal buffer where logging events are stored until they are written.
+ Current value of this string constant is <b>BufferSize</b>.
+
+ <p>Note that all option keys are case sensitive.
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+ */
+ public static final String BUFFER_SIZE_OPTION = "BufferSize";
+
/** The default buffer size is set to 128 events. */
public static final int DEFAULT_BUFFER_SIZE = 128;
@@ -201,6 +228,64 @@
public
int getBufferSize() {
return bf.getMaxSize();
+ }
+
+ /**
+ Returns the option names for this component in addition in
+ addition to the options of its super class {@link
+ AppenderSkeleton}.
+
+ @deprecated We now use JavaBeans introspection to configure
+ components. Options strings are no longer needed.
+ */
+ public
+ String[] getOptionStrings() {
+ return OptionConverter.concatanateArrays(super.getOptionStrings(),
+ new String[] {LOCATION_INFO_OPTION, BUFFER_SIZE_OPTION});
+ }
+
+ /**
+ Set AsyncAppender specific options:
+
+ <p>On top of the options of the super class {@link
+ AppenderSkeleton}, the only recognized options are
+ <b>BufferSize</b> and <b>LocationInfo</b>.
+
+ <p> The <b>BufferSize</b> option takes a non-negative integer
+ value. This integer value determines the maximum size of the
+ bounded buffer. Increasing the size of the buffer is always
+ safe. However, if an existing buffer holds unwritten elements,
+ then <em>decreasing the buffer size will result in event
+ loss.</em> Nevertheless, while script configuring the
+ AsyncAppender, it is safe to set a buffer size smaller than the
+ {@link #DEFAULT_BUFFER_SIZE default buffer size} because
+ configurators guarantee that an appender cannot be used before
+ being completely configured.
+
+ <p>The <b>LocationInfo</b> option takes a boolean value. By
+ default, it is set to false which means there will be no effort
+ to extract the location information related to the event. As a
+ result, the event that will be ultimately logged will likely to
+ contain the wrong location information (if present in the log
+ format).
+
+ <p>Location information extraction is comparatively very slow and
+ should be avoided unless performance is not a concern.
+
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+ */
+ public
+ void setOption(String option, String value) {
+ if(value == null) return;
+ super.setOption(option, value);
+
+ if (option.equals(LOCATION_INFO_OPTION))
+ locationInfo = OptionConverter.toBoolean(value, locationInfo);
+ else if (option.equals(BUFFER_SIZE_OPTION)) {
+ int newSize = OptionConverter.toInt(value, DEFAULT_BUFFER_SIZE);
+ bf.resize(newSize);
+ }
}
/*
1.6 +4 -2 jakarta-log4j/src/java/org/apache/log4j/ConsoleAppender.java
Index: ConsoleAppender.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/ConsoleAppender.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ConsoleAppender.java 2001/03/21 23:16:57 1.5
+++ ConsoleAppender.java 2001/04/03 16:37:07 1.6
@@ -24,8 +24,10 @@
public static final String SYSTEM_ERR = "System.err";
/**
- @deprecated We now use JavaBeans introspection to configure
- components. Options strings are no longer needed. */
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+ */
public static final String TARGET_OPTION = "Target";
protected String target = SYSTEM_OUT;
1.11 +49 -2
jakarta-log4j/src/java/org/apache/log4j/DailyRollingFileAppender.java
Index: DailyRollingFileAppender.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/DailyRollingFileAppender.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- DailyRollingFileAppender.java 2001/03/21 23:30:17 1.10
+++ DailyRollingFileAppender.java 2001/04/03 16:37:08 1.11
@@ -146,12 +146,17 @@
A string constant used in naming the option for setting the
filename pattern. Current value of this string constant is
<strong>DatePattern</strong>.
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
*/
- //static final public String DATE_PATTERN_OPTION = "DatePattern";
+ static final public String DATE_PATTERN_OPTION = "DatePattern";
/**
The date pattern. By default, the pattern is set to
- "'.'yyyy-MM-dd" meaning daily rollover. */
+ "'.'yyyy-MM-dd" meaning daily rollover.
+ */
private String datePattern = "'.'yyyy-MM-dd";
/**
@@ -207,6 +212,48 @@
return datePattern;
}
+ /**
+ Retuns the option names for this component, namely {@link
+ #DATE_PATTERN_OPTION} in
+ addition to the options of {@link FileAppender#getOptionStrings
+ FileAppender}.
+
+ @deprecated We now use JavaBeans introspection to configure
+ components. Options strings are no longer needed.
+
+ */
+ public
+ String[] getOptionStrings() {
+ return OptionConverter.concatanateArrays(super.getOptionStrings(),
+ new String[] {DATE_PATTERN_OPTION});
+ }
+
+ /**
+ Set the options for the {@link DailyRollingFileAppender}
+ instance.
+
+ <p>The <b>DatePattern</b> takes a string in the same format as
+ expected by {@link SimpleDateFormat}. This options determines the
+ rollover schedule.
+
+ <p>Be sure to refer to the options in the super classes {@link
+ FileAppender}, {@link WriterAppender} and in particular the
+ <b>Threshold</b> option in {@link AppenderSkeleton}.
+
+ </ul>
+
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+ */
+ public
+ void setOption(String key, String value) {
+ if(value == null) return;
+ super.setOption(key, value);
+ if(key.equalsIgnoreCase(DATE_PATTERN_OPTION)) {
+ datePattern = value;
+ }
+ }
+
public
void activateOptions() {
super.activateOptions();
1.15 +52 -0 jakarta-log4j/src/java/org/apache/log4j/HTMLLayout.java
Index: HTMLLayout.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/HTMLLayout.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- HTMLLayout.java 2001/03/28 16:30:24 1.14
+++ HTMLLayout.java 2001/04/03 16:37:08 1.15
@@ -29,9 +29,61 @@
// output buffer appended to when format() is invoked
private StringBuffer sbuf = new StringBuffer(BUF_SIZE);
+ /**
+ A string constant used in naming the option for setting the the
+ location information flag. Current value of this string
+ constant is <b>LocationInfo</b>.
+
+ <p>Note that all option keys are case sensitive.
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+
+ */
+ public static final String LOCATION_INFO_OPTION = "LocationInfo";
+
// Print no location info by default
boolean locationInfo = false;
+ /**
+ Returns a String consisting of one element {@link
+ #LOCATION_INFO_OPTION}.
+
+ @deprecated We now use JavaBeans introspection to configure
+ components. Options strings are no longer needed.
+ */
+ public
+ String[] getOptionStrings() {
+ return new String[] {LOCATION_INFO_OPTION};
+ }
+
+ /**
+ Set HTMLLayout specific options.
+
+ <p>The <b>LocationInfo</b> option takes a boolean value. By
+ default, it is set to false which means there will be no location
+ information output by this layout. If the the option is set to
+ true, then the file name and line number of the statement
+ at the origin of the log statement will be output.
+
+ <p>If you are embedding this layout within an {@link
+ org.apache.log4j.net.SMTPAppender} then make sure to set the
+ <b>LocationInfo</b> option of that appender as well.
+
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+
+ */
+ public
+ void setOption(String key, String value) {
+ if(value == null) return;
+
+ if (key.equals(LOCATION_INFO_OPTION)) {
+ locationInfo = OptionConverter.toBoolean(value, locationInfo);
+ }
+ }
+
/**
The <b>LocationInfo</b> option takes a boolean value. By
default, it is set to false which means there will be no location
1.8 +60 -0 jakarta-log4j/src/java/org/apache/log4j/PatternLayout.java
Index: PatternLayout.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/PatternLayout.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- PatternLayout.java 2001/03/19 12:38:18 1.7
+++ PatternLayout.java 2001/04/03 16:37:09 1.8
@@ -378,6 +378,20 @@
@since 0.8.2 */
public class PatternLayout extends Layout {
+ /**
+ A string constant used in naming the option for setting the
+ layout pattern. Current value of this string constant is
+ <b>ConversionPattern</b>.
+
+ <p>Note that the search for all option keys is case sensitive.
+
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+ */
+ final static public String CONVERSION_PATTERN_OPTION = "ConversionPattern";
+
/** Default pattern string for log output. Currently set to the
string <b>"%m%n"</b> which just prints the application supplied
message. */
@@ -418,6 +432,52 @@
this.pattern = pattern;
head = createPatternParser((pattern == null) ? DEFAULT_CONVERSION_PATTERN :
pattern).parse();
+ }
+
+ /**
+ Returns the the array of option strings that {@link
+ PatternLayout} recognizes. The only recognized option string is
+ the value of {@link #CONVERSION_PATTERN_OPTION}.
+
+ @deprecated We now use JavaBeans introspection to configure
+ components. Options strings are no longer needed.
+ */
+ public
+ String[] getOptionStrings() {
+ return new String[] {CONVERSION_PATTERN_OPTION};
+ }
+
+ /**
+ The PatternLayout specific options are:
+
+ <p>
+ <dl>
+ <dt><b>ConversionPattern</b>
+
+ <p><dd>The value determines the conversion pattern used.
+
+ </dl>
+
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+
+ */
+ public
+ void setOption(String option, String value) {
+ if(value == null)
+ return;
+ if(option.equalsIgnoreCase(CONVERSION_PATTERN_OPTION)) {
+ pattern = value;
+ head = createPatternParser(value).parse();
+ }
+ //else if(option.equals(TIMEZONE_OPTION)) {
+ //try {
+ //timezone = OptionConverter.substituteVars(value);
+ //}
+ //catch(IllegalArgumentException e) {
+ //LogLog.error("Could not substitute variables." , e);
+ //}
+ //}
}
/**
1.8 +56 -0 jakarta-log4j/src/java/org/apache/log4j/RollingFileAppender.java
Index: RollingFileAppender.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/RollingFileAppender.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- RollingFileAppender.java 2001/03/20 13:21:48 1.7
+++ RollingFileAppender.java 2001/04/03 16:37:10 1.8
@@ -32,6 +32,29 @@
*/
public class RollingFileAppender extends FileAppender {
/**
+ A string constant used in naming the option for setting the
+ maximum size of the log file. Current value of this string constant is
+ <b>MaxFileSize</b>.
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+
+ */
+ static final public String MAX_FILE_SIZE_OPTION = "MaxFileSize";
+
+ /**
+ A string constant used in naming the option for setting the the
+ number of backup files to retain. Current value of this string
+ constant is <b>MaxBackupIndex</b>.
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+ */
+ static final public String MAX_BACKUP_INDEX_OPTION = "MaxBackupIndex";
+
+ /**
The default maximum file size is 10MB.
*/
protected long maxFileSize = 10*1024*1024;
@@ -73,6 +96,39 @@
public
RollingFileAppender(Layout layout, String filename) throws IOException {
super(layout, filename);
+ }
+
+ /**
+ Retuns the option names for this component, namely {@link
+ #MAX_FILE_SIZE_OPTION} and {@link #MAX_BACKUP_INDEX_OPTION} in
+ addition to the options of {@link FileAppender#getOptionStrings}
+
+
+ @deprecated We now use JavaBeans introspection to configure
+ components. Options strings are no longer needed.
+ FileAppender}. */
+ public
+ String[] getOptionStrings() {
+
+ return OptionConverter.concatanateArrays(super.getOptionStrings(),
+ new String[] {MAX_FILE_SIZE_OPTION, MAX_BACKUP_INDEX_OPTION});
+ }
+
+ /**
+
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+
+ */
+ public
+ void setOption(String key, String value) {
+ super.setOption(key, value);
+ if(key.equalsIgnoreCase(MAX_FILE_SIZE_OPTION)) {
+ maxFileSize = OptionConverter.toFileSize(value, maxFileSize + 1);
+ }
+ else if(key.equalsIgnoreCase(MAX_BACKUP_INDEX_OPTION)) {
+ maxBackupIndex = OptionConverter.toInt(value, maxBackupIndex);
+ }
}
/**
1.6 +9 -0 jakarta-log4j/src/java/org/apache/log4j/SimpleLayout.java
Index: SimpleLayout.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/SimpleLayout.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- SimpleLayout.java 2001/03/19 12:38:18 1.5
+++ SimpleLayout.java 2001/04/03 16:37:10 1.6
@@ -28,6 +28,15 @@
}
public
+ String[] getOptionStrings() {
+ return new String[0];
+ }
+
+ public
+ void setOption(String option, String value) {
+ }
+
+ public
void activateOptions() {
}
1.8 +48 -3 jakarta-log4j/src/java/org/apache/log4j/TTCCLayout.java
Index: TTCCLayout.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/TTCCLayout.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- TTCCLayout.java 2001/03/19 12:38:18 1.7
+++ TTCCLayout.java 2001/04/03 16:37:11 1.8
@@ -69,9 +69,26 @@
*/
public class TTCCLayout extends DateLayout {
- //final static public String THREAD_PRINTING_OPTION = "ThreadPrinting";
- //final static public String CATEGORY_PREFIXING_OPTION = "CategoryPrefixing";
- //final static public String CONTEXT_PRINTING_OPTION = "ContextPrinting";
+ /**
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+ */
+ final static public String THREAD_PRINTING_OPTION = "ThreadPrinting";
+
+ /**
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+ */
+ final static public String CATEGORY_PREFIXING_OPTION = "CategoryPrefixing";
+
+ /**
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+ */
+ final static public String CONTEXT_PRINTING_OPTION = "ContextPrinting";
// Internal representation of options
@@ -107,6 +124,34 @@
this.setDateFormat(dateFormatType);
}
+ /**
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+ */
+ public
+ String[] getOptionStrings() {
+ return OptionConverter.concatanateArrays(super.getOptionStrings(),
+ new String[] {THREAD_PRINTING_OPTION, CATEGORY_PREFIXING_OPTION,
+ CONTEXT_PRINTING_OPTION});
+
+ }
+
+ /**
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+ */
+ public
+ void setOption(String key, String value) {
+ super.setOption(key, value);
+
+ if(key.equalsIgnoreCase(THREAD_PRINTING_OPTION))
+ threadPrinting = OptionConverter.toBoolean(value, threadPrinting);
+ else if(key.equalsIgnoreCase(CATEGORY_PREFIXING_OPTION))
+ categoryPrefixing = OptionConverter.toBoolean(value, categoryPrefixing);
+ else if(key.equalsIgnoreCase(CONTEXT_PRINTING_OPTION))
+ contextPrinting = OptionConverter.toBoolean(value, contextPrinting);
+ }
+
/**
The <b>ThreadPrinting</b> option specifies whether the name of the
current thread is part of log output or not. This is true by default.
1.5 +35 -2 jakarta-log4j/src/java/org/apache/log4j/helpers/DateLayout.java
Index: DateLayout.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/helpers/DateLayout.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- DateLayout.java 2001/03/19 12:38:19 1.4
+++ DateLayout.java 2001/04/03 16:37:19 1.5
@@ -45,8 +45,19 @@
protected FieldPosition pos = new FieldPosition(0);
- //final static public String DATE_FORMAT_OPTION = "DateFormat";
- //final static public String TIMEZONE_OPTION = "TimeZone";
+ /**
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+ */
+ final static public String DATE_FORMAT_OPTION = "DateFormat";
+
+ /**
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+ */
+ final static public String TIMEZONE_OPTION = "TimeZone";
private String timeZoneID;
private String dateFormatOption;
@@ -54,6 +65,28 @@
protected DateFormat dateFormat;
protected Date date = new Date();
+ /**
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+ */
+ public
+ String[] getOptionStrings() {
+ return new String[] {DATE_FORMAT_OPTION, TIMEZONE_OPTION};
+ }
+
+ /**
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+ */
+ public
+ void setOption(String option, String value) {
+ if(option.equalsIgnoreCase(DATE_FORMAT_OPTION)) {
+ dateFormatOption = value.toUpperCase();
+ } else if(option.equalsIgnoreCase(TIMEZONE_OPTION)) {
+ timeZoneID = value;
+ }
+ }
+
/**
The value of the <b>DateFormat</b> option should be either an
1.6 +22 -0
jakarta-log4j/src/java/org/apache/log4j/helpers/OnlyOnceErrorHandler.java
Index: OnlyOnceErrorHandler.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/helpers/OnlyOnceErrorHandler.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- OnlyOnceErrorHandler.java 2001/03/19 12:38:19 1.5
+++ OnlyOnceErrorHandler.java 2001/04/03 16:37:20 1.6
@@ -32,6 +32,28 @@
boolean firstTime = true;
/**
+ Returns <code>null</code> as <code>OnlyOnceErrorHandler</code>
+ has no options.
+
+ @deprecated We now use JavaBeans introspection to configure
+ components. Options strings are no longer needed.
+ */
+ public
+ String[] getOptionStrings() {
+ return null;
+ }
+
+ /**
+ No options to set.
+
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+ */
+ public
+ void setOption(String key, String value) {
+ }
+
+ /**
No options to activate.
*/
public
1.10 +79 -0 jakarta-log4j/src/java/org/apache/log4j/net/JMSAppender.java
Index: JMSAppender.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/net/JMSAppender.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- JMSAppender.java 2001/03/19 12:38:19 1.9
+++ JMSAppender.java 2001/04/03 16:37:23 1.10
@@ -27,6 +27,36 @@
@author Ceki Gülcü
*/
public class JMSAppender extends AppenderSkeleton {
+ /**
+ A string constant used in naming the topic connection factory
+ binding name option. output file. Current value of this string
+ constant is <b>TopicConnectionFactoryBindingName</b>.
+
+ <p>Note that all option keys are case sensitive.
+
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+
+ */
+ public static final String TOPIC_CONNECTION_FACTORY_BINDING_NAME_OPTION
+ =
"TopicConnectionFactoryBindingName";
+
+ /**
+ A string constant used in naming the topic binding name option.
+ Current value of this string constant is <b>TopicBindingName</b>.
+
+ <p>Note that all option keys are case sensitive.
+
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+
+ */
+ public static final String TOPIC_BINDING_NAME_OPTION = "TopicBindingName";
+
TopicConnection topicConnection;
TopicSession topicSession;
TopicPublisher topicPublisher;
@@ -37,6 +67,55 @@
JMSAppender() {
}
+ /**
+ Retuns the option names for this component, namely the string
+ array {@link #TOPIC_BINDING_NAME_OPTION}, {@link
+ #TOPIC_CONNECTION_FACTORY_BINDING_NAME_OPTION} in addition to the
+ options of its super class {@link AppenderSkeleton}.
+
+ @deprecated We now use JavaBeans introspection to configure
+ components. Options strings are no longer needed.
+ */
+
+ public
+ String[] getOptionStrings() {
+ return OptionConverter.concatanateArrays(super.getOptionStrings(),
+ new String[] {TOPIC_BINDING_NAME_OPTION,
+ TOPIC_CONNECTION_FACTORY_BINDING_NAME_OPTION});
+ }
+
+ /**
+ Set <code>JMSAppender</code> specific options.
+
+ The options of the super class {@link AppenderSkeleton} are also
+ recognized.
+
+ <p>The <b>TopicConnectionFactoryBindingName</b> option takes a
+ string value. Its value will be used to lookup the appropriate
+ <code>TopicConnectionFactory</code> from the JNDI context.
+
+ <p>The <b>TopicBindingName</b> option takes a
+ string value. Its value will be used to lookup the appropriate
+ <code>Topic</code> from the JNDI context.
+
+
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+
+ */
+
+ public
+ void setOption(String key, String value) {
+ if(value == null) return;
+ super.setOption(key, value);
+
+ if(key.equals(TOPIC_BINDING_NAME_OPTION))
+ topicBindingName = value;
+ else if(key.equals(TOPIC_CONNECTION_FACTORY_BINDING_NAME_OPTION)) {
+ tcfBindingName = value;
+ }
+ }
+
/**
The <b>TopicConnectionFactoryBindingName</b> option takes a
string value. Its value will be used to lookup the appropriate
1.22 +16 -0 jakarta-log4j/src/java/org/apache/log4j/net/SMTPAppender.java
Index: SMTPAppender.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/net/SMTPAppender.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- SMTPAppender.java 2001/03/28 16:30:28 1.21
+++ SMTPAppender.java 2001/04/03 16:37:24 1.22
@@ -166,6 +166,22 @@
this.evaluator = evaluator;
}
+ /**
+ Retuns the option names for this component in addition in
+ addition to the options of its super class {@link
+ AppenderSkeleton}.
+
+ @deprecated We now use JavaBeans introspection to configure
+ components. Options strings are no longer needed.
+ */
+ public
+ String[] getOptionStrings() {
+ return OptionConverter.concatanateArrays(super.getOptionStrings(),
+ new String[] {TO_OPTION, FROM_OPTION, SUBJECT_OPTION,
+ SMTP_HOST_OPTION, BUFFER_SIZE_OPTION,
+ EVALUATOR_CLASS_OPTION, LOCATION_INFO_OPTION });
+ }
+
/**
Activate the specified options, such as the smtp host, the
1.8 +95 -0 jakarta-log4j/src/java/org/apache/log4j/net/SocketAppender.java
Index: SocketAppender.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/net/SocketAppender.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- SocketAppender.java 2001/03/19 12:38:20 1.7
+++ SocketAppender.java 2001/04/03 16:37:25 1.8
@@ -97,6 +97,62 @@
public class SocketAppender extends AppenderSkeleton {
/**
+ A string constant used in naming the option for setting the the
+ host name of the remote server. Current value of this string
+ constant is <b>RemoteHost</b>. See the {@link #setOption} method
+ for the meaning of this option.
+
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+
+ */
+ public static final String REMOTE_HOST_OPTION = "RemoteHost";
+
+ /**
+ A string constant used in naming the option for setting the the
+ port to contect on the remote server. Current value of this string
+ constant is <b>Port</b>. See the {@link #setOption} method
+ for the meaning of this option.
+
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+
+ */
+ public static final String PORT_OPTION = "Port";
+
+ /**
+ A string constant used in naming the option for setting the the
+ location information flag. Current value of this string
+ constant is <b>LocationInfo</b>. See the {@link #setOption} method
+ for the meaning of this option.
+
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+
+ */
+ public static final String LOCATION_INFO_OPTION = "LocationInfo";
+
+ /**
+ A string constant used in naming the option for setting the delay
+ between each reconneciton attempt to remote server. Current
+ value a of this string constant is <b>ReconnectionDelay</b>. See
+ the {@link #setOption} method for the meaning of this option.
+
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+
+ */
+ public static final String RECONNECTION_DELAY_OPTION = "ReconnectionDelay";
+
+ /**
The default port number of remote logging server (4560).
*/
static final int DEFAULT_PORT = 4560;
@@ -151,7 +207,46 @@
this.remoteHost = host;
connect(address, port);
}
+
+ /**
+ Retuns the option names for this component, namely the string
+ array consisting of {{@link #REMOTE_HOST_OPTION}, {@link
+ #PORT_OPTION}, {@link #LOCATION_INFO_OPTION}, {@link
+ #RECONNECTION_DELAY_OPTION}} in addition to the options of its
+ super class {@link AppenderSkeleton}.
+
+ @deprecated We now use JavaBeans introspection to configure
+ components. Options strings are no longer needed.
+ */
+ public
+ String[] getOptionStrings() {
+ return OptionConverter.concatanateArrays(super.getOptionStrings(),
+ new String[] {REMOTE_HOST_OPTION, PORT_OPTION,
+ LOCATION_INFO_OPTION,
+ RECONNECTION_DELAY_OPTION});
+ }
+ /**
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+ */
+ public
+ void setOption(String option, String value) {
+ if(value == null) return;
+ super.setOption(option, value);
+
+ if(option.equals(REMOTE_HOST_OPTION)) {
+ address = getAddressByName(value);
+ remoteHost = value;
+ } else if (option.equals(PORT_OPTION)) {
+ port = OptionConverter.toInt(value, port);
+ } else if (option.equals(LOCATION_INFO_OPTION)) {
+ locationInfo = OptionConverter.toBoolean(value, locationInfo);
+ } else if (option.equals(RECONNECTION_DELAY_OPTION)) {
+ reconnectionDelay = OptionConverter.toInt(value, reconnectionDelay);
+ }
+ }
+
/**
Connect to the specified <b>RemoteHost</b> and <b>Port</b>.
*/
1.10 +73 -0 jakarta-log4j/src/java/org/apache/log4j/net/SyslogAppender.java
Index: SyslogAppender.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/net/SyslogAppender.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- SyslogAppender.java 2001/03/28 18:34:10 1.9
+++ SyslogAppender.java 2001/04/03 16:37:25 1.10
@@ -80,6 +80,43 @@
/** reserved for local use*/
final static public int LOG_LOCAL7 = 23<<3;
+ /**
+ A string constant used in naming the option for setting the
+ syslog server. Current value of this string constant is
+ <b>SyslogHost</b>.
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+
+ @since 0.8.1 */
+ public static final String SYSLOG_HOST_OPTION = "SyslogHost";
+
+ /**
+ A string constant used in naming the option for setting facility
+ type. Current value of this string constant is <b>Facility</b>.
+
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+
+ @since 0.8.1 */
+ public static final String FACILITY_OPTION = "Facility";
+
+ /**
+ A string constant used in naming the option for setting whether
+ the facility name is printed or not. Current value of this
+ string constant is <b>FacilityPrinting</b>.
+
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+
+ @since 0.8.1 */
+ public static final String FACILITY_PRINTING_OPTION = "FacilityPrinting";
+
protected static final int SYSLOG_HOST_OI = 0;
protected static final int FACILITY_OI = 1;
@@ -112,6 +149,42 @@
setSyslogHost(syslogHost);
}
+ /**
+ Returns the option names for this component, namely the string
+ array consisting of {{@link #SYSLOG_HOST_OPTION}, {@link
+ #FACILITY_OPTION}, {@link #FACILITY_PRINTING_OPTION}}.
+
+ @deprecated We now use JavaBeans introspection to configure
+ components. Options strings are no longer needed.
+
+ @since 0.8.1 */
+ public
+ String[] getOptionStrings() {
+ return OptionConverter.concatanateArrays(super.getOptionStrings(),
+ new String[] {SYSLOG_HOST_OPTION, FACILITY_OPTION,
+ FACILITY_PRINTING_OPTION});
+ }
+
+ /**
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+
+ */
+ public
+ void setOption(String option, String value) {
+ if(value == null) return;
+
+ super.setOption(option, value);
+
+ if(option.equals(SYSLOG_HOST_OPTION))
+ this.setSyslogHost(value);
+ else if(option.equals(FACILITY_PRINTING_OPTION))
+ facilityPrinting = OptionConverter.toBoolean(value, facilityPrinting);
+ else if(option.equals(FACILITY_OPTION)) {
+ this.setFacility(value);
+ }
+ }
+
/**
Release any resources held by this SyslogAppender.
1.11 +39 -0
jakarta-log4j/src/java/org/apache/log4j/nt/NTEventLogAppender.java
Index: NTEventLogAppender.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/nt/NTEventLogAppender.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- NTEventLogAppender.java 2001/03/28 16:30:30 1.10
+++ NTEventLogAppender.java 2001/04/03 16:37:31 1.11
@@ -31,6 +31,17 @@
public class NTEventLogAppender extends AppenderSkeleton {
private int _handle = 0;
+ /**
+ The string constant used in naming the source of the event. The
+ current value of this constant is <b>Source</b>.
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+
+ */
+ public static final String SOURCE_OPTION = "Source";
+
private String source = null;
private String server = null;
@@ -75,6 +86,34 @@
} catch (Exception e) {
e.printStackTrace();
_handle = 0;
+ }
+ }
+
+ /**
+ Returns the option names for this component.
+
+ @deprecated We now use JavaBeans introspection to configure
+ components. Options strings are no longer needed.
+ **/
+ public
+ String[] getOptionStrings() {
+ return OptionConverter.concatanateArrays(super.getOptionStrings(),
+ new String[] {SOURCE_OPTION});
+ }
+
+ /**
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+ */
+ public
+ void setOption(String key, String value) {
+ if(value == null) return;
+ super.setOption(key, value);
+
+
+ if(key.equalsIgnoreCase(SOURCE_OPTION)) {
+ // Set the source for the NT Evetns
+ source = value.trim();
}
}
1.6 +21 -2 jakarta-log4j/src/java/org/apache/log4j/spi/OptionHandler.java
Index: OptionHandler.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/spi/OptionHandler.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- OptionHandler.java 2001/03/19 12:38:20 1.5
+++ OptionHandler.java 2001/04/03 16:37:33 1.6
@@ -5,10 +5,10 @@
* License version 1.1, a copy of which has been included with this
* distribution in the LICENSE.APL file. */
-
-
package org.apache.log4j.spi;
+import org.apache.log4j.FileAppender;
+
/**
A string based interface to configure package components.
@@ -32,4 +32,23 @@
ambigous until the other is also set.
*/
void activateOptions();
+
+ /**
+ Return list of strings that the OptionHandler instance recognizes.
+
+ @deprecated use JavaBeans style getters/setters
+ */
+ String[] getOptionStrings();
+
+ /**
+ Set <code>option</code> to <code>value</code>.
+
+ <p>The handling of each option depends on the OptionHandler
+ instance. Some options may become active immediately whereas
+ other may be activated only when {@link #activateOptions} is
+ called.
+
+ @deprecated use JavaBeans style getters/setters
+ */
+ void setOption(String option, String value);
}
1.5 +22 -0 jakarta-log4j/src/java/org/apache/log4j/varia/DenyAllFilter.java
Index: DenyAllFilter.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/varia/DenyAllFilter.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- DenyAllFilter.java 2001/03/19 12:38:22 1.4
+++ DenyAllFilter.java 2001/04/03 16:37:35 1.5
@@ -22,6 +22,28 @@
public class DenyAllFilter extends Filter {
/**
+ Returns <code>null</code> as there are no options.
+
+ @deprecated We now use JavaBeans introspection to configure
+ components. Options strings are no longer needed.
+ */
+ public
+ String[] getOptionStrings() {
+ return null;
+ }
+
+
+ /**
+ No options to set.
+
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+ */
+ public
+ void setOption(String key, String value) {
+ }
+
+ /**
Always returns the integer constant {@link Filter#DENY}
regardless of the {@link LoggingEvent} parameter.
1.7 +51 -0
jakarta-log4j/src/java/org/apache/log4j/varia/ExternallyRolledFileAppender.java
Index: ExternallyRolledFileAppender.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/varia/ExternallyRolledFileAppender.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ExternallyRolledFileAppender.java 2001/03/19 12:38:22 1.6
+++ ExternallyRolledFileAppender.java 2001/04/03 16:37:35 1.7
@@ -40,6 +40,19 @@
public class ExternallyRolledFileAppender extends RollingFileAppender {
/**
+ A string constant used in naming the option for setting the port
+ for listening to external roll over messages. Current value of
+ this string constant is <b>Port</b>.
+
+ <p>All option keys are case sensitive.
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+ */
+ static final public String PORT_OPTION = "Port";
+
+ /**
The string constant sent to initiate a roll over. Current value of
this string constant is <b>RollOver</b>.
*/
@@ -59,6 +72,44 @@
constructor. */
public
ExternallyRolledFileAppender() {
+ }
+
+ /**
+ Returns the option names for this component, namely {@link
+ #PORT_OPTION} in addition to the options of its super class {@link
+ RollingFileAppender#getOptionStrings FileAppender}.
+
+ @deprecated We now use JavaBeans introspection to configure
+ components. Options strings are no longer needed.
+ */
+ public
+ String[] getOptionStrings() {
+
+ return OptionConverter.concatanateArrays(super.getOptionStrings(),
+ new String[] {PORT_OPTION});
+ }
+
+ /**
+ Set ExternallyRolledFileAppender specific options.
+
+ In addition to {@link org.apache.log4j.FileAppender#setOption FileAppender
+ options} and {@link RollingFileAppender#setOption RollingFileAppender
+ options}, ExternallyRolledFileAppender recognizes the option
+ <b>Port</b>.
+
+ <p>The <b>Port</b> option is used for setting the port for
+ listening to external roll over messages.
+
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+ */
+ public
+ void setOption(String option, String value) {
+ super.setOption(option, value);
+ if(option.equalsIgnoreCase(PORT_OPTION)) {
+ port = OptionConverter.toInt(value, port);
+ LogLog.debug("Port option set to "+port);
+ }
}
/**
1.5 +36 -0
jakarta-log4j/src/java/org/apache/log4j/varia/PriorityMatchFilter.java
Index: PriorityMatchFilter.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/varia/PriorityMatchFilter.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- PriorityMatchFilter.java 2001/03/19 12:38:22 1.4
+++ PriorityMatchFilter.java 2001/04/03 16:37:36 1.5
@@ -32,6 +32,20 @@
public class PriorityMatchFilter extends Filter {
/**
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+ */
+ public static final String PRIORITY_TO_MATCH_OPTION = "PriorityToMatch";
+
+ /**
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+ */
+ public static final String ACCEPT_ON_MATCH_OPTION = "AcceptOnMatch";
+
+ /**
Do we return ACCEPT when a match occurs. Default is
<code>true</code>. */
boolean acceptOnMatch = true;
@@ -40,6 +54,28 @@
*/
Priority priorityToMatch;
+ /**
+ @deprecated We now use JavaBeans introspection to configure
+ components. Options strings are no longer needed.
+ */
+ public
+ String[] getOptionStrings() {
+ return new String[] {PRIORITY_TO_MATCH_OPTION, ACCEPT_ON_MATCH_OPTION};
+ }
+
+ /**
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+ */
+ public
+ void setOption(String key, String value) {
+ if(key.equalsIgnoreCase(PRIORITY_TO_MATCH_OPTION)) {
+ priorityToMatch = Priority.toPriority(value, null);
+ } else if (key.equalsIgnoreCase(ACCEPT_ON_MATCH_OPTION)) {
+ acceptOnMatch = OptionConverter.toBoolean(value, acceptOnMatch);
+ }
+ }
+
public
void setPriorityToMatch(String priority) {
priorityToMatch = Priority.toPriority(priority, null);
1.6 +37 -0
jakarta-log4j/src/java/org/apache/log4j/varia/StringMatchFilter.java
Index: StringMatchFilter.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/varia/StringMatchFilter.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- StringMatchFilter.java 2001/03/19 12:38:22 1.5
+++ StringMatchFilter.java 2001/04/03 16:37:36 1.6
@@ -33,8 +33,45 @@
@since 0.9.0 */
public class StringMatchFilter extends Filter {
+ /**
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+ */
+ public static final String STRING_TO_MATCH_OPTION = "StringToMatch";
+
+ /**
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+ */
+ public static final String ACCEPT_ON_MATCH_OPTION = "AcceptOnMatch";
+
boolean acceptOnMatch = true;
String stringToMatch;
+
+ /**
+ @deprecated We now use JavaBeans introspection to configure
+ components. Options strings are no longer needed.
+ */
+ public
+ String[] getOptionStrings() {
+ return new String[] {STRING_TO_MATCH_OPTION, ACCEPT_ON_MATCH_OPTION};
+ }
+
+ /**
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+ */
+ public
+ void setOption(String key, String value) {
+
+ if(key.equalsIgnoreCase(STRING_TO_MATCH_OPTION)) {
+ stringToMatch = value;
+ } else if (key.equalsIgnoreCase(ACCEPT_ON_MATCH_OPTION)) {
+ acceptOnMatch = OptionConverter.toBoolean(value, acceptOnMatch);
+ }
+ }
public
void setStringToMatch(String s) {
1.12 +46 -0 jakarta-log4j/src/java/org/apache/log4j/xml/XMLLayout.java
Index: XMLLayout.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/xml/XMLLayout.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- XMLLayout.java 2001/03/28 16:30:36 1.11
+++ XMLLayout.java 2001/04/03 16:37:41 1.12
@@ -43,12 +43,58 @@
@since 0.9.0 */
public class XMLLayout extends Layout {
+ /**
+ This is a string constant to name the option for setting the
+ location information flag. Current value of this string constant
+ is <b>LocationInfo</b>.
+
+ <p>See the {@link #setOption(java.lang.String, java.lang.String)}
+ method for the meaning of this option.
+
+ <p>Note all option keys are case sensitive.
+
+ @deprecated Options are now handled using the JavaBeans paradigm.
+ This constant is not longer needed and will be removed in the
+ <em>near</em> term.
+ */
+ public static final String LOCATION_INFO_OPTION = "LocationInfo";
+
private final int DEFAULT_SIZE = 256;
private final int UPPER_LIMIT = 2048;
private StringBuffer buf = new StringBuffer(DEFAULT_SIZE);
private boolean locationInfo = false;
+ /**
+ @deprecated We now use JavaBeans introspection to configure
+ components. Options strings are no longer needed.
+ */
+ public
+ String[] getOptionStrings() {
+ return new String[]{LOCATION_INFO_OPTION};
+ }
+
+ /**
+
+ The XMLLayout specific options are:
+
+ <p>The <b>LocationInfo</b> option takes a boolean value. If true,
+ the output will include location information. By default no
+ location information is sent to the server.
+
+ @deprecated Use the setter method for the option directly instead
+ of the generic <code>setOption</code> method.
+
+ */
+ public
+ void setOption(String key, String value) {
+
+ if(value == null) return;
+ if (key.equals(LOCATION_INFO_OPTION)) {
+ locationInfo = OptionConverter.toBoolean(value, locationInfo);
+ }
+ }
+
/**
The <b>LocationInfo</b> option takes a boolean value. By
default, it is set to false which means there will be no location
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]