From 8fc57a55d3662cc74427b9b8af0fb375e809acff Mon Sep 17 00:00:00 2001 From: Peter Donald Date: Tue, 5 Jun 2001 07:49:34 +0000 Subject: [PATCH] Update to work with JAXP1.1 rather than SAX2 mechanisms. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269110 13f79535-47bb-0310-9956-ffa450edef68 --- .../builder/DefaultProjectBuilder.java | 46 +++++++++++++------ .../deployer/DefaultRoleManager.java | 20 ++++++-- .../components/deployer/Deployment.java | 25 +++++++--- 3 files changed, 66 insertions(+), 25 deletions(-) diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/DefaultProjectBuilder.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/DefaultProjectBuilder.java index d48dcdd01..3db5c6ec2 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/DefaultProjectBuilder.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/components/builder/DefaultProjectBuilder.java @@ -9,10 +9,12 @@ package org.apache.myrmidon.components.builder; import java.io.File; import java.io.IOException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; import org.apache.avalon.framework.ExceptionUtil; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; -import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder; +import org.apache.avalon.framework.configuration.SAXConfigurationHandler; import org.apache.avalon.framework.logger.AbstractLoggable; import org.apache.log.Logger; import org.apache.myrmidon.api.TaskContext; @@ -21,8 +23,8 @@ import org.apache.myrmidon.components.model.DefaultProject; import org.apache.myrmidon.components.model.DefaultTarget; import org.apache.myrmidon.components.model.Project; import org.apache.myrmidon.components.model.Target; -import org.xml.sax.InputSource; import org.xml.sax.SAXException; +import org.xml.sax.XMLReader; /** * Default implementation to construct project from a build file. @@ -33,13 +35,6 @@ public class DefaultProjectBuilder extends AbstractLoggable implements ProjectBuilder { - protected DefaultConfigurationBuilder m_builder; - - public DefaultProjectBuilder() - { - m_builder = new DefaultConfigurationBuilder(); - } - /** * build a project from file. * @@ -51,10 +46,35 @@ public class DefaultProjectBuilder public Project build( final File projectFile ) throws Exception { - final String location = projectFile.getCanonicalFile().toString(); - final Configuration configuration = (Configuration)m_builder.buildFromFile( location ); - return build( projectFile, configuration ); + final SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); + final SAXParser saxParser = saxParserFactory.newSAXParser(); + final XMLReader parser = saxParser.getXMLReader(); + parser.setFeature( "http://xml.org/sax/features/namespace-prefixes", false ); + parser.setFeature( "http://xml.org/sax/features/namespaces", false ); + //parser.setFeature( "http://xml.org/sax/features/validation", false ); + + final SAXConfigurationHandler handler = new SAXConfigurationHandler(); + parser.setContentHandler( handler ); + parser.setErrorHandler( handler ); + + final String location = projectFile.toURL().toString(); + parser.parse( location ); + + return build( projectFile, handler.getConfiguration() ); + } +/* + private final void dump( final Configuration configuration ) + throws Exception + { + System.out.println( "Configuration: "+ configuration.getName() + "/" + configuration.getLocation() ); + final Configuration[] children = configuration.getChildren(); + + for( int i = 0; i < children.length; i++ ) + { + dump( children[ i ] ); + } } +*/ /** * build project from configuration. @@ -66,7 +86,7 @@ public class DefaultProjectBuilder * @exception Exception if an error occurs * @exception ConfigurationException if an error occurs */ - protected Project build( final File file, final Configuration configuration ) + protected final Project build( final File file, final Configuration configuration ) throws Exception { if( !configuration.getName().equals("project") ) diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DefaultRoleManager.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DefaultRoleManager.java index 460c2c0a7..c2af9f3e6 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DefaultRoleManager.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/DefaultRoleManager.java @@ -10,11 +10,14 @@ package org.apache.myrmidon.components.deployer; import java.net.URL; import java.util.Enumeration; import java.util.HashMap; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; import org.apache.avalon.framework.activity.Initializable; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; -import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder; -import org.xml.sax.InputSource; +import org.apache.avalon.framework.configuration.SAXConfigurationHandler; +import org.xml.sax.SAXException; +import org.xml.sax.XMLReader; /** * Interface to manage roles and mapping to names. @@ -64,14 +67,21 @@ public class DefaultRoleManager public void initialize() throws Exception { - final DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder(); + final SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); + final SAXParser saxParser = saxParserFactory.newSAXParser(); + final XMLReader parser = saxParser.getXMLReader(); + //parser.setFeature( "http://xml.org/sax/features/namespace-prefixes", false ); + + final SAXConfigurationHandler handler = new SAXConfigurationHandler(); + parser.setContentHandler( handler ); + parser.setErrorHandler( handler ); final Enumeration enum = getClass().getClassLoader().getResources( ROLE_DESCRIPTOR ); while( enum.hasMoreElements() ) { final URL url = (URL)enum.nextElement(); - final Configuration descriptor = builder.build( new InputSource( url.toString() ) ); - handleDescriptor( descriptor ); + parser.parse( url.toString() ); + handleDescriptor( handler.getConfiguration() ); } } diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/Deployment.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/Deployment.java index 438f532b8..9416d5065 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/Deployment.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/components/deployer/Deployment.java @@ -11,11 +11,14 @@ import java.io.File; import java.net.URL; import java.net.MalformedURLException; import java.io.IOException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; +import javax.xml.parsers.ParserConfigurationException; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; -import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder; +import org.apache.avalon.framework.configuration.SAXConfigurationHandler; import org.xml.sax.SAXException; -import org.xml.sax.InputSource; +import org.xml.sax.XMLReader; /** * This class deploys a .tsk file into a registry. @@ -61,19 +64,27 @@ public class Deployment { final String systemID = "jar:" + getURL() + "!/" + TSKDEF_FILE; - final DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder(); - try { - return builder.build( new InputSource( systemID ) ); + final SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); + final SAXParser saxParser = saxParserFactory.newSAXParser(); + final XMLReader parser = saxParser.getXMLReader(); + //parser.setFeature( "http://xml.org/sax/features/namespace-prefixes", false ); + + final SAXConfigurationHandler handler = new SAXConfigurationHandler(); + parser.setContentHandler( handler ); + parser.setErrorHandler( handler ); + + parser.parse( systemID ); + return handler.getConfiguration(); } catch( final SAXException se ) { throw new DeploymentException( "Malformed configuration data", se ); } - catch( final ConfigurationException ce ) + catch( final ParserConfigurationException pce ) { - throw new DeploymentException( "Error building configuration", ce ); + throw new DeploymentException( "Error configuring parser", pce ); } catch( final IOException ioe ) {