1 package org.objectweb.celtix.bus.configuration; 2 3 import java.io.ByteArrayInputStream ; 4 5 import javax.xml.namespace.QName ; 6 import javax.xml.parsers.DocumentBuilder ; 7 import javax.xml.parsers.DocumentBuilderFactory ; 8 9 import org.w3c.dom.Document ; 10 import org.w3c.dom.Element ; 11 import org.w3c.dom.Node ; 12 13 import org.xml.sax.InputSource ; 14 15 import junit.framework.TestCase; 16 17 import org.objectweb.celtix.configuration.ConfigurationException; 18 import org.objectweb.celtix.configuration.impl.ConfigurationMetadataUtils; 19 20 public class ConfigurationMetadataUtilsTest extends TestCase { 21 22 private static final String FRAGMENT = 23 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 24 + "<a xmlns:tt=\"http://celtix.objectweb.org/configuration/test/types\">" 25 + "<b1><c1 name=\"tt:un\">tt:one</c1></b1>" 26 + "<b2><c2 xmlns:tt=\"http://celtix.objectweb.org/configuration/types\" name=\"tt:deux\">" 27 + "tt:two</c2></b2>" 28 + "<b3 xmlns:tt=\"http://celtix.objectweb.org/configuration/types\">" 29 + "<c3 xmlns:tt=\"http://celtix.objectweb.org/configuration/metadata\" name=\"tt:trois\">" 30 + "tt:three</c3></b3>" 31 + "<b4></b4>" 32 + "<b5>BEFORE<c5></c5>AFTER</b5>" 33 + "<b55><c5></c5>AFTER</b55>" 34 + "<b6><c6>:noprefix</c6></b6>" 35 + "<b7><c7>tt:</c7></b7>" 36 + "<b8><c8>dd:unknownprefix</c8></b8>" 37 + "</a>"; 38 39 private static Document document; 40 41 public void testGetElementValue() throws Exception { 42 Document doc = getDocument(FRAGMENT); 43 Node node = doc.getElementsByTagName("c1").item(0); 44 assertEquals("tt:one", ConfigurationMetadataUtils.getElementValue(node)); 45 node = doc.getElementsByTagName("b4").item(0); 46 assertNull(ConfigurationMetadataUtils.getElementValue(node)); 47 node = doc.getElementsByTagName("b5").item(0); 48 assertEquals("BEFORE", ConfigurationMetadataUtils.getElementValue(node)); 49 node = doc.getElementsByTagName("b55").item(0); 50 assertEquals("AFTER", ConfigurationMetadataUtils.getElementValue(node)); 51 } 52 53 public void testGetElementValueToQName() throws Exception { 54 Document doc = getDocument(FRAGMENT); 55 Element elem = (Element )(doc.getElementsByTagName("c1").item(0)); 56 QName qn = null; 57 qn = new QName ("http://celtix.objectweb.org/configuration/test/types", "one"); 58 assertEquals(qn, ConfigurationMetadataUtils.elementValueToQName(doc, elem)); 59 elem = (Element )(doc.getElementsByTagName("c2").item(0)); 60 qn = new QName ("http://celtix.objectweb.org/configuration/types", "two"); 61 assertEquals(qn, ConfigurationMetadataUtils.elementValueToQName(doc, elem)); 62 elem = (Element )(doc.getElementsByTagName("c3").item(0)); 63 qn = new QName ("http://celtix.objectweb.org/configuration/metadata", "three"); 64 assertEquals(qn, ConfigurationMetadataUtils.elementValueToQName(doc, elem)); 65 66 elem = (Element )(doc.getElementsByTagName("c6").item(0)); 67 try { 68 ConfigurationMetadataUtils.elementValueToQName(doc, elem); 69 } catch (ConfigurationException ex) { 70 assertEquals("ILLEGAL_QNAME_EXC", ex.getCode()); 71 } 72 elem = (Element )(doc.getElementsByTagName("c7").item(0)); 73 try { 74 ConfigurationMetadataUtils.elementValueToQName(doc, elem); 75 } catch (ConfigurationException ex) { 76 assertEquals("ILLEGAL_QNAME_EXC", ex.getCode()); 77 } 78 elem = (Element )(doc.getElementsByTagName("c8").item(0)); 79 try { 80 ConfigurationMetadataUtils.elementValueToQName(doc, elem); 81 } catch (ConfigurationException ex) { 82 assertEquals("ILLEGAL_PREFIX_EXC", ex.getCode()); 83 } 84 } 85 86 public void testGetElementAttributeToQName() throws Exception { 87 Document doc = getDocument(FRAGMENT); 88 Element elem = (Element )(doc.getElementsByTagName("c1").item(0)); 89 QName qn = null; 90 qn = new QName ("http://celtix.objectweb.org/configuration/test/types", "un"); 91 assertEquals(qn, ConfigurationMetadataUtils.elementAttributeToQName(doc, elem, "name")); 92 elem = (Element )(doc.getElementsByTagName("c2").item(0)); 93 qn = new QName ("http://celtix.objectweb.org/configuration/types", "deux"); 94 assertEquals(qn, ConfigurationMetadataUtils.elementAttributeToQName(doc, elem, "name")); 95 elem = (Element )(doc.getElementsByTagName("c3").item(0)); 96 qn = new QName ("http://celtix.objectweb.org/configuration/metadata", "trois"); 97 assertEquals(qn, ConfigurationMetadataUtils.elementAttributeToQName(doc, elem, "name")); 98 } 99 100 private Document getDocument(String str) throws Exception { 101 if (null == document) { 102 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 103 factory.setNamespaceAware(true); 104 DocumentBuilder parser = factory.newDocumentBuilder(); 105 document = parser.parse(new InputSource (new ByteArrayInputStream (str.getBytes()))); 106 } 107 return document; 108 } 109 } 110 | Popular Tags |