You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by im...@apache.org on 2007/05/14 21:31:09 UTC
svn commit: r537957 - in
/jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/util:
CombinedResources.java Messages.java
Author: imario
Date: Mon May 14 12:31:08 2007
New Revision: 537957
URL: http://svn.apache.org/viewvc?view=rev&rev=537957
Log:
VFS-154: deal with multiple VFS Resources.properties in the classpath - Thanks to Adam Heath for the patch!
Added:
jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/util/CombinedResources.java
Modified:
jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/util/Messages.java
Added: jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/util/CombinedResources.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/util/CombinedResources.java?view=auto&rev=537957
==============================================================================
--- jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/util/CombinedResources.java (added)
+++ jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/util/CombinedResources.java Mon May 14 12:31:08 2007
@@ -0,0 +1,130 @@
+/*
+ * 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.commons.vfs.util;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.Locale;
+import java.util.Properties;
+import java.util.ResourceBundle;
+
+public class CombinedResources extends ResourceBundle
+{
+ // locale.getLanguage()
+ // locale.getCountry()
+ // locale.getVariant()
+
+ private final String resourceName;
+ private boolean inited;
+ private final Properties properties = new Properties();
+
+ public CombinedResources(String resourceName)
+ {
+ this.resourceName = resourceName;
+ }
+
+ protected void init()
+ {
+ if (inited)
+ {
+ return;
+ }
+
+ loadResources(getResourceName());
+ loadResources(Locale.getDefault());
+ loadResources(getLocale());
+ inited = true;
+ }
+
+ protected void loadResources(Locale locale)
+ {
+ if (locale == null)
+ {
+ return;
+ }
+ String[] parts = new String[]{locale.getLanguage(), locale.getCountry(), locale.getVariant()};
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < 3; i++)
+ {
+ sb.append(getResourceName());
+ for (int j = 0; j < i; j++)
+ {
+ sb.append('_').append(parts[j]);
+ }
+ if (parts[i].length() != 0)
+ {
+ sb.append('_').append(parts[i]);
+ loadResources(sb.toString());
+ }
+ sb.setLength(0);
+ }
+ }
+
+ protected void loadResources(String resourceName)
+ {
+ ClassLoader loader = getClass().getClassLoader();
+ if (loader == null)
+ {
+ loader = ClassLoader.getSystemClassLoader();
+ }
+ resourceName = resourceName.replace('.', '/') + ".properties";
+ try
+ {
+ Enumeration resources = loader.getResources(resourceName);
+ while (resources.hasMoreElements())
+ {
+ URL resource = (URL) resources.nextElement();
+ try
+ {
+ properties.load(resource.openConnection().getInputStream());
+ }
+ catch (IOException e)
+ {
+ // ignore
+ }
+ }
+ }
+ catch (IOException e)
+ {
+ // ignore
+ }
+ }
+
+ public String getResourceName()
+ {
+ return resourceName;
+ }
+
+ public Enumeration getKeys()
+ {
+ if (!inited)
+ {
+ init();
+ }
+ return properties.keys();
+ }
+
+ protected Object handleGetObject(String key)
+ {
+ if (!inited)
+ {
+ init();
+ }
+ return properties.get(key);
+ }
+}
Modified: jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/util/Messages.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/util/Messages.java?view=diff&rev=537957&r1=537956&r2=537957
==============================================================================
--- jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/util/Messages.java (original)
+++ jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/util/Messages.java Mon May 14 12:31:08 2007
@@ -104,7 +104,7 @@
// Locate the message
if (resources == null)
{
- resources = ResourceBundle.getBundle("org.apache.commons.vfs.Resources");
+ resources = new CombinedResources("org.apache.commons.vfs.Resources");
}
final String msgText = resources.getString(code);
msg = new MessageFormat(msgText);
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org