git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269110 13f79535-47bb-0310-9956-ffa450edef68master
@@ -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") ) | |||
@@ -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() ); | |||
} | |||
} | |||
@@ -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 ) | |||
{ | |||