1 19 20 package com.sslexplorer.httpunit; 21 22 import java.io.FileInputStream ; 23 import java.io.IOException ; 24 import java.io.InputStream ; 25 import java.util.Collection ; 26 import java.util.HashSet ; 27 28 import org.apache.commons.digester.Digester; 29 import org.xml.sax.SAXException ; 30 31 final class HttpTestParser { 32 private static final String MATCH_TESTS = "tests"; 33 private static final String MATCH_TEST = "tests/test"; 34 private static final String MATCH_TEST_STEP = "tests/test/step"; 35 private static final String MATCH_ERROR = MATCH_TEST_STEP + "/errors/error"; 36 private static final String MATCH_MESSAGE = MATCH_TEST_STEP + "/messages/message"; 37 private static final String MATCH_PARAMETER = MATCH_TEST_STEP + "/parameters/parameter"; 38 39 static Collection <HttpTestContainer> generateTests(String [] paths) throws IOException { 40 Collection <HttpTestContainer> tests = new HashSet <HttpTestContainer>(paths.length); 41 for (String path : paths) { 42 tests.add(generateTests(path)); 43 } 44 return tests; 45 } 46 47 static HttpTestContainer generateTests(String path) throws IOException { 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 input = new FileInputStream (path); 88 return (HttpTestContainer) digester.parse(input); 89 } catch (SAXException e) { 90 throw new IOException (e.getMessage()); 91 } 92 } 93 } | Popular Tags |