You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by hi...@apache.org on 2002/03/19 10:25:41 UTC
cvs commit: xml-batik/test-sources/org/apache/batik/dom NullNamespaceTest.java
hillion 02/03/19 01:25:41
Modified: sources/org/apache/batik/bridge CSSUtilities.java
SVGAElementBridge.java SVGTextElementBridge.java
ScriptingEnvironment.java UpdateManager.java
sources/org/apache/batik/dom AbstractDocument.java
AbstractElement.java AbstractParentNode.java
sources/org/apache/batik/dom/util SAXDocumentFactory.java
test-resources/org/apache/batik/dom unitTesting.xml
Added: test-resources/org/apache/batik/dom dummyXML3.xml
test-sources/org/apache/batik/dom NullNamespaceTest.java
Log:
- Fixed a bug with anchors and <use>,
- fixed a bug with null namespaces,
- fixed getElementByTagName().
Revision Changes Path
1.37 +1 -29 xml-batik/sources/org/apache/batik/bridge/CSSUtilities.java
Index: CSSUtilities.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/CSSUtilities.java,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- CSSUtilities.java 18 Mar 2002 10:28:19 -0000 1.36
+++ CSSUtilities.java 19 Mar 2002 09:25:40 -0000 1.37
@@ -67,7 +67,7 @@
* concrete objects regarding to CSS properties.
*
* @author <a href="mailto:tkormann@apache.org">Thierry Kormann</a>
- * @version $Id: CSSUtilities.java,v 1.36 2002/03/18 10:28:19 hillion Exp $
+ * @version $Id: CSSUtilities.java,v 1.37 2002/03/19 09:25:40 hillion Exp $
*/
public abstract class CSSUtilities
implements CSSConstants, ErrorConstants, XMLConstants {
@@ -842,34 +842,6 @@
CSSEngine refEngine = CSSUtilities.getCSSEngine(refElement);
engine.importCascadedStyleMaps(refElement, refEngine, localRefElement);
-
- /*
- Attr xmlBase = localRefElement.getAttributeNodeNS
- (XML_NAMESPACE_URI, "xml:base");
- if (xmlBase != null) {
- // We have a current base so merge it with our new base and
- // set the result...
- ParsedURL purl = new ParsedURL(uri, xmlBase.getNodeValue());
- uri = purl.toString();
- }
- localRefElement.setAttributeNS(XML_NAMESPACE_URI,
- "xml:base",
- uri);
-
- SVGOMDocument document
- = (SVGOMDocument)localRefElement.getOwnerDocument();
- AbstractViewCSS view = (AbstractViewCSS)document.getDefaultView();
-
-
- SVGOMDocument refDocument
- = (SVGOMDocument)refElement.getOwnerDocument();
- AbstractViewCSS refView = (AbstractViewCSS)refDocument.getDefaultView();
-
- HiddenChildElementSupport.setStyle(localRefElement,
- view,
- refElement,
- refView);
- */
}
/////////////////////////////////////////////////////////////////////////
1.15 +4 -28 xml-batik/sources/org/apache/batik/bridge/SVGAElementBridge.java
Index: SVGAElementBridge.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGAElementBridge.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- SVGAElementBridge.java 18 Mar 2002 10:28:19 -0000 1.14
+++ SVGAElementBridge.java 19 Mar 2002 09:25:40 -0000 1.15
@@ -24,7 +24,7 @@
* Bridge class for the <a> element.
*
* @author <a href="mailto:tkormann@apache.org">Thierry Kormann</a>
- * @version $Id: SVGAElementBridge.java,v 1.14 2002/03/18 10:28:19 hillion Exp $
+ * @version $Id: SVGAElementBridge.java,v 1.15 2002/03/19 09:25:40 hillion Exp $
*/
public class SVGAElementBridge extends AbstractGraphicsNodeBridge {
@@ -95,15 +95,7 @@
}
public void handleEvent(Event evt) {
- SVGAElement elt = null;
- for (Element e = (Element)evt.getTarget();
- e != null;
- e = SVGUtilities.getParentElement(e)) {
- if (e instanceof SVGAElement) {
- elt = (SVGAElement)e;
- break;
- }
- }
+ SVGAElement elt = (SVGAElement)evt.getCurrentTarget();
Cursor cursor = Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR);
userAgent.setSVGCursor(cursor);
userAgent.openLink(elt);
@@ -123,15 +115,7 @@
}
public void handleEvent(Event evt) {
- SVGAElement elt = null;
- for (Element e = (Element)evt.getTarget();
- e != null;
- e = SVGUtilities.getParentElement(e)) {
- if (e instanceof SVGAElement) {
- elt = (SVGAElement)e;
- break;
- }
- }
+ SVGAElement elt = (SVGAElement)evt.getCurrentTarget();
Cursor cursor = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR);
userAgent.setSVGCursor(cursor);
if (elt != null) {
@@ -154,15 +138,7 @@
}
public void handleEvent(Event evt) {
- SVGAElement elt = null;
- for (Element e = (Element)evt.getTarget();
- e != null;
- e = SVGUtilities.getParentElement(e)) {
- if (e instanceof SVGAElement) {
- elt = (SVGAElement)e;
- break;
- }
- }
+ SVGAElement elt = (SVGAElement)evt.getCurrentTarget();
Cursor cursor = Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR);
userAgent.setSVGCursor(cursor);
userAgent.displayMessage("");
1.53 +24 -2 xml-batik/sources/org/apache/batik/bridge/SVGTextElementBridge.java
Index: SVGTextElementBridge.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGTextElementBridge.java,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -r1.52 -r1.53
--- SVGTextElementBridge.java 18 Mar 2002 10:28:20 -0000 1.52
+++ SVGTextElementBridge.java 19 Mar 2002 09:25:40 -0000 1.53
@@ -66,7 +66,7 @@
*
* @author <a href="stephane@hillion.org">Stephane Hillion</a>
* @author <a href="bill.haneman@ireland.sun.com">Bill Haneman</a>
- * @version $Id: SVGTextElementBridge.java,v 1.52 2002/03/18 10:28:20 hillion Exp $
+ * @version $Id: SVGTextElementBridge.java,v 1.53 2002/03/19 09:25:40 hillion Exp $
*/
public class SVGTextElementBridge extends AbstractSVGBridge
implements BridgeUpdateHandler, GraphicsNodeBridge, ErrorConstants {
@@ -1083,7 +1083,7 @@
GVTAttributedCharacterIterator.
TextAttribute.ORIENTATION_AUTO);
break;
- default:
+ case CSSPrimitiveValue.CSS_DEG:
result.put(GVTAttributedCharacterIterator.
TextAttribute.VERTICAL_ORIENTATION,
GVTAttributedCharacterIterator.
@@ -1091,6 +1091,28 @@
result.put(GVTAttributedCharacterIterator.
TextAttribute.VERTICAL_ORIENTATION_ANGLE,
new Float(val.getFloatValue()));
+ break;
+ case CSSPrimitiveValue.CSS_RAD:
+ result.put(GVTAttributedCharacterIterator.
+ TextAttribute.VERTICAL_ORIENTATION,
+ GVTAttributedCharacterIterator.
+ TextAttribute.ORIENTATION_ANGLE);
+ result.put(GVTAttributedCharacterIterator.
+ TextAttribute.VERTICAL_ORIENTATION_ANGLE,
+ new Float(val.getFloatValue() * 180 / Math.PI));
+ break;
+ case CSSPrimitiveValue.CSS_GRAD:
+ result.put(GVTAttributedCharacterIterator.
+ TextAttribute.VERTICAL_ORIENTATION,
+ GVTAttributedCharacterIterator.
+ TextAttribute.ORIENTATION_ANGLE);
+ result.put(GVTAttributedCharacterIterator.
+ TextAttribute.VERTICAL_ORIENTATION_ANGLE,
+ new Float(val.getFloatValue() * 9 / 5));
+ break;
+ default:
+ // Cannot happen
+ throw new InternalError();
}
// text spacing properties...
1.15 +5 -5 xml-batik/sources/org/apache/batik/bridge/ScriptingEnvironment.java
Index: ScriptingEnvironment.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/ScriptingEnvironment.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- ScriptingEnvironment.java 18 Mar 2002 12:46:13 -0000 1.14
+++ ScriptingEnvironment.java 19 Mar 2002 09:25:40 -0000 1.15
@@ -29,7 +29,7 @@
* This class contains the informations needed by the SVG scripting.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: ScriptingEnvironment.java,v 1.14 2002/03/18 12:46:13 hillion Exp $
+ * @version $Id: ScriptingEnvironment.java,v 1.15 2002/03/19 09:25:40 hillion Exp $
*/
public class ScriptingEnvironment extends BaseScriptingEnvironment {
@@ -658,10 +658,10 @@
Element elt = (Element)evt.getCurrentTarget();
// Find the scripting language
Element e = elt;
- while (e == null ||
- !SVGConstants.SVG_NAMESPACE_URI.equals
- (e.getNamespaceURI()) ||
- !SVGConstants.SVG_SVG_TAG.equals(e.getLocalName())) {
+ while (e != null &&
+ (!SVGConstants.SVG_NAMESPACE_URI.equals
+ (e.getNamespaceURI()) ||
+ !SVGConstants.SVG_SVG_TAG.equals(e.getLocalName()))) {
e = SVGUtilities.getParentElement(e);
}
if (e == null) {
1.16 +2 -2 xml-batik/sources/org/apache/batik/bridge/UpdateManager.java
Index: UpdateManager.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/UpdateManager.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- UpdateManager.java 6 Mar 2002 17:14:44 -0000 1.15
+++ UpdateManager.java 19 Mar 2002 09:25:40 -0000 1.16
@@ -41,7 +41,7 @@
* This class provides features to manage the update of an SVG document.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: UpdateManager.java,v 1.15 2002/03/06 17:14:44 tkormann Exp $
+ * @version $Id: UpdateManager.java,v 1.16 2002/03/19 09:25:40 hillion Exp $
*/
public class UpdateManager implements RunnableQueue.RunHandler {
@@ -268,7 +268,7 @@
throw new IllegalStateException("UpdateManager not started.");
}
- // Invoke first to cancel the pending tasksaalder@bsf.ca
+ // Invoke first to cancel the pending tasks
updateRunnableQueue.preemptLater(new Runnable() {
public void run() {
synchronized (UpdateManager.this) {
1.14 +42 -7 xml-batik/sources/org/apache/batik/dom/AbstractDocument.java
Index: AbstractDocument.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/AbstractDocument.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- AbstractDocument.java 25 Feb 2002 15:55:21 -0000 1.13
+++ AbstractDocument.java 19 Mar 2002 09:25:40 -0000 1.14
@@ -49,7 +49,7 @@
* This class implements the {@link org.w3c.dom.Document} interface.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: AbstractDocument.java,v 1.13 2002/02/25 15:55:21 hillion Exp $
+ * @version $Id: AbstractDocument.java,v 1.14 2002/03/19 09:25:40 hillion Exp $
*/
public abstract class AbstractDocument
extends AbstractParentNode
@@ -96,6 +96,11 @@
protected transient WeakHashMap elementsByTagNames;
/**
+ * The ElementsByTagNameNS lists.
+ */
+ protected transient WeakHashMap elementsByTagNamesNS;
+
+ /**
* Creates a new document.
*/
protected AbstractDocument() {
@@ -302,9 +307,7 @@
/**
* Returns an ElementsByTagName object from the cache, if any.
*/
- public ElementsByTagName getElementsByTagName(Node n,
- String ns,
- String ln) {
+ public ElementsByTagName getElementsByTagName(Node n, String ln) {
if (elementsByTagNames == null) {
return null;
}
@@ -313,14 +316,13 @@
if (t == null) {
return null;
}
- return (ElementsByTagName)t.get(ns, ln);
+ return (ElementsByTagName)t.get(null, ln);
}
/**
* Puts an ElementsByTagName object in the cache.
*/
- public void putElementsByTagName(Node n, String ns, String ln,
- ElementsByTagName l) {
+ public void putElementsByTagName(Node n, String ln, ElementsByTagName l) {
if (elementsByTagNames == null) {
elementsByTagNames = new WeakHashMap(11);
}
@@ -328,6 +330,39 @@
t = (SoftDoublyIndexedTable)elementsByTagNames.get(n);
if (t == null) {
elementsByTagNames.put(n, t = new SoftDoublyIndexedTable());
+ }
+ t.put(null, ln, l);
+ }
+
+ /**
+ * Returns an ElementsByTagNameNS object from the cache, if any.
+ */
+ public ElementsByTagNameNS getElementsByTagNameNS(Node n,
+ String ns,
+ String ln) {
+ if (elementsByTagNamesNS == null) {
+ return null;
+ }
+ SoftDoublyIndexedTable t;
+ t = (SoftDoublyIndexedTable)elementsByTagNamesNS.get(n);
+ if (t == null) {
+ return null;
+ }
+ return (ElementsByTagNameNS)t.get(ns, ln);
+ }
+
+ /**
+ * Puts an ElementsByTagNameNS object in the cache.
+ */
+ public void putElementsByTagNameNS(Node n, String ns, String ln,
+ ElementsByTagNameNS l) {
+ if (elementsByTagNamesNS == null) {
+ elementsByTagNamesNS = new WeakHashMap(11);
+ }
+ SoftDoublyIndexedTable t;
+ t = (SoftDoublyIndexedTable)elementsByTagNamesNS.get(n);
+ if (t == null) {
+ elementsByTagNamesNS.put(n, t = new SoftDoublyIndexedTable());
}
t.put(ns, ln, l);
}
1.15 +18 -9 xml-batik/sources/org/apache/batik/dom/AbstractElement.java
Index: AbstractElement.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/AbstractElement.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- AbstractElement.java 11 Mar 2002 09:04:37 -0000 1.14
+++ AbstractElement.java 19 Mar 2002 09:25:40 -0000 1.15
@@ -29,7 +29,7 @@
* This class implements the {@link org.w3c.dom.Element} interface.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: AbstractElement.java,v 1.14 2002/03/11 09:04:37 hillion Exp $
+ * @version $Id: AbstractElement.java,v 1.15 2002/03/19 09:25:40 hillion Exp $
*/
public abstract class AbstractElement
extends AbstractParentChildNode
@@ -302,26 +302,35 @@
}
AbstractDocument ad = getCurrentDocument();
String ns = node.getNamespaceURI();
+ String nm = node.getNodeName();
String ln = (ns == null) ? node.getNodeName() : node.getLocalName();
for (Node n = this; n != null; n = n.getParentNode()) {
switch (n.getNodeType()) {
case ELEMENT_NODE:
case DOCUMENT_NODE:
- ElementsByTagName l = ad.getElementsByTagName(n, ns, ln);
+ ElementsByTagName l = ad.getElementsByTagName(n, nm);
if (l != null) {
l.invalidate();
}
- l = ad.getElementsByTagName(n, "*", ln);
+ l = ad.getElementsByTagName(n, "*");
if (l != null) {
l.invalidate();
}
- l = ad.getElementsByTagName(n, ns, "*");
- if (l != null) {
- l.invalidate();
+ ElementsByTagNameNS lns = ad.getElementsByTagNameNS(n, ns, ln);
+ if (lns != null) {
+ lns.invalidate();
}
- l = ad.getElementsByTagName(n, "*", "*");
- if (l != null) {
- l.invalidate();
+ lns = ad.getElementsByTagNameNS(n, "*", ln);
+ if (lns != null) {
+ lns.invalidate();
+ }
+ lns = ad.getElementsByTagNameNS(n, ns, "*");
+ if (lns != null) {
+ lns.invalidate();
+ }
+ lns = ad.getElementsByTagNameNS(n, "*", "*");
+ if (lns != null) {
+ lns.invalidate();
}
}
}
1.13 +112 -10 xml-batik/sources/org/apache/batik/dom/AbstractParentNode.java
Index: AbstractParentNode.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/AbstractParentNode.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- AbstractParentNode.java 11 Mar 2002 09:04:37 -0000 1.12
+++ AbstractParentNode.java 19 Mar 2002 09:25:40 -0000 1.13
@@ -24,7 +24,7 @@
* This class implements the Node interface with support for children.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: AbstractParentNode.java,v 1.12 2002/03/11 09:04:37 hillion Exp $
+ * @version $Id: AbstractParentNode.java,v 1.13 2002/03/19 09:25:40 hillion Exp $
*/
public abstract class AbstractParentNode extends AbstractNode {
@@ -256,10 +256,10 @@
return EMPTY_NODE_LIST;
}
AbstractDocument ad = getCurrentDocument();
- ElementsByTagName result = ad.getElementsByTagName(this, null, name);
+ ElementsByTagName result = ad.getElementsByTagName(this, name);
if (result == null) {
- result = new ElementsByTagName(null, name);
- ad.putElementsByTagName(this, null, name, result);
+ result = new ElementsByTagName(name);
+ ad.putElementsByTagName(this, name, result);
}
return result;
}
@@ -274,11 +274,12 @@
return EMPTY_NODE_LIST;
}
AbstractDocument ad = getCurrentDocument();
- ElementsByTagName result = ad.getElementsByTagName(this, namespaceURI,
- localName);
+ ElementsByTagNameNS result =
+ ad.getElementsByTagNameNS(this, namespaceURI,
+ localName);
if (result == null) {
- result = new ElementsByTagName(namespaceURI, localName);
- ad.putElementsByTagName(this, namespaceURI, localName, result);
+ result = new ElementsByTagNameNS(namespaceURI, localName);
+ ad.putElementsByTagNameNS(this, namespaceURI, localName, result);
}
return result;
}
@@ -461,6 +462,107 @@
protected int size = -1;
/**
+ * The name identifier.
+ */
+ protected String name;
+
+ /**
+ * Creates a new ElementsByTagName object.
+ */
+ public ElementsByTagName(String n) {
+ name = n;
+ }
+
+ /**
+ * <b>DOM</b>: Implements {@link NodeList#item(int)}.
+ */
+ public Node item(int index) {
+ if (size == -1) {
+ initialize();
+ }
+ if (table == null || index < 0 || index > size) {
+ return null;
+ }
+ return table[index];
+ }
+
+ /**
+ * <b>DOM</b>: Implements {@link NodeList#getLength()}.
+ * @return {@link #size}.
+ */
+ public int getLength() {
+ if (size == -1) {
+ initialize();
+ }
+ return size;
+ }
+
+ /**
+ * Invalidates the list.
+ */
+ public void invalidate() {
+ size = -1;
+ }
+
+ /**
+ * Appends a node to the list.
+ */
+ protected void append(Node n) {
+ if (table == null) {
+ table = new Node[11];
+ } else if (size == table.length - 1) {
+ Node[] t = new Node[table.length * 2 + 1];
+ for (int i = 0; i < size; i++) {
+ t[i] = table[i];
+ }
+ table = t;
+ }
+ table[size++] = n;
+ }
+
+ /**
+ * Initializes the list.
+ */
+ protected void initialize() {
+ size = 0;
+ for (Node n = AbstractParentNode.this.getFirstChild();
+ n != null;
+ n = n.getNextSibling()) {
+ initialize(n);
+ }
+ }
+
+ private void initialize(Node node) {
+ if (node.getNodeType() == ELEMENT_NODE) {
+ String nm = node.getNodeName();
+ if (name.equals("*") || name.equals(nm)) {
+ append(node);
+ }
+ }
+ for (Node n = node.getFirstChild();
+ n != null;
+ n = n.getNextSibling()) {
+ initialize(n);
+ }
+ }
+ }
+
+ /**
+ * To manage a list of nodes.
+ */
+ protected class ElementsByTagNameNS implements NodeList {
+
+ /**
+ * The table.
+ */
+ protected Node[] table;
+
+ /**
+ * The number of nodes.
+ */
+ protected int size = -1;
+
+ /**
* The namespace URI identifier.
*/
protected String namespaceURI;
@@ -471,9 +573,9 @@
protected String localName;
/**
- * Creates a new Nodes object.
+ * Creates a new ElementsByTagNameNS object.
*/
- public ElementsByTagName(String ns, String ln) {
+ public ElementsByTagNameNS(String ns, String ln) {
namespaceURI = ns;
localName = ln;
}
1.8 +11 -4 xml-batik/sources/org/apache/batik/dom/util/SAXDocumentFactory.java
Index: SAXDocumentFactory.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/util/SAXDocumentFactory.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- SAXDocumentFactory.java 18 Mar 2002 10:28:27 -0000 1.7
+++ SAXDocumentFactory.java 19 Mar 2002 09:25:40 -0000 1.8
@@ -36,7 +36,7 @@
* from an URI using SAX2.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: SAXDocumentFactory.java,v 1.7 2002/03/18 10:28:27 hillion Exp $
+ * @version $Id: SAXDocumentFactory.java,v 1.8 2002/03/19 09:25:40 hillion Exp $
*/
public class SAXDocumentFactory
extends DefaultHandler
@@ -290,12 +290,19 @@
for (int i = 0; i < len; i++) {
String aname = attributes.getQName(i);
if (aname.equals("xmlns")) {
- namespaces.put("", attributes.getValue(i));
+ String ns = attributes.getValue(i);
+ if (ns.length() == 0) {
+ ns = null;
+ }
+ namespaces.put("", ns);
} else {
if (aname.startsWith("xmlns:")) {
+ String ns = attributes.getValue(i);
+ if (ns.length() == 0) {
+ ns = null;
+ }
int idx = aname.indexOf(':');
- namespaces.put(aname.substring(idx + 1),
- attributes.getValue(i));
+ namespaces.put(aname.substring(idx + 1), ns);
}
}
}
1.3 +18 -1 xml-batik/test-resources/org/apache/batik/dom/unitTesting.xml
Index: unitTesting.xml
===================================================================
RCS file: /home/cvs/xml-batik/test-resources/org/apache/batik/dom/unitTesting.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- unitTesting.xml 19 Nov 2001 13:39:56 -0000 1.2
+++ unitTesting.xml 19 Mar 2002 09:25:41 -0000 1.3
@@ -9,7 +9,7 @@
<!-- ========================================================================= -->
<!-- @author vincent.hardy@eng.sun.com -->
<!-- @author shillion@ilog.fr -->
-<!-- @version $Id: unitTesting.xml,v 1.2 2001/11/19 13:39:56 hillion Exp $ -->
+<!-- @version $Id: unitTesting.xml,v 1.3 2002/03/19 09:25:41 hillion Exp $ -->
<!-- ========================================================================= -->
<testSuite id="dom.unitTesting" name="org.apache.batik.dom package - Unit Testing">
@@ -26,6 +26,23 @@
<property name="ParserClassName"
class="java.lang.String"
value="org.apache.crimson.parser.XMLReaderImpl" />
+ </test>
+
+ <!-- ========================================================================== -->
+ <!-- null namespace test -->
+ <!-- ========================================================================== -->
+ <test id="nullNamespace1" class="org.apache.batik.dom.NullNamespaceTest" >
+ <arg class="java.lang.String"
+ value="test-resources/org/apache/batik/dom/dummyXML3.xml" />
+ <arg class="java.lang.String" value="doc" />
+ <arg class="java.lang.String" value="root" />
+ </test>
+
+ <test id="nullNamespace2" class="org.apache.batik.dom.NullNamespaceTest" >
+ <arg class="java.lang.String"
+ value="test-resources/org/apache/batik/dom/dummyXML3.xml" />
+ <arg class="java.lang.String" value="doc" />
+ <arg class="java.lang.String" value="elt2" />
</test>
<!-- ========================================================================== -->
1.1 xml-batik/test-resources/org/apache/batik/dom/dummyXML3.xml
Index: dummyXML3.xml
===================================================================
<doc id="root" attr="value1">
<elt1/>
<elt2 id="elt2" attr2="value2" xmlns="">
Content
</elt2>
</doc>
1.1 xml-batik/test-sources/org/apache/batik/dom/NullNamespaceTest.java
Index: NullNamespaceTest.java
===================================================================
/*****************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* ------------------------------------------------------------------------- *
* This software is published under the terms of the Apache Software License *
* version 1.1, a copy of which has been included with this distribution in *
* the LICENSE file. *
*****************************************************************************/
package org.apache.batik.dom;
import org.w3c.dom.*;
import java.io.*;
import java.net.*;
import org.apache.batik.dom.util.*;
import org.apache.batik.util.*;
import org.apache.batik.test.*;
/**
* This class tests the empty string value for an xmlns attribute.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
* @version $Id: NullNamespaceTest.java,v 1.1 2002/03/19 09:25:41 hillion Exp $
*/
public class NullNamespaceTest extends AbstractTest {
public static String ERROR_GET_ELEMENT_BY_ID_FAILED
= "error.get.element.by.id.failed";
public static String ENTRY_KEY_ID
= "entry.key.id";
protected String testFileName;
protected String rootTag;
protected String targetId;
public NullNamespaceTest(String file,
String root,
String id) {
testFileName = file;
rootTag = root;
targetId = id;
}
public TestReport runImpl() throws Exception {
String parser =
XMLResourceDescriptor.getXMLParserClassName();
DocumentFactory df
= new SAXDocumentFactory
(GenericDOMImplementation.getDOMImplementation(), parser);
File f = (new File(testFileName));
URL url = f.toURL();
Document doc = df.createDocument(null,
rootTag,
url.toString(),
url.openStream());
Element e = doc.getElementById(targetId);
if (e == null){
DefaultTestReport report = new DefaultTestReport(this);
report.setErrorCode(ERROR_GET_ELEMENT_BY_ID_FAILED);
report.addDescriptionEntry(ENTRY_KEY_ID,
targetId);
report.setPassed(false);
return report;
}
if (e.getNamespaceURI() == null) {
return reportSuccess();
}
DefaultTestReport report = new DefaultTestReport(this);
report.setErrorCode(report.ERROR_TEST_FAILED);
report.setPassed(false);
return report;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org