You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2009/04/08 13:08:17 UTC
svn commit: r763183 - in /tomcat/trunk:
java/org/apache/tomcat/util/res/StringManager.java
test/org/apache/tomcat/util/ test/org/apache/tomcat/util/res/
test/org/apache/tomcat/util/res/TestStringManager.java
Author: markt
Date: Wed Apr 8 11:08:17 2009
New Revision: 763183
URL: http://svn.apache.org/viewvc?rev=763183&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46933
Simplify StringManager using Java 5 features.
Based on a patch by Jens Kapitza.
Include a test case to ensure simplification is OK for null input
Added:
tomcat/trunk/test/org/apache/tomcat/util/
tomcat/trunk/test/org/apache/tomcat/util/res/
tomcat/trunk/test/org/apache/tomcat/util/res/TestStringManager.java (with props)
Modified:
tomcat/trunk/java/org/apache/tomcat/util/res/StringManager.java
Modified: tomcat/trunk/java/org/apache/tomcat/util/res/StringManager.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/res/StringManager.java?rev=763183&r1=763182&r2=763183&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/res/StringManager.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/res/StringManager.java Wed Apr 8 11:08:17 2009
@@ -131,107 +131,17 @@
* @param args
*/
- public String getString(String key, Object[] args) {
- String iString = null;
+ public String getString(final String key, final Object... args) {
String value = getString(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
- if(args==null){
- args = new Object[1];
- }
-
- Object[] nonNullArgs = args;
- for (int i=0; i<args.length; i++) {
- if (args[i] == null) {
- if (nonNullArgs==args){
- nonNullArgs=args.clone();
- }
- nonNullArgs[i] = "null";
- }
- }
- if( value==null ) value=key;
- MessageFormat mf = new MessageFormat(value);
- mf.setLocale(locale);
- iString = mf.format(nonNullArgs, new StringBuffer(), null).toString();
- } 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();
+ if (value == null) {
+ value = key;
}
- 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
- * @param arg
- */
-
- 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
- * @param arg1
- * @param arg2
- */
-
- 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
- * @param arg1
- * @param arg2
- * @param arg3
- */
- public String getString(String key, Object arg1, Object arg2,
- Object arg3) {
- Object[] args = new Object[] {arg1, arg2, arg3};
- return getString(key, args);
+ MessageFormat mf = new MessageFormat(value);
+ mf.setLocale(locale);
+ return mf.format(args, new StringBuffer(), null).toString();
}
- /**
- * 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
- * @param arg1
- * @param arg2
- * @param arg3
- * @param arg4
- */
-
- 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
// --------------------------------------------------------------
Added: tomcat/trunk/test/org/apache/tomcat/util/res/TestStringManager.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/res/TestStringManager.java?rev=763183&view=auto
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/util/res/TestStringManager.java (added)
+++ tomcat/trunk/test/org/apache/tomcat/util/res/TestStringManager.java Wed Apr 8 11:08:17 2009
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.tomcat.util.res;
+
+import junit.framework.TestCase;
+
+public class TestStringManager extends TestCase {
+
+ private static final StringManager sm =
+ StringManager.getManager("org.apache.naming");
+
+ public void testNullKey() {
+ boolean iaeThrown = false;
+
+ try {
+ sm.getString(null);
+ } catch (IllegalArgumentException iae) {
+ iaeThrown = true;
+ }
+ assertEquals("IAE not thrown on null key", true, iaeThrown);
+ }
+
+ public void testBug46933() {
+ // Check null args are OK
+ sm.getString("namingContext.nameNotBound");
+ sm.getString("namingContext.nameNotBound", (Object[]) null);
+ sm.getString("namingContext.nameNotBound", new Object[1]);
+ }
+}
Propchange: tomcat/trunk/test/org/apache/tomcat/util/res/TestStringManager.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tomcat/trunk/test/org/apache/tomcat/util/res/TestStringManager.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org