001: /*
002: * Tomcat: The deployer for the tomcat daemon
003: * Copyright (C) 2007 Rift IT Contracting
004: *
005: * This library is free software; you can redistribute it and/or
006: * modify it under the terms of the GNU Lesser General Public
007: * License as published by the Free Software Foundation; either
008: * version 2.1 of the License, or (at your option) any later version.
009: *
010: * This library is distributed in the hope that it will be useful,
011: * but WITHOUT ANY WARRANTY; without even the implied warranty of
012: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
013: * Lesser General Public License for more details.
014: *
015: * You should have received a copy of the GNU Lesser General Public
016: * License along with this library; if not, write to the Free Software
017: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
018: *
019: * TomcatXMLContext.java
020: */
021:
022: // package path
023: package com.rift.coad.daemon.tomcat;
024:
025: // java imports
026: import java.io.BufferedReader;
027: import java.io.File;
028: import java.io.FileReader;
029: import javax.xml.parsers.SAXParserFactory;
030: import javax.xml.parsers.SAXParser;
031: import org.xml.sax.InputSource;
032: import org.xml.sax.helpers.DefaultHandler;
033: import org.xml.sax.SAXException;
034: import org.xml.sax.Attributes;
035:
036: // coadunation imports
037: import com.rift.coad.lib.configuration.Configuration;
038: import com.rift.coad.lib.configuration.ConfigurationFactory;
039:
040: /**
041: * This class is responsible for reading the tomcat xml context file.
042: *
043: * @author brett
044: */
045: public class TomcatXMLContext {
046:
047: /**
048: * This class is responsible for handling the parsing of the context.
049: */
050: public class ContextHandler extends DefaultHandler {
051: // private class contants
052: private static final String CONTEXT = "Context";
053: private static final String PATH = "path";
054:
055: /**
056: * The constructor of the context handler
057: */
058: public ContextHandler() {
059:
060: }
061:
062: /**
063: * Parse the start of an element
064: */
065: public void startElement(String uri, String localName,
066: String qName, Attributes attributes)
067: throws SAXException {
068: // handle a package and retrieve the value information
069: if (qName.compareToIgnoreCase(CONTEXT) == 0) {
070: context = attributes.getValue(PATH);
071: }
072: }
073:
074: }
075:
076: // class constants
077: private final static String RESOURCE_PATH_VAR = "ContextResourcePath";
078: private final static String RESOURCE_PATH = "META-INF/context.xml";
079:
080: // private member variables
081: private String context = null;
082:
083: /**
084: * Creates a new instance of TomcatXMLContext
085: *
086: * @param loader The reference to the class loader.
087: * @exception TomcatException
088: */
089: public TomcatXMLContext(ClassLoader loader) throws TomcatException {
090: try {
091: Configuration config = ConfigurationFactory.getInstance()
092: .getConfig(TomcatXMLContext.class);
093: String resource = config.getString(RESOURCE_PATH_VAR,
094: RESOURCE_PATH);
095: InputSource source = new InputSource(loader
096: .getResourceAsStream(resource));
097: SAXParser parser = SAXParserFactory.newInstance()
098: .newSAXParser();
099: ContextHandler handler = new ContextHandler();
100: parser.parse(source, handler);
101:
102: } catch (Exception ex) {
103: throw new TomcatException(
104: "Failed to parse the tomcat xml file :"
105: + ex.getMessage());
106: }
107: }
108:
109: /**
110: * This method returns the context string for the tomcat xml file.
111: */
112: public String getContext() {
113: return context;
114: }
115: }
|