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_HELPERS_RESOURCE_BUNDLE_H 19 #define _LOG4CXX_HELPERS_RESOURCE_BUNDLE_H 20 21 #include <log4cxx/helpers/objectimpl.h> 22 #include <log4cxx/helpers/objectptr.h> 23 24 namespace log4cxx 25 { 26 namespace helpers 27 { 28 class Locale; 29 30 class ResourceBundle; 31 LOG4CXX_PTR_DEF(ResourceBundle); 32 33 /** 34 Resource bundles contain locale-specific objects 35 */ 36 class LOG4CXX_EXPORT ResourceBundle : public ObjectImpl 37 { 38 public: 39 DECLARE_ABSTRACT_LOG4CXX_OBJECT(ResourceBundle) 40 BEGIN_LOG4CXX_CAST_MAP() 41 LOG4CXX_CAST_ENTRY(ResourceBundle) 42 END_LOG4CXX_CAST_MAP() 43 44 /** 45 Gets a string for the given key from this resource bundle or one of 46 its parents. Calling this method is equivalent to calling 47 48 @param key the key for the desired string 49 @return the string for the given key 50 @throw MissingResourceException - if no object for the given key 51 can be found 52 */ 53 virtual LogString getString(const LogString& key) const = 0; 54 55 /** 56 Gets a resource bundle using the specified base name and locale 57 58 @param baseName the base name of the resource bundle, a fully 59 qualified class name or property filename 60 @param locale the locale for which a resource bundle is desired 61 */ 62 static ResourceBundlePtr getBundle(const LogString& baseName, 63 const Locale& locale); 64 65 protected: 66 /* 67 Sets the parent bundle of this bundle. The parent bundle is 68 searched by #getString when this bundle does not contain a particular 69 resource. 70 71 Parameters: 72 parent - this bundle's parent bundle. 73 */ setParent(const ResourceBundlePtr & parent1)74 inline void setParent(const ResourceBundlePtr& parent1) 75 { 76 this->parent = parent1; 77 } 78 79 /** 80 The parent bundle of this bundle. 81 82 The parent bundle is searched by #getString when this bundle does 83 not contain a particular resource. 84 */ 85 ResourceBundlePtr parent; 86 }; // class ResourceBundle 87 } // namespace helpers 88 } // namespace log4cxx 89 90 #endif 91 92