KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sslexplorer > httpunit > HttpTestParser


1 /*
2  * SSL-Explorer
3  *
4  * Copyright (C) 2003-2006 3SP LTD. All Rights Reserved
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2 of
9  * the License, or (at your option) any later version.
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public
16  * License along with this program; if not, write to the Free Software
17  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  */

19             
20 package com.sslexplorer.httpunit;
21
22 import java.io.FileInputStream JavaDoc;
23 import java.io.IOException JavaDoc;
24 import java.io.InputStream JavaDoc;
25 import java.util.Collection JavaDoc;
26 import java.util.HashSet JavaDoc;
27
28 import org.apache.commons.digester.Digester;
29 import org.xml.sax.SAXException JavaDoc;
30
31 final class HttpTestParser {
32     private static final String JavaDoc MATCH_TESTS = "tests";
33     private static final String JavaDoc MATCH_TEST = "tests/test";
34     private static final String JavaDoc MATCH_TEST_STEP = "tests/test/step";
35     private static final String JavaDoc MATCH_ERROR = MATCH_TEST_STEP + "/errors/error";
36     private static final String JavaDoc MATCH_MESSAGE = MATCH_TEST_STEP + "/messages/message";
37     private static final String JavaDoc MATCH_PARAMETER = MATCH_TEST_STEP + "/parameters/parameter";
38
39     static Collection JavaDoc<HttpTestContainer> generateTests(String JavaDoc[] paths) throws IOException JavaDoc {
40         Collection JavaDoc<HttpTestContainer> tests = new HashSet JavaDoc<HttpTestContainer>(paths.length);
41         for (String JavaDoc path : paths) {
42             tests.add(generateTests(path));
43         }
44         return tests;
45     }
46
47     static HttpTestContainer generateTests(String JavaDoc path) throws IOException JavaDoc {
48         try {
49             Digester digester = new Digester();
50             digester.setValidating(false);
51
52             digester.addObjectCreate(MATCH_TESTS, HttpTestContainer.class);
53             digester.addSetProperties(MATCH_TESTS, "rootUrl", "rootUrl");
54             digester.addSetProperties(MATCH_TESTS, "port", "port");
55             digester.addSetProperties(MATCH_TESTS, "defaultUsername", "defaultUsername");
56             digester.addSetProperties(MATCH_TESTS, "defaultPassword", "defaultPassword");
57
58             digester.addObjectCreate(MATCH_TEST, HttpTestEntry.class);
59             digester.addSetProperties(MATCH_TEST, "name", "name");
60             digester.addSetProperties(MATCH_TEST, "authenticated", "authenticated");
61             digester.addSetProperties(MATCH_TEST, "username", "username");
62             digester.addSetProperties(MATCH_TEST, "password", "password");
63
64             digester.addObjectCreate(MATCH_TEST_STEP, HttpTestEntryStep.class);
65             digester.addSetProperties(MATCH_TEST_STEP, "name", "name");
66             digester.addSetProperties(MATCH_TEST_STEP, "method", "method");
67             digester.addSetProperties(MATCH_TEST_STEP, "url", "url");
68             digester.addSetProperties(MATCH_TEST_STEP, "expectedCode", "expectedCode");
69             digester.addSetProperties(MATCH_TEST_STEP, "redirectUrl", "redirectUrl");
70
71             digester.addObjectCreate(MATCH_PARAMETER, HttpTestEntryStep.Parameter.class);
72             digester.addSetProperties(MATCH_PARAMETER, "key", "key");
73             digester.addSetProperties(MATCH_PARAMETER, "value", "value");
74             digester.addSetNext(MATCH_PARAMETER, "addParameter");
75
76             digester.addObjectCreate(MATCH_MESSAGE, HttpTestEntryStep.Value.class);
77             digester.addSetProperties(MATCH_MESSAGE, "value", "value");
78             digester.addSetNext(MATCH_MESSAGE, "addMessage");
79
80             digester.addObjectCreate(MATCH_ERROR, HttpTestEntryStep.Value.class);
81             digester.addSetProperties(MATCH_ERROR, "value", "value");
82             digester.addSetNext(MATCH_ERROR, "addError");
83
84             digester.addSetNext(MATCH_TEST_STEP, "addStep");
85             digester.addSetNext(MATCH_TEST, "addEntry");
86
87             InputStream JavaDoc input = new FileInputStream JavaDoc(path);
88             return (HttpTestContainer) digester.parse(input);
89         } catch (SAXException JavaDoc e) {
90             throw new IOException JavaDoc(e.getMessage());
91         }
92     }
93 }
Popular Tags