source: pacpusframework/trunk/3rd/apache-log4cxx/include/log4cxx/helpers/optionconverter.h@ 3

Last change on this file since 3 was 2, checked in by sgosseli, 12 years ago

Add 3rd party libraries (log4cxx).

File size: 7.1 KB
Line 
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18#ifndef _LOG4CXX_HELPER_OPTION_CONVERTER_H
19#define _LOG4CXX_HELPER_OPTION_CONVERTER_H
20
21#include <log4cxx/logstring.h>
22#include <log4cxx/helpers/objectptr.h>
23
24namespace log4cxx
25{
26 class Level;
27 class File;
28 typedef helpers::ObjectPtrT<Level> LevelPtr;
29
30 namespace spi
31 {
32 class LoggerRepository;
33 typedef helpers::ObjectPtrT<LoggerRepository> LoggerRepositoryPtr;
34 }
35
36 namespace helpers
37 {
38 class Properties;
39
40 class Object;
41 typedef ObjectPtrT<Object> ObjectPtr;
42
43 class Class;
44
45 /** A convenience class to convert property values to specific types.*/
46 class LOG4CXX_EXPORT OptionConverter
47 {
48 /** OptionConverter is a static class. */
49 private:
50 OptionConverter() {}
51
52 public:
53 static LogString convertSpecialChars(const LogString& s);
54
55 /**
56 If <code>value</code> is "true", then <code>true</code> is
57 returned. If <code>value</code> is "false", then
58 <code>true</code> is returned. Otherwise, <code>default</code> is
59 returned.
60
61 <p>Case of value is unimportant.
62 */
63 static bool toBoolean(const LogString& value, bool dEfault);
64 static int toInt(const LogString& value, int dEfault);
65 static long toFileSize(const LogString& value, long dEfault);
66 static LevelPtr toLevel(const LogString& value,
67 const LevelPtr& defaultValue);
68
69 /**
70 Find the value corresponding to <code>key</code> in
71 <code>props</code>. Then perform variable substitution on the
72 found value.
73 */
74 static LogString findAndSubst(const LogString& key, Properties& props);
75
76/**
77Perform variable substitution in string <code>val</code> from the
78values of keys found in the system propeties.
79
80<p>The variable substitution delimeters are <b>${</b> and <b>}</b>.
81
82<p>For example, if the System properties contains "key=value", then
83the call
84<pre>
85String s = OptionConverter.substituteVars("Value of key is ${key}.");
86</pre>
87
88will set the variable <code>s</code> to "Value of key is value.".
89
90<p>If no value could be found for the specified key, then the
91<code>props</code> parameter is searched, if the value could not
92be found there, then substitution defaults to the empty string.
93
94<p>For example, if system propeties contains no value for the key
95"inexistentKey", then the call
96
97<pre>
98String s = OptionConverter.subsVars("Value of inexistentKey is [${inexistentKey}]");
99</pre>
100will set <code>s</code> to "Value of inexistentKey is []"
101
102<p>An IllegalArgumentException is thrown if
103<code>val</code> contains a start delimeter "${" which is not
104balanced by a stop delimeter "}". </p>
105
106@param val The string on which variable substitution is performed.
107@param props The properties from which variable substitution is performed.
108@throws IllegalArgumentException if <code>val</code> is malformed.
109*/
110 static LogString substVars(const LogString& val, Properties& props);
111
112 /**
113 * Gets the specified system property.
114 @param key The key to search for.
115 @param def The default value to return.
116 @return the string value of the system property, or the default
117 value if there is no property with that key.
118 */
119 static LogString getSystemProperty(const LogString& key, const LogString& def);
120
121 /**
122 Instantiate an object given a class name. Check that the
123 <code>className</code> is a subclass of
124 <code>superClass</code>. If that test fails or the object could
125 not be instantiated, then <code>defaultValue</code> is returned.
126
127 @param className The fully qualified class name of the object to instantiate.
128 @param superClass The class to which the new object should belong.
129 @param defaultValue The object to return in case of non-fulfillment
130 */
131 static ObjectPtr instantiateByClassName(const LogString& className,
132 const Class& superClass, const ObjectPtr& defaultValue);
133
134 static ObjectPtr instantiateByKey(Properties& props,
135 const LogString& key, const Class& superClass,
136 const ObjectPtr& defaultValue);
137
138 /**
139 Configure log4cxx given a configFileName.
140
141 <p>The configFileName must point to a file which will be
142 interpreted by a new instance of a log4cxx configurator.
143
144 <p>All configurations steps are taken on the
145 <code>hierarchy</code> passed as a parameter.
146
147 <p>
148 @param configFileName The location of the configuration file.
149 @param clazz The classname, of the log4cxx configurator which
150 will parse the file <code>configFileName</code>. This must be
151 a subclass of Configurator, or null. If this value is null then
152 a default configurator of PropertyConfigurator is used, unless the
153 filename pointed to by <code>configFileName</code> ends in '.xml',
154 in which case DOMConfigurator is used.
155 @param hierarchy The Hierarchy to act on.
156 */
157 static void selectAndConfigure(const File& configFileName,
158 const LogString& clazz, spi::LoggerRepositoryPtr& hierarchy);
159 };
160 } // namespace helpers
161} // namespace log4cxx
162
163#endif //_LOG4CXX_HELPER_OPTION_CONVERTER_H
164
Note: See TracBrowser for help on using the repository browser.