cziegeler 02/04/29 05:53:17
Modified: src/java/org/apache/cocoon/components/language/markup
AbstractMarkupLanguage.java
CocoonMarkupLanguage.java Logicsheet.java
MarkupLanguage.java NamedLogicsheet.java
src/java/org/apache/cocoon/components/language/markup/sitemap
SitemapMarkupLanguage.java
Log:
Some upgrades to the new source resolving
Revision Changes Path
1.16 +34 -34
xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/AbstractMarkupLanguage.java
Index: AbstractMarkupLanguage.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/AbstractMarkupLanguage.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- AbstractMarkupLanguage.java 22 Feb 2002 07:00:07 -0000 1.15
+++ AbstractMarkupLanguage.java 29 Apr 2002 12:53:16 -0000 1.16
@@ -63,14 +63,13 @@
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.excalibur.pool.Recyclable;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceException;
+import org.apache.excalibur.source.SourceResolver;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.components.language.programming.ProgrammingLanguage;
import org.apache.cocoon.components.store.Store;
-import org.apache.cocoon.components.url.URLFactory;
-import org.apache.cocoon.environment.Source;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.cocoon.environment.URLFactorySourceResolver;
import org.apache.cocoon.util.HashMap;
import org.xml.sax.Attributes;
@@ -97,7 +96,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Ovidiu Predescu</a>
- * @version CVS $Id: AbstractMarkupLanguage.java,v 1.15 2002/02/22 07:00:07
cziegeler Exp $
+ * @version CVS $Id: AbstractMarkupLanguage.java,v 1.16 2002/04/29 12:53:16
cziegeler Exp $
*/
public abstract class AbstractMarkupLanguage
extends AbstractLoggable
@@ -128,11 +127,8 @@
/** The component manager */
protected ComponentManager manager;
- /** The URL factory to create source resolver */
- private URLFactory urlFactory;
-
/** The URL factory source resolver used to resolve URIs */
- private URLFactorySourceResolver urlResolver;
+ private SourceResolver resolver;
/**
@@ -206,14 +202,14 @@
String prefix = params.getParameter("prefix", null);
NamedLogicsheet namedLogicsheet =
- new NamedLogicsheet(location, manager, urlResolver);
+ new NamedLogicsheet(location, manager, resolver);
namedLogicsheet.setLogger(getLogger());
namedLogicsheet.setURI(uri);
namedLogicsheet.setPrefix(prefix);
logicsheet = namedLogicsheet;
} else {
String location = params.getParameter("core-logicsheet", null);
- logicsheet = new Logicsheet(location, manager, urlResolver);
+ logicsheet = new Logicsheet(location, manager, resolver);
logicsheet.setLogger(getLogger());
}
@@ -233,16 +229,14 @@
// Initialize logicsheet cache
this.logicsheetCache = (Store) manager.lookup(Store.TRANSIENT_CACHE);
- // Initialize the URL factory source resolver
- this.urlFactory = (URLFactory)this.manager.lookup(URLFactory.ROLE);
- this.urlResolver = new URLFactorySourceResolver(this.urlFactory, manager);
+ // Initialize the source resolver
+ this.resolver = (SourceResolver)this.manager.lookup(SourceResolver.ROLE);
}
/**
* Recycle this component: clear logic sheet list and dependencies.
*/
- public void recycle()
- {
+ public void recycle() {
this.logicSheetList.clear();
}
@@ -250,14 +244,11 @@
* Release all resources.
*/
public void dispose() {
- if (this.logicsheetCache != null)
- this.manager.release(this.logicsheetCache);
+ this.manager.release(this.logicsheetCache);
this.logicsheetCache = null;
- if (this.urlFactory != null)
- this.manager.release(this.urlFactory);
- this.urlFactory = null;
- this.urlResolver = null;
+ this.manager.release(this.resolver);
+ this.resolver = null;
this.manager = null;
this.languages.clear();
}
@@ -364,7 +355,9 @@
* @return The generated source code
* @exception Exception If an error occurs during code generation
*/
- public String generateCode(InputSource input, String filename,
ProgrammingLanguage programmingLanguage,
+ public String generateCode(InputSource input,
+ String filename,
+ ProgrammingLanguage programmingLanguage,
SourceResolver resolver) throws Exception {
String languageName = programmingLanguage.getLanguageName();
@@ -433,17 +426,24 @@
{
Logicsheet logicsheet = (Logicsheet)logicsheetCache.get(CACHE_PREFIX +
logicsheetLocation);
if (logicsheet == null) {
- // Logicsheet is reusable (across multiple XSPs) object,
- // and it is resolved via urlResolver, and not via per-request
- // temporary resolver.
- Source inputSource = this.urlResolver.resolve(logicsheetLocation);
-
- // Resolver (local) could not be used as it is temporary
- // (per-request) object, yet Logicsheet is being cached and reused
- // across multiple requests. "Global" url-factory-based resolver
- // passed to the Logicsheet.
- logicsheet = new Logicsheet(inputSource, manager, this.urlResolver);
- logicsheetCache.store(CACHE_PREFIX + logicsheet.getSystemId(),
logicsheet);
+ Source inputSource = null;
+ try {
+ // Logicsheet is reusable (across multiple XSPs) object,
+ // and it is resolved via urlResolver, and not via per-request
+ // temporary resolver.
+ inputSource = this.resolver.resolveURI(logicsheetLocation);
+
+ // Resolver (local) could not be used as it is temporary
+ // (per-request) object, yet Logicsheet is being cached and reused
+ // across multiple requests. "Global" url-factory-based resolver
+ // passed to the Logicsheet.
+ logicsheet = new Logicsheet(inputSource, manager, this.resolver);
+ logicsheetCache.store(CACHE_PREFIX + logicsheet.getSystemId(),
logicsheet);
+ } catch (SourceException se) {
+ throw new ProcessingException(se);
+ } finally {
+ this.resolver.release( inputSource );
+ }
}
String logicsheetName = logicsheet.getSystemId();
1.6 +2 -2
xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/CocoonMarkupLanguage.java
Index: CocoonMarkupLanguage.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/CocoonMarkupLanguage.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- CocoonMarkupLanguage.java 20 Apr 2002 03:38:34 -0000 1.5
+++ CocoonMarkupLanguage.java 29 Apr 2002 12:53:16 -0000 1.6
@@ -54,7 +54,7 @@
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.components.language.programming.ProgrammingLanguage;
-import org.apache.cocoon.environment.SourceResolver;
+import org.apache.excalibur.source.SourceResolver;
import org.apache.log.Logger;
import org.xml.sax.Attributes;
@@ -81,7 +81,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Ovidiu Predescu</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Vadim Gritsenko</a>
- * @version CVS $Id: CocoonMarkupLanguage.java,v 1.5 2002/04/20 03:38:34 vgritsenko
Exp $
+ * @version CVS $Id: CocoonMarkupLanguage.java,v 1.6 2002/04/29 12:53:16 cziegeler
Exp $
*/
public abstract class CocoonMarkupLanguage extends AbstractMarkupLanguage
{
1.11 +47 -22
xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/Logicsheet.java
Index: Logicsheet.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/Logicsheet.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- Logicsheet.java 29 Apr 2002 10:52:52 -0000 1.10
+++ Logicsheet.java 29 Apr 2002 12:53:17 -0000 1.11
@@ -55,8 +55,9 @@
import org.apache.avalon.framework.logger.AbstractLoggable;
import org.apache.cocoon.components.xslt.XSLTProcessor;
-import org.apache.cocoon.environment.Source;
-import org.apache.cocoon.environment.SourceResolver;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceException;
+import org.apache.excalibur.source.SourceResolver;
import org.apache.cocoon.ProcessingException;
import org.xml.sax.Attributes;
@@ -83,52 +84,55 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Ovidiu Predescu</a>
- * @version CVS $Id: Logicsheet.java,v 1.10 2002/04/29 10:52:52 cziegeler Exp $
+ * @version CVS $Id: Logicsheet.java,v 1.11 2002/04/29 12:53:17 cziegeler Exp $
*/
public class Logicsheet extends AbstractLoggable
{
/**
- * The Source object for this logicsheet.
+ * The Source Resolver object for this logicsheet.
*/
- private Source source;
+ private SourceResolver resolver;
/**
- * the template namespace's list
+ * The system id to resolve
*/
- protected Map namespaceURIs = new HashMap();
+ private String systemId;
/**
- * The {@link org.apache.cocoon.components.xslt.XSLTProcessor} component.
+ * the template namespace's list
*/
- private XSLTProcessor xsltProcessor;
+ protected Map namespaceURIs = new HashMap();
/**
* The ComponentManager of this instance.
*/
private ComponentManager manager;
-
public Logicsheet(Source source, ComponentManager manager, SourceResolver
resolver)
- throws ProcessingException
+ throws SAXException, IOException, ProcessingException
{
- this.source = source;
+ this.resolver = resolver;
+ this.systemId = source.getSystemId();
this.manager = manager;
- try {
- this.xsltProcessor =
(XSLTProcessor)this.manager.lookup(XSLTProcessor.ROLE);
- } catch (ComponentException e) {
- throw new ProcessingException("Could not obtain XSLT processor", e);
- }
}
public Logicsheet(String systemId, ComponentManager manager, SourceResolver
resolver)
- throws SAXException, IOException, ProcessingException
+ throws SAXException, IOException, SourceException, ProcessingException
{
- this(resolver.resolve(systemId), manager, resolver);
+ this.resolver = resolver;
+ this.manager = manager;
+ Source source = null;
+ try {
+ source = this.resolver.resolveURI( systemId );
+ this.systemId = source.getSystemId();
+ } finally {
+ this.resolver.release( source );
+ }
}
public String getSystemId()
{
- return source.getSystemId();
+ return this.systemId;
}
/**
@@ -150,16 +154,37 @@
*/
public TransformerHandler getTransformerHandler() throws ProcessingException
{
+ XSLTProcessor xsltProcessor = null;
+ Source source = null;
try {
+ xsltProcessor = (XSLTProcessor)this.manager.lookup(XSLTProcessor.ROLE);
+ source = this.resolver.resolveURI( this.systemId );
+
// If the Source object is not changed, the
// getTransformerHandler() of XSLTProcessor will simply return
// the old template object. If the Source is unchanged, the
// namespaces are not modified either.
XMLFilter saveNSFilter = new SaveNamespaceFilter(namespaceURIs);
- return xsltProcessor.getTransformerHandler(source, saveNSFilter);
+ // FIXME: The wrapping will disappear as soon as we use excaliburs xslt
processor
+ Object[] env =
org.apache.cocoon.components.CocoonComponentManager.getCurrentEnvironment();
+ return xsltProcessor.getTransformerHandler(
+ new
org.apache.cocoon.components.source.impl.AvalonToCocoonSource(source,
+
this.resolver,
+
(org.apache.cocoon.environment.Environment)env[0]),
+ saveNSFilter);
+
+ } catch (ComponentException e) {
+ throw new ProcessingException("Could not obtain XSLT processor", e);
+ } catch (MalformedURLException e) {
+ throw new ProcessingException("Could not resolve " + this.systemId, e);
+ } catch (IOException e) {
+ throw new ProcessingException("Could not resolve " + this.systemId, e);
+ } catch (SourceException e) {
+ throw new ProcessingException("Could not resolve " + this.systemId, e);
} finally {
+ this.manager.release(xsltProcessor);
// Release used resources
- source.recycle();
+ this.resolver.release( source );
}
}
1.6 +2 -2
xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/MarkupLanguage.java
Index: MarkupLanguage.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/MarkupLanguage.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- MarkupLanguage.java 22 Feb 2002 07:00:08 -0000 1.5
+++ MarkupLanguage.java 29 Apr 2002 12:53:17 -0000 1.6
@@ -52,7 +52,7 @@
import org.apache.avalon.framework.component.Component;
import org.apache.cocoon.components.language.programming.ProgrammingLanguage;
-import org.apache.cocoon.environment.SourceResolver;
+import org.apache.excalibur.source.SourceResolver;
import org.xml.sax.InputSource;
/**
@@ -61,7 +61,7 @@
* document augmenting it with dynamic content
*
* @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
- * @version CVS $Id: MarkupLanguage.java,v 1.5 2002/02/22 07:00:08 cziegeler Exp $
+ * @version CVS $Id: MarkupLanguage.java,v 1.6 2002/04/29 12:53:17 cziegeler Exp $
*/
public interface MarkupLanguage extends Component {
1.10 +4 -3
xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/NamedLogicsheet.java
Index: NamedLogicsheet.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/NamedLogicsheet.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- NamedLogicsheet.java 26 Apr 2002 10:42:16 -0000 1.9
+++ NamedLogicsheet.java 29 Apr 2002 12:53:17 -0000 1.10
@@ -52,7 +52,8 @@
import org.apache.avalon.framework.component.ComponentManager;
import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.SourceResolver;
+import org.apache.excalibur.source.SourceResolver;
+import org.apache.excalibur.source.SourceException;
import org.xml.sax.SAXException;
@@ -67,7 +68,7 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Ovidiu Predescu</a>
- * @version CVS $Id: NamedLogicsheet.java,v 1.9 2002/04/26 10:42:16 cziegeler Exp $
+ * @version CVS $Id: NamedLogicsheet.java,v 1.10 2002/04/29 12:53:17 cziegeler Exp $
*/
public class NamedLogicsheet extends Logicsheet {
/**
@@ -81,7 +82,7 @@
private String prefix;
public NamedLogicsheet(String systemId, ComponentManager manager,
SourceResolver resolver)
- throws IOException, ProcessingException, SAXException
+ throws IOException, ProcessingException, SourceException, SAXException
{
super(systemId, manager, resolver);
}
1.10 +2 -2
xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/sitemap/SitemapMarkupLanguage.java
Index: SitemapMarkupLanguage.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/sitemap/SitemapMarkupLanguage.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- SitemapMarkupLanguage.java 22 Feb 2002 07:00:08 -0000 1.9
+++ SitemapMarkupLanguage.java 29 Apr 2002 12:53:17 -0000 1.10
@@ -57,7 +57,7 @@
import org.apache.cocoon.components.language.markup.LogicsheetCodeGenerator;
import org.apache.cocoon.components.language.markup.CocoonMarkupLanguage;
import org.apache.cocoon.components.language.programming.ProgrammingLanguage;
-import org.apache.cocoon.environment.SourceResolver;
+import org.apache.excalibur.source.SourceResolver;
import org.apache.log.Logger;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
@@ -75,7 +75,7 @@
* <a
href="http://xml.apache.org/cocoon2/userdocs/concepts/sitemap.html">Sitemap</a>.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Vadim Gritsenko</a>
- * @version CVS $Id: SitemapMarkupLanguage.java,v 1.9 2002/02/22 07:00:08 cziegeler
Exp $
+ * @version CVS $Id: SitemapMarkupLanguage.java,v 1.10 2002/04/29 12:53:17
cziegeler Exp $
*/
public class SitemapMarkupLanguage extends CocoonMarkupLanguage {
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]