001: //========================================================================
002: //Copyright 2006 Mort Bay Consulting Pty. Ltd.
003: //------------------------------------------------------------------------
004: //Licensed under the Apache License, Version 2.0 (the "License");
005: //you may not use this file except in compliance with the License.
006: //You may obtain a copy of the License at
007: //http://www.apache.org/licenses/LICENSE-2.0
008: //Unless required by applicable law or agreed to in writing, software
009: //distributed under the License is distributed on an "AS IS" BASIS,
010: //WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
011: //See the License for the specific language governing permissions and
012: //limitations under the License.
013: //========================================================================
014:
015: package org.mortbay.xml;
016:
017: import java.net.URL;
018: import java.util.HashMap;
019: import java.util.Map;
020:
021: import junit.framework.TestCase;
022:
023: public class XmlConfigurationTest extends TestCase {
024: public final static String __CRLF = "\015\012";
025:
026: /* ------------------------------------------------------------ */
027: public static void testXmlParser() throws Exception {
028: XmlParser parser = new XmlParser();
029:
030: URL configURL = XmlConfiguration.class.getClassLoader()
031: .getResource("org/mortbay/xml/configure_6_0.dtd");
032: parser.redirectEntity("configure.dtd", configURL);
033: parser.redirectEntity("configure_1_3.dtd", configURL);
034: parser.redirectEntity("http://jetty.mortbay.org/configure.dtd",
035: configURL);
036: parser.redirectEntity(
037: "-//Mort Bay Consulting//DTD Configure//EN", configURL);
038: parser
039: .redirectEntity(
040: "http://jetty.mortbay.org/configure_1_3.dtd",
041: configURL);
042: parser.redirectEntity(
043: "-//Mort Bay Consulting//DTD Configure 1.3//EN",
044: configURL);
045: parser.redirectEntity("configure_1_2.dtd", configURL);
046: parser
047: .redirectEntity(
048: "http://jetty.mortbay.org/configure_1_2.dtd",
049: configURL);
050: parser.redirectEntity(
051: "-//Mort Bay Consulting//DTD Configure 1.2//EN",
052: configURL);
053: parser.redirectEntity("configure_1_1.dtd", configURL);
054: parser
055: .redirectEntity(
056: "http://jetty.mortbay.org/configure_1_1.dtd",
057: configURL);
058: parser.redirectEntity(
059: "-//Mort Bay Consulting//DTD Configure 1.1//EN",
060: configURL);
061: parser.redirectEntity("configure_1_0.dtd", configURL);
062: parser
063: .redirectEntity(
064: "http://jetty.mortbay.org/configure_1_0.dtd",
065: configURL);
066: parser.redirectEntity(
067: "-//Mort Bay Consulting//DTD Configure 1.0//EN",
068: configURL);
069:
070: URL url = XmlConfigurationTest.class.getClassLoader()
071: .getResource("org/mortbay/xml/configure.xml");
072: XmlParser.Node testDoc = parser.parse(url.toString());
073: String testDocStr = testDoc.toString().trim();
074:
075: assertTrue(testDocStr.startsWith("<Configure"));
076: assertTrue(testDocStr.endsWith("</Configure>"));
077:
078: }
079:
080: /* ------------------------------------------------------------ */
081: public static void testXmlConfiguration() throws Exception {
082: Map properties = new HashMap();
083: properties.put("whatever", "xxx");
084:
085: URL url = XmlConfigurationTest.class.getClassLoader()
086: .getResource("org/mortbay/xml/configure.xml");
087: XmlConfiguration configuration = new XmlConfiguration(url);
088: TestConfiguration tc = new TestConfiguration();
089: configuration.setProperties(properties);
090: configuration.configure(tc);
091:
092: assertEquals("Set String", "SetValue", tc.testObject);
093: assertEquals("Set Type", 2, tc.testInt);
094:
095: assertEquals("Put", "PutValue", tc.get("Test"));
096: assertEquals("Put dft", "2", tc.get("TestDft"));
097: assertEquals("Put type", new Integer(2), tc.get("TestInt"));
098:
099: assertEquals("Trim", "PutValue", tc.get("Trim"));
100: assertEquals("Null", null, tc.get("Null"));
101: assertEquals("NullTrim", null, tc.get("NullTrim"));
102:
103: assertEquals("ObjectTrim", new Double(1.2345), tc
104: .get("ObjectTrim"));
105: assertEquals("Objects", "-1String", tc.get("Objects"));
106: assertEquals("ObjectsTrim", "-1String", tc.get("ObjectsTrim"));
107: assertEquals("String", "\n PutValue\n ", tc.get("String"));
108: assertEquals("NullString", "", tc.get("NullString"));
109: assertEquals("WhateSpace", "\n ", tc.get("WhiteSpace"));
110: assertEquals("ObjectString", "\n 1.2345\n ", tc
111: .get("ObjectString"));
112: assertEquals("ObjectsString", "-1String", tc
113: .get("ObjectsString"));
114: assertEquals("ObjectsWhiteString", "-1\n String", tc
115: .get("ObjectsWhiteString"));
116:
117: assertEquals("SystemProperty", System.getProperty("user.dir")
118: + "/stuff", tc.get("SystemProperty"));
119: assertEquals("Property", "xxx", tc.get("Property"));
120:
121: assertEquals("Called", "Yes", tc.get("Called"));
122:
123: assertTrue(TestConfiguration.called);
124:
125: assertEquals("oa[0]", "Blah", tc.oa[0]);
126: assertEquals("oa[1]", "1.2.3.4:5678", tc.oa[1]);
127: assertEquals("oa[2]", new Double(1.2345), tc.oa[2]);
128: assertEquals("oa[3]", null, tc.oa[3]);
129:
130: assertEquals("ia[0]", 1, tc.ia[0]);
131: assertEquals("ia[1]", 2, tc.ia[1]);
132: assertEquals("ia[2]", 3, tc.ia[2]);
133: assertEquals("ia[3]", 0, tc.ia[3]);
134:
135: TestConfiguration tc2 = tc.nested;
136: assertTrue(tc2 != null);
137: assertEquals("Called(bool)", new Boolean(true), tc2.get("Arg"));
138:
139: assertEquals("nested config", null, tc.get("Arg"));
140: assertEquals("nested config", new Boolean(true), tc2.get("Arg"));
141:
142: assertEquals("nested config", "Call1", tc2.testObject);
143: assertEquals("nested config", 4, tc2.testInt);
144: assertEquals("nested call", "http://www.mortbay.com/", tc2.url
145: .toString());
146:
147: configuration = new XmlConfiguration(
148: "<Configure class=\"org.mortbay.xml.TestConfiguration\"><Set name=\"Test\">SetValue</Set><Set name=\"Test\" type=\"int\">2</Set></Configure>");
149: TestConfiguration tc3 = new TestConfiguration();
150: configuration.configure(tc3);
151: assertEquals("Set String 3", "SetValue", tc3.testObject);
152: assertEquals("Set Type 3", 2, tc3.testInt);
153:
154: assertEquals("static to field", tc.testField1, 77);
155: assertEquals("field to field", tc.testField2, 2);
156: assertEquals("literal to static", TestConfiguration.VALUE, 42);
157:
158: }
159:
160: }
|