Author: rhauch
Date: 2009-03-23 16:41:31 -0400 (Mon, 23 Mar 2009)
New Revision: 787
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/property/basic/BasicName.java
trunk/dna-graph/src/test/java/org/jboss/dna/graph/property/basic/BasicNameTest.java
Log:
DNA-333 BasicName.getString Doesn't Use Provided TextEncoder When the Name Has No
Namespace
Applied the patch that corrects BasicName to use the encoder if suppliedto getString(),
specifically when the name contains no namespace (e.g., "*"). The patch also
changes the behavior of BasicName.getString(TextEncoder) to return the encoded local name
ONLY when called. It used to return "{}" + localName.
Verified that all tests pass.
Modified: trunk/dna-graph/src/main/java/org/jboss/dna/graph/property/basic/BasicName.java
===================================================================
---
trunk/dna-graph/src/main/java/org/jboss/dna/graph/property/basic/BasicName.java 2009-03-23
19:31:51 UTC (rev 786)
+++
trunk/dna-graph/src/main/java/org/jboss/dna/graph/property/basic/BasicName.java 2009-03-23
20:41:31 UTC (rev 787)
@@ -91,7 +91,11 @@
if (this.getLocalName().equals(Path.PARENT)) return Path.PARENT;
}
if (encoder == null) encoder = Path.DEFAULT_ENCODER;
- return "{" + encoder.encode(this.namespaceUri) + "}" +
encoder.encode(this.localName);
+
+ if (namespaceUri.length() > 0) {
+ return "{" + encoder.encode(this.namespaceUri) + "}" +
encoder.encode(this.localName);
+ }
+ return encoder.encode(this.localName);
}
/**
@@ -117,7 +121,7 @@
if (prefix != null && prefix.length() != 0) {
return encoder.encode(prefix) + ":" +
encoder.encode(this.localName);
}
- return this.localName;
+ return encoder.encode(this.localName);
}
/**
@@ -148,7 +152,7 @@
String delim = delimiterEncoder != null ?
delimiterEncoder.encode(":") : ":";
return encoder.encode(prefix) + delim + encoder.encode(this.localName);
}
- return this.localName;
+ return encoder.encode(this.localName);
}
/**
Modified:
trunk/dna-graph/src/test/java/org/jboss/dna/graph/property/basic/BasicNameTest.java
===================================================================
---
trunk/dna-graph/src/test/java/org/jboss/dna/graph/property/basic/BasicNameTest.java 2009-03-23
19:31:51 UTC (rev 786)
+++
trunk/dna-graph/src/test/java/org/jboss/dna/graph/property/basic/BasicNameTest.java 2009-03-23
20:41:31 UTC (rev 787)
@@ -24,6 +24,7 @@
package org.jboss.dna.graph.property.basic;
import static org.hamcrest.core.Is.is;
+import static org.hamcrest.core.IsNot.not;
import static org.junit.Assert.assertThat;
import static org.junit.matchers.JUnitMatchers.containsString;
import org.jboss.dna.common.text.Jsr283Encoder;
@@ -180,7 +181,7 @@
validLocalName = "some:name:with:colons";
name = new BasicName(validNamespaceUri, validLocalName);
result = name.getString(namespaceRegistry, encoder);
- assertThat(result, is("some:name:with:colons"));
+ assertThat(result, is(encoder.encode(validLocalName)));
}
@Test
@@ -191,4 +192,21 @@
assertThat(name.getString(null, encoder, delimiterEncoder), is("\\{" +
encoder.encode(DnaLexicon.Namespace.URI)
+
"\\}some\uf03aname\uf03awith\uf03acolons"));
}
+
+ @Test
+ public void shouldEncodeWhenNoNamespace() {
+ String nameForEncoding = "test name";
+ String encodedNameForEncoding = encoder.encode(nameForEncoding);
+ // Make sure that we're not testing a trivial encoding
+ assertThat(encodedNameForEncoding, not(nameForEncoding));
+
+ name = new BasicName(null, nameForEncoding);
+
+ String result = name.getString(namespaceRegistry, encoder);
+ assertThat(result, is(encodedNameForEncoding));
+
+ result = name.getString(encoder);
+ assertThat(result, is(encodedNameForEncoding));
+ }
+
}
Show replies by date