cziegeler 02/05/02 03:41:20
Modified: lib/core avalon-excalibur-20020501.jar
src/java/org/apache/cocoon/webapps/session/connector
ResourceConnector.java ResourceConnectorImpl.java
Log:
Fixed POST of resource connector
Revision Changes Path
1.2 +383 -327 xml-cocoon2/lib/core/avalon-excalibur-20020501.jar
<<Binary file>>
1.3 +1 -3
xml-cocoon2/src/java/org/apache/cocoon/webapps/session/connector/ResourceConnector.java
Index: ResourceConnector.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/webapps/session/connector/ResourceConnector.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ResourceConnector.java 19 Apr 2002 11:02:58 -0000 1.2
+++ ResourceConnector.java 2 May 2002 10:41:20 -0000 1.3
@@ -70,7 +70,7 @@
* identifies the resource itself (filename, http-address etc).
*
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
- * @version CVS $Id: ResourceConnector.java,v 1.2 2002/04/19 11:02:58 cziegeler Exp
$
+ * @version CVS $Id: ResourceConnector.java,v 1.3 2002/05/02 10:41:20 cziegeler Exp
$
*/
public interface ResourceConnector
extends Component {
@@ -89,8 +89,6 @@
* The <code>typeParameter</code> "method" specifies the http method (POST,
* GET etc) - standard is POST if parameters are used, without parameters
* it is GET.
- * The <code>typeParameter</code> "followRedirects" specifies if the
- * connection should follow redirects.
* URLRewriting can be turned on by specifying the parameters defined
* for the <code>URLRewriter</code>.
* If an URI is saved (e.g. saveXML) this is the same as loading from
1.3 +54 -49
xml-cocoon2/src/java/org/apache/cocoon/webapps/session/connector/ResourceConnectorImpl.java
Index: ResourceConnectorImpl.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/webapps/session/connector/ResourceConnectorImpl.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ResourceConnectorImpl.java 19 Apr 2002 11:02:58 -0000 1.2
+++ ResourceConnectorImpl.java 2 May 2002 10:41:20 -0000 1.3
@@ -55,8 +55,12 @@
import java.util.*;
import org.apache.avalon.excalibur.pool.Recyclable;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceException;
import org.apache.excalibur.source.SourceParameters;
import org.apache.excalibur.source.SourceUtil;
+import org.apache.excalibur.source.impl.URLSource;
+import org.apache.avalon.excalibur.xml.Parser;
import org.apache.avalon.framework.component.Composable;
import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.component.ComponentManager;
@@ -72,14 +76,11 @@
import org.apache.cocoon.Processor;
import org.apache.cocoon.ResourceNotFoundException;
import org.apache.cocoon.components.RequestLifecycleComponent;
-import org.apache.cocoon.components.parser.Parser;
-import org.apache.cocoon.components.source.URLSource;
import org.apache.cocoon.environment.Context;
import org.apache.cocoon.environment.Environment;
import org.apache.cocoon.environment.ObjectModelHelper;
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.webapps.session.xml.XMLUtil;
import org.apache.cocoon.xml.XMLConsumer;
@@ -97,7 +98,7 @@
* The Component for loading and saving xml to external resource connectors.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
- * @version CVS $Id: ResourceConnectorImpl.java,v 1.2 2002/04/19 11:02:58 cziegeler
Exp $
+ * @version CVS $Id: ResourceConnectorImpl.java,v 1.3 2002/05/02 10:41:20 cziegeler
Exp $
*/
public final class ResourceConnectorImpl
extends AbstractLoggable
@@ -174,8 +175,7 @@
private Source getSource(String uri,
Parameters typeParameters,
SourceParameters resourceParameters)
- throws IOException, SAXException, ProcessingException {
- Source input;
+ throws IOException, SAXException, SourceException {
// Test: local uri (= same servlet/cocoon) ?
if (uri.startsWith("/") == true) {
@@ -244,16 +244,10 @@
if (this.getLogger().isInfoEnabled() == true) {
this.getLogger().info("Getting content of '"+uri+"' using method " +
method);
}
- input = this.resolver.resolve(uri);
- if (method.equalsIgnoreCase("POST") == true
- && input instanceof URLSource) {
- ((URLSource)input).setPostParameters(resourceParameters);
- }
- if (followRedirects == false && input instanceof URLSource) {
- ((URLSource)input).setFollowRedirects(false);
- }
-
- return input;
+ Map resolverParameters = new java.util.HashMap();
+ resolverParameters.put(URLSource.HTTP_METHOD, method);
+ resolverParameters.put(URLSource.REQUEST_PARAMETERS, resourceParameters);
+ return this.resolver.resolveURI(uri, null, resolverParameters);
}
/**
@@ -262,7 +256,7 @@
private DocumentFragment loadXMLFromURI(Parameters typeParameters,
String uri,
SourceParameters resourceParameters)
- throws IOException, SAXException, ProcessingException {
+ throws IOException, SAXException, SourceException, ProcessingException {
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("BEGIN loadXMLFromURI uri=" + uri +
", typeParams="+typeParameters+
@@ -297,10 +291,10 @@
input = this.getSource(uri, typeParameters, resourceParameters);
if (input != null) {
- input.toSAX(filter);
+ this.resolver.toSAX(input, filter);
}
} finally {
- if (input != null) input.recycle();
+ this.resolver.release(input);
input = null;
}
@@ -333,7 +327,7 @@
String uri,
SourceParameters resourceParameters,
DocumentFragment fragment)
- throws IOException, SAXException, ProcessingException {
+ throws IOException, SAXException, SourceException, ProcessingException {
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("BEGIN saveXMLToURI fragment="+(fragment == null
? "null" : XMLUtils.serializeNodeToXML(fragment))+
", typeParams="+typeParameters+
@@ -370,7 +364,7 @@
String uri,
SourceParameters resourceParameters,
String content)
- throws IOException, SAXException, ProcessingException {
+ throws IOException, SAXException, SourceException, ProcessingException {
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("BEGIN saveContentToURI content="+content+
", typeParams="+typeParameters+
@@ -467,7 +461,7 @@
private DocumentFragment loadXMLFromFile(Parameters typeParameters,
String fileName,
SourceParameters resourceParameters)
- throws ProcessingException, IOException, SAXException {
+ throws ProcessingException, IOException, SourceException, SAXException {
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("BEGIN loadXMLFromFile fileName=" + fileName+
", typeParams="+typeParameters+
@@ -479,14 +473,14 @@
Source input = null;
try {
- input = this.resolver.resolve(fileName);
+ input = this.resolver.resolveURI(fileName);
DOMBuilder builder = new DOMBuilder();
builder.startDocument();
builder.startElement("", "cocoon", "cocoon", this.emptyAttributes);
IncludeXMLConsumer filter = new IncludeXMLConsumer(builder, builder);
- input.toSAX(filter);
+ this.resolver.toSAX( input, filter );
builder.endElement("", "cocoon", "cocoon");
builder.endDocument();
@@ -503,7 +497,7 @@
frag.appendChild(child);
}
} finally {
- if (input != null) input.recycle();
+ this.resolver.release(input);
input = null;
}
@@ -521,7 +515,7 @@
String fileName,
SourceParameters resourceParameters,
DocumentFragment fragment)
- throws SAXException, IOException, ProcessingException {
+ throws SAXException, IOException, SourceException, ProcessingException {
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("BEGIN saveXMLToFile fragment="+(fragment ==
null ? "null" : XMLUtils.serializeNodeToXML(fragment))+
", typeParams="+typeParameters+
@@ -553,7 +547,7 @@
try {
Properties format = XMLUtils.defaultSerializeToXMLFormat(false);
this.setOutputKeys(format, typeParameters);
- input = this.resolver.resolve(fileName);
+ input = this.resolver.resolveURI(fileName);
String absolutePath = input.getSystemId();
if (absolutePath.startsWith("file:") == false) {
throw new ProcessingException("Saving to " + fileName + " is
not possible.");
@@ -573,7 +567,7 @@
writer.close();
writer = null;
} finally {
- if (input != null) input.recycle();
+ this.resolver.release(input);
input = null;
}
@@ -593,7 +587,7 @@
String fileName,
SourceParameters resourceParameters,
String content)
- throws SAXException, IOException, ProcessingException {
+ throws SAXException, IOException, SourceException, ProcessingException {
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("BEGIN saveContentToFile content="+content+
", typeParams="+typeParameters+
@@ -603,7 +597,7 @@
try {
Source input = null;
try {
- input = this.resolver.resolve(fileName);
+ input = this.resolver.resolveURI(fileName);
String absolutePath = input.getSystemId();
if (absolutePath.startsWith("file:") == false) {
throw new ProcessingException("Saving to " + fileName + " is
not possible.");
@@ -622,7 +616,7 @@
writer.close();
writer = null;
} finally {
- if (input != null) input.recycle();
+ this.resolver.release(input);
input = null;
}
@@ -661,6 +655,8 @@
default: throw new ProcessingException("ResourceConnector: type " +
resourceType + " not supported.");
}
+ } catch (SourceException se) {
+ throw new ProcessingException("SourceException: " + se, se);
} catch (SAXException ioe) {
throw new ProcessingException("SAXException: " + ioe, ioe);
} catch (IOException ioe) {
@@ -698,6 +694,8 @@
default: throw new ProcessingException("ResourceConnector: type " +
resourceType + " not supported.");
}
+ } catch (SourceException se) {
+ throw new ProcessingException("SourceException: " + se, se);
} catch (SAXException ioe) {
throw new ProcessingException("SAXException: " + ioe, ioe);
} catch (IOException ioe) {
@@ -725,17 +723,19 @@
long startTime = System.currentTimeMillis();
Source input = null;
try {
- input = this.resolver.resolve(fileName);
+ input = this.resolver.resolveURI(fileName);
IncludeXMLConsumer filter = new IncludeXMLConsumer(contentHandler,
lexicalHandler);
- input.toSAX(filter);
+ this.resolver.toSAX( input, filter );
+ } catch (SourceException se) {
+ throw new ProcessingException("SourceException: " + se, se);
} catch (SAXException sax) {
throw new ProcessingException("SAXException: " + sax, sax);
} catch (IOException ioe) {
throw new ProcessingException("IOException: " + ioe, ioe);
} finally {
- if (input != null) input.recycle();
+ this.resolver.release(input);
input = null;
}
@@ -752,7 +752,7 @@
SourceParameters resourceParameters,
org.xml.sax.ContentHandler contentHandler,
LexicalHandler lexicalHandler)
- throws IOException, SAXException, ProcessingException {
+ throws IOException, SAXException, SourceException, ProcessingException {
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("BEGIN streamXMLFromURI uri=" + uri +
", typeParams="+typeParameters+
@@ -780,9 +780,9 @@
Source input = null;
try {
input = this.getSource(uri, typeParameters, resourceParameters);
- input.toSAX(filter);
+ this.resolver.toSAX( input, filter );
} finally {
- if (input != null) input.recycle();
+ this.resolver.release(input);
input = null;
}
@@ -821,6 +821,8 @@
default: throw new ProcessingException("ResourceConnector: type " +
resourceType + " not supported.");
}
+ } catch (SourceException ioe) {
+ throw new ProcessingException("SourceException: " + ioe, ioe);
} catch (SAXException ioe) {
throw new ProcessingException("SAXException: " + ioe, ioe);
} catch (IOException ioe) {
@@ -838,7 +840,7 @@
private String getContentFromURI(Parameters typeParameters,
String uri,
SourceParameters resourceParameters)
- throws SAXException, ProcessingException, IOException {
+ throws SAXException, ProcessingException, SourceException, IOException {
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("BEGIN getContentFromURI uri=" + uri +
", typeParams="+typeParameters+
@@ -854,10 +856,9 @@
Source input = null;
try {
input = this.getSource(uri, typeParameters, resourceParameters);
- InputSource source = input.getInputSource();
- InputStream stream = source.getByteStream();
+ InputStream stream = input.getInputStream();
StringBuffer buffer = new StringBuffer();
- String encoding = source.getEncoding();
+ //String encoding = source.getEncoding();
int available;
byte[] data;
do {
@@ -865,16 +866,16 @@
data = new byte[available];
available = stream.read(data, 0, available);
if (available > 0) {
- if (encoding == null) {
+ //if (encoding == null) {
buffer.append(new String(data, 0, available));
- } else {
- buffer.append(new String(data, 0, available, encoding));
- }
+ //} else {
+ // buffer.append(new String(data, 0, available, encoding));
+ //}
}
} while (available > 0);
content = buffer.toString();
} finally {
- if (input != null) input.recycle();
+ this.resolver.release(input);
input = null;
}
@@ -890,7 +891,7 @@
private String getContentFromFile(Parameters typeParameters,
String filename,
SourceParameters resourceParameters)
- throws SAXException, ProcessingException, IOException {
+ throws SAXException, ProcessingException, SourceException, IOException {
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("BEGIN getContentFromFile filename=" + filename +
", typeParams="+typeParameters+
@@ -899,7 +900,7 @@
String content;
Source input = null;
try {
- input = this.resolver.resolve(filename);
+ input = this.resolver.resolveURI(filename);
String absolutePath = input.getSystemId();
if (absolutePath.startsWith("file:") == false) {
throw new ProcessingException("Saving to " + filename + " is not
possible.");
@@ -928,7 +929,7 @@
} catch (FileNotFoundException local) {
throw new ResourceNotFoundException("File not found '" + filename +
"'", local);
} finally {
- if (input != null) input.recycle();
+ this.resolver.release(input);
input = null;
}
if (this.getLogger().isDebugEnabled() == true) {
@@ -960,6 +961,8 @@
default: throw new ProcessingException("ResourceConnector: type " +
resourceType + " not supported.");
}
+ } catch (SourceException local) {
+ throw new ProcessingException("SourceException: " + local, local);
} catch (SAXException local) {
throw new ProcessingException("SAXException: " + local, local);
} catch (IOException local) {
@@ -1002,6 +1005,8 @@
default: throw new ProcessingException("ResourceConnector: type " +
resourceType + " not supported.");
}
+ } catch (SourceException local) {
+ throw new ProcessingException("SourceException: " + local, local);
} catch (SAXException local) {
throw new ProcessingException("SAXException: " + local, local);
} catch (IOException local) {
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]