Author: fhanik Date: Tue Apr 4 07:15:40 2006 New Revision: 391316 URL: http://svn.apache.org/viewcvs?rev=391316&view=rev Log: Remove logging dependency, so that standalone lib can log as well
Added: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/util/StringManager.java Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/membership/McastService.java tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/ReplicationTransmitter.java tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/bio/BioSender.java tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/nio/NioReceiver.java Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/membership/McastService.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/membership/McastService.java?rev=391316&r1=391315&r2=391316&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/membership/McastService.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/membership/McastService.java Tue Apr 4 07:15:40 2006 @@ -22,7 +22,7 @@ import org.apache.catalina.tribes.Member; import org.apache.catalina.tribes.MembershipListener; import org.apache.catalina.tribes.MembershipService; -import org.apache.catalina.util.StringManager; +import org.apache.catalina.tribes.util.StringManager; import org.apache.catalina.tribes.util.UUIDGenerator; /** Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/ReplicationTransmitter.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/ReplicationTransmitter.java?rev=391316&r1=391315&r2=391316&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/ReplicationTransmitter.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/ReplicationTransmitter.java Tue Apr 4 07:15:40 2006 @@ -20,7 +20,7 @@ import org.apache.catalina.tribes.ChannelMessage; import org.apache.catalina.tribes.ChannelSender; import org.apache.catalina.tribes.Member; -import org.apache.catalina.util.StringManager; +import org.apache.catalina.tribes.util.StringManager; import org.apache.catalina.tribes.transport.nio.PooledParallelSender; /** Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/bio/BioSender.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/bio/BioSender.java?rev=391316&r1=391315&r2=391316&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/bio/BioSender.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/bio/BioSender.java Tue Apr 4 07:15:40 2006 @@ -30,7 +30,7 @@ import org.apache.catalina.tribes.transport.Constants; import org.apache.catalina.tribes.transport.DataSender; import org.apache.catalina.tribes.transport.SenderState; -import org.apache.catalina.util.StringManager; +import org.apache.catalina.tribes.util.StringManager; import org.apache.catalina.tribes.transport.AbstractSender; /** Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/nio/NioReceiver.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/nio/NioReceiver.java?rev=391316&r1=391315&r2=391316&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/nio/NioReceiver.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/transport/nio/NioReceiver.java Tue Apr 4 07:15:40 2006 @@ -32,7 +32,7 @@ import org.apache.catalina.tribes.transport.ReceiverBase; import org.apache.catalina.tribes.transport.ThreadPool; import org.apache.catalina.tribes.transport.WorkerThread; -import org.apache.catalina.util.StringManager; +import org.apache.catalina.tribes.util.StringManager; /** * @author Filip Hanik Added: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/util/StringManager.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/util/StringManager.java?rev=391316&view=auto ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/util/StringManager.java (added) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/util/StringManager.java Tue Apr 4 07:15:40 2006 @@ -0,0 +1,252 @@ +/* + * Copyright 1999,2004 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +package org.apache.catalina.tribes.util; + +import java.text.MessageFormat; +import java.util.Hashtable; +import java.util.Locale; +import java.util.MissingResourceException; +import java.util.ResourceBundle; +import java.net.URLClassLoader; + +/** + * An internationalization / localization helper class which reduces + * the bother of handling ResourceBundles and takes care of the + * common cases of message formating which otherwise require the + * creation of Object arrays and such. + * + * <p>The StringManager operates on a package basis. One StringManager + * per package can be created and accessed via the getManager method + * call. + * + * <p>The StringManager will look for a ResourceBundle named by + * the package name given plus the suffix of "LocalStrings". In + * practice, this means that the localized information will be contained + * in a LocalStrings.properties file located in the package + * directory of the classpath. + * + * <p>Please see the documentation for java.util.ResourceBundle for + * more information. + * + * @author James Duncan Davidson [EMAIL PROTECTED] + * @author James Todd [EMAIL PROTECTED] + */ + +public class StringManager { + + /** + * The ResourceBundle for this StringManager. + */ + + private ResourceBundle bundle; + + private static org.apache.commons.logging.Log log= + org.apache.commons.logging.LogFactory.getLog( StringManager.class ); + + /** + * Creates a new StringManager for a given package. This is a + * private method and all access to it is arbitrated by the + * static getManager method call so that only one StringManager + * per package will be created. + * + * @param packageName Name of package to create StringManager for. + */ + + private StringManager(String packageName) { + String bundleName = packageName + ".LocalStrings"; + try { + bundle = ResourceBundle.getBundle(bundleName); + return; + } catch( MissingResourceException ex ) { + // Try from the current loader ( that's the case for trusted apps ) + ClassLoader cl=Thread.currentThread().getContextClassLoader(); + if( cl != null ) { + try { + bundle=ResourceBundle.getBundle(bundleName, Locale.getDefault(), cl); + return; + } catch(MissingResourceException ex2) { + } + } + if( cl==null ) + cl=this.getClass().getClassLoader(); + + if (log.isDebugEnabled()) + log.debug("Can't find resource " + bundleName + + " " + cl); + if( cl instanceof URLClassLoader ) { + if (log.isDebugEnabled()) + log.debug( ((URLClassLoader)cl).getURLs()); + } + } + } + + /** + * Get a string from the underlying resource bundle. + * + * @param key The resource name + */ + public String getString(String key) { + return MessageFormat.format(getStringInternal(key), (Object [])null); + } + + + protected String getStringInternal(String key) { + if (key == null) { + String msg = "key is null"; + + throw new NullPointerException(msg); + } + + String str = null; + + if( bundle==null ) + return key; + try { + str = bundle.getString(key); + } catch (MissingResourceException mre) { + str = "Cannot find message associated with key '" + key + "'"; + } + + return str; + } + + /** + * Get a string from the underlying resource bundle and format + * it with the given set of arguments. + * + * @param key The resource name + * @param args Formatting directives + */ + + public String getString(String key, Object[] args) { + String iString = null; + String value = getStringInternal(key); + + // this check for the runtime exception is some pre 1.1.6 + // VM's don't do an automatic toString() on the passed in + // objects and barf out + + try { + // ensure the arguments are not null so pre 1.2 VM's don't barf + Object nonNullArgs[] = args; + for (int i=0; i<args.length; i++) { + if (args[i] == null) { + if (nonNullArgs==args) nonNullArgs=(Object[])args.clone(); + nonNullArgs[i] = "null"; + } + } + + iString = MessageFormat.format(value, nonNullArgs); + } catch (IllegalArgumentException iae) { + StringBuffer buf = new StringBuffer(); + buf.append(value); + for (int i = 0; i < args.length; i++) { + buf.append(" arg[" + i + "]=" + args[i]); + } + iString = buf.toString(); + } + return iString; + } + + /** + * Get a string from the underlying resource bundle and format it + * with the given object argument. This argument can of course be + * a String object. + * + * @param key The resource name + * @param arg Formatting directive + */ + + public String getString(String key, Object arg) { + Object[] args = new Object[] {arg}; + return getString(key, args); + } + + /** + * Get a string from the underlying resource bundle and format it + * with the given object arguments. These arguments can of course + * be String objects. + * + * @param key The resource name + * @param arg1 Formatting directive + * @param arg2 Formatting directive + */ + + public String getString(String key, Object arg1, Object arg2) { + Object[] args = new Object[] {arg1, arg2}; + return getString(key, args); + } + + /** + * Get a string from the underlying resource bundle and format it + * with the given object arguments. These arguments can of course + * be String objects. + * + * @param key The resource name + * @param arg1 Formatting directive + * @param arg2 Formatting directive + * @param arg3 Formatting directive + */ + + public String getString(String key, Object arg1, Object arg2, + Object arg3) { + Object[] args = new Object[] {arg1, arg2, arg3}; + return getString(key, args); + } + + /** + * Get a string from the underlying resource bundle and format it + * with the given object arguments. These arguments can of course + * be String objects. + * + * @param key The resource name + * @param arg1 Formatting directive + * @param arg2 Formatting directive + * @param arg3 Formatting directive + * @param arg4 Formatting directive + */ + + public String getString(String key, Object arg1, Object arg2, + Object arg3, Object arg4) { + Object[] args = new Object[] {arg1, arg2, arg3, arg4}; + return getString(key, args); + } + // -------------------------------------------------------------- + // STATIC SUPPORT METHODS + // -------------------------------------------------------------- + + private static Hashtable managers = new Hashtable(); + + /** + * Get the StringManager for a particular package. If a manager for + * a package already exists, it will be reused, else a new + * StringManager will be created and returned. + * + * @param packageName The package name + */ + + public synchronized static StringManager getManager(String packageName) { + StringManager mgr = (StringManager)managers.get(packageName); + + if (mgr == null) { + mgr = new StringManager(packageName); + managers.put(packageName, mgr); + } + return mgr; + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]