Здравствуйте, Blazkowicz, Вы писали:
B>Да, конечно. Что делает этот класс: читает XML, загоняет в Properties, потом сохраняет Properties в обычный формат, и подсовывает этот формат созданному ResourceBundle.
Вобщем сделал, но как то это через задницу — парсить текстовик, потом опять в текстовик преобразовывать.
Если кому интересно вот правленый код под 5.0:
package com.parus.dss.utils;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.Properties;
public class XmlResourceBundleClassLoader extends ClassLoader {
protected static XmlResourceBundleClassLoader RESOURCEBUNDLECLASSLOADER = new XmlResourceBundleClassLoader();
private static final String PROPERTIES_SUFFIX = ".properties";
private static final int PROPERTIES_SUFFIX_LENGTH = PROPERTIES_SUFFIX.length();
private static final String XML_SUFFIX = ".xml";
protected XmlResourceBundleClassLoader() {
}
public static XmlResourceBundleClassLoader getInstance() {
return RESOURCEBUNDLECLASSLOADER;
}
public InputStream getResourceAsStream(String resource) {
InputStream is = null;
try {
is = super.getResourceAsStream(resource);
} catch (Exception e) {
}
if (is != null) {
return is;
}
try {
is = getXmlStream(resource);
return is;
} catch (Exception e) {
}
return null;
}
private InputStream getXmlStream(String resource) {
try {
Properties properties = new Properties();
InputStream is = this.getClass().getClassLoader().getResourceAsStream(fixResourceName(resource));
properties.loadFromXML(is);
is.close();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
properties.store(baos, null);
byte[] data = baos.toByteArray();
ByteArrayInputStream bais = new ByteArrayInputStream(data);
return bais;
} catch (Exception e) {
Exception e2 = e;
}
return null;
}
private String fixResourceName(String resource) {
if (!resource.endsWith(PROPERTIES_SUFFIX)) {
return (resource + XML_SUFFIX);
} else {
int lengthWithoutSuffix = resource.length() - PROPERTIES_SUFFIX_LENGTH;
return (resource.substring(0, lengthWithoutSuffix) + XML_SUFFIX);
}
}
/*public static void main(String[] args) {
ResourceBundle rb = ResourceBundle.getBundle("LanguageResource",
new Locale("ru", "ru"), XmlResourceBundleClassLoader.getInstance());
String hhh = rb.getString("key1");
} // main*/
}
... << RSDN@Home 1.1.4 beta 4 rev. 303>>