/* * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. * See terms of license at gnu.org. */ // $Id: XMLResourceProvider.java,v 1.4.2.2 2002/11/20 04:00:56 starksm Exp $ package org.jboss.net.axis; import org.apache.axis.AxisEngine; import org.apache.axis.ConfigurationException; import org.apache.axis.configuration.FileProvider; import org.apache.axis.deployment.wsdd.WSDDGlobalConfiguration; import org.apache.axis.utils.XMLUtils; import java.net.URL; import java.io.InputStream; import java.io.IOException; /** * A FileProvider that sits on a given URL and * that hosts classloader-aware deployment information. * @author Christoph G. Jung * @created 28. September 2001 * @version $Revision: 1.4.2.2 $ */ public class XMLResourceProvider extends FileProvider { // // Attributes // /** the original resource that we host */ final protected URL resource; /** input stream cache */ protected InputStream is; // // Constructors // /** * construct a new XmlResourceProvider * @param resource url pointing to the deployment descriptor */ public XMLResourceProvider(URL resource) { super((InputStream) null); this.resource = resource; } // // Public API // /** override input stream setter to sync protected cache */ public void setInputStream(InputStream stream) { super.setInputStream(stream); is=stream; } /** configures the given AxisEngine with the given descriptor */ public void configureEngine(AxisEngine engine) throws ConfigurationException { buildDeployment(); getDeployment().configureEngine(engine); engine.refreshGlobalOptions(); } /** constructs a new deployment */ public synchronized Deployment buildDeployment() throws ConfigurationException { if (getDeployment() == null) { try { if (is == null) { setInputStream(resource.openStream()); } setDeployment( new Deployment(XMLUtils.newDocument(is).getDocumentElement()) ); setInputStream(null); if(getDeployment().getGlobalConfiguration()==null) { WSDDGlobalConfiguration config=new WSDDGlobalConfiguration(); config.setOptionsHashtable(new java.util.Hashtable()); getDeployment().setGlobalConfiguration(config); } } catch (Exception e) { throw new ConfigurationException(e); } } return getMyDeployment(); } /** returns out special deployment */ public Deployment getMyDeployment() { return (Deployment) getDeployment(); } /** not supported, yet. Should we use http-push or what? */ public void writeEngineConfig(AxisEngine engine) { // NOOP } }