ovidiu 01/10/29 13:53:58 Modified: src/org/apache/cocoon/components/xscript XScriptManager.java XScriptManagerImpl.java XScriptObject.java XScriptObjectFromURL.java Log: Don't expose the ComponentManager from XScriptManagerImpl to the XScript object. Have instead XScriptObject implement Composable so it can receive the ComponentManager from its container. Revision Changes Path 1.3 +0 -7 xml-cocoon2/src/org/apache/cocoon/components/xscript/XScriptManager.java Index: XScriptManager.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/components/xscript/XScriptManager.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XScriptManager.java 2001/10/26 11:29:52 1.2 +++ XScriptManager.java 2001/10/29 21:53:58 1.3 @@ -150,11 +150,4 @@ */ void removeFirst(String name, String sessionContext, String pageContext) throws IllegalArgumentException; - - /** - * Return the <code>ComponentManager</code> managing this instance. - * - * @return a <code>ComponentManager</code> value - */ - ComponentManager getComponentManager(); } 1.3 +9 -5 xml-cocoon2/src/org/apache/cocoon/components/xscript/XScriptManagerImpl.java Index: XScriptManagerImpl.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/components/xscript/XScriptManagerImpl.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XScriptManagerImpl.java 2001/10/25 19:32:59 1.2 +++ XScriptManagerImpl.java 2001/10/29 21:53:58 1.3 @@ -73,6 +73,15 @@ getLogger().debug("XScriptManager component initialized."); } + public void register(XScriptObject object) + { + try { + object.compose(manager); + } + catch (ComponentException ex) { + } + } + public void configure(Configuration conf) throws ConfigurationException { @@ -251,10 +260,5 @@ // No variable `name' found, throw an exception. throw new IllegalArgumentException("removeFirst: no variable '" + name + "' accessible from this scope!"); - } - - public ComponentManager getComponentManager() - { - return manager; } } 1.2 +15 -7 xml-cocoon2/src/org/apache/cocoon/components/xscript/XScriptObject.java Index: XScriptObject.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/components/xscript/XScriptObject.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- XScriptObject.java 2001/10/10 20:53:56 1.1 +++ XScriptObject.java 2001/10/29 21:53:58 1.2 @@ -24,6 +24,7 @@ import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.ComponentException; import org.apache.avalon.framework.component.Component; +import org.apache.avalon.framework.component.Composable; /** * <code>XScriptObject</code> is the root class implemented by all the @@ -33,7 +34,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Ovidiu Predescu</a> * @since August 4, 2001 */ -public abstract class XScriptObject implements Source +public abstract class XScriptObject implements Source, Composable { /** * The creation date of this <code>XScriptObject</code>. @@ -46,6 +47,8 @@ */ XScriptManager xscriptManager; + protected ComponentManager componentManager; + /** * Creates a new <code>XScriptObject</code> instance. * @@ -54,6 +57,13 @@ public XScriptObject(XScriptManager manager) { this.xscriptManager = manager; + ((XScriptManagerImpl)this.xscriptManager).register(this); + } + + public void compose(ComponentManager manager) + throws ComponentException + { + this.componentManager = manager; } /** @@ -77,13 +87,12 @@ CharArrayWriter writer = new CharArrayWriter(); StreamResult result = new StreamResult(writer); - ComponentManager manager = xscriptManager.getComponentManager(); XSLTProcessor transformer - = (XSLTProcessor)manager.lookup(XSLTProcessor.ROLE); + = (XSLTProcessor)componentManager.lookup(XSLTProcessor.ROLE); transformer.transform(this, stylesheet, params, result); - manager.release((Component)transformer); + componentManager.release((Component)transformer); return new XScriptObjectResult(xscriptManager, writer.toString()); } @@ -98,14 +107,13 @@ try { EmbeddedXMLPipe newHandler = new EmbeddedXMLPipe(handler); - ComponentManager manager = xscriptManager.getComponentManager(); - Parser parser = (Parser)manager.lookup(Parser.ROLE); + Parser parser = (Parser)componentManager.lookup(Parser.ROLE); parser.setContentHandler(newHandler); InputSource source = getInputSource(); parser.parse(source); - manager.release(parser); + componentManager.release(parser); } catch (Exception ex) { throw new SAXException(ex); 1.3 +5 -5 xml-cocoon2/src/org/apache/cocoon/components/xscript/XScriptObjectFromURL.java Index: XScriptObjectFromURL.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/components/xscript/XScriptObjectFromURL.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XScriptObjectFromURL.java 2001/10/25 19:32:59 1.2 +++ XScriptObjectFromURL.java 2001/10/29 21:53:58 1.3 @@ -28,7 +28,8 @@ public class XScriptObjectFromURL extends XScriptObject { /** - * The URL containing to obtain the source from. + * The content obtained from this URL becomes the content of this + * instance. */ String systemId; @@ -38,7 +39,7 @@ int contentLength; /** - * When the content of the URL was last modified. + * When was the content of the URL last modified. */ long lastModified; @@ -52,13 +53,12 @@ throws ProcessingException, IOException { try { - ComponentManager manager = xscriptManager.getComponentManager(); - URLFactory urlFactory = (URLFactory)manager.lookup(URLFactory.ROLE); + URLFactory urlFactory = (URLFactory)componentManager.lookup(URLFactory.ROLE); URL url = urlFactory.getURL(systemId); URLConnection conn = url.openConnection(); InputStream is = conn.getInputStream(); contentLength = conn.getContentLength(); - manager.release((Component)urlFactory); + componentManager.release((Component)urlFactory); return is; }
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]