You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2005/07/27 21:26:13 UTC
svn commit: r225582 - in /cocoon/trunk: ./
src/java/org/apache/cocoon/components/source/impl/
src/java/org/apache/cocoon/generation/ src/webapp/WEB-INF/xconf/
Author: cziegeler
Date: Wed Jul 27 12:26:02 2005
New Revision: 225582
URL: http://svn.apache.org/viewcvs?rev=225582&view=rev
Log:
<action dev="CZ" type="add" fixes-bug="35521" due-to="Mark Lundquist" due-to-email="mlundquist2@comcast.net">
Added the create-document source than either generates empty documents or documents containing
just a root node.
</action>
<action dev="CZ" type="fix" fixes-bug="35457" due-to="Doug Bennett" due-to-email="dbennett1556@netscape.net">
Fix NPE in RequestGenerator when request.getHeaderNames() returns null.
</action>
Added:
cocoon/trunk/src/java/org/apache/cocoon/components/source/impl/CreateDocumentSource.java (with props)
cocoon/trunk/src/java/org/apache/cocoon/components/source/impl/CreateDocumentSourceFactory.java (with props)
Modified:
cocoon/trunk/src/java/org/apache/cocoon/generation/RequestGenerator.java
cocoon/trunk/src/webapp/WEB-INF/xconf/cocoon-core.xconf
cocoon/trunk/status.xml
Added: cocoon/trunk/src/java/org/apache/cocoon/components/source/impl/CreateDocumentSource.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/components/source/impl/CreateDocumentSource.java?rev=225582&view=auto
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/source/impl/CreateDocumentSource.java (added)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/source/impl/CreateDocumentSource.java Wed Jul 27 12:26:02 2005
@@ -0,0 +1,136 @@
+/*
+ * Copyright 1999-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.source.impl;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.cocoon.xml.XMLUtils;
+import org.apache.excalibur.xml.sax.XMLizable;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceNotFoundException;
+import org.apache.excalibur.source.SourceValidity;
+import org.apache.excalibur.source.impl.validity.NOPValidity;
+
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
+
+/**
+ * A <code>Source</code> that generates an empty XML document or an
+ * XML document just containing a root node.
+ * The URI syntax is "create-document:" or "create-document:ROOT_ELEMENT_NAME".
+ *
+ * @version $Id:$
+ * @since 2.1.8
+ */
+public class CreateDocumentSource
+ implements XMLizable, Source {
+
+ protected String rootElementName;
+ protected String scheme;
+ protected String uri;
+ protected String xmlDocument;
+
+ public CreateDocumentSource(String location) {
+ this.uri = location;
+ final int pos = location.indexOf(':');
+ this.scheme = location.substring(0, pos);
+ final String rootName = location.substring(pos+1);
+ if (rootName != null && rootName.trim().length() > 0 ) {
+ this.rootElementName = rootName.trim();
+ this.xmlDocument = '<' + this.rootElementName + "/>";
+ } else {
+ this.xmlDocument = "";
+ }
+ }
+
+ /**
+ * @see org.apache.excalibur.xml.sax.XMLizable#toSAX(org.xml.sax.ContentHandler)
+ */
+ public void toSAX(ContentHandler handler) throws SAXException {
+ handler.startDocument();
+ if ( rootElementName != null ) {
+ XMLUtils.createElement(handler, this.rootElementName);
+ }
+ handler.endDocument();
+ }
+
+ /**
+ * @see org.apache.excalibur.source.Source#exists()
+ */
+ public boolean exists() {
+ return true;
+ }
+
+ /**
+ * @see org.apache.excalibur.source.Source#getContentLength()
+ */
+ public long getContentLength() {
+ return this.xmlDocument.length();
+ }
+
+ /**
+ * @see org.apache.excalibur.source.Source#getInputStream()
+ */
+ public InputStream getInputStream() throws IOException, SourceNotFoundException {
+ return new ByteArrayInputStream(this.xmlDocument.getBytes("utf-8"));
+ }
+
+ /**
+ * @see org.apache.excalibur.source.Source#getLastModified()
+ */
+ public long getLastModified() {
+ // this document *never* changes
+ return 1;
+ }
+
+ /**
+ * @see org.apache.excalibur.source.Source#getMimeType()
+ */
+ public String getMimeType() {
+ return "text/xml";
+ }
+
+ /**
+ * @see org.apache.excalibur.source.Source#getScheme()
+ */
+ public String getScheme() {
+ return this.scheme;
+ }
+
+ /**
+ * @see org.apache.excalibur.source.Source#getURI()
+ */
+ public String getURI() {
+ return this.uri;
+ }
+
+ /**
+ * @see org.apache.excalibur.source.Source#getValidity()
+ */
+ public SourceValidity getValidity() {
+ return NOPValidity.SHARED_INSTANCE;
+ }
+
+ /**
+ * @see org.apache.excalibur.source.Source#refresh()
+ */
+ public void refresh() {
+ // nothing to do here
+ }
+
+}
Propchange: cocoon/trunk/src/java/org/apache/cocoon/components/source/impl/CreateDocumentSource.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/src/java/org/apache/cocoon/components/source/impl/CreateDocumentSource.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/trunk/src/java/org/apache/cocoon/components/source/impl/CreateDocumentSourceFactory.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/components/source/impl/CreateDocumentSourceFactory.java?rev=225582&view=auto
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/source/impl/CreateDocumentSourceFactory.java (added)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/source/impl/CreateDocumentSourceFactory.java Wed Jul 27 12:26:02 2005
@@ -0,0 +1,57 @@
+/*
+ * Copyright 1999-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.source.impl;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.util.Map;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceFactory;
+
+/**
+ * A factory for 'create-document:' sources (see {@link CreateDocumentSource}).
+ *
+ * @version $Id:$
+ * @since 2.1.8
+ */
+public class CreateDocumentSourceFactory
+ extends AbstractLogEnabled
+ implements SourceFactory, ThreadSafe {
+
+ /**
+ * Get a {@link CreateDocumentSource} object.
+ *
+ * @param location The URI to resolve - this URI includes the scheme.
+ * @param parameters this is optional and not used here
+ *
+ * @see org.apache.excalibur.source.SourceFactory#getSource(java.lang.String, java.util.Map)
+ */
+ public Source getSource( String location, Map parameters )
+ throws IOException, MalformedURLException {
+ return new CreateDocumentSource(location);
+ }
+
+ /**
+ * @see org.apache.excalibur.source.SourceFactory#release(org.apache.excalibur.source.Source)
+ */
+ public void release( Source source ) {
+ // Do nothing here
+ }
+
+}
Propchange: cocoon/trunk/src/java/org/apache/cocoon/components/source/impl/CreateDocumentSourceFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/src/java/org/apache/cocoon/components/source/impl/CreateDocumentSourceFactory.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: cocoon/trunk/src/java/org/apache/cocoon/generation/RequestGenerator.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/generation/RequestGenerator.java?rev=225582&r1=225581&r2=225582&view=diff
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/generation/RequestGenerator.java (original)
+++ cocoon/trunk/src/java/org/apache/cocoon/generation/RequestGenerator.java Wed Jul 27 12:26:02 2005
@@ -120,12 +120,14 @@
start("requestHeaders", attr);
Enumeration headers = request.getHeaderNames();
- while (headers.hasMoreElements()) {
- String header = (String)headers.nextElement();
- attribute(attr, "name", header);
- start("header", attr);
- data(request.getHeader(header));
- end("header");
+ if ( headers != null ) {
+ while (headers.hasMoreElements()) {
+ String header = (String)headers.nextElement();
+ attribute(attr, "name", header);
+ start("header", attr);
+ data(request.getHeader(header));
+ end("header");
+ }
}
end("requestHeaders");
Modified: cocoon/trunk/src/webapp/WEB-INF/xconf/cocoon-core.xconf
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/webapp/WEB-INF/xconf/cocoon-core.xconf?rev=225582&r1=225581&r2=225582&view=diff
==============================================================================
--- cocoon/trunk/src/webapp/WEB-INF/xconf/cocoon-core.xconf (original)
+++ cocoon/trunk/src/webapp/WEB-INF/xconf/cocoon-core.xconf Wed Jul 27 12:26:02 2005
@@ -540,6 +540,8 @@
<component-instance name="module" class="org.apache.cocoon.components.source.impl.ModuleSourceFactory"/>
<component-instance name="xmodule" class="org.apache.cocoon.components.source.impl.XModuleSourceFactory"/>
+ <component-instance name="create-document" class="org.apache.cocoon.components.source.impl.CreateDocumentSourceFactory"/>
+
<!--+
| The "*" protocol handles all uri schemes that are not explicitely
| specified. This includes all JDK standard protocols.
Modified: cocoon/trunk/status.xml
URL: http://svn.apache.org/viewcvs/cocoon/trunk/status.xml?rev=225582&r1=225581&r2=225582&view=diff
==============================================================================
--- cocoon/trunk/status.xml (original)
+++ cocoon/trunk/status.xml Wed Jul 27 12:26:02 2005
@@ -509,6 +509,13 @@
</action>
</release>
<release version="2.1.8" date="TBD">
+ <action dev="CZ" type="add" fixes-bug="35521" due-to="Mark Lundquist" due-to-email="mlundquist2@comcast.net">
+ Added the create-document source than either generates empty documents or documents containing
+ just a root node.
+ </action>
+ <action dev="CZ" type="fix" fixes-bug="35457" due-to="Doug Bennett" due-to-email="dbennett1556@netscape.net">
+ Fix NPE in RequestGenerator when request.getHeaderNames() returns null.
+ </action>
<action dev="CZ" type="fix" fixes-bug="29506" due-to-email="tobias@lentus.se">
Fix wrong caching behaviour in DirectoryGenerator.
</action>