001: /*
002:
003: Licensed to the Apache Software Foundation (ASF) under one or more
004: contributor license agreements. See the NOTICE file distributed with
005: this work for additional information regarding copyright ownership.
006: The ASF licenses this file to You under the Apache License, Version 2.0
007: (the "License"); you may not use this file except in compliance with
008: the License. You may obtain a copy of the License at
009:
010: http://www.apache.org/licenses/LICENSE-2.0
011:
012: Unless required by applicable law or agreed to in writing, software
013: distributed under the License is distributed on an "AS IS" BASIS,
014: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015: See the License for the specific language governing permissions and
016: limitations under the License.
017:
018: */
019:
020: package org.apache.batik.util;
021:
022: import java.io.InputStream;
023: import java.io.IOException;
024: import java.util.Properties;
025: import java.util.MissingResourceException;
026:
027: /**
028: * This class describes the XML resources needed to use the various batik
029: * modules.
030: *
031: * @author <a href="mailto:Thierry.Kormann@sophia.inria.fr">Thierry Kormann</a>
032: * @version $Id: XMLResourceDescriptor.java 478169 2006-11-22 14:23:24Z dvholten $
033: */
034: public class XMLResourceDescriptor {
035:
036: /**
037: * The XML parser class name key.
038: */
039: public static final String XML_PARSER_CLASS_NAME_KEY = "org.xml.sax.driver";
040:
041: /**
042: * The CSS parser class name key.
043: */
044: public static final String CSS_PARSER_CLASS_NAME_KEY = "org.w3c.css.sac.driver";
045:
046: /**
047: * The resources file name
048: */
049: public static final String RESOURCES = "resources/XMLResourceDescriptor.properties";
050:
051: /**
052: * The resource bundle
053: */
054: protected static Properties parserProps = null;
055:
056: /**
057: * The class name of the XML parser to use.
058: */
059: protected static String xmlParserClassName;
060:
061: /**
062: * The class name of the CSS parser to use.
063: */
064: protected static String cssParserClassName;
065:
066: protected static synchronized Properties getParserProps() {
067: if (parserProps != null)
068: return parserProps;
069:
070: parserProps = new Properties();
071: try {
072: Class cls = XMLResourceDescriptor.class;
073: InputStream is = cls.getResourceAsStream(RESOURCES);
074: parserProps.load(is);
075: } catch (IOException ioe) {
076: throw new MissingResourceException(ioe.getMessage(),
077: RESOURCES, null);
078: }
079: return parserProps;
080: }
081:
082: /**
083: * Returns the class name of the XML parser to use.
084: *
085: * <p>This method first checks if any XML parser has been specified using
086: * the <tt>setXMLParserClassName</tt> method. If any, this method will
087: * return the value of the property 'org.xml.sax.driver' specified in the
088: * <tt>resources/XMLResourceDescriptor.properties</tt> resource file.
089: */
090: public static String getXMLParserClassName() {
091: if (xmlParserClassName == null) {
092: xmlParserClassName = getParserProps().getProperty(
093: XML_PARSER_CLASS_NAME_KEY);
094: }
095: return xmlParserClassName;
096: }
097:
098: /**
099: * Sets the class name of the XML parser to use.
100: *
101: * @param xmlParserClassName the classname of the XML parser
102: */
103: public static void setXMLParserClassName(String xmlParserClassName) {
104: XMLResourceDescriptor.xmlParserClassName = xmlParserClassName;
105: }
106:
107: /**
108: * Returns the class name of the CSS parser to use.
109: *
110: * <p>This method first checks if any CSS parser has been
111: * specified using the <tt>setCSSParserClassName</tt> method. If
112: * any, this method will return the value of the property
113: * 'org.w3c.css.sac.driver' specified in the
114: * <tt>resources/XMLResourceDescriptor.properties</tt> resource
115: * file.
116: */
117: public static String getCSSParserClassName() {
118: if (cssParserClassName == null) {
119: cssParserClassName = getParserProps().getProperty(
120: CSS_PARSER_CLASS_NAME_KEY);
121: }
122: return cssParserClassName;
123: }
124:
125: /**
126: * Sets the class name of the CSS parser to use.
127: *
128: * @param cssParserClassName the classname of the CSS parser
129: */
130: public static void setCSSParserClassName(String cssParserClassName) {
131: XMLResourceDescriptor.cssParserClassName = cssParserClassName;
132: }
133: }
|