Mercurial > hg > monetdb-java
annotate tests/UrlTester.java @ 973:32f246853ec4 default tip
Optimisation, call connection.mapClobAsVarChar() and connection.mapBlobAsVarBinary() outside the for-loop, as it does not change.
author | Martin van Dinther <martin.van.dinther@monetdbsolutions.com> |
---|---|
date | Thu, 10 Apr 2025 19:26:59 +0200 (3 hours ago) |
parents | d416e9b6b3d0 |
children |
rev | line source |
---|---|
855
839d76eeb4ae
Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents:
834
diff
changeset
|
1 /* |
839d76eeb4ae
Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents:
834
diff
changeset
|
2 * SPDX-License-Identifier: MPL-2.0 |
839d76eeb4ae
Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents:
834
diff
changeset
|
3 * |
839d76eeb4ae
Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents:
834
diff
changeset
|
4 * This Source Code Form is subject to the terms of the Mozilla Public |
839d76eeb4ae
Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents:
834
diff
changeset
|
5 * License, v. 2.0. If a copy of the MPL was not distributed with this |
839d76eeb4ae
Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents:
834
diff
changeset
|
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. |
839d76eeb4ae
Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents:
834
diff
changeset
|
7 * |
937
d416e9b6b3d0
Update Copyright year.
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents:
917
diff
changeset
|
8 * Copyright 2024, 2025 MonetDB Foundation; |
855
839d76eeb4ae
Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents:
834
diff
changeset
|
9 * Copyright August 2008 - 2023 MonetDB B.V.; |
839d76eeb4ae
Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents:
834
diff
changeset
|
10 * Copyright 1997 - July 2008 CWI. |
839d76eeb4ae
Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents:
834
diff
changeset
|
11 */ |
839d76eeb4ae
Added missing Copyright header comments
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents:
834
diff
changeset
|
12 |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
13 import org.monetdb.mcl.net.*; |
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
14 |
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
15 import java.io.*; |
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
16 import java.net.URISyntaxException; |
797
9f6fe96c0ead
Arrange testing
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
792
diff
changeset
|
17 import java.util.ArrayList; |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
18 |
917
c2164decf7f1
Add final to classes
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents:
860
diff
changeset
|
19 public final class UrlTester { |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
20 final String filename; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
21 final int verbose; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
22 final BufferedReader reader; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
23 int lineno = 0; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
24 int testCount = 0; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
25 Target target = null; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
26 Target.Validated validated = null; |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
27 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
28 public UrlTester(String filename, BufferedReader reader, int verbose) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
29 this.filename = filename; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
30 this.verbose = verbose; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
31 this.reader = reader; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
32 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
33 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
34 public UrlTester(String filename, int verbose) throws IOException { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
35 this.filename = filename; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
36 this.verbose = verbose; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
37 this.reader = new BufferedReader(new FileReader(filename)); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
38 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
39 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
40 public static void main(String[] args) throws IOException { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
41 ArrayList<String> filenames = new ArrayList<>(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
42 int verbose = 0; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
43 for (String arg : args) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
44 switch (arg) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
45 case "-vvv": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
46 verbose++; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
47 case "-vv": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
48 verbose++; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
49 case "-v": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
50 verbose++; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
51 break; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
52 case "-h": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
53 case "--help": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
54 exitUsage(null); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
55 break; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
56 default: |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
57 if (!arg.startsWith("-")) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
58 filenames.add(arg); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
59 } else { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
60 exitUsage("Unexpected argument: " + arg); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
61 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
62 break; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
63 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
64 } |
791
4de810c22328
Refactor
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
789
diff
changeset
|
65 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
66 runUnitTests(); |
797
9f6fe96c0ead
Arrange testing
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
792
diff
changeset
|
67 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
68 try { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
69 if (filenames.isEmpty()) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
70 runAllTests(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
71 } else { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
72 for (String filename : filenames) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
73 new UrlTester(filename, verbose).run(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
74 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
75 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
76 } catch (Failure e) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
77 System.err.println("Test failed: " + e.getMessage()); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
78 System.exit(1); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
79 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
80 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
81 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
82 private static void exitUsage(String message) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
83 if (message != null) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
84 System.err.println(message); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
85 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
86 System.err.println("Usage: UrlTester OPTIONS [FILENAME..]"); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
87 System.err.println("Options:"); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
88 System.err.println(" -v Be more verbose"); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
89 System.err.println(" -h --help Show this help"); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
90 int status = message == null ? 0 : 1; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
91 System.exit(status); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
92 } |
792
9dea0795a926
Understand so_timeout, treat_clob_as_varchar and treat_blob_as_binary
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
791
diff
changeset
|
93 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
94 public static UrlTester forResource(String resourceName, int verbose) throws FileNotFoundException { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
95 InputStream stream = UrlTester.class.getResourceAsStream(resourceName); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
96 if (stream == null) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
97 throw new FileNotFoundException("Resource " + resourceName); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
98 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
99 BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
100 return new UrlTester(resourceName, reader, verbose); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
101 } |
797
9f6fe96c0ead
Arrange testing
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
792
diff
changeset
|
102 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
103 public static void runAllTests() throws IOException, Failure { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
104 runUnitTests(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
105 UrlTester.forResource("/tests.md", 0).run(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
106 UrlTester.forResource("/javaspecific.md", 0).run(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
107 } |
797
9f6fe96c0ead
Arrange testing
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
792
diff
changeset
|
108 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
109 public static void runUnitTests() { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
110 testDefaults(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
111 testParameters(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
112 } |
797
9f6fe96c0ead
Arrange testing
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
792
diff
changeset
|
113 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
114 private static void testDefaults() { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
115 Target target = new Target(); |
791
4de810c22328
Refactor
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
789
diff
changeset
|
116 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
117 for (Parameter parm : Parameter.values()) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
118 Object expected = parm.getDefault(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
119 if (expected == null) |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
120 continue; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
121 Object actual = target.getObject(parm); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
122 if (!expected.equals(actual)) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
123 throw new RuntimeException("Default for " + parm.name + " expected to be <" + expected + "> but is <" + actual + ">"); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
124 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
125 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
126 } |
792
9dea0795a926
Understand so_timeout, treat_clob_as_varchar and treat_blob_as_binary
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
791
diff
changeset
|
127 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
128 private static void testParameters() { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
129 for (Parameter parm : Parameter.values()) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
130 Parameter found = Parameter.forName(parm.name); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
131 if (parm != found) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
132 String foundStr = found != null ? found.name : "null"; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
133 throw new RuntimeException("Looking up <" + parm.name + ">, found <" + foundStr); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
134 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
135 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
136 } |
791
4de810c22328
Refactor
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
789
diff
changeset
|
137 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
138 public void run() throws Failure, IOException { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
139 try { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
140 processFile(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
141 } catch (Failure e) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
142 if (e.getFilename() == null) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
143 e.setFilename(filename); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
144 e.setLineno(lineno); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
145 throw e; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
146 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
147 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
148 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
149 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
150 private void processFile() throws IOException, Failure { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
151 while (true) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
152 String line = reader.readLine(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
153 if (line == null) |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
154 break; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
155 lineno++; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
156 processLine(line); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
157 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
158 if (verbose >= 1) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
159 System.out.println(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
160 System.out.println("Ran " + testCount + " tests in " + lineno + " lines"); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
161 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
162 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
163 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
164 private void processLine(String line) throws Failure { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
165 line = line.replaceFirst("\\s+$", ""); // remove trailing |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
166 if (target == null && line.equals("```test")) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
167 if (verbose >= 2) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
168 if (testCount > 0) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
169 System.out.println(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
170 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
171 System.out.println("\u25B6 " + filename + ":" + lineno); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
172 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
173 target = new Target(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
174 testCount++; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
175 return; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
176 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
177 if (target != null) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
178 if (line.equals("```")) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
179 stopProcessing(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
180 return; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
181 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
182 handleCommand(line); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
183 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
184 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
185 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
186 private void stopProcessing() { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
187 target = null; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
188 validated = null; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
189 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
190 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
191 private void handleCommand(String line) throws Failure { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
192 if (verbose >= 3) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
193 System.out.println(line); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
194 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
195 if (line.isEmpty()) |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
196 return; |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
197 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
198 String[] parts = line.split("\\s+", 2); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
199 String command = parts[0]; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
200 switch (command.toUpperCase()) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
201 case "ONLY": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
202 handleOnly(true, parts[1]); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
203 return; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
204 case "NOT": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
205 handleOnly(false, parts[1]); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
206 return; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
207 case "PARSE": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
208 handleParse(parts[1], null); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
209 return; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
210 case "ACCEPT": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
211 handleParse(parts[1], true); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
212 return; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
213 case "REJECT": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
214 handleParse(parts[1], false); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
215 return; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
216 case "SET": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
217 handleSet(parts[1]); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
218 return; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
219 case "EXPECT": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
220 handleExpect(parts[1]); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
221 return; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
222 default: |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
223 throw new Failure("Unexpected command: " + command); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
224 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
225 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
226 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
227 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
228 private void handleOnly(boolean mustBePresent, String rest) throws Failure { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
229 boolean found = false; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
230 for (String part : rest.split("\\s+")) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
231 if (part.equals("jdbc")) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
232 found = true; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
233 break; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
234 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
235 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
236 if (found != mustBePresent) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
237 // do not further process this block |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
238 stopProcessing(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
239 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
240 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
241 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
242 private int findEqualSign(String rest) throws Failure { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
243 int index = rest.indexOf('='); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
244 if (index < -1) |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
245 throw new Failure("Expected to find a '='"); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
246 return index; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
247 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
248 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
249 private String splitKey(String rest) throws Failure { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
250 int index = findEqualSign(rest); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
251 return rest.substring(0, index); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
252 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
253 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
254 private String splitValue(String rest) throws Failure { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
255 int index = findEqualSign(rest); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
256 return rest.substring(index + 1); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
257 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
258 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
259 private void handleSet(String rest) throws Failure { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
260 validated = null; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
261 String key = splitKey(rest); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
262 String value = splitValue(rest); |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
263 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
264 try { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
265 target.setString(key, value); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
266 } catch (ValidationError e) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
267 throw new Failure(e.getMessage()); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
268 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
269 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
270 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
271 private void handleParse(String rest, Boolean shouldSucceed) throws Failure { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
272 URISyntaxException parseError = null; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
273 ValidationError validationError = null; |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
274 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
275 validated = null; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
276 try { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
277 target.barrier(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
278 MonetUrlParser.parse(target, rest); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
279 } catch (URISyntaxException e) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
280 parseError = e; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
281 } catch (ValidationError e) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
282 validationError = e; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
283 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
284 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
285 if (parseError == null && validationError == null) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
286 try { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
287 tryValidate(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
288 } catch (ValidationError e) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
289 validationError = e; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
290 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
291 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
292 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
293 if (shouldSucceed == Boolean.FALSE) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
294 if (parseError != null || validationError != null) |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
295 return; // happy |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
296 else |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
297 throw new Failure("URL unexpectedly parsed and validated"); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
298 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
299 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
300 if (parseError != null) |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
301 throw new Failure("Parse error: " + parseError); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
302 if (validationError != null && shouldSucceed == Boolean.TRUE) |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
303 throw new Failure("Validation error: " + validationError); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
304 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
305 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
306 private void handleExpect(String rest) throws Failure { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
307 String key = splitKey(rest); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
308 String expectedString = splitValue(rest); |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
309 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
310 Object actual = null; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
311 try { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
312 actual = extract(key); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
313 } catch (ValidationError e) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
314 throw new Failure(e.getMessage()); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
315 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
316 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
317 Object expected; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
318 try { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
319 if (actual instanceof Boolean) |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
320 expected = ParameterType.Bool.parse(key, expectedString); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
321 else if (actual instanceof Integer) |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
322 expected = ParameterType.Int.parse(key, expectedString); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
323 else |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
324 expected = expectedString; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
325 } catch (ValidationError e) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
326 String typ = actual.getClass().getName(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
327 throw new Failure("Cannot convert expected value <" + expectedString + "> to " + typ + ": " + e.getMessage()); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
328 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
329 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
330 if (actual.equals(expected)) |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
331 return; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
332 throw new Failure("Expected " + key + "=<" + expectedString + ">, found <" + actual + ">"); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
333 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
334 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
335 private Target.Validated tryValidate() throws ValidationError { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
336 if (validated == null) |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
337 validated = target.validate(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
338 return validated; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
339 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
340 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
341 private Object extract(String key) throws ValidationError, Failure { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
342 switch (key) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
343 case "valid": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
344 try { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
345 tryValidate(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
346 } catch (ValidationError e) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
347 return Boolean.FALSE; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
348 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
349 return Boolean.TRUE; |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
350 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
351 case "connect_scan": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
352 return tryValidate().connectScan(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
353 case "connect_port": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
354 return tryValidate().connectPort(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
355 case "connect_unix": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
356 return tryValidate().connectUnix(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
357 case "connect_tcp": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
358 return tryValidate().connectTcp(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
359 case "connect_tls_verify": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
360 switch (tryValidate().connectVerify()) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
361 case None: |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
362 return ""; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
363 case Cert: |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
364 return "cert"; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
365 case Hash: |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
366 return "hash"; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
367 case System: |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
368 return "system"; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
369 default: |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
370 throw new IllegalStateException("unreachable"); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
371 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
372 case "connect_certhash_digits": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
373 return tryValidate().connectCertHashDigits(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
374 case "connect_binary": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
375 return tryValidate().connectBinary(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
376 case "connect_clientkey": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
377 return tryValidate().connectClientKey(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
378 case "connect_clientcert": |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
379 return tryValidate().connectClientCert(); |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
380 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
381 default: |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
382 Parameter parm = Parameter.forName(key); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
383 if (parm != null) |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
384 return target.getObject(parm); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
385 else |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
386 throw new Failure("Unknown attribute: " + key); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
387 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
388 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
389 |
860
ae5834c3eb06
Suppress warning: [serial] serializable class Failure has no definition of serialVersionUID
Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
parents:
855
diff
changeset
|
390 @SuppressWarnings("serial") |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
391 public static class Failure extends Exception { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
392 private String filename = null; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
393 private int lineno = -1; |
797
9f6fe96c0ead
Arrange testing
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
792
diff
changeset
|
394 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
395 public Failure(String message) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
396 super(message); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
397 } |
797
9f6fe96c0ead
Arrange testing
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
792
diff
changeset
|
398 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
399 @Override |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
400 public String getMessage() { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
401 StringBuilder buffer = new StringBuilder(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
402 if (filename != null) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
403 buffer.append(filename).append(":"); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
404 if (lineno >= 0) |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
405 buffer.append(lineno).append(":"); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
406 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
407 buffer.append(super.getMessage()); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
408 return buffer.toString(); |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
409 } |
797
9f6fe96c0ead
Arrange testing
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
792
diff
changeset
|
410 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
411 public String getFilename() { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
412 return filename; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
413 } |
797
9f6fe96c0ead
Arrange testing
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
792
diff
changeset
|
414 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
415 public void setFilename(String filename) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
416 this.filename = filename; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
417 } |
797
9f6fe96c0ead
Arrange testing
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
792
diff
changeset
|
418 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
419 public int getLineno() { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
420 return lineno; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
421 } |
797
9f6fe96c0ead
Arrange testing
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
792
diff
changeset
|
422 |
834
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
423 public void setLineno(int lineno) { |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
424 this.lineno = lineno; |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
425 } |
5aa19bbed0d6
Comments and formatting
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
797
diff
changeset
|
426 } |
789
88c5b678e974
URL parser passes the tests.
Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
parents:
diff
changeset
|
427 } |