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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]