You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by jo...@apache.org on 2007/03/07 18:12:00 UTC
svn commit: r515650 -
/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/WriteDOMSessionTransformer.java
Author: joerg
Date: Wed Mar 7 09:11:58 2007
New Revision: 515650
URL: http://svn.apache.org/viewvc?view=rev&rev=515650
Log:
COCOON-2021: prevent NPE in case session is not available
Modified:
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/WriteDOMSessionTransformer.java
Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/WriteDOMSessionTransformer.java
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/WriteDOMSessionTransformer.java?view=diff&rev=515650&r1=515649&r2=515650
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/WriteDOMSessionTransformer.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/WriteDOMSessionTransformer.java Wed Mar 7 09:11:58 2007
@@ -59,7 +59,10 @@
public static final String DOM_ROOT_ELEMENT = "dom-root-element";
private boolean buildDom = false;
- private boolean sessionAvailable = false;
+ /**
+ * component was correctly setup
+ */
+ private boolean setup = false;
private Session session;
private DOMBuilder builder;
@@ -76,7 +79,7 @@
this.session = null;
this.builder = null;
this.buildDom = false;
- this.sessionAvailable = false;
+ this.setup = false;
}
/* BEGIN SitemapComponent methods */
@@ -91,11 +94,11 @@
DOMName = parameters.getParameter(WriteDOMSessionTransformer.DOM_NAME, null);
rootElement = parameters.getParameter(WriteDOMSessionTransformer.DOM_ROOT_ELEMENT, null);
if (DOMName != null && rootElement != null) {
- // only now we know it is usefull to store something in the session
+ // only now we know it is useful to store something in the session
getLogger().debug("WriteSessionTransformer: " + WriteDOMSessionTransformer.DOM_NAME + "=" +
DOMName + "; " + WriteDOMSessionTransformer.DOM_ROOT_ELEMENT + "=" +
rootElement);
- sessionAvailable = true;
+ setup = true;
storedPrefixMap = new HashMap();
} else {
getLogger().error("WriteSessionTransformer: need " + WriteDOMSessionTransformer.DOM_NAME +
@@ -115,7 +118,7 @@
super.startPrefixMapping(prefix, uri);
if (buildDom) {
builder.startPrefixMapping(prefix, uri);
- } else {
+ } else if (setup) {
storePrefixMapping(prefix, uri);
}
}
@@ -123,7 +126,7 @@
public void startElement(String uri, String name, String raw, Attributes attributes)
throws SAXException {
// only build the DOM tree if session is available
- if (name.equalsIgnoreCase(rootElement) && sessionAvailable) {
+ if (setup && name.equalsIgnoreCase(rootElement)) {
getLogger().debug("WriteSessionTransformer: start building DOM tree");
buildDom = true;
builder = new DOMBuilder();
@@ -138,7 +141,7 @@
public void endElement(String uri, String name, String raw)
throws SAXException {
- if (name.equalsIgnoreCase(rootElement) && sessionAvailable) {
+ if (setup && name.equalsIgnoreCase(rootElement)) {
buildDom = false;
builder.endElement(uri, name, raw);
builder.endDocument();
@@ -179,10 +182,11 @@
}
protected void launchStoredMappings() throws SAXException {
- Iterator it = storedPrefixMap.keySet().iterator();
+ Iterator it = storedPrefixMap.entrySet().iterator();
while (it.hasNext()) {
- String pre = (String) it.next();
- String uri = (String) storedPrefixMap.get(pre);
+ Map.Entry entry = (Map.Entry) it.next();
+ String pre = (String) entry.getKey();
+ String uri = (String) entry.getValue();
getLogger().debug("WriteSessionTransformer: launching prefix mapping[ pre: " + pre + " uri: " + uri + " ]");
builder.startPrefixMapping(pre, uri);
}