You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by je...@apache.org on 2002/03/02 14:43:55 UTC
cvs commit: xml-cocoon2/src/scratchpad/src/org/apache/cocoon/transformation WriteableSourceTransformer.java
jeremy 02/03/02 05:43:55
Modified: src/scratchpad/src/org/apache/cocoon/transformation
WriteableSourceTransformer.java
Log:
Added calls to WriteableSource.exists() and WriteableSource.cancel()
Revision Changes Path
1.2 +148 -28 xml-cocoon2/src/scratchpad/src/org/apache/cocoon/transformation/WriteableSourceTransformer.java
Index: WriteableSourceTransformer.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/transformation/WriteableSourceTransformer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- WriteableSourceTransformer.java 28 Feb 2002 19:03:05 -0000 1.1
+++ WriteableSourceTransformer.java 2 Mar 2002 13:43:55 -0000 1.2
@@ -167,6 +167,13 @@
/** True when inside <write> element. */
private boolean processing;
+ /** the Source. */
+ private Source source = null;
+
+ /** the WritableSource. */
+ private WriteableSource wsource = null;
+
+
public void WriteableSourceTransformer() {
}
@@ -210,11 +217,19 @@
* @param uri The Namespace URI the prefix is mapped to.
*/
public void startPrefixMapping(String prefix, String uri) throws SAXException {
- if (!this.processing) {
- super.startPrefixMapping(prefix,uri);
- } else if (this.ch != null){
- this.ch.startPrefixMapping(prefix, uri);
- }
+ try {
+ if (!this.processing) {
+ super.startPrefixMapping(prefix,uri);
+ } else if (this.ch != null){
+ this.ch.startPrefixMapping(prefix, uri);
+ }
+ } catch (SAXException se) {
+ try {
+ this.wsource.cancel(this.ch);
+ } finally {
+ throw new SAXException("WritableSourceTransformer: cancelled", se);
+ }
+ }
}
/**
@@ -223,11 +238,19 @@
* @param prefix The prefix that was being mapping.
*/
public void endPrefixMapping(String prefix) throws SAXException {
+ try {
if (!this.processing) {
super.endPrefixMapping(prefix);
} else if (this.ch != null){
this.ch.endPrefixMapping(prefix);
}
+ } catch (SAXException se) {
+ try {
+ this.wsource.cancel(this.ch);
+ } finally {
+ throw new SAXException("WritableSourceTransformer: cancelled", se);
+ }
+ }
}
/**
@@ -254,18 +277,17 @@
// look for the Source
String src = a.getValue("",WST_SRC_ATTRIBUTE);
- Source source = null;
try {
this.message = "The src attribute could not be resolved";
- source = this.sourceResolver.resolve(src);
- this.target = source.getSystemId();
+ this.source = this.sourceResolver.resolve(src);
+ this.target = this.source.getSystemId();
this.message = "The src attribute doesn't resolve to a writeable source";
- WriteableSource wsource = (WriteableSource)source;
- //this.exists = wsource.exists();
+ this.wsource = (WriteableSource)this.source;
+ this.exists = this.wsource.exists();
this.message = "Could not open the source for writing";
- this.os = wsource.getOutputStream();
+ this.os = this.wsource.getOutputStream();
// has a Serializer been specified?
String local_serializer = a.getValue("",WST_SERIALIZER_ATTRIBUTE);
@@ -289,10 +311,10 @@
} catch (Exception e) {
getLogger().warn("WritableSourceTransformer failed, " + this.message, e);
this.failed = true;
- //throw new SAXException("FileWritingTransformer: " + this.message, e);
- } finally {
- if (source != null) {
- source.recycle();
+ try {
+ this.wsource.cancel(this.ch);
+ } catch (Exception e2) {
+ throw new SAXException("WritableSourceTransformer: " + this.message, e2);
}
}
this.processing = true;
@@ -339,20 +361,30 @@
getLogger().warn("WritableSourceTransformer: Failed to close source", e);
this.message = "Failed to close source";
this.failed = true;
+ try {
+ this.message = "Failed to cancel source";
+ this.wsource.cancel(this.ch);
+ } catch (Exception e2) {
+ throw new SAXException("WritableSourceTransformer: " + this.message, e2);
+ }
+ } finally {
+ if (this.source != null) {
+ this.source.recycle();
+ }
}
// Report result
String result = (this.failed) ? "failed" : "success";
String action = "none";
- /*if (!this.failed){
+ if (!this.failed){
if (this.exists) {
action = "overwritten";
} else {
action = "new";
}
- } */
+ }
AttributesImpl attrs = new AttributesImpl();
attrs.addAttribute(null, WST_SRC_ATTRIBUTE, WST_SRC_ATTRIBUTE, "CDATA", this.target);
- //attrs.addAttribute(null, WST_ACTION_ATTRIBUTE, WST_ACTION_ATTRIBUTE, "CDATA", action);
+ attrs.addAttribute(null, WST_ACTION_ATTRIBUTE, WST_ACTION_ATTRIBUTE, "CDATA", action);
attrs.addAttribute(null, WST_RESULT_ATTRIBUTE, WST_RESULT_ATTRIBUTE, "CDATA", result);
if (this.serializer_name != null) attrs.addAttribute(null, WST_SERIALIZER_ATTRIBUTE, WST_SERIALIZER_ATTRIBUTE, "CDATA", this.serializer_name);
super.startElement(uri, loc, raw, attrs);
@@ -373,11 +405,19 @@
* @param len The number of characters to read from the array.
*/
public void characters(char c[], int start, int len) throws SAXException {
+ try {
if (!this.processing) {
super.characters(c,start,len);
} else if (this.ch != null){
this.ch.characters(c,start,len);
}
+ } catch (SAXException se) {
+ try {
+ this.wsource.cancel(this.ch);
+ } finally {
+ throw new SAXException("WritableSourceTransformer: cancelled", se);
+ }
+ }
}
/**
@@ -388,11 +428,19 @@
* @param len The number of characters to read from the array.
*/
public void ignorableWhitespace(char c[], int start, int len) throws SAXException {
+ try {
if (!this.processing) {
super.ignorableWhitespace(c,start,len);
} else if (this.ch != null){
this.ch.ignorableWhitespace(c,start,len);
}
+ } catch (SAXException se) {
+ try {
+ this.wsource.cancel(this.ch);
+ } finally {
+ throw new SAXException("WritableSourceTransformer: cancelled", se);
+ }
+ }
}
/**
@@ -403,11 +451,19 @@
* supplied.
*/
public void processingInstruction(String target, String data) throws SAXException {
+ try {
if (!this.processing) {
super.processingInstruction(target,data);
} else if (this.ch != null){
this.ch.processingInstruction(target,data);
}
+ } catch (SAXException se) {
+ try {
+ this.wsource.cancel(this.ch);
+ } finally {
+ throw new SAXException("WritableSourceTransformer: cancelled", se);
+ }
+ }
}
/**
@@ -417,11 +473,19 @@
* entity, the name will begin with '%'.
*/
public void skippedEntity(String name) throws SAXException {
- if (!this.processing) {
- super.skippedEntity(name);
- } else if (this.ch != null){
- this.ch.skippedEntity(name);
- }
+ try {
+ if (!this.processing) {
+ super.skippedEntity(name);
+ } else if (this.ch != null){
+ this.ch.skippedEntity(name);
+ }
+ } catch (SAXException se) {
+ try {
+ this.wsource.cancel(this.ch);
+ } finally {
+ throw new SAXException("WritableSourceTransformer: cancelled", se);
+ }
+ }
}
/**
@@ -433,17 +497,33 @@
* @param systemId The declared system identifier for the external DTD
* subset, or null if none was declared.
*/
- public void startDTD(String name, String publicId, String systemId) throws SAXException {
- if (!this.processing)
- super.startDTD(name,publicId,systemId);
+ public void startDTD(String name, String publicId, String systemId) throws SAXException {
+ try {
+ if (!this.processing)
+ super.startDTD(name,publicId,systemId);
+ } catch (SAXException se) {
+ try {
+ this.wsource.cancel(this.ch);
+ } finally {
+ throw new SAXException("WritableSourceTransformer: cancelled", se);
+ }
+ }
}
/**
* Report the end of DTD declarations.
*/
public void endDTD() throws SAXException {
- if (!this.processing)
- super.endDTD();
+ try {
+ if (!this.processing)
+ super.endDTD();
+ } catch (SAXException se) {
+ try {
+ this.wsource.cancel(this.ch);
+ } finally {
+ throw new SAXException("WritableSourceTransformer: cancelled", se);
+ }
+ }
}
/**
@@ -453,11 +533,19 @@
* name will begin with '%'.
*/
public void startEntity(String name) throws SAXException {
+ try {
if (!this.processing) {
super.startEntity(name);
} else if (this.ch != null){
this.ch.startEntity(name);
}
+ } catch (SAXException se) {
+ try {
+ this.wsource.cancel(this.ch);
+ } finally {
+ throw new SAXException("WritableSourceTransformer: cancelled", se);
+ }
+ }
}
/**
@@ -466,33 +554,57 @@
* @param name The name of the entity that is ending.
*/
public void endEntity(String name) throws SAXException {
+ try {
if (!this.processing) {
super.endEntity(name);
} else if (this.ch != null){
this.ch.endEntity(name);
}
+ } catch (SAXException se) {
+ try {
+ this.wsource.cancel(this.ch);
+ } finally {
+ throw new SAXException("WritableSourceTransformer: cancelled", se);
+ }
+ }
}
/**
* Report the start of a CDATA section.
*/
public void startCDATA() throws SAXException {
+ try {
if (!this.processing) {
super.startCDATA();
} else if (this.ch != null){
this.ch.startCDATA();
}
+ } catch (SAXException se) {
+ try {
+ this.wsource.cancel(this.ch);
+ } finally {
+ throw new SAXException("WritableSourceTransformer: cancelled", se);
+ }
+ }
}
/**
* Report the end of a CDATA section.
*/
public void endCDATA() throws SAXException {
+ try {
if (!this.processing) {
super.endCDATA();
} else if (this.ch != null){
this.ch.endCDATA();
}
+ } catch (SAXException se) {
+ try {
+ this.wsource.cancel(this.ch);
+ } finally {
+ throw new SAXException("WritableSourceTransformer: cancelled", se);
+ }
+ }
}
/**
@@ -503,11 +615,19 @@
* @param len The number of characters to use from the array.
*/
public void comment(char ch[], int start, int len) throws SAXException {
+ try {
if (!this.processing) {
super.comment(ch,start,len);
} else if (this.ch != null){
this.ch.comment(ch,start,len);
}
+ } catch (SAXException se) {
+ try {
+ this.wsource.cancel(this.ch);
+ } finally {
+ throw new SAXException("WritableSourceTransformer: cancelled", se);
+ }
+ }
}
public void recycle() {
----------------------------------------------------------------------
In case of troubles, e-mail: webmaster@xml.apache.org
To unsubscribe, e-mail: cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org