Hi Neeme!
> > > Neeme Praks has used it. He is going to be the maintainer for this.
> >
> > Great. Neeme, I've look at the code to the XMLResourceBundle/Factory
> > class and it seems to be mostly clear. What is not currently not clear
> > to me is the markup of the input xml documents. What format should
> > they be in ?
>
> Plain XML :-)
> Example:
> <resources>
> <foo>bar</foo>
> </resources>
>
> then, in code, you can get "bar" like this:
> bundle.getString("/resources/foo");
ok. Thanks for clearing that up! :-)
> > I also noticed that the XMLResourceBundle class depends on Xerces and
> > Xalan classes - is there any way of being able to make it function
> > independantly of parser and xslt processor ?
>
> If there is a standard API for XPath queries (I'm not aware of any), then it
> would be easy. Otherwise, we would need to write our own (or extract from
> Xalan) XPath query "evaluator".
*nod*
I've attached a diff which cleans up the code a little - removes
unused imports, replaces the Xerces classes with javax.xml.parsers.*,
and updates the logkit code to the new API. Hope the changes are ok
with you.
I also noticed that the XPathAPI code is actually a part of Xalan 2
now. Are there intentions to package Xalan 2 with avalon ? or will
this file be duplicated for a little while longer ?
Do you know when this code will be become a part of avalon proper ?
I'd like to use these classes in some cocoon code I'm writing.
Cheers,
Marcus
--
.....
,,$$$$$$$$$, Marcus Crafter
;$' '$$$$: Computer Systems Engineer
$: $$$$: Open Software Associates GmbH
$ o_)$$$: 82-84 Mainzer Landstrasse
;$, _/\ &&:' 60327 Frankfurt Germany
' /( &&&
\_&&&&' Email : [EMAIL PROTECTED]
&&&&. Business Hours : +49 69 9757 200
&&&&&&&: After Hours : +49 69 49086750
Index: XMLResourceBundle.java
===================================================================
RCS file:
/home/cvspublic/jakarta-avalon/src/scratchpad/org/apache/avalon/excalibur/i18n/XMLResourceBundle.java,v
retrieving revision 1.2
diff -u -r1.2 XMLResourceBundle.java
--- XMLResourceBundle.java 2001/05/01 13:41:42 1.2
+++ XMLResourceBundle.java 2001/06/07 16:02:16
@@ -16,27 +16,23 @@
/** W3C DOM classes **/
import org.w3c.dom.Document;
-import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.NamedNodeMap;
-/** Xerces classes **/
-import org.apache.xerces.dom.DocumentImpl;
-import org.apache.xerces.dom.TextImpl;
-import org.apache.xerces.parsers.DOMParser;
-import org.xml.sax.SAXException;
-
-/** Xalan classes **/
-import org.apache.xalan.xpath.XPathSupport;
-import org.apache.xalan.xpath.XPath;
-import org.apache.xalan.xpath.XPathProcessorImpl;
-import org.apache.xalan.xpath.xml.XMLParserLiaisonDefault;
-import org.apache.xalan.xpath.xml.PrefixResolverDefault;
-import org.apache.xalan.xpath.XObject;
+/** Parser classes **/
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+//import javax.xml.parsers.ParserConfigurationException;
+import org.xml.sax.InputSource;
+/** XPath classes (already available in Xalan 2) **/
+//import org.apache.xpath.XPathAPI;
+
/** Avalon classes **/
import org.apache.avalon.framework.logger.AbstractLoggable;
+import org.apache.log.Logger;
+import org.apache.log.Hierarchy;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Mike Engelhart</a>
@@ -54,11 +50,17 @@
private String name = "";
private Document doc;
private Locale loc;
+
+ protected static DocumentBuilderFactory docfactory =
+ DocumentBuilderFactory.newInstance();
protected XMLResourceBundle parent = null;
+ protected Logger logger =
+ Hierarchy.getDefaultHierarchy().getLoggerFor("XMLResourceBundle");
+
public XMLResourceBundle(String name, Document doc, Locale loc, XMLResourceBundle
p, boolean cacheAtStartup)
{
- getLogger().info("Constructing XMLResourceBundle: " + name + ", locale: " +
loc);
+ logger.info("Constructing XMLResourceBundle: " + name + ", locale: " + loc);
this.name = name;
this.doc = doc;
this.loc = loc;
@@ -75,9 +77,8 @@
// Load the XML document based on bundleName
protected static Document loadResourceBundle(String bundleName) throws Exception
{
- DOMParser parser = new DOMParser();
- parser.parse(bundleName);
- return parser.getDocument();
+ DocumentBuilder builder = docfactory.newDocumentBuilder();
+ return builder.parse(new InputSource(bundleName));
}
public String getName()
@@ -115,7 +116,7 @@
private void cacheNotFoundKey(String key)
{
- getLogger().debug(name + ": caching not_found: " + key);
+ logger.debug(name + ": caching not_found: " + key);
cacheNotFound.put(key, "");
}
@@ -224,7 +225,7 @@
}
catch (Exception e)
{
- getLogger().error(name + ": error while locating resource: " + key, e);
+ logger.error(name + ": error while locating resource: " + key, e);
}
return value;
}
@@ -280,7 +281,7 @@
}
catch (Exception e)
{
- getLogger().error("Error while locating resource", e);
+ logger.error("Error while locating resource", e);
}
return node;
}
@@ -316,12 +317,12 @@
varValue = dictionary.get(varKey);
if (varValue != null)
{
- getLogger().debug("Substituting var: " + varKey + " --> " +
varValue);
+ logger.debug("Substituting var: " + varKey + " --> " + varValue);
result.append(varValue);
}
else
{
- getLogger().warn(name + ": var not found: " + varKey);
+ logger.warn(name + ": var not found: " + varKey);
result.append('{').append(varKey).append('}');
}
if (endPos < lastPos)
Index: XMLResourceBundleFactory.java
===================================================================
RCS file:
/home/cvspublic/jakarta-avalon/src/scratchpad/org/apache/avalon/excalibur/i18n/XMLResourceBundleFactory.java,v
retrieving revision 1.2
diff -u -r1.2 XMLResourceBundleFactory.java
--- XMLResourceBundleFactory.java 2001/05/01 13:41:42 1.2
+++ XMLResourceBundleFactory.java 2001/06/07 16:02:16
@@ -11,12 +11,11 @@
import java.util.Hashtable;
import java.util.Locale;
import java.util.MissingResourceException;
-import java.util.Vector;
import org.xml.sax.SAXParseException;
-import org.apache.log.LogKit;
import org.apache.log.Logger;
+import org.apache.log.Hierarchy;
/**
* This is the XMLResourceBundleFactory, the method for getting and
@@ -42,7 +41,8 @@
protected static Hashtable cache = new Hashtable();
protected static Hashtable cache_not_found = new Hashtable();
protected static String directory;
- protected static Logger logger = LogKit.getLoggerFor("XMLResourceBundle");
+ protected static Logger logger =
+ Hierarchy.getDefaultHierarchy().getLoggerFor("XMLResourceBundle");
public static XMLResourceBundle getBundle(String name) throws
MissingResourceException
{
@@ -61,7 +61,7 @@
throw new MissingResourceException("Unable to locate resource: " + name,
XMLResourceBundleFactory.class.getName(), "");
else
bundle.setLogger(logger);
- return bundle;
+ return bundle;
}
private static XMLResourceBundle _getBundle(String name, Locale loc)
@@ -96,7 +96,7 @@
throw new MissingResourceException("Unable to locate resource: " + name,
"XMLResourceBundleFactory", "");
else
bundle.setLogger(logger);
- return bundle;
+ return bundle;
}
private static XMLResourceBundle _getBundle(String name, Locale loc, boolean
cacheAtStartup)
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]