You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cd...@apache.org on 2012/11/26 20:09:20 UTC
svn commit: r1413784 -
/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/I18nTransformer.java
Author: cdamioli
Date: Mon Nov 26 19:09:20 2012
New Revision: 1413784
URL: http://svn.apache.org/viewvc?rev=1413784&view=rev
Log:
COCOON-1529 I18nTranformer should consume and stop propagating start/endPrefixMapping of its namespace
Modified:
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/I18nTransformer.java
Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/I18nTransformer.java
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/I18nTransformer.java?rev=1413784&r1=1413783&r2=1413784&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/I18nTransformer.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/I18nTransformer.java Mon Nov 26 19:09:20 2012
@@ -905,6 +905,9 @@ public class I18nTransformer extends Abs
// Date and number elements and params formatting attributes with values.
private HashMap formattingParams;
+
+ // The namespaces and their prefixes
+ private Map namespaces;
/**
* Returns the current locale setting of this transformer instance.
@@ -1108,6 +1111,7 @@ public class I18nTransformer extends Abs
this.indexedParams = new HashMap(3);
this.formattingParams = null;
this.strBuffer = null;
+ this.namespaces = new HashMap(5);
// give the catalogue variable its value -- first look if it's locally overridden
// and otherwise use the component-wide defaults.
@@ -1133,6 +1137,31 @@ public class I18nTransformer extends Abs
//
// Standard SAX event handlers
//
+
+ /**
+ * Process the SAX event.
+ * @see org.xml.sax.ContentHandler#startPrefixMapping
+ */
+ public void startPrefixMapping(String prefix, String uri)
+ throws SAXException {
+ // consume i18n prefix mappings
+ namespaces.put(prefix,uri);
+ if (!I18nUtils.matchesI18nNamespace(uri)) {
+ super.startPrefixMapping(prefix, uri);
+ }
+ }
+
+ /**
+ * Process the SAX event.
+ * @see org.xml.sax.ContentHandler#endPrefixMapping
+ */
+ public void endPrefixMapping(String prefix)
+ throws SAXException {
+ if (!I18nUtils.matchesI18nNamespace((String)namespaces.get(prefix))) {
+ super.endPrefixMapping(prefix);
+ }
+ namespaces.remove(prefix);
+ }
public void startElement(String uri, String name, String raw,
Attributes attr)
@@ -2192,6 +2221,7 @@ public class I18nTransformer extends Abs
this.untranslatedRecorder = null;
this.catalogue = null;
this.objectModel = null;
+ this.namespaces.clear();
// Release catalogues which were selected for current locale
Iterator i = catalogues.values().iterator();