cziegeler 01/05/22 07:48:37
Modified: . build.xml
src/org/apache/cocoon Cocoon.java
src/org/apache/cocoon/acting AbstractDatabaseAction.java
Action.java DatabaseAddAction.java
DatabaseAuthenticatorAction.java
DatabaseDeleteAction.java DatabaseUpdateAction.java
FormValidatorAction.java HelloAction.java
LangSelect.java OraAddAction.java
ResourceExistsAction.java SendmailAction.java
SessionInvalidatorAction.java
SessionPropagatorAction.java
SessionValidatorAction.java
src/org/apache/cocoon/components/language/generator
ProgramGenerator.java ProgramGeneratorImpl.java
src/org/apache/cocoon/components/language/markup
AbstractMarkupLanguage.java Logicsheet.java
MarkupLanguage.java
src/org/apache/cocoon/components/language/markup/sitemap
SitemapMarkupLanguage.java
src/org/apache/cocoon/components/language/markup/xsp
XSPMarkupLanguage.java
src/org/apache/cocoon/components/pipeline
AbstractEventPipeline.java
AbstractStreamPipeline.java
CachingEventPipeline.java
CachingStreamPipeline.java
NonCachingEventPipeline.java
src/org/apache/cocoon/components/sax
XMLByteStreamInterpreter.java
src/org/apache/cocoon/components/saxconnector
CIncludeSAXConnector.java NullSAXConnector.java
XIncludeSAXConnector.java
src/org/apache/cocoon/environment AbstractEnvironment.java
Environment.java
src/org/apache/cocoon/generation AbstractGenerator.java
DirectoryGenerator.java FileGenerator.java
FragmentExtractorGenerator.java HTMLGenerator.java
JspGenerator.java PhpGenerator.java
ScriptGenerator.java ServerPagesGenerator.java
ServletGenerator.java
src/org/apache/cocoon/reading AbstractReader.java
DatabaseReader.java ResourceReader.java
src/org/apache/cocoon/serialization AbstractSerializer.java
src/org/apache/cocoon/sitemap ContentAggregator.java
Handler.java LinkTranslator.java
SitemapComponentSelector.java
SitemapModelComponent.java
src/org/apache/cocoon/transformation
AbstractDOMTransformer.java
FragmentExtractorTransformer.java
I18nTransformer.java I18nTransformer2.java
LogTransformer.java SQLTransformer.java
TraxTransformer.java XIncludeTransformer.java
XTTransformer.java
Added: src/org/apache/cocoon/environment FactoryURLResolver.java
Source.java SourceResolver.java URLResolver.java
Log:
Replaced EntityResolver with SourceResolver which uses the URLFactory for
resolving urls. We could later make the sitemap a friend of the URLFactory to
make the cocoon: url work. Updated to a7 as the interfaces changed
Revision Changes Path
1.4 +1 -1 xml-cocoon2/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/build.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- build.xml 2001/05/18 08:47:39 1.3
+++ build.xml 2001/05/22 14:30:20 1.4
@@ -125,7 +125,7 @@
<property name="fullname" value="Apache Cocoon"/>
<property name="Name" value="Cocoon"/>
<property name="name" value="cocoon"/>
- <property name="version" value="2.0a6"/>
+ <property name="version" value="2.0a7"/>
<property name="year" value="1999-2001"/>
<echo message="------------------- ${fullname} ${version} [${year}]
----------------"/>
1.2 +8 -5 xml-cocoon2/src/org/apache/cocoon/Cocoon.java
Index: Cocoon.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/Cocoon.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Cocoon.java 2001/05/09 20:49:28 1.1
+++ Cocoon.java 2001/05/22 14:30:31 1.2
@@ -38,7 +38,6 @@
import org.apache.cocoon.components.pipeline.StreamPipeline;
import org.apache.cocoon.components.store.FilesystemStore;
import org.apache.cocoon.components.url.URLFactory;
-import org.apache.cocoon.components.url.URLFactory;
import org.apache.cocoon.environment.Environment;
import org.apache.cocoon.serialization.Serializer;
import org.apache.cocoon.sitemap.Manager;
@@ -54,7 +53,7 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a>
(Apache Software Foundation, Exoffice Technologies)
* @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:28 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:30:31 $
*/
public class Cocoon extends AbstractLoggable implements ThreadSafe,
Component, Initializable, Disposable, Modifiable, Processor, Contextualizable {
/** The application context */
@@ -85,7 +84,7 @@
private boolean reloadSitemapAsynchron = true;
/** The component manager. */
- private DefaultComponentManager componentManager;
+ public DefaultComponentManager componentManager;
/** flag for disposed or not */
private boolean disposed = false;
@@ -311,7 +310,8 @@
try {
programGenerator = (ProgramGenerator)
this.componentManager.lookup(Roles.PROGRAM_GENERATOR);
urlFactory = (URLFactory)
this.componentManager.lookup(Roles.URL_FACTORY);
- File sourceFile = new
File(urlFactory.getURL(environment.resolveEntity(null,
sitemapFileName).getSystemId()).getFile());
+ environment.setURLResolver(new
org.apache.cocoon.environment.FactoryURLResolver(urlFactory));
+ File sourceFile = environment.resolve(sitemapFileName).getFile();
String markupLanguage = "sitemap";
String programmingLanguage = "java";
@@ -328,6 +328,7 @@
getLogger().error("Main: Error compiling sitemap", e);
throw e;
} finally {
+ environment.setURLResolver(null);
if (programGenerator != null)
this.componentManager.release((Component) programGenerator);
if (urlFactory != null)
this.componentManager.release((Component) urlFactory);
}
@@ -345,7 +346,8 @@
programGenerator = (ProgramGenerator)
this.componentManager.lookup(Roles.PROGRAM_GENERATOR);
urlFactory = (URLFactory)
this.componentManager.lookup(Roles.URL_FACTORY);
- File sourceFile = new
File(urlFactory.getURL(environment.resolveEntity(null,
fileName).getSystemId()).getFile());
+ environment.setURLResolver(new
org.apache.cocoon.environment.FactoryURLResolver(urlFactory));
+ File sourceFile = environment.resolve(fileName).getFile();
String markupLanguage = "xsp";
String programmingLanguage = "java";
@@ -357,6 +359,7 @@
getLogger().error("Main: Error compiling XSP", e);
throw e;
} finally {
+ environment.setURLResolver(null);
if (programGenerator != null)
this.componentManager.release((Component) programGenerator);
if (urlFactory != null)
this.componentManager.release((Component) urlFactory);
}
1.5 +1 -3
xml-cocoon2/src/org/apache/cocoon/acting/AbstractDatabaseAction.java
Index: AbstractDatabaseAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/AbstractDatabaseAction.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- AbstractDatabaseAction.java 2001/05/21 19:43:16 1.4
+++ AbstractDatabaseAction.java 2001/05/22 14:30:39 1.5
@@ -46,11 +46,9 @@
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.Roles;
import org.apache.cocoon.components.parser.Parser;
-import org.apache.cocoon.components.url.URLFactory;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.generation.ImageDirectoryGenerator;
import org.apache.avalon.excalibur.datasource.DataSourceComponent;
-import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
/**
@@ -173,7 +171,7 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Donald Ball</a>
- * @version CVS $Revision: 1.4 $ $Date: 2001/05/21 19:43:16 $
+ * @version CVS $Revision: 1.5 $ $Date: 2001/05/22 14:30:39 $
*/
public abstract class AbstractDatabaseAction extends
AbstractComplementaryConfigurableAction implements Configurable, Disposable {
protected Map files = new HashMap();
1.2 +4 -4 xml-cocoon2/src/org/apache/cocoon/acting/Action.java
Index: Action.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/Action.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Action.java 2001/05/09 20:50:05 1.1
+++ Action.java 2001/05/22 14:30:42 1.2
@@ -11,13 +11,13 @@
import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.thread.ThreadSafe;
-import org.xml.sax.EntityResolver;
+import org.apache.cocoon.environment.SourceResolver;
import org.xml.sax.SAXException;
/**
*
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:05 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:30:42 $
*/
public interface Action extends Component, ThreadSafe {
/**
@@ -29,7 +29,7 @@
* NOTE: It is important that <code>Action<code> classes are
* written in a thread safe manner.
*
- * @param resolver The <code>EntityResolver</code> in charge
+ * @param resolver The <code>SourceResolver</code> in charge
* @param objectModel The <code>Map</code> with object of the
* calling environment which can be used
* to select values this controller may need
@@ -45,7 +45,7 @@
* be skipped.
* @exception Exception Indicates something is totally wrong
*/
- Map act(EntityResolver resolver, Map objectModel, String source,
Parameters par)
+ Map act(SourceResolver resolver, Map objectModel, String source,
Parameters par)
throws Exception;
}
1.4 +3 -3
xml-cocoon2/src/org/apache/cocoon/acting/DatabaseAddAction.java
Index: DatabaseAddAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/DatabaseAddAction.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DatabaseAddAction.java 2001/05/18 20:03:17 1.3
+++ DatabaseAddAction.java 2001/05/22 14:30:45 1.4
@@ -28,9 +28,9 @@
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.Roles;
import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.generation.ImageDirectoryGenerator;
import org.apache.avalon.excalibur.datasource.DataSourceComponent;
-import org.xml.sax.EntityResolver;
/**
* Adds record in a database. The action can update one or more tables,
@@ -41,7 +41,7 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Donald Ball</a>
- * @version CVS $Revision: 1.3 $ $Date: 2001/05/18 20:03:17 $
+ * @version CVS $Revision: 1.4 $ $Date: 2001/05/22 14:30:45 $
*/
public class DatabaseAddAction extends AbstractDatabaseAction {
protected static final Map addStatements = new HashMap();
@@ -52,7 +52,7 @@
* the file referenced by the "form-descriptor" parameter conforms
* to the AbstractDatabaseAction specifications.
*/
- public Map act(EntityResolver resolver, Map objectModel, String source,
Parameters param) throws Exception {
+ public Map act(SourceResolver resolver, Map objectModel, String source,
Parameters param) throws Exception {
DataSourceComponent datasource = null;
Connection conn = null;
Map results = new HashMap();
1.2 +5 -5
xml-cocoon2/src/org/apache/cocoon/acting/DatabaseAuthenticatorAction.java
Index: DatabaseAuthenticatorAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/DatabaseAuthenticatorAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DatabaseAuthenticatorAction.java 2001/05/09 20:50:05 1.1
+++ DatabaseAuthenticatorAction.java 2001/05/22 14:30:47 1.2
@@ -1,4 +1,4 @@
-// $Id: DatabaseAuthenticatorAction.java,v 1.1 2001/05/09 20:50:05 giacomo
Exp $
+// $Id: DatabaseAuthenticatorAction.java,v 1.2 2001/05/22 14:30:47 cziegeler
Exp $
package org.apache.cocoon.acting;
import java.sql.Connection;
@@ -13,9 +13,9 @@
import org.apache.cocoon.Constants;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Session;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.avalon.excalibur.datasource.DataSourceComponent;
import org.apache.log.Logger;
-import org.xml.sax.EntityResolver;
/**
* This action is used to authenticate user by comparing several request
@@ -50,14 +50,14 @@
* not verified.
*
* @author Martin Man <[EMAIL PROTECTED]>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:05 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:30:47 $
*/
public class DatabaseAuthenticatorAction extends AbstractDatabaseAction
{
/**
* Main invocation routine.
*/
- public Map act (EntityResolver resolver, Map objectModel, String src,
+ public Map act (SourceResolver resolver, Map objectModel, String src,
Parameters parameters) throws Exception {
DataSourceComponent datasource = null;
Connection conn = null;
@@ -223,5 +223,5 @@
}
}
-// $Id: DatabaseAuthenticatorAction.java,v 1.1 2001/05/09 20:50:05 giacomo
Exp $
+// $Id: DatabaseAuthenticatorAction.java,v 1.2 2001/05/22 14:30:47 cziegeler
Exp $
// vim: set et ts=4 sw=4:
1.2 +3 -3
xml-cocoon2/src/org/apache/cocoon/acting/DatabaseDeleteAction.java
Index: DatabaseDeleteAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/DatabaseDeleteAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DatabaseDeleteAction.java 2001/05/09 20:50:06 1.1
+++ DatabaseDeleteAction.java 2001/05/22 14:30:50 1.2
@@ -26,9 +26,9 @@
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.Roles;
import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.generation.ImageDirectoryGenerator;
import org.apache.avalon.excalibur.datasource.DataSourceComponent;
-import org.xml.sax.EntityResolver;
/**
* Delete a record from a database. This Action assumes that all
@@ -38,7 +38,7 @@
* the keys.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:06 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:30:50 $
*/
public final class DatabaseDeleteAction extends AbstractDatabaseAction {
private static final Map deleteStatements = new HashMap();
@@ -48,7 +48,7 @@
* the file referenced by the "form-descriptor" parameter conforms
* to the AbstractDatabaseAction specifications.
*/
- public final Map act(EntityResolver resolver, Map objectModel, String
source, Parameters param) throws Exception {
+ public final Map act(SourceResolver resolver, Map objectModel, String
source, Parameters param) throws Exception {
DataSourceComponent datasource = null;
Connection conn = null;
int currentIndex = 0;
1.2 +3 -3
xml-cocoon2/src/org/apache/cocoon/acting/DatabaseUpdateAction.java
Index: DatabaseUpdateAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/DatabaseUpdateAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DatabaseUpdateAction.java 2001/05/09 20:50:06 1.1
+++ DatabaseUpdateAction.java 2001/05/22 14:30:53 1.2
@@ -26,16 +26,16 @@
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.Roles;
import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.generation.ImageDirectoryGenerator;
import org.apache.avalon.excalibur.datasource.DataSourceComponent;
-import org.xml.sax.EntityResolver;
/**
* Update a record in a database. This Action assumes that there is
* only one table at a time to update.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:06 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:30:53 $
*/
public class DatabaseUpdateAction extends AbstractDatabaseAction {
private static final Map updateStatements = new HashMap();
@@ -45,7 +45,7 @@
* the file referenced by the "form-descriptor" parameter conforms
* to the AbstractDatabaseAction specifications.
*/
- public Map act(EntityResolver resolver, Map objectModel, String source,
Parameters param) throws Exception {
+ public Map act(SourceResolver resolver, Map objectModel, String source,
Parameters param) throws Exception {
DataSourceComponent datasource = null;
Connection conn = null;
int currentIndex = 0;
1.3 +5 -5
xml-cocoon2/src/org/apache/cocoon/acting/FormValidatorAction.java
Index: FormValidatorAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/FormValidatorAction.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- FormValidatorAction.java 2001/05/11 08:49:49 1.2
+++ FormValidatorAction.java 2001/05/22 14:30:57 1.3
@@ -1,4 +1,4 @@
-// $Id: FormValidatorAction.java,v 1.2 2001/05/11 08:49:49 mman Exp $
+// $Id: FormValidatorAction.java,v 1.3 2001/05/22 14:30:57 cziegeler Exp $
package org.apache.cocoon.acting;
import java.util.Collections;
@@ -9,9 +9,9 @@
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.Constants;
import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.util.Tokenizer;
import org.apache.log.Logger;
-import org.xml.sax.EntityResolver;
/**
* This is the action used to validate Request parameters.
@@ -49,14 +49,14 @@
* all validated parameters to the sitemap via {name} expression.
*
* @author Martin Man <[EMAIL PROTECTED]>
- * @version CVS $Revision: 1.2 $ $Date: 2001/05/11 08:49:49 $
+ * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:30:57 $
*/
public class FormValidatorAction extends AbstractValidatorAction
{
/**
* Main invocation routine.
*/
- public Map act (EntityResolver resolver, Map objectModel, String src,
+ public Map act (SourceResolver resolver, Map objectModel, String src,
Parameters parameters) throws Exception {
Request req = (Request)
objectModel.get (Constants.REQUEST_OBJECT);
@@ -178,5 +178,5 @@
}
}
-// $Id: FormValidatorAction.java,v 1.2 2001/05/11 08:49:49 mman Exp $
+// $Id: FormValidatorAction.java,v 1.3 2001/05/22 14:30:57 cziegeler Exp $
// vim: set et ts=4 sw=4:
1.2 +3 -4 xml-cocoon2/src/org/apache/cocoon/acting/HelloAction.java
Index: HelloAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/HelloAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HelloAction.java 2001/05/09 20:50:06 1.1
+++ HelloAction.java 2001/05/22 14:31:01 1.2
@@ -15,15 +15,14 @@
import org.apache.cocoon.Constants;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Session;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.SAXException;
+import org.apache.cocoon.environment.SourceResolver;
/**
* A simple Action that tracks if a <code>Session</code> object
* has been created or not.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:06 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:31:01 $
*/
public class HelloAction extends ComposerAction {
@@ -31,7 +30,7 @@
* A simple Action that logs if the <code>Session</code> object
* has been created
*/
- public Map act (EntityResolver resolver, Map objectModel, String src,
Parameters par) throws Exception {
+ public Map act (SourceResolver resolver, Map objectModel, String src,
Parameters par) throws Exception {
Request request = (Request)
objectModel.get(Constants.REQUEST_OBJECT);
if (request != null) {
Session session = request.getSession (false);
1.2 +2 -2 xml-cocoon2/src/org/apache/cocoon/acting/LangSelect.java
Index: LangSelect.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/LangSelect.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- LangSelect.java 2001/05/09 20:50:06 1.1
+++ LangSelect.java 2001/05/22 14:31:05 1.2
@@ -20,7 +20,7 @@
import org.apache.cocoon.environment.Cookie;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Session;
-import org.xml.sax.EntityResolver;
+import org.apache.cocoon.environment.SourceResolver;
/**
* LangSelect Action returns two character language code to sitemap.
@@ -58,7 +58,7 @@
* Puts lang parameter to session and to objectModel
* if it is not already there.
*/
- public Map act(EntityResolver resolver, Map objectModel, String source,
+ public Map act(SourceResolver resolver, Map objectModel, String source,
Parameters par) throws Exception {
String lang;
1.2 +3 -3
xml-cocoon2/src/org/apache/cocoon/acting/OraAddAction.java
Index: OraAddAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/OraAddAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- OraAddAction.java 2001/05/09 20:50:07 1.1
+++ OraAddAction.java 2001/05/22 14:31:08 1.2
@@ -30,16 +30,16 @@
import org.apache.cocoon.Constants;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.generation.ImageDirectoryGenerator;
import org.apache.avalon.excalibur.datasource.DataSourceComponent;
-import org.xml.sax.EntityResolver;
/**
* Add a record in a database. This Action assumes that there is
* only one table at a time to update.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:07 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:31:08 $
*/
public class OraAddAction extends DatabaseAddAction {
private static final Map selectLOBStatements = new HashMap();
@@ -49,7 +49,7 @@
* the file referenced by the "form-descriptor" parameter conforms
* to the AbstractDatabaseAction specifications.
*/
- public Map act(EntityResolver resolver, Map objectModel, String source,
Parameters param) throws Exception {
+ public Map act(SourceResolver resolver, Map objectModel, String source,
Parameters param) throws Exception {
DataSourceComponent datasource = null;
Connection conn = null;
int currentIndex = 0;
1.2 +4 -14
xml-cocoon2/src/org/apache/cocoon/acting/ResourceExistsAction.java
Index: ResourceExistsAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/ResourceExistsAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ResourceExistsAction.java 2001/05/09 20:50:08 1.1
+++ ResourceExistsAction.java 2001/05/22 14:31:10 1.2
@@ -25,7 +25,7 @@
import org.apache.cocoon.Roles;
import org.apache.cocoon.components.url.URLFactory;
import org.apache.cocoon.environment.Request;
-import org.xml.sax.EntityResolver;
+import org.apache.cocoon.environment.SourceResolver;
import org.xml.sax.InputSource;
/**
@@ -34,25 +34,15 @@
* null otherwise. It has only been tested with context urls.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Donald Ball</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:08 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:31:10 $
*/
public class ResourceExistsAction extends ComposerAction {
- protected URLFactory urlFactory;
-
- public void configure(Configuration conf) throws ConfigurationException {
- try {
- urlFactory = (URLFactory)this.manager.lookup(Roles.URL_FACTORY);
- } catch (ComponentException e) {
- throw new ConfigurationException("Could not lookup url
factory",e);
- }
- }
-
- public Map act(EntityResolver resolver, Map objectModel, String source,
Parameters parameters) throws Exception {
+ public Map act(SourceResolver resolver, Map objectModel, String source,
Parameters parameters) throws Exception {
HashMap results = new HashMap();
String urlstring = parameters.getParameter("url",null);
try {
- URL url = urlFactory.getURL(urlstring);
+ URL url = resolver.resolve(urlstring).getURL();
url.getContent();
} catch (Exception e) {
getLogger().debug("ResourceExistsAction: exception: ",e);
1.2 +2 -2
xml-cocoon2/src/org/apache/cocoon/acting/SendmailAction.java
Index: SendmailAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/SendmailAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SendmailAction.java 2001/05/09 20:50:08 1.1
+++ SendmailAction.java 2001/05/22 14:31:13 1.2
@@ -25,8 +25,8 @@
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.Constants;
import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.log.Logger;
-import org.xml.sax.EntityResolver;
/**
* The SendmailAction class sends email. The action needs four parameters:
@@ -69,7 +69,7 @@
getLogger().debug("SendmailAction: using
"+default_properties.get("mail.smtp.host")+" as the smtp server");
}
- public Map act(EntityResolver resolver, Map objectModel, String source,
Parameters parameters) throws Exception {
+ public Map act(SourceResolver resolver, Map objectModel, String source,
Parameters parameters) throws Exception {
HashMap results = new HashMap();
try {
getLogger().debug("SendmailAction: act start");
1.2 +5 -5
xml-cocoon2/src/org/apache/cocoon/acting/SessionInvalidatorAction.java
Index: SessionInvalidatorAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/SessionInvalidatorAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SessionInvalidatorAction.java 2001/05/09 20:50:08 1.1
+++ SessionInvalidatorAction.java 2001/05/22 14:31:16 1.2
@@ -1,4 +1,4 @@
-// $Id: SessionInvalidatorAction.java,v 1.1 2001/05/09 20:50:08 giacomo Exp $
+// $Id: SessionInvalidatorAction.java,v 1.2 2001/05/22 14:31:16 cziegeler
Exp $
package org.apache.cocoon.acting;
import java.util.Collections;
@@ -9,22 +9,22 @@
import org.apache.cocoon.Constants;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Session;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.log.Logger;
-import org.xml.sax.EntityResolver;
/**
* This is the action used to invalidate an HTTP session. The action returns
* empty map if everything is ok, null otherwise.
*
* @author Martin Man <[EMAIL PROTECTED]>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:08 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:31:16 $
*/
public class SessionInvalidatorAction extends AbstractAction
{
/**
* Main invocation routine.
*/
- public Map act (EntityResolver resolver, Map objectModel, String src,
+ public Map act (SourceResolver resolver, Map objectModel, String src,
Parameters parameters) throws Exception {
Request req = (Request)
objectModel.get (Constants.REQUEST_OBJECT);
@@ -49,5 +49,5 @@
}
}
-// $Id: SessionInvalidatorAction.java,v 1.1 2001/05/09 20:50:08 giacomo Exp $
+// $Id: SessionInvalidatorAction.java,v 1.2 2001/05/22 14:31:16 cziegeler
Exp $
// vim: set et ts=4 sw=4:
1.2 +5 -5
xml-cocoon2/src/org/apache/cocoon/acting/SessionPropagatorAction.java
Index: SessionPropagatorAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/SessionPropagatorAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SessionPropagatorAction.java 2001/05/09 20:50:08 1.1
+++ SessionPropagatorAction.java 2001/05/22 14:31:19 1.2
@@ -1,4 +1,4 @@
-// $Id: SessionPropagatorAction.java,v 1.1 2001/05/09 20:50:08 giacomo Exp $
+// $Id: SessionPropagatorAction.java,v 1.2 2001/05/22 14:31:19 cziegeler Exp
$
package org.apache.cocoon.acting;
import java.util.Collections;
@@ -10,8 +10,8 @@
import org.apache.cocoon.Constants;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Session;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.log.Logger;
-import org.xml.sax.EntityResolver;
/**
* This is the action used to propagate parameters into session. It
@@ -27,14 +27,14 @@
* </pre>
*
* @author Martin Man <[EMAIL PROTECTED]>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:08 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:31:19 $
*/
public class SessionPropagatorAction extends ComposerAction
{
/**
* Main invocation routine.
*/
- public Map act (EntityResolver resolver, Map objectModel, String src,
+ public Map act (SourceResolver resolver, Map objectModel, String src,
Parameters parameters) throws Exception {
Request req = (Request)
objectModel.get (Constants.REQUEST_OBJECT);
@@ -77,6 +77,6 @@
}
}
-// $Id: SessionPropagatorAction.java,v 1.1 2001/05/09 20:50:08 giacomo Exp $
+// $Id: SessionPropagatorAction.java,v 1.2 2001/05/22 14:31:19 cziegeler Exp
$
// vim: set et ts=4 sw=4:
1.2 +5 -5
xml-cocoon2/src/org/apache/cocoon/acting/SessionValidatorAction.java
Index: SessionValidatorAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/SessionValidatorAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SessionValidatorAction.java 2001/05/09 20:50:08 1.1
+++ SessionValidatorAction.java 2001/05/22 14:31:24 1.2
@@ -1,4 +1,4 @@
-// $Id: SessionValidatorAction.java,v 1.1 2001/05/09 20:50:08 giacomo Exp $
+// $Id: SessionValidatorAction.java,v 1.2 2001/05/22 14:31:24 cziegeler Exp $
package org.apache.cocoon.acting;
import java.util.Collections;
@@ -10,9 +10,9 @@
import org.apache.cocoon.Constants;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Session;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.util.Tokenizer;
import org.apache.log.Logger;
-import org.xml.sax.EntityResolver;
/**
@@ -51,14 +51,14 @@
* all validated parameters to the sitemap via {name} expression.
*
* @author Martin Man <[EMAIL PROTECTED]>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:08 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:31:24 $
*/
public class SessionValidatorAction extends AbstractValidatorAction
{
/**
* Main invocation routine.
*/
- public Map act (EntityResolver resolver, Map objectModel, String src,
+ public Map act (SourceResolver resolver, Map objectModel, String src,
Parameters parameters) throws Exception {
Request req = (Request)
objectModel.get (Constants.REQUEST_OBJECT);
@@ -188,5 +188,5 @@
}
}
-// $Id: SessionValidatorAction.java,v 1.1 2001/05/09 20:50:08 giacomo Exp $
+// $Id: SessionValidatorAction.java,v 1.2 2001/05/22 14:31:24 cziegeler Exp $
// vim: set et ts=4 sw=4:
1.2 +3 -3
xml-cocoon2/src/org/apache/cocoon/components/language/generator/ProgramGenerator.java
Index: ProgramGenerator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/generator/ProgramGenerator.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ProgramGenerator.java 2001/05/09 20:49:49 1.1
+++ ProgramGenerator.java 2001/05/22 14:32:08 1.2
@@ -9,14 +9,14 @@
import java.io.File;
import org.apache.avalon.framework.component.Component;
-import org.xml.sax.EntityResolver;
+import org.apache.cocoon.environment.SourceResolver;
/**
* This interface defines a loader for programs automatically built from XML
* documents writeen in a <code>MarkupLanguage</code>
*
* @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:49 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:32:08 $
*/
public interface ProgramGenerator extends Component {
/**
@@ -33,7 +33,7 @@
*/
CompiledComponent load(
File file, String markupLanguage, String programmingLanguage,
- EntityResolver resolver
+ SourceResolver resolver
) throws Exception;
/**
1.2 +4 -4
xml-cocoon2/src/org/apache/cocoon/components/language/generator/ProgramGeneratorImpl.java
Index: ProgramGeneratorImpl.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/generator/ProgramGeneratorImpl.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ProgramGeneratorImpl.java 2001/05/09 20:49:50 1.1
+++ ProgramGeneratorImpl.java 2001/05/22 14:32:10 1.2
@@ -36,18 +36,18 @@
import org.apache.cocoon.components.language.programming.CodeFormatter;
import org.apache.cocoon.components.language.programming.ProgrammingLanguage;
import org.apache.cocoon.components.store.Store;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.util.IOUtils;
import org.apache.log.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Document;
-import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
/**
* The default implementation of <code>ProgramGenerator</code>
* @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:50 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:32:10 $
*/
public class ProgramGeneratorImpl extends AbstractLoggable
implements ProgramGenerator, Contextualizable, Composable, Configurable,
ThreadSafe, Disposable {
@@ -128,7 +128,7 @@
public CompiledComponent load(File file,
String markupLanguageName,
String programmingLanguageName,
- EntityResolver resolver)
+ SourceResolver resolver)
throws Exception {
// Create filesystem store
@@ -225,7 +225,7 @@
String normalizedName,
MarkupLanguage markupLanguage,
ProgrammingLanguage programmingLanguage,
- EntityResolver resolver)
+ SourceResolver resolver)
throws Exception {
// Generate code
String code = markupLanguage.generateCode(
1.2 +8 -8
xml-cocoon2/src/org/apache/cocoon/components/language/markup/AbstractMarkupLanguage.java
Index: AbstractMarkupLanguage.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/markup/AbstractMarkupLanguage.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractMarkupLanguage.java 2001/05/09 20:49:50 1.1
+++ AbstractMarkupLanguage.java 2001/05/22 14:32:22 1.2
@@ -35,9 +35,9 @@
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.SourceResolver;
import org.apache.cocoon.util.IOUtils;
import org.xml.sax.Attributes;
-import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLFilter;
@@ -50,7 +50,7 @@
* logicsheets as the only means of code generation. Code generation should
be decoupled from this context!!!
* @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:50 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:32:22 $
*/
public abstract class AbstractMarkupLanguage extends AbstractLoggable
implements MarkupLanguage, Composable, Configurable {
/** The supported language table */
@@ -209,7 +209,7 @@
* @return XMLFilter the filter that build on the fly the transformer
chain
*/
protected TransformerChainBuilderFilter getTranformerChainBuilder
- (LogicsheetCodeGenerator logicsheetMarkupGenerator, EntityResolver
resolver) {
+ (LogicsheetCodeGenerator logicsheetMarkupGenerator, SourceResolver
resolver) {
return new
TransformerChainBuilderFilter(logicsheetMarkupGenerator, resolver);
}
@@ -247,7 +247,7 @@
* @exception Exception If an error occurs during code generation
*/
public String generateCode(InputSource input, String filename,
ProgrammingLanguage programmingLanguage,
- EntityResolver resolver) throws Exception {
+ SourceResolver resolver) throws Exception {
String languageName = programmingLanguage.getLanguageName();
LanguageDescriptor language =
(LanguageDescriptor)this.languages.get(languageName);
if (language == null) {
@@ -308,7 +308,7 @@
* @exception IOException IO Error
* @exception SAXException Logicsheet parse error
*/
- protected void addLogicsheetToList(LanguageDescriptor language, String
logicsheetLocation, EntityResolver entityResolver)
+ protected void addLogicsheetToList(LanguageDescriptor language, String
logicsheetLocation, SourceResolver resolver)
throws MalformedURLException, IOException, SAXException {
String systemId = null;
InputSource inputSource = null;
@@ -359,7 +359,7 @@
if(namedLogicsheetName!= null &&
!logicsheetLocation.equals(namedLogicsheetName)) {
getLogger().debug("Adding embedded logic sheet
for " + namespace + ":" + namedLogicsheetName);
// Add embedded logic sheets too.
- addLogicsheetToList(language,
namedLogicsheetName, entityResolver);
+ addLogicsheetToList(language,
namedLogicsheetName, resolver);
}
}
}
@@ -525,7 +525,7 @@
protected LanguageDescriptor language;
/** the entity resolver */
- protected EntityResolver resolver;
+ protected SourceResolver resolver;
private boolean isRootElem;
private List startPrefixes;
@@ -534,7 +534,7 @@
* @param logicsheetMarkupGenerator The code generator
* @param resolver
*/
- protected TransformerChainBuilderFilter(LogicsheetCodeGenerator
logicsheetMarkupGenerator, EntityResolver resolver) {
+ protected TransformerChainBuilderFilter(LogicsheetCodeGenerator
logicsheetMarkupGenerator, SourceResolver resolver) {
this.logicsheetMarkupGenerator = logicsheetMarkupGenerator;
this.resolver = resolver;
}
1.2 +1 -2
xml-cocoon2/src/org/apache/cocoon/components/language/markup/Logicsheet.java
Index: Logicsheet.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/markup/Logicsheet.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Logicsheet.java 2001/05/09 20:49:50 1.1
+++ Logicsheet.java 2001/05/22 14:32:35 1.2
@@ -27,7 +27,6 @@
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.DTDHandler;
-import org.xml.sax.EntityResolver;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -47,7 +46,7 @@
* transformed into an equivalent XSLT stylesheet anyway... This class
should probably be based on an interface...
* @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:50 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:32:35 $
*/
public class Logicsheet extends AbstractLoggable {
/** The trax TransformerFactory */
1.2 +3 -3
xml-cocoon2/src/org/apache/cocoon/components/language/markup/MarkupLanguage.java
Index: MarkupLanguage.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/markup/MarkupLanguage.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MarkupLanguage.java 2001/05/09 20:49:50 1.1
+++ MarkupLanguage.java 2001/05/22 14:32:45 1.2
@@ -9,7 +9,7 @@
import org.apache.avalon.framework.component.Component;
import org.apache.cocoon.components.language.programming.ProgrammingLanguage;
-import org.xml.sax.EntityResolver;
+import org.apache.cocoon.environment.SourceResolver;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
@@ -19,7 +19,7 @@
* document augmenting it with dynamic content
*
* @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:50 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:32:45 $
*/
public interface MarkupLanguage extends Component {
/**
@@ -44,6 +44,6 @@
String generateCode(
InputSource input, String filename,
ProgrammingLanguage programmingLanguage,
- EntityResolver resolver
+ SourceResolver resolver
) throws Exception;
}
1.2 +4 -4
xml-cocoon2/src/org/apache/cocoon/components/language/markup/sitemap/SitemapMarkupLanguage.java
Index: SitemapMarkupLanguage.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/markup/sitemap/SitemapMarkupLanguage.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SitemapMarkupLanguage.java 2001/05/09 20:49:51 1.1
+++ SitemapMarkupLanguage.java 2001/05/22 14:33:37 1.2
@@ -21,9 +21,9 @@
import org.apache.cocoon.components.language.markup.AbstractMarkupLanguage;
import org.apache.cocoon.components.language.markup.LogicsheetCodeGenerator;
import org.apache.cocoon.components.language.programming.ProgrammingLanguage;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.log.Logger;
import org.xml.sax.Attributes;
-import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
import org.xml.sax.XMLFilter;
import org.xml.sax.XMLReader;
@@ -35,7 +35,7 @@
* <a href="http://xml.apache.org/cocoon/sitemap.html">Sitemap</a>.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:51 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:33:37 $
*/
public class SitemapMarkupLanguage extends AbstractMarkupLanguage {
@@ -124,7 +124,7 @@
*/
protected TransformerChainBuilderFilter getTranformerChainBuilder (
LogicsheetCodeGenerator logicsheetMarkupGenerator,
- EntityResolver resolver
+ SourceResolver resolver
) {
SitemapTransformerChainBuilderFilter filter =
new SitemapTransformerChainBuilderFilter(
@@ -260,7 +260,7 @@
*/
protected SitemapTransformerChainBuilderFilter (
LogicsheetCodeGenerator logicsheetMarkupGenerator,
- EntityResolver resolver
+ SourceResolver resolver
) {
super(logicsheetMarkupGenerator, resolver);
}
1.2 +4 -4
xml-cocoon2/src/org/apache/cocoon/components/language/markup/xsp/XSPMarkupLanguage.java
Index: XSPMarkupLanguage.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/markup/xsp/XSPMarkupLanguage.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- XSPMarkupLanguage.java 2001/05/09 20:49:52 1.1
+++ XSPMarkupLanguage.java 2001/05/22 14:34:19 1.2
@@ -21,9 +21,9 @@
import org.apache.cocoon.components.language.markup.AbstractMarkupLanguage;
import org.apache.cocoon.components.language.markup.LogicsheetCodeGenerator;
import org.apache.cocoon.components.language.programming.ProgrammingLanguage;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.log.Logger;
import org.xml.sax.Attributes;
-import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
import org.xml.sax.XMLFilter;
import org.xml.sax.XMLReader;
@@ -36,7 +36,7 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Sebastien Sahuc</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:52 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:34:19 $
*/
public class XSPMarkupLanguage extends AbstractMarkupLanguage {
@@ -128,7 +128,7 @@
*/
protected TransformerChainBuilderFilter getTranformerChainBuilder (
LogicsheetCodeGenerator logicsheetMarkupGenerator,
- EntityResolver resolver
+ SourceResolver resolver
) {
return new XSPTransformerChainBuilderFilter(
logicsheetMarkupGenerator,
@@ -327,7 +327,7 @@
*/
protected XSPTransformerChainBuilderFilter (
LogicsheetCodeGenerator logicsheetMarkupGenerator,
- EntityResolver resolver
+ SourceResolver resolver
) {
super(logicsheetMarkupGenerator, resolver);
}
1.2 +5 -6
xml-cocoon2/src/org/apache/cocoon/components/pipeline/AbstractEventPipeline.java
Index: AbstractEventPipeline.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/pipeline/AbstractEventPipeline.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractEventPipeline.java 2001/05/09 20:49:46 1.1
+++ AbstractEventPipeline.java 2001/05/22 14:35:04 1.2
@@ -29,13 +29,12 @@
import org.apache.cocoon.xml.AbstractXMLProducer;
import org.apache.cocoon.xml.XMLConsumer;
import org.apache.cocoon.xml.XMLProducer;
-import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
* @author <a href="mailto:[EMAIL PROTECTED] Ziegeler">Carsten Ziegeler</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:46 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:35:04 $
*/
public abstract class AbstractEventPipeline
extends AbstractXMLProducer
@@ -150,7 +149,7 @@
try {
// setup the generator
this.generator.setup(
- (EntityResolver)environment,
+ environment,
environment.getObjectModel(),
generatorSource,
generatorParam
@@ -163,7 +162,7 @@
while ( transformerItt.hasNext() ) {
Transformer trans = (Transformer)transformerItt.next();
trans.setup(
- (EntityResolver)environment,
+ environment,
environment.getObjectModel(),
(String)transformerSourceItt.next(),
(Parameters)transformerParamItt.next()
@@ -195,7 +194,7 @@
while ( itt.hasNext() ) {
// connect SAXConnector
SAXConnector connect = (SAXConnector)
this.manager.lookup(Roles.SAX_CONNECTOR);
-
connect.setup((EntityResolver)environment,environment.getObjectModel(),null,null);
+
connect.setup(environment,environment.getObjectModel(),null,null);
connect.setSitemap(this.sitemap);
this.connectors.add(connect);
next = (XMLConsumer) connect;
@@ -211,7 +210,7 @@
// insert SAXConnector
SAXConnector connect = (SAXConnector)
this.manager.lookup(Roles.SAX_CONNECTOR);
-
connect.setup((EntityResolver)environment,environment.getObjectModel(),null,null);
+
connect.setup(environment,environment.getObjectModel(),null,null);
connect.setSitemap(this.sitemap);
this.connectors.add(connect);
next = (XMLConsumer) connect;
1.2 +2 -3
xml-cocoon2/src/org/apache/cocoon/components/pipeline/AbstractStreamPipeline.java
Index: AbstractStreamPipeline.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/pipeline/AbstractStreamPipeline.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractStreamPipeline.java 2001/05/09 20:49:46 1.1
+++ AbstractStreamPipeline.java 2001/05/22 14:35:14 1.2
@@ -25,7 +25,6 @@
import org.apache.cocoon.sitemap.SitemapComponentSelector;
import org.apache.cocoon.xml.XMLConsumer;
import org.apache.cocoon.xml.XMLProducer;
-import org.xml.sax.EntityResolver;
/** A <CODE>ResourcePipeline</CODE> either
* <UL>
@@ -35,7 +34,7 @@
* resource
* </UL>
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:46 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:35:14 $
*/
public abstract class AbstractStreamPipeline extends AbstractLoggable
implements StreamPipeline, Disposable {
protected EventPipeline eventPipeline;
@@ -148,7 +147,7 @@
throws ProcessingException {
String mimeType;
try {
- this.reader.setup((EntityResolver)
environment,environment.getObjectModel(),readerSource,readerParam);
+
this.reader.setup(environment,environment.getObjectModel(),readerSource,readerParam);
mimeType = this.reader.getMimeType();
if ( mimeType != null ) {
environment.setContentType(mimeType);
1.5 +3 -4
xml-cocoon2/src/org/apache/cocoon/components/pipeline/CachingEventPipeline.java
Index: CachingEventPipeline.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/pipeline/CachingEventPipeline.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- CachingEventPipeline.java 2001/05/15 07:51:26 1.4
+++ CachingEventPipeline.java 2001/05/22 14:35:26 1.5
@@ -41,7 +41,6 @@
import org.apache.cocoon.xml.XMLMulticaster;
import org.apache.cocoon.xml.XMLPipe;
import org.apache.cocoon.xml.XMLProducer;
-import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
/**
@@ -53,7 +52,7 @@
* does not cache! (If it would cache, the response would be cached twice!)
*
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
- * @version CVS $Revision: 1.4 $ $Date: 2001/05/15 07:51:26 $
+ * @version CVS $Revision: 1.5 $ $Date: 2001/05/22 14:35:26 $
*/
public final class CachingEventPipeline
extends AbstractEventPipeline
@@ -328,7 +327,7 @@
while ( itt.hasNext() ) {
// connect SAXConnector
SAXConnector connect = (SAXConnector)
this.manager.lookup(Roles.SAX_CONNECTOR);
-
connect.setup((EntityResolver)environment,environment.getObjectModel(),null,null);
+
connect.setup(environment,environment.getObjectModel(),null,null);
connect.setSitemap(this.sitemap);
this.connectors.add(connect);
next = (XMLConsumer) connect;
@@ -352,7 +351,7 @@
// insert SAXConnector
SAXConnector connect = (SAXConnector)
this.manager.lookup(Roles.SAX_CONNECTOR);
-
connect.setup((EntityResolver)environment,environment.getObjectModel(),null,null);
+
connect.setup(environment,environment.getObjectModel(),null,null);
connect.setSitemap(this.sitemap);
this.connectors.add(connect);
next = (XMLConsumer) connect;
1.3 +2 -3
xml-cocoon2/src/org/apache/cocoon/components/pipeline/CachingStreamPipeline.java
Index: CachingStreamPipeline.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/pipeline/CachingStreamPipeline.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- CachingStreamPipeline.java 2001/05/15 07:51:28 1.2
+++ CachingStreamPipeline.java 2001/05/22 14:35:33 1.3
@@ -28,7 +28,6 @@
import org.apache.cocoon.caching.PipelineCacheKey;
import org.apache.cocoon.caching.StreamCache;
import org.apache.cocoon.environment.Environment;
-import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
/** A <CODE>StreamPipeline</CODE> either
@@ -46,7 +45,7 @@
* </ul>
*
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
- * @version CVS $Revision: 1.2 $ $Date: 2001/05/15 07:51:28 $
+ * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:35:33 $
*/
public class CachingStreamPipeline extends AbstractStreamPipeline {
@@ -95,7 +94,7 @@
try
{
- this.reader.setup((EntityResolver)
environment,environment.getObjectModel(),readerSource,readerParam);
+
this.reader.setup(environment,environment.getObjectModel(),readerSource,readerParam);
String mimeType = this.reader.getMimeType();
mimeType = this.reader.getMimeType();
1.3 +1 -2
xml-cocoon2/src/org/apache/cocoon/components/pipeline/NonCachingEventPipeline.java
Index: NonCachingEventPipeline.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/pipeline/NonCachingEventPipeline.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- NonCachingEventPipeline.java 2001/05/10 21:16:46 1.2
+++ NonCachingEventPipeline.java 2001/05/22 14:35:41 1.3
@@ -27,12 +27,11 @@
import org.apache.cocoon.xml.AbstractXMLProducer;
import org.apache.cocoon.xml.XMLConsumer;
import org.apache.cocoon.xml.XMLProducer;
-import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
- * @version CVS $Revision: 1.2 $ $Date: 2001/05/10 21:16:46 $
+ * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:35:41 $
*/
public class NonCachingEventPipeline extends AbstractEventPipeline
implements Recyclable {
1.3 +1 -2
xml-cocoon2/src/org/apache/cocoon/components/sax/XMLByteStreamInterpreter.java
Index: XMLByteStreamInterpreter.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/sax/XMLByteStreamInterpreter.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- XMLByteStreamInterpreter.java 2001/05/11 10:16:20 1.2
+++ XMLByteStreamInterpreter.java 2001/05/22 14:36:46 1.3
@@ -12,7 +12,6 @@
import org.apache.cocoon.xml.AbstractXMLProducer;
import org.apache.avalon.excalibur.pool.Recyclable;
import org.xml.sax.ContentHandler;
-import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
@@ -21,7 +20,7 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
- * @version CVS $Revision: 1.2 $ $Date: 2001/05/11 10:16:20 $
+ * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:36:46 $
*/
public final class XMLByteStreamInterpreter
1.3 +3 -3
xml-cocoon2/src/org/apache/cocoon/components/saxconnector/CIncludeSAXConnector.java
Index: CIncludeSAXConnector.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/saxconnector/CIncludeSAXConnector.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- CIncludeSAXConnector.java 2001/05/11 13:35:07 1.2
+++ CIncludeSAXConnector.java 2001/05/22 14:37:21 1.3
@@ -25,13 +25,13 @@
import org.apache.cocoon.components.pipeline.StreamPipeline;
import org.apache.cocoon.components.url.URLFactory;
import org.apache.cocoon.environment.Environment;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.sitemap.Sitemap;
import org.apache.cocoon.xml.AbstractXMLPipe;
import org.apache.cocoon.xml.IncludeXMLConsumer;
import org.apache.cocoon.xml.XMLProducer;
import org.apache.avalon.excalibur.pool.Recyclable;
import org.xml.sax.Attributes;
-import org.xml.sax.EntityResolver;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.SAXException;
@@ -40,7 +40,7 @@
/**
* Copy of code from CIncludeTransformer as a starting point for
CIncludeSAXConnector.
* @author <a href="[EMAIL PROTECTED]">Davanum Srinivas</a>
- * @version CVS $Revision: 1.2 $ $Date: 2001/05/11 13:35:07 $
+ * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:37:21 $
*/
public class CIncludeSAXConnector extends AbstractXMLPipe implements
Composable, Recyclable, SAXConnector {
@@ -60,7 +60,7 @@
/** The current <code>Environment</code>. */
protected Environment environment;
- public void setup(EntityResolver resolver, Map objectModel,
+ public void setup(SourceResolver resolver, Map objectModel,
String source, Parameters parameters)
throws ProcessingException, SAXException, IOException {
environment = (Environment) resolver;
1.2 +3 -3
xml-cocoon2/src/org/apache/cocoon/components/saxconnector/NullSAXConnector.java
Index: NullSAXConnector.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/saxconnector/NullSAXConnector.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- NullSAXConnector.java 2001/05/09 20:50:00 1.1
+++ NullSAXConnector.java 2001/05/22 14:37:34 1.2
@@ -11,16 +11,16 @@
import java.util.Map;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.sitemap.Sitemap;
import org.apache.cocoon.xml.AbstractXMLPipe;
import org.apache.avalon.excalibur.pool.Poolable;
-import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
/**
* Null implementation of the SAXConnector. Simply sends events on to the
next component in the pipeline.
* @author <a href="[EMAIL PROTECTED]">Paul Russell</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:00 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:37:34 $
*/
public class NullSAXConnector extends AbstractXMLPipe implements Poolable,
SAXConnector {
/** Set the sitemap
@@ -31,7 +31,7 @@
/** Setup this SAXConnector.
*/
- public void setup(EntityResolver resolver, Map objectModel, String src,
Parameters params)
+ public void setup(SourceResolver resolver, Map objectModel, String src,
Parameters params)
throws ProcessingException, SAXException, IOException {
// do nothing.
}
1.3 +3 -4
xml-cocoon2/src/org/apache/cocoon/components/saxconnector/XIncludeSAXConnector.java
Index: XIncludeSAXConnector.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/saxconnector/XIncludeSAXConnector.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- XIncludeSAXConnector.java 2001/05/11 13:35:08 1.2
+++ XIncludeSAXConnector.java 2001/05/22 14:37:40 1.3
@@ -25,22 +25,21 @@
import org.apache.cocoon.components.pipeline.StreamPipeline;
import org.apache.cocoon.components.url.URLFactory;
import org.apache.cocoon.environment.Environment;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.sitemap.Sitemap;
import org.apache.cocoon.xml.AbstractXMLPipe;
import org.apache.cocoon.xml.IncludeXMLConsumer;
import org.apache.cocoon.xml.XMLProducer;
import org.apache.avalon.excalibur.pool.Recyclable;
import org.xml.sax.Attributes;
-import org.xml.sax.EntityResolver;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
-import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
/**
* Copy of code from XIncludeTransformer as a starting point for
XIncludeSAXConnector.
* @author <a href="[EMAIL PROTECTED]">Davanum Srinivas</a>
- * @version CVS $Revision: 1.2 $ $Date: 2001/05/11 13:35:08 $
+ * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:37:40 $
*/
public class XIncludeSAXConnector extends AbstractXMLPipe implements
Composable, Recyclable, SAXConnector {
@@ -60,7 +59,7 @@
/** The current <code>Environment</code>. */
protected Environment environment;
- public void setup(EntityResolver resolver, Map objectModel,
+ public void setup(SourceResolver resolver, Map objectModel,
String source, Parameters parameters)
throws ProcessingException, SAXException, IOException {
environment = (Environment) resolver;
1.2 +41 -7
xml-cocoon2/src/org/apache/cocoon/environment/AbstractEnvironment.java
Index: AbstractEnvironment.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/environment/AbstractEnvironment.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractEnvironment.java 2001/05/09 20:49:44 1.1
+++ AbstractEnvironment.java 2001/05/22 14:38:35 1.2
@@ -40,6 +40,9 @@
/** The servlet object model */
protected HashMap objectModel = null;
+ /** The URL Resolver for the current environment */
+ protected URLResolver urlResolver;
+
/**
* Constructs the abstract enviornment
*/
@@ -76,6 +79,13 @@
this.objectModel = new HashMap();
}
+ /**
+ * Set the URLFactory for the current request
+ */
+ public void setURLResolver(URLResolver resolver) {
+ this.urlResolver = resolver;
+ }
+
// Sitemap methods
/**
@@ -164,23 +174,47 @@
return this.objectModel;
}
- // EntityResolver method
-
/**
* Resolve an entity.
*/
- public InputSource resolveEntity(String publicId, String systemId)
+ public Source resolve(String systemId)
throws SAXException, IOException {
if (systemId == null) throw new SAXException("Invalid System ID");
if (systemId.length() == 0)
- return new InputSource(this.context.toExternalForm());
+ return new Source(this.context);
if (systemId.indexOf(":") > 1)
- return new InputSource(systemId);
+ return new Source(this.urlResolver.getURL(systemId));
if (systemId.charAt(0) == '/')
- return new InputSource(this.context.getProtocol() + ":" +
systemId);
- return new InputSource(new
URL(this.context,systemId).toExternalForm());
+ return new
Source(this.urlResolver.getURL(this.context.getProtocol() + ":" + systemId));
+ return new Source(this.urlResolver.getURL(this.context, systemId));
}
+
+ /**
+ * Called by the processor when it encounters
+ * an xsl:include, xsl:import, or document() function.
+ *
+ * @param href An href attribute, which may be relative or absolute.
+ * @param base The base URI in effect when the href attribute
+ * was encountered.
+ *
+ * @return A Source object, or null if the href cannot be resolved,
+ * and the processor should try to resolve the URI itself.
+ *
+ * @throws TransformerException if an error occurs when trying to
+ * resolve the URI.
+ */
+ public javax.xml.transform.Source resolve(String href, String base)
+ throws javax.xml.transform.TransformerException {
+ try {
+ return new
javax.xml.transform.stream.StreamSource(this.resolve(href).getReader());
+ } catch (IOException e) {
+ throw new javax.xml.transform.TransformerException(e);
+ } catch (SAXException e) {
+ throw new javax.xml.transform.TransformerException(e);
+ }
+ }
+
/**
* Push a new URI for processing
1.2 +7 -3
xml-cocoon2/src/org/apache/cocoon/environment/Environment.java
Index: Environment.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/environment/Environment.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Environment.java 2001/05/09 20:49:43 1.1
+++ Environment.java 2001/05/22 14:38:43 1.2
@@ -12,17 +12,21 @@
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.util.Map;
-import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
/**
* Base interface for an environment abstraction
*
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:43 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:38:43 $
*/
-public interface Environment extends EntityResolver {
+public interface Environment extends SourceResolver {
+
+ /**
+ * Set the URLFactory for the current request
+ */
+ void setURLResolver(URLResolver resolver);
/**
* Get the URI to process
1.1
xml-cocoon2/src/org/apache/cocoon/environment/FactoryURLResolver.java
Index: FactoryURLResolver.java
===================================================================
/*****************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* ------------------------------------------------------------------------- *
* This software is published under the terms of the Apache Software License *
* version 1.1, a copy of which has been included with this distribution in *
* the LICENSE file. *
*****************************************************************************/
package org.apache.cocoon.environment;
import java.net.URL;
import java.net.MalformedURLException;
import org.apache.cocoon.components.url.URLFactory;
/**
* This interface describes the URLResolver which is used by the
* <code>SourceResolver</code>.
* The <code>URLResolver</code> separates the <code>SourceResolver</code>
* from the <code>URLFactory</code>.
*
* This class used only the <code>URLFactory</code>.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
* @version CVS $Revision: 1.1 $ $Date: 2001/05/22 14:38:51 $
*/
public final class FactoryURLResolver
implements URLResolver {
private URLFactory factory;
public FactoryURLResolver(URLFactory factory) {
this.factory = factory;
}
/**
* Resolve the source
*/
public URL getURL(String location) throws MalformedURLException {
return this.factory.getURL(location);
}
/**
* Resolve the source
*/
public URL getURL(URL base, String location) throws MalformedURLException
{
return this.factory.getURL(base, location);
}
}
1.1 xml-cocoon2/src/org/apache/cocoon/environment/Source.java
Index: Source.java
===================================================================
/*****************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* ------------------------------------------------------------------------- *
* This software is published under the terms of the Apache Software License *
* version 1.1, a copy of which has been included with this distribution in *
* the LICENSE file. *
*****************************************************************************/
package org.apache.cocoon.environment;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.Reader;
import java.net.URL;
import java.net.URLConnection;
import org.xml.sax.InputSource;
/**
* Description of a source. This interface provides a simple interface
* for accessing any resource (URL, local file etc).
*
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
* @version CVS $Revision: 1.1 $ $Date: 2001/05/22 14:38:52 $
*/
public final class Source {
/** Identifier for file urls */
private final String FILE = "file:";
/** The last modification date or 0 */
private long lastModificationDate;
/** The content length */
private long contentLength;
/** The system id */
private String systemId;
/** The URL of the source */
private URL url;
/** The connection for a real URL */
private URLConnection connection;
/** Is this a file or a "real" URL */
private boolean isFile;
/** Are we initialized? */
private boolean gotInfos;
/**
* Construct a new object
*/
public Source(URL url)
throws IOException {
this.systemId = url.toExternalForm();
this.isFile = systemId.startsWith(FILE);
this.url = url;
this.gotInfos = false;
}
/**
* Get the last modification date and content length of the source.
* Any exceptions are ignored.
*/
private void getInfos() {
if (this.gotInfos == false) {
if (this.isFile == true) {
File file = new File(systemId.substring(FILE.length()));
this.lastModificationDate = file.lastModified();
this.contentLength = file.length();
} else {
try {
if (this.connection == null)
this.connection = this.url.openConnection();
this.lastModificationDate =
this.connection.getLastModified();
this.contentLength = this.connection.getContentLength();
} catch (IOException ignore) {
this.lastModificationDate = 0;
this.contentLength = -1;
}
}
this.gotInfos = true;
}
}
/**
* Get the last modification date of the source or 0 if it
* is not possible to determine the date.
*/
public long getLastModified() {
this.getInfos();
return this.lastModificationDate;
}
/**
* Get the content length of the source or -1 if it
* is not possible to determine the length.
*/
public long getContentLength() {
this.getInfos();
return this.contentLength;
}
/**
* Return an <code>InputStream</code> object to read from the source.
*/
public InputStream getInputStream()
throws IOException {
if (this.isFile == true) {
return new
FileInputStream(this.systemId.substring(FILE.length()));
} else {
if (this.connection == null)
this.connection = this.url.openConnection();
return this.connection.getInputStream();
}
}
/**
* Return the URL for this source.
*/
public URL getURL() {
return this.url;
}
/**
* Return an <code>Reader</code> object to read from the source.
*/
public Reader getReader()
throws IOException {
if (this.isFile == true) {
return new FileReader(this.systemId.substring(FILE.length()));
} else {
if (this.connection == null)
this.connection = this.url.openConnection();
return new InputStreamReader(this.connection.getInputStream());
}
}
/**
* Return the unique identifer for this source
*/
public String getSystemId() {
return this.systemId;
}
/**
* Is this a file, then the <code>getFile</code> method can
* return a <code>File</code> object for this source.
*/
public boolean isFile() {
return this.isFile;
}
/**
* Return a <code>File</code> object if this is a local file
* (if the <code>isFile</code> method returns true).
*/
public File getFile() {
if (this.isFile == true) {
return new File(this.systemId.substring(FILE.length()));
}
return null;
}
/**
* If this is not a file this method returns the
* <code>URLConnection</code> object for the url.
*/
public URLConnection getURLConnection() {
if (this.isFile == false) {
return this.connection;
}
return null;
}
}
1.1
xml-cocoon2/src/org/apache/cocoon/environment/SourceResolver.java
Index: SourceResolver.java
===================================================================
/*****************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* ------------------------------------------------------------------------- *
* This software is published under the terms of the Apache Software License *
* version 1.1, a copy of which has been included with this distribution in *
* the LICENSE file. *
*****************************************************************************/
package org.apache.cocoon.environment;
import java.io.IOException;
import javax.xml.transform.URIResolver;
import org.xml.sax.SAXException;
/**
* Base interface for resolving a source by system identifiers. This
* interface extends the <code>URIResolver</code> interface.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
* @version CVS $Revision: 1.1 $ $Date: 2001/05/22 14:38:52 $
*/
public interface SourceResolver
extends URIResolver {
/**
* Resolve the source.
* @param systemID This is either a system identifier
* (<code>java.net.URL</code> or a local file.
*/
Source resolve(String systemID)
throws SAXException, IOException;
}
1.1
xml-cocoon2/src/org/apache/cocoon/environment/URLResolver.java
Index: URLResolver.java
===================================================================
/*****************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* ------------------------------------------------------------------------- *
* This software is published under the terms of the Apache Software License *
* version 1.1, a copy of which has been included with this distribution in *
* the LICENSE file. *
*****************************************************************************/
package org.apache.cocoon.environment;
import java.net.URL;
import java.net.MalformedURLException;
/**
* This interface describes the URLResolver which is used by the
* <code>SourceResolver</code>.
* The <code>URLResolver</code> separates the <code>SourceResolver</code>
* from the <code>URLFactory</code>.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
* @version CVS $Revision: 1.1 $ $Date: 2001/05/22 14:38:53 $
*/
public interface URLResolver {
/**
* Resolve the source
*/
URL getURL(String location) throws MalformedURLException;
/**
* Resolve the source
*/
URL getURL(URL base, String location) throws MalformedURLException;
}
1.2 +6 -6
xml-cocoon2/src/org/apache/cocoon/generation/AbstractGenerator.java
Index: AbstractGenerator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/AbstractGenerator.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractGenerator.java 2001/05/09 20:49:40 1.1
+++ AbstractGenerator.java 2001/05/22 14:40:23 1.2
@@ -11,20 +11,20 @@
import java.util.Map;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.xml.AbstractXMLProducer;
-import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
/**
*
* @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a>
* (Apache Software Foundation, Exoffice Technologies)
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:40 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:40:23 $
*/
public abstract class AbstractGenerator extends AbstractXMLProducer
implements Generator {
- /** The current <code>EntityResolver</code>. */
- protected EntityResolver resolver=null;
+ /** The current <code>SourceResolver</code>. */
+ protected SourceResolver resolver=null;
/** The current <code>Map</code> objectModel. */
protected Map objectModel=null;
/** The current <code>Parameters</code>. */
@@ -33,10 +33,10 @@
protected String source=null;
/**
- * Set the <code>EntityResolver</code>, object model <code>Map</code>,
+ * Set the <code>SourceResolver</code>, object model <code>Map</code>,
* the source and sitemap <code>Parameters</code> used to process the
request.
*/
- public void setup(EntityResolver resolver, Map objectModel, String src,
Parameters par)
+ public void setup(SourceResolver resolver, Map objectModel, String src,
Parameters par)
throws ProcessingException, SAXException, IOException {
this.resolver=resolver;
this.objectModel=objectModel;
1.3 +13 -20
xml-cocoon2/src/org/apache/cocoon/generation/DirectoryGenerator.java
Index: DirectoryGenerator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/DirectoryGenerator.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DirectoryGenerator.java 2001/05/10 21:16:49 1.2
+++ DirectoryGenerator.java 2001/05/22 14:40:31 1.3
@@ -20,11 +20,11 @@
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.ResourceNotFoundException;
import org.apache.cocoon.Roles;
-import org.apache.cocoon.components.url.URLFactory;
+import org.apache.cocoon.environment.Source;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.avalon.excalibur.pool.Recyclable;
import org.apache.regexp.RE;
import org.apache.regexp.RESyntaxException;
-import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
@@ -64,7 +64,7 @@
* (Apache Software Foundation, Exoffice Technologies)
* @author <a href="mailto:[EMAIL PROTECTED]">Conny Krappatsch</a>
* (SMB GmbH) for Virbus AG
- * @version CVS $Revision: 1.2 $ $Date: 2001/05/10 21:16:49 $ */
+ * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:40:31 $ */
public class DirectoryGenerator extends ComposerGenerator implements
Recyclable {
@@ -104,7 +104,7 @@
* method.
*
* @param resolver
- * the EntityResolver object
+ * the SourceResolver object
* @param objectModel
* a <code>Map</code> containing model object
* @param src
@@ -112,7 +112,7 @@
* @param par
* configuration parameters
*/
- public void setup(EntityResolver resolver, Map objectModel, String src,
Parameters par)
+ public void setup(SourceResolver resolver, Map objectModel, String src,
Parameters par)
throws ProcessingException, SAXException, IOException {
super.setup(resolver, objectModel, src, par);
@@ -177,27 +177,20 @@
throws SAXException, ProcessingException {
try {
- InputSource input;
- URL url;
+ Source inputSource;
File path;
- input = resolver.resolveEntity(null,super.source);
- URLFactory urlFactory = null;
- try {
- urlFactory = (URLFactory)manager.lookup(Roles.URL_FACTORY);
- url = urlFactory.getURL(input.getSystemId());
- } catch (Exception e) {
- getLogger().error("cannot obtain the URLFactory");
- throw new SAXException ("cannot obtain the URLFactory", e);
- } finally {
- if (urlFactory != null) manager.release((Component)urlFactory);
+ inputSource = this.resolver.resolve(super.source);
+ if (inputSource.isFile() == false) {
+ throw new IOException("Cannot read directory from "
+ + inputSource.getSystemId() + "\"");
}
- path = new File(url.getFile());
-
+ path = inputSource.getFile();
if (!path.isDirectory()) {
throw new IOException("Cannot read directory from "
- + url.toString() + "\"");
+ + inputSource.getSystemId() + "\"");
}
+
this.contentHandler.startDocument();
this.contentHandler.startPrefixMapping(PREFIX,URI);
1.4 +12 -32
xml-cocoon2/src/org/apache/cocoon/generation/FileGenerator.java
Index: FileGenerator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/FileGenerator.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- FileGenerator.java 2001/05/14 13:51:18 1.3
+++ FileGenerator.java 2001/05/22 14:40:39 1.4
@@ -22,9 +22,10 @@
import org.apache.cocoon.caching.Cacheable;
import org.apache.cocoon.caching.TimeStampCacheValidity;
import org.apache.cocoon.components.parser.Parser;
+import org.apache.cocoon.environment.Source;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.util.HashUtil;
import org.apache.avalon.excalibur.pool.Recyclable;
-import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -38,19 +39,13 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a>
* (Apache Software Foundation, Exoffice Technologies)
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
- * @version CVS $Revision: 1.3 $ $Date: 2001/05/14 13:51:18 $
+ * @version CVS $Revision: 1.4 $ $Date: 2001/05/22 14:40:39 $
*/
public class FileGenerator extends ComposerGenerator
implements Cacheable, Recyclable {
- private static final String FILE = "file:";
-
/** The input source */
- private InputSource inputSource;
- /** The system ID of the input source */
- private String systemID;
- /** Last modification date of the source */
- private long lastModificationDate;
+ private Source inputSource;
/**
* Set the current <code>ComponentManager</code> instance used by this
@@ -67,31 +62,16 @@
public void recycle() {
super.recycle();
this.inputSource = null;
- this.systemID = null;
}
/**
* Setup the file generator.
* Try to get the last modification date of the source for caching.
*/
- public void setup(EntityResolver resolver, Map objectModel, String src,
Parameters par)
+ public void setup(SourceResolver resolver, Map objectModel, String src,
Parameters par)
throws ProcessingException, SAXException, IOException {
super.setup(resolver, objectModel, src, par);
- this.inputSource = super.resolver.resolveEntity(null, super.source);
- this.systemID = this.inputSource.getSystemId();
- if (this.systemID.startsWith(FILE) == true) {
- File xmlFile = new File(this.systemID.substring(FILE.length()));
- this.lastModificationDate = xmlFile.lastModified();
- } else {
- try {
- java.net.URL u= new java.net.URL(this.systemID);
- java.net.URLConnection conn = u.openConnection();
- this.lastModificationDate =
u.openConnection().getLastModified();
- } catch (java.net.MalformedURLException local) {
- // we ignore this at this stage
- this.lastModificationDate = 0; // no caching!
- }
- }
+ this.inputSource = resolver.resolve(src);
}
/**
@@ -101,8 +81,8 @@
* @return The generated key hashes the src
*/
public long generateKey() {
- if (this.lastModificationDate != 0) {
- return HashUtil.hash(this.systemID);
+ if (this.inputSource.getLastModified() != 0) {
+ return HashUtil.hash(this.inputSource.getSystemId());
}
return 0;
}
@@ -114,8 +94,8 @@
* component is currently not cacheable.
*/
public CacheValidity generateValidity() {
- if (this.lastModificationDate != 0) {
- return new TimeStampCacheValidity(this.lastModificationDate);
+ if (this.inputSource.getLastModified() != 0) {
+ return new
TimeStampCacheValidity(this.inputSource.getLastModified());
}
return null;
}
@@ -128,14 +108,14 @@
Parser parser = null;
try {
getLogger().debug("processing file " + super.source);
- getLogger().debug("file resolved to " + this.systemID);
+ getLogger().debug("file resolved to " +
this.inputSource.getSystemId());
parser = (Parser)this.manager.lookup(Roles.PARSER);
parser.setContentHandler(super.contentHandler);
parser.setLexicalHandler(super.lexicalHandler);
- parser.parse(this.inputSource);
+ parser.parse(new InputSource(inputSource.getInputStream()));
} catch (IOException e) {
getLogger().error("FileGenerator.generate()", e);
throw new ResourceNotFoundException("FileGenerator could not
find resource", e);
1.3 +3 -3
xml-cocoon2/src/org/apache/cocoon/generation/FragmentExtractorGenerator.java
Index: FragmentExtractorGenerator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/FragmentExtractorGenerator.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- FragmentExtractorGenerator.java 2001/05/10 21:16:50 1.2
+++ FragmentExtractorGenerator.java 2001/05/22 14:40:47 1.3
@@ -20,12 +20,12 @@
import org.apache.cocoon.caching.Cacheable;
import org.apache.cocoon.caching.NOPCacheValidity;
import org.apache.cocoon.environment.AbstractEnvironment;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.generation.AbstractGenerator;
import org.apache.cocoon.util.HashUtil;
import org.apache.cocoon.xml.dom.DOMStreamer;
import org.apache.avalon.excalibur.pool.Recyclable;
import org.w3c.dom.Document;
-import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
/** The generation half of FragmentExtractor.
@@ -38,7 +38,7 @@
* This is by no means complete yet, but it should prove useful, particularly
* for offline generation.
* @author <a href="mailto:[EMAIL PROTECTED]">Paul Russell</a>
- * @version CVS $Revision: 1.2 $ $Date: 2001/05/10 21:16:50 $
+ * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:40:47 $
*/
public class FragmentExtractorGenerator extends AbstractGenerator
implements Recyclable, Cacheable {
@@ -56,7 +56,7 @@
public FragmentExtractorGenerator() {
}
- public void setup(EntityResolver resolver, Map objectModel, String src,
Parameters par)
+ public void setup(SourceResolver resolver, Map objectModel, String src,
Parameters par)
throws ProcessingException, SAXException, IOException {
super.setup(resolver,objectModel,src,par);
1.4 +13 -38
xml-cocoon2/src/org/apache/cocoon/generation/HTMLGenerator.java
Index: HTMLGenerator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/HTMLGenerator.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- HTMLGenerator.java 2001/05/14 13:51:21 1.3
+++ HTMLGenerator.java 2001/05/22 14:40:55 1.4
@@ -26,59 +26,40 @@
import org.apache.cocoon.caching.CacheValidity;
import org.apache.cocoon.caching.TimeStampCacheValidity;
import org.apache.cocoon.components.parser.Parser;
-import org.apache.cocoon.components.url.URLFactory;
+import org.apache.cocoon.environment.Source;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.util.HashUtil;
import org.apache.cocoon.xml.dom.DOMStreamer;
import org.w3c.tidy.Tidy;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
- * @version CVS $Revision: 1.3 $ $Date: 2001/05/14 13:51:21 $
+ * @version CVS $Revision: 1.4 $ $Date: 2001/05/22 14:40:55 $
*/
public class HTMLGenerator extends ComposerGenerator implements Cacheable,
Recyclable {
- private static final String FILE = "file:";
+ /** The source */
+ private Source inputSource;
- /** The system ID of the input source */
- private String systemID;
- /** Last modification date of the source */
- private long lastModificationDate;
-
/**
* Recycle this component.
* All instance variables are set to <code>null</code>.
*/
public void recycle() {
super.recycle();
- this.systemID = null;
+ this.inputSource = null;
}
/**
* Setup the html generator.
* Try to get the last modification date of the source for caching.
*/
- public void setup(EntityResolver resolver, Map objectModel, String src,
Parameters par)
+ public void setup(SourceResolver resolver, Map objectModel, String src,
Parameters par)
throws ProcessingException, SAXException, IOException {
super.setup(resolver, objectModel, src, par);
- InputSource inputSource = super.resolver.resolveEntity(null,
super.source);
- this.systemID = inputSource.getSystemId();
- if (this.systemID.startsWith(FILE) == true) {
- File xmlFile = new File(this.systemID.substring(FILE.length()));
- this.lastModificationDate = xmlFile.lastModified();
- } else {
- try {
- java.net.URL u= new java.net.URL(this.systemID);
- java.net.URLConnection conn = u.openConnection();
- this.lastModificationDate =
u.openConnection().getLastModified();
- } catch (java.net.MalformedURLException local) {
- // we ignore this at this stage
- this.lastModificationDate = 0; // no caching!
- }
- }
+ this.inputSource = resolver.resolve(super.source);
}
/**
@@ -90,8 +71,8 @@
* is currently not cacheable.
*/
public long generateKey() {
- if (this.lastModificationDate != 0) {
- return HashUtil.hash(this.systemID);
+ if (this.inputSource.getLastModified() != 0) {
+ return HashUtil.hash(this.inputSource.getSystemId());
}
return 0;
}
@@ -105,8 +86,8 @@
* component is currently not cacheable.
*/
public CacheValidity generateValidity() {
- if (this.lastModificationDate != 0) {
- return new TimeStampCacheValidity(this.lastModificationDate);
+ if (this.inputSource.getLastModified() != 0) {
+ return new
TimeStampCacheValidity(this.inputSource.getLastModified());
}
return null;
}
@@ -116,7 +97,6 @@
*/
public void generate()
throws IOException, SAXException, ProcessingException {
- URLFactory urlFactory = null;
try
{
// Setup an instance of Tidy.
@@ -124,11 +104,8 @@
tidy.setXmlOut(true);
tidy.setXHTML(true);
- urlFactory = (URLFactory) this.manager.lookup(Roles.URL_FACTORY);
- URL url = urlFactory.getURL(this.source);
-
// Extract the document using JTidy and stream it.
- org.w3c.dom.Document doc = tidy.parseDOM(new
BufferedInputStream(url.openStream()), null);
+ org.w3c.dom.Document doc = tidy.parseDOM(new
BufferedInputStream(this.inputSource.getInputStream()), null);
DOMStreamer streamer = new
DOMStreamer(this.contentHandler,this.lexicalHandler);
streamer.stream(doc);
} catch (IOException e){
@@ -140,8 +117,6 @@
} catch (Exception e){
getLogger().error("Could not get parser", e);
throw new ProcessingException("Exception in
HTMLGenerator.generate()",e);
- } finally {
- this.manager.release((Component)urlFactory);
}
}
}
1.3 +1 -2
xml-cocoon2/src/org/apache/cocoon/generation/JspGenerator.java
Index: JspGenerator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/JspGenerator.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- JspGenerator.java 2001/05/10 21:16:51 1.2
+++ JspGenerator.java 2001/05/22 14:40:59 1.3
@@ -39,7 +39,6 @@
import org.apache.cocoon.xml.XMLProducer;
import org.apache.avalon.excalibur.pool.Recyclable;
import org.apache.log.Logger;
-import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -49,7 +48,7 @@
* results into SAX events.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a>
- * @version CVS $Revision: 1.2 $ $Date: 2001/05/10 21:16:51 $
+ * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:40:59 $
*/
public class JspGenerator extends ServletGenerator implements Recyclable {
1.3 +1 -2
xml-cocoon2/src/org/apache/cocoon/generation/PhpGenerator.java
Index: PhpGenerator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/PhpGenerator.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- PhpGenerator.java 2001/05/10 21:16:52 1.2
+++ PhpGenerator.java 2001/05/22 14:41:05 1.3
@@ -30,7 +30,6 @@
import org.apache.cocoon.xml.XMLProducer;
import org.apache.avalon.excalibur.pool.Recyclable;
import org.apache.log.Logger;
-import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -40,7 +39,7 @@
* results into SAX events.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Sam Ruby</a>
- * @version CVS $Revision: 1.2 $ $Date: 2001/05/10 21:16:52 $
+ * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:41:05 $
*/
public class PhpGenerator extends ServletGenerator implements Recyclable {
1.5 +20 -15
xml-cocoon2/src/org/apache/cocoon/generation/ScriptGenerator.java
Index: ScriptGenerator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/ScriptGenerator.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ScriptGenerator.java 2001/05/15 11:48:51 1.4
+++ ScriptGenerator.java 2001/05/22 14:41:12 1.5
@@ -23,6 +23,8 @@
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.Roles;
import org.apache.cocoon.components.parser.Parser;
+import org.apache.cocoon.environment.Source;
+import org.apache.cocoon.environment.SourceResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -46,9 +48,10 @@
* </pre>
*
* @author <a href="mailto:[EMAIL PROTECTED]">Jason Foster</a>
- * @version CVS $Revision: 1.4 $ $Date: 2001/05/15 11:48:51 $
+ * @version CVS $Revision: 1.5 $ $Date: 2001/05/22 14:41:12 $
*/
-public class ScriptGenerator extends ComposerGenerator implements
Configurable {
+public class ScriptGenerator extends ComposerGenerator implements
Configurable,
+Recyclable {
protected class BSFLanguage
{
@@ -57,10 +60,11 @@
public String[] extensions;
}
- private static final String FILE = "file:";
-
protected BSFLanguage[] additionalLanguages;
+ /** The source */
+ private Source inputSource;
+
public void configure(Configuration conf) throws ConfigurationException
{
if (conf != null)
@@ -98,24 +102,25 @@
}
}
+ public void recycle() {
+ super.recycle();
+ this.inputSource = null;
+ }
+
public void generate() throws ProcessingException {
Parser parser = null;
try {
// Figure out what file to open and do so
-
- getLogger().debug("processing file [" + this.source + "]");
- InputSource src = this.resolver.resolveEntity(null, this.source);
- String systemID = src.getSystemId();
- String fileName = systemID.substring(FILE.length());
+ getLogger().debug("processing file [" + super.source + "]");
+ this.inputSource = this.resolver.resolve(super.source);
- getLogger().debug("file resolved to [" + systemID + "]");
- getLogger().debug("file name extracted as [" + fileName + "]");
+ getLogger().debug("file resolved to [" +
this.inputSource.getSystemId() + "]");
// TODO: why doesn't this work?
// Reader in = src.getCharacterStream();
- Reader in = new FileReader(fileName);
+ Reader in = new
java.io.InputStreamReader(this.inputSource.getInputStream());
// Set up the BSF manager and register relevant helper "beans"
@@ -138,7 +143,7 @@
StringBuffer output = new StringBuffer();
mgr.registerBean("resolver", this.resolver);
- mgr.registerBean("source", this.source);
+ mgr.registerBean("source", super.source);
mgr.registerBean("objectModel", this.objectModel);
mgr.registerBean("parameters", this.parameters);
mgr.registerBean("output", output);
@@ -148,8 +153,8 @@
// Execute the script
- mgr.exec(BSFManager.getLangFromFilename(fileName), fileName, 0,
0,
- IOUtils.getStringFromReader(in));
+
mgr.exec(BSFManager.getLangFromFilename(this.inputSource.getSystemId()),
+ this.inputSource.getSystemId(), 0, 0,
IOUtils.getStringFromReader(in));
getLogger().debug("BSFManager execution complete");
getLogger().debug("output = [" + output.toString() + "]");
1.3 +19 -20
xml-cocoon2/src/org/apache/cocoon/generation/ServerPagesGenerator.java
Index: ServerPagesGenerator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/ServerPagesGenerator.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ServerPagesGenerator.java 2001/05/10 21:16:54 1.2
+++ ServerPagesGenerator.java 2001/05/22 14:41:16 1.3
@@ -27,15 +27,15 @@
import org.apache.cocoon.caching.CacheValidity;
import org.apache.cocoon.caching.ParametersCacheValidity;
import org.apache.cocoon.caching.CompositeCacheValidity;
+import org.apache.cocoon.environment.SourceResolver;
+import org.apache.cocoon.environment.Source;
import org.apache.cocoon.components.language.generator.CompiledComponent;
import org.apache.cocoon.components.language.generator.ProgramGenerator;
import org.apache.cocoon.components.language.markup.xsp.XSPGenerator;
-import org.apache.cocoon.components.url.URLFactory;
import org.apache.cocoon.util.HashUtil;
import org.apache.avalon.excalibur.pool.Recyclable;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
-import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -46,7 +46,7 @@
* delegating actual SAX event generation.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
- * @version CVS $Revision: 1.2 $ $Date: 2001/05/10 21:16:54 $
+ * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:41:16 $
*/
public class ServerPagesGenerator
extends ServletGenerator
@@ -57,10 +57,11 @@
*/
protected static ProgramGenerator programGenerator = null;
- protected static URLFactory factory = null;
-
protected XSPGenerator generator = null;
+ /** The source */
+ private Source inputSource;
+
/**
* Set the global component manager. This method sets the sitemap-defined
* program generator
@@ -75,7 +76,6 @@
try {
this.programGenerator = (ProgramGenerator)
manager.lookup(Roles.PROGRAM_GENERATOR);
- this.factory = (URLFactory) manager.lookup(Roles.URL_FACTORY);
} catch (Exception e) {
getLogger().error("Could not find ProgramGenerator", e);
}
@@ -91,7 +91,7 @@
* @return A long representing the cache key (defaults to not cachable)
*/
public long generateKey() {
- return HashUtil.hash(this.source + generator.generateKey());
+ return HashUtil.hash(this.inputSource.getSystemId() +
generator.generateKey());
}
/**
@@ -104,7 +104,7 @@
CacheValidity genValidity = generator.generateValidity();
if (genValidity != null) {
HashMap map = new HashMap (1);
- map.put("source", this.source);
+ map.put("source", this.inputSource.getSystemId());
ParametersCacheValidity pcv = new ParametersCacheValidity(map);
return new CompositeCacheValidity(genValidity, pcv);
}
@@ -131,25 +131,21 @@
*/
public final static String DEFAULT_PROGRAMMING_LANGUAGE = "java";
- public void setup(EntityResolver resolver, Map objectModel, String src,
Parameters par)
+ public void setup(SourceResolver resolver, Map objectModel, String src,
Parameters par)
throws ProcessingException, SAXException, IOException {
super.setup(resolver, objectModel, src, par);
-
- InputSource inputSource = this.resolver.resolveEntity(null, this.source);
- String systemId = inputSource.getSystemId();
+ this.inputSource = this.resolver.resolve(super.source);
- URL url = factory.getURL(systemId);
-
- if (!url.getProtocol().equals("file")) {
- throw new ResourceNotFoundException("Not a file: " + url.toString());
+ if (this.inputSource.isFile() == false) {
+ throw new ResourceNotFoundException("Not a file: " +
this.inputSource.getSystemId());
}
- File file = new File(url.getFile());
+ File file = this.inputSource.getFile();
if (!file.canRead()) {
- throw new ResourceNotFoundException("Can't read file: " +
url.toString());
+ throw new ResourceNotFoundException("Can't read file: " +
this.inputSource.getSystemId());
}
if (this.markupLanguage == null) {
@@ -168,7 +164,7 @@
getLogger().warn("ServerPagesGenerator.generate()", e);
throw new ResourceNotFoundException(e.getMessage(), e);
}
- generator.setup(this.resolver, this.objectModel, this.source,
this.parameters);
+ generator.setup(this.resolver, this.objectModel, super.source,
this.parameters);
}
/**
@@ -204,6 +200,7 @@
} finally {
if(generator != null)
programGenerator.release(generator);
+ generator = null;
}
// End any started events in case of premature return
@@ -453,7 +450,10 @@
*/
public void recycle() {
super.recycle();
+ if (generator != null)
+ programGenerator.release(generator);
this.generator = null;
+ this.inputSource = null;
}
/**
@@ -461,6 +461,5 @@
*/
public void dispose() {
if(this.programGenerator != null)
manager.release((Component)this.programGenerator);
- if(this.factory != null) manager.release((Component)this.factory);
}
}
1.2 +3 -3
xml-cocoon2/src/org/apache/cocoon/generation/ServletGenerator.java
Index: ServletGenerator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/ServletGenerator.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ServletGenerator.java 2001/05/09 20:49:42 1.1
+++ ServletGenerator.java 2001/05/22 14:41:22 1.2
@@ -16,13 +16,13 @@
import org.apache.cocoon.environment.Context;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Response;
-import org.xml.sax.EntityResolver;
+import org.apache.cocoon.environment.SourceResolver;
import org.xml.sax.SAXException;
/**
*
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:42 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:41:22 $
*/
public abstract class ServletGenerator extends ComposerGenerator
implements Composable {
@@ -31,7 +31,7 @@
protected Response response=null;
protected Context context=null;
- public void setup(EntityResolver resolver, Map objectModel, String src,
Parameters par)
+ public void setup(SourceResolver resolver, Map objectModel, String src,
Parameters par)
throws ProcessingException, SAXException, IOException {
super.setup(resolver, objectModel, src, par);
1.2 +7 -7
xml-cocoon2/src/org/apache/cocoon/reading/AbstractReader.java
Index: AbstractReader.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/reading/AbstractReader.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractReader.java 2001/05/09 20:49:39 1.1
+++ AbstractReader.java 2001/05/22 14:43:33 1.2
@@ -11,21 +11,21 @@
import java.io.IOException;
import java.io.OutputStream;
import java.util.Map;
+import org.apache.avalon.excalibur.pool.Recyclable;
import org.apache.avalon.framework.logger.AbstractLoggable;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.ProcessingException;
-import org.apache.avalon.excalibur.pool.Recyclable;
-import org.xml.sax.EntityResolver;
+import org.apache.cocoon.environment.SourceResolver;
import org.xml.sax.SAXException;
/**
*
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:39 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:43:33 $
*/
public abstract class AbstractReader extends AbstractLoggable implements
Reader, Recyclable {
- /** The current <code>EntityResolver</code>. */
- protected EntityResolver resolver=null;
+ /** The current <code>SourceResolver</code>. */
+ protected SourceResolver resolver=null;
/** The current <code>Map</code> of the object model. */
protected Map objectModel=null;
/** The current <code>Parameters</code>. */
@@ -36,10 +36,10 @@
protected OutputStream out=null;
/**
- * Set the <code>EntityResolver</code> the object model <code>Map</code>,
+ * Set the <code>SourceResolver</code> the object model <code>Map</code>,
* the source and sitemap <code>Parameters</code> used to process the
request.
*/
- public void setup(EntityResolver resolver, Map objectModel, String src,
Parameters par)
+ public void setup(SourceResolver resolver, Map objectModel, String src,
Parameters par)
throws ProcessingException, SAXException, IOException {
this.resolver=resolver;
this.objectModel=objectModel;
1.2 +3 -3
xml-cocoon2/src/org/apache/cocoon/reading/DatabaseReader.java
Index: DatabaseReader.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/reading/DatabaseReader.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DatabaseReader.java 2001/05/09 20:49:39 1.1
+++ DatabaseReader.java 2001/05/22 14:43:41 1.2
@@ -36,12 +36,12 @@
import org.apache.cocoon.Roles;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Response;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.caching.Cacheable;
import org.apache.cocoon.caching.CacheValidity;
import org.apache.cocoon.caching.NOPCacheValidity;
import org.apache.cocoon.caching.TimeStampCacheValidity;
import org.apache.cocoon.util.HashUtil;
-import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
/**
@@ -82,10 +82,10 @@
}
/**
- * Set the <code>EntityResolver</code> the object model <code>Map</code>,
+ * Set the <code>SourceResolver</code> the object model <code>Map</code>,
* the source and sitemap <code>Parameters</code> used to process the
request.
*/
- public void setup(EntityResolver resolver, Map objectModel, String src,
Parameters par)
+ public void setup(SourceResolver resolver, Map objectModel, String src,
Parameters par)
throws ProcessingException, SAXException, IOException {
super.setup(resolver, objectModel, src, par);
1.2 +18 -57
xml-cocoon2/src/org/apache/cocoon/reading/ResourceReader.java
Index: ResourceReader.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/reading/ResourceReader.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ResourceReader.java 2001/05/09 20:49:39 1.1
+++ ResourceReader.java 2001/05/22 14:43:46 1.2
@@ -32,18 +32,18 @@
import org.apache.cocoon.caching.CacheValidity;
import org.apache.cocoon.caching.Cacheable;
import org.apache.cocoon.caching.TimeStampCacheValidity;
-import org.apache.cocoon.components.url.URLFactory;
import org.apache.cocoon.environment.Context;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Response;
+import org.apache.cocoon.environment.Source;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.util.HashUtil;
-import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
/**
*
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:39 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:43:46 $
*
* The <code>ResourceReader</code> component is used to serve binary data
* in a sitemap pipeline. It makes use of HTTP Headers to determine if
@@ -64,54 +64,19 @@
private ComponentManager manager;
- /** The system ID of the input source */
- private String systemID;
+ /** The source */
+ private Source inputSource;
- private InputStream inputStream;
- private long inputLength;
- private long lastModified;
-
/**
* Setup the reader.
* The resource is opened to get an <code>InputStream</code>,
* the length and the last modification date
*/
- public void setup(EntityResolver resolver, Map objectModel, String src,
Parameters par)
+ public void setup(SourceResolver resolver, Map objectModel, String src,
Parameters par)
throws ProcessingException, SAXException, IOException {
super.setup(resolver, objectModel, src, par);
- this.systemID = resolver.resolveEntity(null,
super.source).getSystemId();
-
- URLFactory urlFactory = null;
- try {
- try {
- urlFactory = (URLFactory)
this.manager.lookup(Roles.URL_FACTORY);
- } catch (Exception e) {
- getLogger().error("cannot obtain the URLFactory", e);
- throw new ProcessingException ("cannot obtain the
URLFactory", e);
- }
- try {
- if (this.source.indexOf(":/") != -1) {
- URLConnection conn =
urlFactory.getURL(this.source).openConnection();
- this.lastModified = conn.getLastModified();
- this.inputLength = conn.getContentLength();
- this.inputStream = conn.getInputStream();
- } else {
- File file = new
File(urlFactory.getURL(this.systemID).getFile());
- this.lastModified = file.lastModified();
- this.inputLength = file.length();
- this.inputStream = new BufferedInputStream(new
FileInputStream (file));
- }
- } catch (MalformedURLException mue) {
- getLogger().error("ResourceReader: malformed source \"" +
this.source + "\"", mue);
- throw new ResourceNotFoundException ("ResourceReader:
malformed source \""
- +this.source+"\". ", mue);
- }
- } finally {
- if (urlFactory != null) {
- this.manager.release((Component)urlFactory);
- }
- }
+ this.inputSource = this.resolver.resolve(super.source);
}
public void compose (ComponentManager manager) {
@@ -120,14 +85,7 @@
public void recycle() {
super.recycle();
- if (this.inputStream != null) {
- try {
- this.inputStream.close();
- } catch (IOException ioe) {
- getLogger().debug("Received an IOException, assuming client
severed connection on purpose");
- }
- this.inputStream = null;
- }
+ this.inputSource = null;
}
/**
@@ -137,7 +95,7 @@
* @return The generated key hashes the src
*/
public long generateKey() {
- return HashUtil.hash(this.systemID);
+ return HashUtil.hash(this.inputSource.getSystemId());
}
/**
@@ -147,7 +105,7 @@
* component is currently not cacheable.
*/
public CacheValidity generateValidity() {
- return new TimeStampCacheValidity(this.lastModified);
+ return new
TimeStampCacheValidity(this.inputSource.getLastModified());
}
/**
@@ -155,7 +113,7 @@
* possible to detect
*/
public long getLastModified() {
- return this.lastModified;
+ return this.inputSource.getLastModified();
}
/**
@@ -165,6 +123,8 @@
Request request = (Request)
objectModel.get(Constants.REQUEST_OBJECT);
Response response = (Response)
objectModel.get(Constants.RESPONSE_OBJECT);
+ long contentLength = this.inputSource.getContentLength();
+
try {
long expires = parameters.getParameterAsInteger("expires", -1);
@@ -177,16 +137,17 @@
byte[] buffer = new byte[8192];
int length = -1;
- while ((length = this.inputStream.read(buffer)) > -1) {
+ InputStream inputStream = this.inputSource.getInputStream();
+ while ((length = inputStream.read(buffer)) > -1) {
out.write(buffer, 0, length);
}
- this.inputStream.close();
- this.inputStream = null;
+ inputStream.close();
+ inputStream = null;
out.flush();
} catch (IOException ioe) {
getLogger().debug("Received an IOException, assuming client
severed connection on purpose");
}
- return (int)this.inputLength;
+ return (int)contentLength;
}
/**
1.2 +1 -2
xml-cocoon2/src/org/apache/cocoon/serialization/AbstractSerializer.java
Index: AbstractSerializer.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/serialization/AbstractSerializer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractSerializer.java 2001/05/09 20:49:37 1.1
+++ AbstractSerializer.java 2001/05/22 14:44:41 1.2
@@ -16,14 +16,13 @@
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.xml.AbstractXMLPipe;
import org.apache.cocoon.ProcessingException;
-import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a>
* (Apache Software Foundation, Exoffice Technologies)
* @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:37 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:44:41 $
*/
public abstract class AbstractSerializer extends AbstractXMLPipe implements
Serializer, Recyclable {
1.3 +6 -6
xml-cocoon2/src/org/apache/cocoon/sitemap/ContentAggregator.java
Index: ContentAggregator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/sitemap/ContentAggregator.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ContentAggregator.java 2001/05/15 15:31:54 1.2
+++ ContentAggregator.java 2001/05/22 14:45:11 1.3
@@ -24,6 +24,7 @@
import org.apache.cocoon.components.pipeline.EventPipeline;
import org.apache.cocoon.components.pipeline.StreamPipeline;
import org.apache.cocoon.environment.Environment;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.generation.Generator;
import org.apache.cocoon.sitemap.Sitemap;
import org.apache.cocoon.xml.ContentHandlerWrapper;
@@ -31,14 +32,13 @@
import org.apache.cocoon.xml.XMLProducer;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
-import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
import org.xml.sax.ext.LexicalHandler;
import org.xml.sax.helpers.AttributesImpl;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
- * @version CVS $Id: ContentAggregator.java,v 1.2 2001/05/15 15:31:54 dims
Exp $
+ * @version CVS $Id: ContentAggregator.java,v 1.3 2001/05/22 14:45:11
cziegeler Exp $
*/
public class ContentAggregator extends ContentHandlerWrapper
@@ -61,8 +61,8 @@
/** The current <code>Environment</code>. */
protected Environment environment;
- /** The current <code>EntityResolver</code>. */
- protected EntityResolver resolver;
+ /** The current <code>SourceResolver</code>. */
+ protected SourceResolver resolver;
/** The current <code>Map</code> objectModel. */
protected Map objectModel;
@@ -299,10 +299,10 @@
}
/**
- * Set the <code>EntityResolver</code>, object model <code>Map</code>,
+ * Set the <code>SourceResolver</code>, object model <code>Map</code>,
* the source and sitemap <code>Parameters</code> used to process the
request.
*/
- public void setup(EntityResolver resolver, Map objectModel, String src,
Parameters par)
+ public void setup(SourceResolver resolver, Map objectModel, String src,
Parameters par)
throws ProcessingException, SAXException, IOException {
this.resolver=resolver;
this.objectModel=objectModel;
1.2 +18 -2 xml-cocoon2/src/org/apache/cocoon/sitemap/Handler.java
Index: Handler.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/sitemap/Handler.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Handler.java 2001/05/09 20:49:36 1.1
+++ Handler.java 2001/05/22 14:45:20 1.2
@@ -36,9 +36,10 @@
/**
* Handles the manageing and stating of one <code>Sitemap</code>
*
+ * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:36 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:45:20 $
*/
public class Handler extends AbstractLoggable implements Runnable,
Configurable, Composable, Contextualizable, Processor, Disposable {
private Context context;
@@ -121,7 +122,12 @@
} else {
s = this.source;
}
- this.sourceFile = new
File(urlFactory.getURL(environment.resolveEntity(null,
s).getSystemId()).getFile());
+ try {
+ environment.setURLResolver(new
org.apache.cocoon.environment.FactoryURLResolver(urlFactory));
+ this.sourceFile = environment.resolve(s).getFile();
+ } finally {
+ environment.setURLResolver(null);
+ }
if (!this.sourceFile.canRead()) {
throw new FileNotFoundException ("file " +
this.sourceFile.toString() + " not found or cannot be opened for reading");
}
@@ -156,13 +162,23 @@
public boolean process (Environment environment)
throws Exception {
checkSanity();
+ try {
+ environment.setURLResolver(new
org.apache.cocoon.environment.FactoryURLResolver(urlFactory));
return sitemap.process(environment);
+ } finally {
+ environment.setURLResolver(null);
}
+ }
public boolean process (Environment environment, StreamPipeline
pipeline, EventPipeline eventPipeline)
throws Exception {
checkSanity();
+ try {
+ environment.setURLResolver(new
org.apache.cocoon.environment.FactoryURLResolver(urlFactory));
return sitemap.process(environment, pipeline, eventPipeline);
+ } finally {
+ environment.setURLResolver(null);
+ }
}
private void checkSanity () throws Exception {
1.2 +4 -4
xml-cocoon2/src/org/apache/cocoon/sitemap/LinkTranslator.java
Index: LinkTranslator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/sitemap/LinkTranslator.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- LinkTranslator.java 2001/05/09 20:49:36 1.1
+++ LinkTranslator.java 2001/05/22 14:45:31 1.2
@@ -13,16 +13,16 @@
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.Constants;
import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.transformation.Transformer;
import org.apache.cocoon.util.NetUtils;
import org.apache.cocoon.xml.xlink.ExtendedXLinkPipe;
import org.xml.sax.Attributes;
-import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:36 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:45:31 $
*/
public class LinkTranslator extends ExtendedXLinkPipe implements Transformer
{
@@ -30,10 +30,10 @@
private Map links;
/**
- * Set the <code>EntityResolver</code>, objectModel <code>Map</code>,
+ * Set the <code>SourceResolver</code>, objectModel <code>Map</code>,
* the source and sitemap <code>Parameters</code> used to process the
request.
*/
- public void setup(EntityResolver resolver, Map objectModel, String src,
Parameters par)
+ public void setup(SourceResolver resolver, Map objectModel, String src,
Parameters par)
throws ProcessingException, SAXException, IOException {
this.links = (Map) objectModel.get(Constants.LINK_OBJECT);
}
1.2 +1 -2
xml-cocoon2/src/org/apache/cocoon/sitemap/SitemapComponentSelector.java
Index: SitemapComponentSelector.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/sitemap/SitemapComponentSelector.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SitemapComponentSelector.java 2001/05/09 20:49:37 1.1
+++ SitemapComponentSelector.java 2001/05/22 14:45:35 1.2
@@ -15,13 +15,12 @@
import org.apache.avalon.framework.component.Composable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.components.url.URLFactory;
import org.apache.avalon.excalibur.component.DefaultComponentSelector;
/** Default component manager for Cocoon's sitemap components.
* @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
- * @version CVS $Id: SitemapComponentSelector.java,v 1.1 2001/05/09 20:49:37
giacomo Exp $
+ * @version CVS $Id: SitemapComponentSelector.java,v 1.2 2001/05/22 14:45:35
cziegeler Exp $
*/
public class SitemapComponentSelector extends DefaultComponentSelector {
HashMap mime_types;
1.2 +4 -4
xml-cocoon2/src/org/apache/cocoon/sitemap/SitemapModelComponent.java
Index: SitemapModelComponent.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/sitemap/SitemapModelComponent.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SitemapModelComponent.java 2001/05/09 20:49:37 1.1
+++ SitemapModelComponent.java 2001/05/22 14:45:42 1.2
@@ -12,21 +12,21 @@
import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.ProcessingException;
-import org.xml.sax.EntityResolver;
+import org.apache.cocoon.environment.SourceResolver;
import org.xml.sax.SAXException;
/**
*
* @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a>
* (Apache Software Foundation, Exoffice Technologies)
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:37 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:45:42 $
*/
public interface SitemapModelComponent extends Component {
/**
- * Set the <code>EntityResolver</code>, objectModel <code>Map</code>,
+ * Set the <code>SourceResolver</code>, objectModel <code>Map</code>,
* the source and sitemap <code>Parameters</code> used to process the
request.
*/
- void setup(EntityResolver resolver, Map objectModel, String src,
Parameters par)
+ void setup(SourceResolver resolver, Map objectModel, String src,
Parameters par)
throws ProcessingException, SAXException, IOException;
}
1.2 +17 -5
xml-cocoon2/src/org/apache/cocoon/transformation/AbstractDOMTransformer.java
Index: AbstractDOMTransformer.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/AbstractDOMTransformer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractDOMTransformer.java 2001/05/09 20:49:34 1.1
+++ AbstractDOMTransformer.java 2001/05/22 14:47:08 1.2
@@ -14,9 +14,11 @@
import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.component.Composable;
import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.excalibur.pool.Recyclable;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.Roles;
import org.apache.cocoon.components.parser.Parser;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.transformation.Transformer;
import org.apache.cocoon.xml.XMLConsumer;
import org.apache.cocoon.xml.dom.DOMBuilder;
@@ -24,7 +26,6 @@
import org.apache.cocoon.xml.dom.DOMStreamer;
import org.w3c.dom.Document;
import org.xml.sax.ContentHandler;
-import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
import org.xml.sax.ext.LexicalHandler;
@@ -40,10 +41,10 @@
* @version CVS $Revision $Date
*/
public abstract class AbstractDOMTransformer extends DOMBuilder
- implements Transformer, DOMBuilder.Listener, Composable, Disposable {
+ implements Transformer, DOMBuilder.Listener, Composable,
Disposable,Recyclable {
/** The SAX entity resolver */
- protected EntityResolver resolver;
+ protected SourceResolver resolver;
/** The request object model */
protected Map objectModel;
/** The URI requested */
@@ -79,13 +80,24 @@
}
/**
- * Set the <code>EntityResolver</code>, objectModel <code>Map</code>,
+ * Recycle the component.
+ */
+ public void recycle() {
+ this.resolver = null;
+ this.source = null;
+ this.objectModel = null;
+ this.parameters = null;
+ }
+
+
+ /**
+ * Set the <code>SourceResolver</code>, objectModel <code>Map</code>,
* the source and sitemap <code>Parameters</code> used to process the
request.
*
* If you wish to process the parameters, override this method, call
* <code>super()</code> and then add your code.
*/
- public void setup(EntityResolver resolver, Map objectModel, String src,
Parameters par)
+ public void setup(SourceResolver resolver, Map objectModel, String src,
Parameters par)
throws ProcessingException, SAXException, IOException {
this.resolver = resolver;
this.objectModel = objectModel;
1.2 +3 -3
xml-cocoon2/src/org/apache/cocoon/transformation/FragmentExtractorTransformer.java
Index: FragmentExtractorTransformer.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/FragmentExtractorTransformer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- FragmentExtractorTransformer.java 2001/05/09 20:49:34 1.1
+++ FragmentExtractorTransformer.java 2001/05/22 14:47:17 1.2
@@ -23,6 +23,7 @@
import org.apache.cocoon.caching.CacheValidity;
import org.apache.cocoon.caching.Cacheable;
import org.apache.cocoon.caching.NOPCacheValidity;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.generation.FragmentExtractorGenerator;
import org.apache.cocoon.transformation.AbstractTransformer;
import org.apache.cocoon.util.HashUtil;
@@ -30,7 +31,6 @@
import org.apache.cocoon.xml.dom.DOMFactory;
import org.w3c.dom.Document;
import org.xml.sax.Attributes;
-import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
@@ -43,7 +43,7 @@
* <a href="http://c2.com/cgi/wiki?YouArentGonnaNeedIt">you aren't gonna
need it</a>,
* so I've just used very simple extraction based on a URI and local name.
* @author <a href="mailto:[EMAIL PROTECTED]">Paul Russell</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:34 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:47:17 $
*/
public class FragmentExtractorTransformer extends AbstractTransformer
implements Composable, Disposable, Cacheable, Poolable {
@@ -75,7 +75,7 @@
/** Setup the transformer.
*/
- public void setup(EntityResolver resolver, Map objectModel, String src,
Parameters par)
+ public void setup(SourceResolver resolver, Map objectModel, String src,
Parameters par)
throws ProcessingException, SAXException, IOException {
extractLevel = 0;
imageID = 0;
1.3 +12 -28
xml-cocoon2/src/org/apache/cocoon/transformation/I18nTransformer.java
Index: I18nTransformer.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/I18nTransformer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- I18nTransformer.java 2001/05/14 13:51:33 1.2
+++ I18nTransformer.java 2001/05/22 14:47:24 1.3
@@ -28,13 +28,13 @@
import org.apache.cocoon.acting.LangSelect;
import org.apache.cocoon.caching.CacheValidity;
import org.apache.cocoon.caching.Cacheable;
+import org.apache.cocoon.environment.Source;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.caching.TimeStampCacheValidity;
import org.apache.cocoon.components.parser.Parser;
-import org.apache.cocoon.components.url.URLFactory;
import org.apache.cocoon.util.HashUtil;
import org.apache.avalon.excalibur.pool.Recyclable;
import org.xml.sax.Attributes;
-import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
@@ -106,8 +106,6 @@
*/
public class I18nTransformer extends AbstractTransformer implements
Composable, Recyclable, Cacheable {
- private static final String FILE = "file:";
-
protected ComponentManager manager;
public Map dictionary;
@@ -131,10 +129,9 @@
protected boolean is_element = false;
protected String lang;
protected String source;
+
/** The input source */
- private InputSource inputSource;
- /** The system ID of the input source */
- private String systemID;
+ private Source inputSource;
/**
* Uses <code>org.apache.cocoon.acting.LangSelect.getLang()</code>
@@ -142,12 +139,11 @@
* objectModel.
*/
- public void setup(EntityResolver resolver, Map objectModel, String
source,
+ public void setup(SourceResolver resolver, Map objectModel, String
source,
Parameters parameters)
throws ProcessingException, SAXException, IOException {
- this.inputSource = resolver.resolveEntity(null, source);
- this.systemID = this.inputSource.getSystemId();
+ this.inputSource = resolver.resolve(source);
lang = (String)(objectModel.get("lang"));
if (lang == null) {
@@ -156,18 +152,7 @@
this.source = source;
- URL tr = null;
- URLFactory urlFactory = null;
- try {
- urlFactory = (URLFactory) this.manager.lookup(Roles.URL_FACTORY);
- tr = urlFactory.getURL(this.systemID);
- } catch (Exception e) {
- getLogger().error("cannot obtain the URLFactory", e);
- throw new SAXException("cannot obtain the URLFactory", e);
- } finally {
- if (urlFactory != null)
this.manager.release((Component)urlFactory);
- }
- initialiseDictionary(tr);
+ initialiseDictionary(this.inputSource.getURL());
}
/**
@@ -177,8 +162,8 @@
* @return The generated key hashes the src
*/
public long generateKey() {
- if (this.systemID.startsWith(FILE) == true) {
- return HashUtil.hash(this.source);
+ if (this.inputSource.getLastModified() != 0) {
+ return HashUtil.hash(this.inputSource.getSystemId());
}
return 0;
}
@@ -190,9 +175,8 @@
* component is currently not cacheable.
*/
public CacheValidity generateValidity() {
- if (this.systemID.startsWith(FILE) == true) {
- File xmlFile = new File(this.systemID.substring(FILE.length()));
- return new TimeStampCacheValidity(xmlFile.lastModified());
+ if (this.inputSource.getLastModified() != 0) {
+ return new
TimeStampCacheValidity(this.inputSource.getLastModified());
}
return null;
}
@@ -391,6 +375,6 @@
public void recycle() {
super.recycle();
this.inputSource = null;
- this.systemID = null;
+ this.source = null;
}
}
1.2 +3 -14
xml-cocoon2/src/org/apache/cocoon/transformation/I18nTransformer2.java
Index: I18nTransformer2.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/I18nTransformer2.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- I18nTransformer2.java 2001/05/15 12:01:44 1.1
+++ I18nTransformer2.java 2001/05/22 14:47:29 1.2
@@ -13,7 +13,7 @@
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.acting.LangSelect;
import org.apache.cocoon.components.parser.Parser;
-import org.apache.cocoon.components.url.URLFactory;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.avalon.excalibur.pool.Poolable;
import org.apache.avalon.framework.component.ComponentManager;
@@ -24,7 +24,6 @@
import org.apache.avalon.framework.logger.Loggable;
import org.xml.sax.Attributes;
-import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
@@ -198,7 +197,7 @@
* objectModel.
*/
- public void setup(EntityResolver resolver, Map objectModel, String
source,
+ public void setup(SourceResolver resolver, Map objectModel, String
source,
Parameters parameters)
throws ProcessingException, SAXException, IOException {
@@ -209,17 +208,7 @@
String translations_file = parameters.getParameter("src", null);
- URL tr = null;
- URLFactory urlFactory = null;
- try {
- urlFactory = (URLFactory) this.manager.lookup(Roles.URL_FACTORY);
- tr = urlFactory.getURL(resolver.resolveEntity(null,
translations_file).getSystemId());
- } catch (Exception e) {
- getLogger().error("cannot obtain the URLFactory", e);
- throw new SAXException("cannot obtain the URLFactory", e);
- } finally {
- if (urlFactory != null)
this.manager.release((Component)urlFactory);
- }
+ URL tr = resolver.resolve(source).getURL();
initialiseDictionary(tr);
}
1.2 +3 -3
xml-cocoon2/src/org/apache/cocoon/transformation/LogTransformer.java
Index: LogTransformer.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/LogTransformer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- LogTransformer.java 2001/05/09 20:49:34 1.1
+++ LogTransformer.java 2001/05/22 14:47:36 1.2
@@ -13,9 +13,9 @@
import java.util.Map;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.avalon.excalibur.pool.Poolable;
import org.xml.sax.Attributes;
-import org.xml.sax.EntityResolver;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -43,7 +43,7 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
* (PWR Organisation & Entwicklung)
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:34 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:47:36 $
*
*/
public class LogTransformer extends AbstractTransformer implements Poolable {
@@ -63,7 +63,7 @@
/** BEGIN SitemapComponent methods **/
- public void setup(EntityResolver resolver, Map objectModel,
+ public void setup(SourceResolver resolver, Map objectModel,
String source, Parameters parameters)
throws ProcessingException, SAXException, IOException {
if (logfile == null) {
1.2 +3 -3
xml-cocoon2/src/org/apache/cocoon/transformation/SQLTransformer.java
Index: SQLTransformer.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/SQLTransformer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SQLTransformer.java 2001/05/09 20:49:35 1.1
+++ SQLTransformer.java 2001/05/22 14:47:41 1.2
@@ -27,6 +27,7 @@
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.Roles;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.util.ClassUtils;
import org.apache.cocoon.xml.XMLConsumer;
import org.apache.cocoon.xml.XMLProducer;
@@ -35,7 +36,6 @@
import org.apache.log.Logger;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
-import org.xml.sax.EntityResolver;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.ext.LexicalHandler;
@@ -46,7 +46,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Donald Ball</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
* (PWR Organisation & Entwicklung)
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:35 $ $Author:
giacomo $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:47:41 $ $Author:
cziegeler $
*/
public class SQLTransformer extends AbstractTransformer implements
Composable, Poolable, Disposable {
@@ -113,7 +113,7 @@
/** BEGIN SitemapComponent methods **/
- public void setup(EntityResolver resolver, Map objectModel,
+ public void setup(SourceResolver resolver, Map objectModel,
String source, Parameters parameters)
throws ProcessingException, SAXException, IOException {
current_state = SQLTransformer.STATE_OUTSIDE;
1.3 +38 -46
xml-cocoon2/src/org/apache/cocoon/transformation/TraxTransformer.java
Index: TraxTransformer.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/TraxTransformer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TraxTransformer.java 2001/05/14 13:51:34 1.2
+++ TraxTransformer.java 2001/05/22 14:47:46 1.3
@@ -44,6 +44,8 @@
import org.apache.cocoon.components.browser.Browser;
import org.apache.cocoon.components.store.Store;
import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.Source;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.util.HashUtil;
import org.apache.cocoon.util.TraxErrorHandler;
import org.apache.cocoon.xml.ContentHandlerWrapper;
@@ -51,7 +53,6 @@
import org.apache.avalon.excalibur.pool.Poolable;
import org.apache.avalon.excalibur.pool.Recyclable;
import org.xml.sax.ContentHandler;
-import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.ext.LexicalHandler;
@@ -98,7 +99,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
- * @version CVS $Id: TraxTransformer.java,v 1.2 2001/05/14 13:51:34
cziegeler Exp $
+ * @version CVS $Id: TraxTransformer.java,v 1.3 2001/05/22 14:47:46
cziegeler Exp $
*/
public class TraxTransformer extends ContentHandlerWrapper
implements Transformer, Composable, Recyclable, Configurable, Cacheable,
Disposable {
@@ -128,32 +129,31 @@
private ComponentManager manager;
- private long xslFileLastModified;
-
- /** The InputSource */
- private InputSource inputSource;
- private String systemID;
- private String xsluri;
+ /** The Source */
+ private Source inputSource;
+ /** The parameters */
private Parameters par;
+ /** The object model */
private Map objectModel;
- private EntityResolver resolver;
+ /** The source resolver */
+ SourceResolver resolver;
- TransformerHandler getTransformerHandler(EntityResolver resolver)
+ TransformerHandler getTransformerHandler()
throws SAXException, ProcessingException, IOException,
TransformerConfigurationException {
Templates templates = getTemplates();
if(templates == null) {
- getLogger().debug("Creating new Templates in " + this + " for "
+ systemID + ":" + xsluri);
- templates = getTransformerFactory().newTemplates(new
SAXSource(this.inputSource));
+ getLogger().debug("Creating new Templates in " + this + " for "
+ this.inputSource.getSystemId());
+ templates = getTransformerFactory().newTemplates(new
SAXSource(new InputSource(this.inputSource.getReader())));
putTemplates (templates);
} else {
- getLogger().debug("Reusing Templates in " + this + " for " +
systemID + ":" + xsluri);
+ getLogger().debug("Reusing Templates in " + this + " for " +
this.inputSource.getSystemId());
}
TransformerHandler handler =
getTransformerFactory().newTransformerHandler(templates);
if(handler == null) {
/* If there is a problem in getting the handler, try using a
brand new Templates object */
- getLogger().debug("Re-creating new Templates in " + this + "
for" + systemID + ":" + xsluri);
- templates = getTransformerFactory().newTemplates(new
SAXSource(resolver.resolveEntity(null, this.xsluri)));
+ getLogger().debug("Re-creating new Templates in " + this + "
for" + this.inputSource.getSystemId());
+ templates = getTransformerFactory().newTemplates(new
SAXSource(new InputSource(this.inputSource.getReader())));
putTemplates (templates);
handler =
getTransformerFactory().newTransformerHandler(templates);
}
@@ -169,15 +169,15 @@
return null;
// only stylesheets with a last modification date are stored
- if (this.xslFileLastModified != 0) {
+ if (this.inputSource.getLastModified() != 0) {
// Stored is an array of the template and the caching time
- if (store.containsKey(xsluri) == true) {
- Object[] templateAndTime = (Object[])store.get(xsluri);
+ if (store.containsKey(this.inputSource.getSystemId()) == true) {
+ Object[] templateAndTime =
(Object[])store.get(this.inputSource.getSystemId());
if(templateAndTime != null && templateAndTime[1] != null) {
long storedTime = ((Long)templateAndTime[1]).longValue();
- if (storedTime < this.xslFileLastModified) {
- store.remove(xsluri);
+ if (storedTime < this.inputSource.getLastModified()) {
+ store.remove(this.inputSource.getSystemId());
} else {
templates = (Templates)templateAndTime[0];
}
@@ -185,8 +185,8 @@
}
} else {
// remove an old template if it exists
- if (store.containsKey(xsluri) == true) {
- store.remove(xsluri);
+ if (store.containsKey(this.inputSource.getSystemId()) == true) {
+ store.remove(this.inputSource.getSystemId());
}
}
return templates;
@@ -198,13 +198,13 @@
return;
// only stylesheets with a last modification date are stored
- if (this.xslFileLastModified != 0) {
+ if (this.inputSource.getLastModified() != 0) {
// Stored is an array of the template and the current time
Object[] templateAndTime = new Object[2];
templateAndTime[0] = templates;
- templateAndTime[1] = new Long(this.xslFileLastModified);
- store.hold(this.xsluri, templateAndTime);
+ templateAndTime[1] = new
Long(this.inputSource.getLastModified());
+ store.hold(this.inputSource.getSystemId(), templateAndTime);
}
}
@@ -215,7 +215,9 @@
if(tfactory == null) {
tfactory = (SAXTransformerFactory)
TransformerFactory.newInstance();
tfactory.setErrorListener(new TraxErrorHandler(getLogger()));
+
tfactory.setURIResolver((javax.xml.transform.URIResolver)this.resolver);
}
+
tfactory.setURIResolver((javax.xml.transform.URIResolver)this.resolver);
return tfactory;
}
@@ -254,30 +256,22 @@
}
/**
- * Set the <code>EntityResolver</code>, the <code>Map</code> with
+ * Set the <code>SourceResolver</code>, the <code>Map</code> with
* the object model, the source and sitemap
* <code>Parameters</code> used to process the request.
*/
- public void setup(EntityResolver resolver, Map objectModel, String src,
Parameters par)
+ public void setup(SourceResolver resolver, Map objectModel, String src,
Parameters par)
throws SAXException, ProcessingException, IOException {
// Check the stylesheet uri
- this.xsluri = src;
- if (this.xsluri == null) {
+ if (src == null) {
throw new ProcessingException("Stylesheet URI can't be null");
}
this.par = par;
this.objectModel = objectModel;
- this.inputSource = resolver.resolveEntity(null, this.xsluri);
- this.systemID = inputSource.getSystemId();
+ this.inputSource = resolver.resolve(src);
this.resolver = resolver;
-
- this.xslFileLastModified = 0;
- if (this.systemID.startsWith(FILE) == true) {
- File xslFile = new File(this.systemID.substring(FILE.length()));
- this.xslFileLastModified = xslFile.lastModified();
- }
- getLogger().debug("Using stylesheet: '"+this.xsluri+"' in " + this +
", last modified: " + this.xslFileLastModified);
+ getLogger().debug("Using stylesheet:
'"+this.inputSource.getSystemId()+"' in " + this + ", last modified: " +
this.inputSource.getLastModified());
}
/**
@@ -287,8 +281,8 @@
* @return The generated key hashes the src
*/
public long generateKey() {
- if (this.xslFileLastModified != 0) {
- return HashUtil.hash(this.xsluri);
+ if (this.inputSource.getLastModified() != 0) {
+ return HashUtil.hash(this.inputSource.getSystemId());
} else {
return 0;
}
@@ -301,14 +295,14 @@
* component is currently not cacheable.
*/
public CacheValidity generateValidity() {
- if (this.xslFileLastModified != 0) {
+ if (this.inputSource.getLastModified() != 0) {
HashMap map = getLogicSheetParameters();
if (map == null) {
- return new TimeStampCacheValidity(this.xslFileLastModified);
+ return new
TimeStampCacheValidity(this.inputSource.getLastModified());
} else {
return new CompositeCacheValidity(
new ParametersCacheValidity(map),
- new
TimeStampCacheValidity(this.xslFileLastModified)
+ new
TimeStampCacheValidity(this.inputSource.getLastModified())
);
}
}
@@ -325,7 +319,7 @@
/** Get a Transformer Handler */
try {
- transformerHandler = getTransformerHandler(resolver);
+ transformerHandler = getTransformerHandler();
} catch (TransformerConfigurationException e){
getLogger().error("Problem in getTransformer:", e);
throw new RuntimeException("Problem in getTransformer:" +
e.getMessage());
@@ -514,8 +508,6 @@
this.objectModel = null;
this.inputSource = null;
this.par = null;
- this.systemID = null;
- this.xsluri = null;
this.resolver = null;
super.recycle();
}
1.3 +3 -3
xml-cocoon2/src/org/apache/cocoon/transformation/XIncludeTransformer.java
Index: XIncludeTransformer.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/XIncludeTransformer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- XIncludeTransformer.java 2001/05/10 21:17:04 1.2
+++ XIncludeTransformer.java 2001/05/22 14:47:52 1.3
@@ -30,6 +30,7 @@
import org.apache.cocoon.Roles;
import org.apache.cocoon.components.parser.Parser;
import org.apache.cocoon.components.url.URLFactory;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.xml.XIncludeContentHandler;
import org.apache.cocoon.xml.dom.DOMBuilder;
import org.apache.cocoon.xml.dom.DOMStreamer;
@@ -40,7 +41,6 @@
import org.w3c.dom.NodeList;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
-import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -54,7 +54,7 @@
* by the SAX event FSM yet.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Donald Ball</a>
- * @version CVS $Revision: 1.2 $ $Date: 2001/05/10 21:17:04 $ $Author:
bloritsch $
+ * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:47:52 $ $Author:
cziegeler $
*/
public class XIncludeTransformer extends AbstractTransformer implements
Composable, Recyclable, Disposable {
@@ -88,7 +88,7 @@
protected Stack xmlbase_element_name_stack = new Stack();
- public void setup(EntityResolver resolver, Map objectModel,
+ public void setup(SourceResolver resolver, Map objectModel,
String source, Parameters parameters)
throws ProcessingException, SAXException, IOException {}
/*
1.3 +5 -13
xml-cocoon2/src/org/apache/cocoon/transformation/XTTransformer.java
Index: XTTransformer.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/XTTransformer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- XTTransformer.java 2001/05/10 21:17:05 1.2
+++ XTTransformer.java 2001/05/22 14:47:56 1.3
@@ -41,7 +41,7 @@
import org.apache.cocoon.Roles;
import org.apache.cocoon.components.store.Store;
import org.apache.cocoon.components.url.URLFactory;
-import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.transformation.Transformer;
import org.apache.cocoon.xml.DocumentHandlerAdapter;
import org.apache.cocoon.xml.DocumentHandlerWrapper;
@@ -52,7 +52,6 @@
import org.xml.sax.ContentHandler;
import org.xml.sax.DTDHandler;
import org.xml.sax.DocumentHandler;
-import org.xml.sax.EntityResolver;
import org.xml.sax.ErrorHandler;
import org.xml.sax.HandlerBase;
import org.xml.sax.InputSource;
@@ -66,7 +65,7 @@
* This Transformer use the XT processor.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Sahuc Sebastien</a>
- * @version CVS $Revision: 1.2 $ $Date: 2001/05/10 21:17:05 $
+ * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:47:56 $
*/
public class XTTransformer extends DocumentHandlerWrapper
implements Transformer, Composable, Loggable, Recyclable, Disposable {
@@ -106,19 +105,12 @@
}
/**
- * Set the <code>EntityResolver</code>, the <code>Dictionary</code> with
+ * Set the <code>SourceResolver</code>, the <code>Dictionary</code> with
* the object model, the source and sitemap
* <code>Parameters</code> used to process the request.
*/
- public void setup(EntityResolver resolver, Map objectModel, String src,
Parameters par)
+ public void setup(SourceResolver resolver, Map objectModel, String src,
Parameters par)
throws SAXException, ProcessingException, IOException {
-
- /** The Request object */
- Request request = (Request)
objectModel.get(Constants.REQUEST_OBJECT);
- if (request == null) {
- throw new ProcessingException ("Missing request object in
objectModel");
- }
-
// Check the stylesheet uri
String xsluri = src;
if (xsluri == null) {
@@ -147,7 +139,7 @@
new ProcessingException(e.getMessage(),e);
}
loaderprocessor.setParser(saxParser.getParser());
- InputSource xslsrc = resolver.resolveEntity(null, xsluri);
+ InputSource xslsrc = new
InputSource(resolver.resolve(xsluri).getInputStream());;
loaderprocessor.loadStylesheet(xslsrc);
if (store != null) store.store(xsluri, loaderprocessor);
}
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]