You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by sy...@apache.org on 2005/08/15 20:14:06 UTC
svn commit: r232842 -
/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/xml/NamespacesTable.java
Author: sylvain
Date: Mon Aug 15 11:14:02 2005
New Revision: 232842
URL: http://svn.apache.org/viewcvs?rev=232842&view=rev
Log:
Fix bug reported by Ugo when some xmlns declarations are on a jx:forEach
Modified:
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/xml/NamespacesTable.java
Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/xml/NamespacesTable.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/xml/NamespacesTable.java?rev=232842&r1=232841&r2=232842&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/xml/NamespacesTable.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/xml/NamespacesTable.java Mon Aug 15 11:14:02 2005
@@ -59,7 +59,7 @@
/** The last namespace declaration. */
private Entry lastEntry;
- private boolean filterDuplicate = true;
+ private boolean usesScopes = false;
/**
* Construct a new <code>NamespacesTable</code> instance.
@@ -93,7 +93,7 @@
}
if (dup != null) {
- if (filterDuplicate && dup.uri.equals(uri)) {
+ if (usesScopes && dup.uri.equals(uri)) {
return dup;
}
dup.overriden = true;
@@ -115,6 +115,11 @@
* @return The removed <code>Declaration</code> or <b>null</b>.
*/
public Declaration removeDeclaration(String prefix) {
+ if (usesScopes) {
+ // Automatically handled in leaveScope
+ return null; // or throw and IllegalStateException if enterScope(handler) was used?
+ }
+
Entry current = this.lastEntry;
Entry afterCurrent = null;
while(current != null) {
@@ -159,6 +164,7 @@
* @since 2.1.8
*/
public void enterScope() {
+ this.usesScopes = true;
this.lastEntry.closedScopes++;
}
@@ -172,6 +178,7 @@
* @since 2.1.8
*/
public void enterScope(ContentHandler handler) throws SAXException {
+ this.usesScopes = true;
Entry current = this.lastEntry;
while (current != null && current.closedScopes == 0) {
handler.startPrefixMapping(current.prefix, current.uri);
@@ -188,13 +195,13 @@
* @param autoUndeclare if <code>true</code>, remove all mappings for the current scope.
* @since 2.1.8
*/
- public void leaveScope(boolean autoUndeclare) {
+ public void leaveScope() {
Entry current = this.lastEntry;
if (current.closedScopes <= 0) {
throw new IllegalStateException("Misbalanced enter and leaving of scope.");
}
current.closedScopes--;
- if (autoUndeclare) {
+ if (usesScopes) {
while (current != null && current.closedScopes == 0) {
Entry overrides = current.overrides;
if (overrides != null) {
@@ -221,6 +228,7 @@
if (current.closedScopes <= 0) {
throw new IllegalStateException("Misbalanced enter and leaving of scope.");
}
+ current.closedScopes--;
while (current != null && current.closedScopes == 0) {
handler.endPrefixMapping(current.prefix);
Entry overrides = current.overrides;
@@ -231,7 +239,6 @@
current = current.previous;
}
- current.closedScopes--;
this.lastEntry = current;
}