Skip to content

Commit 824dd37

Browse files
committed
Refactor and optimize code
1 parent 1da9e62 commit 824dd37

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+403
-545
lines changed

src/main/java/com/relogiclabs/json/schema/JsonAssert.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.relogiclabs.json.schema;
22

3-
import com.relogiclabs.json.schema.internal.util.DebugUtils;
3+
import com.relogiclabs.json.schema.internal.util.DebugUtilities;
44
import com.relogiclabs.json.schema.message.MessageFormatter;
55
import com.relogiclabs.json.schema.tree.JsonTree;
66
import com.relogiclabs.json.schema.tree.RuntimeContext;
@@ -34,7 +34,7 @@ public JsonAssert(String schema) {
3434
public void isValid(String jsonActual) {
3535
runtime.getExceptions().clear();
3636
var jsonTree = new JsonTree(runtime, jsonActual);
37-
DebugUtils.print(schemaTree, jsonTree);
37+
DebugUtilities.print(schemaTree, jsonTree);
3838
schemaTree.getRoot().match(jsonTree.getRoot());
3939
if(!schemaTree.getRoot().match(jsonTree.getRoot()))
4040
throw new IllegalStateException("Exception not thrown");
@@ -50,7 +50,7 @@ public static void isValid(String schemaExpected, String jsonActual) {
5050
var runtime = new RuntimeContext(MessageFormatter.SCHEMA_ASSERTION, true);
5151
var schemaTree = new SchemaTree(runtime, schemaExpected);
5252
var jsonTree = new JsonTree(runtime, jsonActual);
53-
DebugUtils.print(schemaTree, jsonTree);
53+
DebugUtilities.print(schemaTree, jsonTree);
5454
if(!schemaTree.getRoot().match(jsonTree.getRoot()))
5555
throw new IllegalStateException("Exception not thrown");
5656
}
@@ -66,7 +66,7 @@ public static void areEqual(String jsonExpected, String jsonActual) {
6666
var runtime = new RuntimeContext(MessageFormatter.JSON_ASSERTION, true);
6767
var expectedTree = new JsonTree(runtime, jsonExpected);
6868
var actualTree = new JsonTree(runtime, jsonActual);
69-
DebugUtils.print(expectedTree, actualTree);
69+
DebugUtilities.print(expectedTree, actualTree);
7070
if(!expectedTree.getRoot().match(actualTree.getRoot()))
7171
throw new IllegalStateException("Exception not thrown");
7272
}

src/main/java/com/relogiclabs/json/schema/JsonSchema.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.relogiclabs.json.schema;
22

3-
import com.relogiclabs.json.schema.internal.util.DebugUtils;
3+
import com.relogiclabs.json.schema.internal.util.DebugUtilities;
44
import com.relogiclabs.json.schema.message.MessageFormatter;
55
import com.relogiclabs.json.schema.tree.JsonTree;
66
import com.relogiclabs.json.schema.tree.RuntimeContext;
@@ -38,7 +38,7 @@ public JsonSchema(String schema) {
3838
public boolean isValid(String json) {
3939
exceptions.clear();
4040
var jsonTree = new JsonTree(runtime, json);
41-
DebugUtils.print(schemaTree, jsonTree);
41+
DebugUtilities.print(schemaTree, jsonTree);
4242
return schemaTree.getRoot().match(jsonTree.getRoot());
4343
}
4444

src/main/java/com/relogiclabs/json/schema/collection/IndexHashMap.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
import java.util.Map;
1010
import java.util.Set;
1111

12-
public class IndexHashMap<TK, TV extends Keyable<TK>> implements IndexMap<TK, TV> {
12+
public final class IndexHashMap<TK, TV extends Keyable<TK>> implements IndexMap<TK, TV> {
1313

14-
private boolean readOnly;
14+
private boolean unmodifiable;
1515
private Map<TK, TV> map;
1616
private List<TV> list;
1717

@@ -42,16 +42,17 @@ public Collection<TV> values() {
4242
}
4343

4444
@Override
45-
public boolean isReadOnly() {
46-
return readOnly;
45+
public boolean isUnmodifiable() {
46+
return unmodifiable;
4747
}
4848

4949
@Override
50-
public void makeReadOnly() {
51-
if(readOnly) return;
50+
public IndexHashMap<TK, TV> asUnmodifiable() {
51+
if(unmodifiable) return this;
5252
list = Collections.unmodifiableList(list);
5353
map = Collections.unmodifiableMap(map);
54-
readOnly = true;
54+
unmodifiable = true;
55+
return this;
5556
}
5657

5758
@Override
@@ -134,4 +135,4 @@ public void clear() {
134135
list.clear();
135136
map.clear();
136137
}
137-
}
138+
}

src/main/java/com/relogiclabs/json/schema/collection/IndexMap.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ public interface IndexMap<TK, TV extends Keyable<TK>> extends Collection<TV> {
88
TV get(TK key);
99
Set<TK> keySet();
1010
Collection<TV> values();
11-
boolean isReadOnly();
12-
void makeReadOnly();
13-
}
11+
boolean isUnmodifiable();
12+
IndexMap<TK, TV> asUnmodifiable();
13+
}

src/main/java/com/relogiclabs/json/schema/internal/antlr/DateTimeLexer.interp

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -35,30 +35,30 @@ null
3535
token symbolic names:
3636
null
3737
ERA
38-
YEAR_NUM4
39-
YEAR_NUM2
38+
YEAR_NUMBER4
39+
YEAR_NUMBER2
4040
MONTH_NAME
4141
MONTH_SHORT_NAME
42-
MONTH_NUM2
43-
MONTH_NUM
42+
MONTH_NUMBER2
43+
MONTH_NUMBER
4444
WEEKDAY_NAME
4545
WEEKDAY_SHORT_NAME
46-
DAY_NUM2
47-
DAY_NUM
48-
AM_PM
49-
HOUR_NUM2
50-
HOUR_NUM
51-
MINUTE_NUM2
52-
MINUTE_NUM
53-
SECOND_NUM2
54-
SECOND_NUM
55-
FRACTION_NUM06
56-
FRACTION_NUM05
57-
FRACTION_NUM04
58-
FRACTION_NUM03
59-
FRACTION_NUM02
60-
FRACTION_NUM01
61-
FRACTION_NUM
46+
DAY_NUMBER2
47+
DAY_NUMBER
48+
CLOCK_AM_PM
49+
HOUR_NUMBER2
50+
HOUR_NUMBER
51+
MINUTE_NUMBER2
52+
MINUTE_NUMBER
53+
SECOND_NUMBER2
54+
SECOND_NUMBER
55+
FRACTION_NUMBER6
56+
FRACTION_NUMBER5
57+
FRACTION_NUMBER4
58+
FRACTION_NUMBER3
59+
FRACTION_NUMBER2
60+
FRACTION_NUMBER1
61+
FRACTION_NUMBER
6262
UTC_OFFSET_TIME2
6363
UTC_OFFSET_TIME1
6464
UTC_OFFSET_HOUR
@@ -68,30 +68,30 @@ TEXT
6868

6969
rule names:
7070
ERA
71-
YEAR_NUM4
72-
YEAR_NUM2
71+
YEAR_NUMBER4
72+
YEAR_NUMBER2
7373
MONTH_NAME
7474
MONTH_SHORT_NAME
75-
MONTH_NUM2
76-
MONTH_NUM
75+
MONTH_NUMBER2
76+
MONTH_NUMBER
7777
WEEKDAY_NAME
7878
WEEKDAY_SHORT_NAME
79-
DAY_NUM2
80-
DAY_NUM
81-
AM_PM
82-
HOUR_NUM2
83-
HOUR_NUM
84-
MINUTE_NUM2
85-
MINUTE_NUM
86-
SECOND_NUM2
87-
SECOND_NUM
88-
FRACTION_NUM06
89-
FRACTION_NUM05
90-
FRACTION_NUM04
91-
FRACTION_NUM03
92-
FRACTION_NUM02
93-
FRACTION_NUM01
94-
FRACTION_NUM
79+
DAY_NUMBER2
80+
DAY_NUMBER
81+
CLOCK_AM_PM
82+
HOUR_NUMBER2
83+
HOUR_NUMBER
84+
MINUTE_NUMBER2
85+
MINUTE_NUMBER
86+
SECOND_NUMBER2
87+
SECOND_NUMBER
88+
FRACTION_NUMBER6
89+
FRACTION_NUMBER5
90+
FRACTION_NUMBER4
91+
FRACTION_NUMBER3
92+
FRACTION_NUMBER2
93+
FRACTION_NUMBER1
94+
FRACTION_NUMBER
9595
UTC_OFFSET_TIME2
9696
UTC_OFFSET_TIME1
9797
UTC_OFFSET_HOUR

src/main/java/com/relogiclabs/json/schema/internal/antlr/DateTimeLexer.java

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ public class DateTimeLexer extends Lexer {
1919
protected static final PredictionContextCache _sharedContextCache =
2020
new PredictionContextCache();
2121
public static final int
22-
ERA=1, YEAR_NUM4=2, YEAR_NUM2=3, MONTH_NAME=4, MONTH_SHORT_NAME=5, MONTH_NUM2=6,
23-
MONTH_NUM=7, WEEKDAY_NAME=8, WEEKDAY_SHORT_NAME=9, DAY_NUM2=10, DAY_NUM=11,
24-
AM_PM=12, HOUR_NUM2=13, HOUR_NUM=14, MINUTE_NUM2=15, MINUTE_NUM=16, SECOND_NUM2=17,
25-
SECOND_NUM=18, FRACTION_NUM06=19, FRACTION_NUM05=20, FRACTION_NUM04=21,
26-
FRACTION_NUM03=22, FRACTION_NUM02=23, FRACTION_NUM01=24, FRACTION_NUM=25,
27-
UTC_OFFSET_TIME2=26, UTC_OFFSET_TIME1=27, UTC_OFFSET_HOUR=28, SYMBOL=29,
28-
WHITESPACE=30, TEXT=31;
22+
ERA=1, YEAR_NUMBER4=2, YEAR_NUMBER2=3, MONTH_NAME=4, MONTH_SHORT_NAME=5,
23+
MONTH_NUMBER2=6, MONTH_NUMBER=7, WEEKDAY_NAME=8, WEEKDAY_SHORT_NAME=9,
24+
DAY_NUMBER2=10, DAY_NUMBER=11, CLOCK_AM_PM=12, HOUR_NUMBER2=13, HOUR_NUMBER=14,
25+
MINUTE_NUMBER2=15, MINUTE_NUMBER=16, SECOND_NUMBER2=17, SECOND_NUMBER=18,
26+
FRACTION_NUMBER6=19, FRACTION_NUMBER5=20, FRACTION_NUMBER4=21, FRACTION_NUMBER3=22,
27+
FRACTION_NUMBER2=23, FRACTION_NUMBER1=24, FRACTION_NUMBER=25, UTC_OFFSET_TIME2=26,
28+
UTC_OFFSET_TIME1=27, UTC_OFFSET_HOUR=28, SYMBOL=29, WHITESPACE=30, TEXT=31;
2929
public static String[] channelNames = {
3030
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
3131
};
@@ -36,11 +36,12 @@ public class DateTimeLexer extends Lexer {
3636

3737
private static String[] makeRuleNames() {
3838
return new String[] {
39-
"ERA", "YEAR_NUM4", "YEAR_NUM2", "MONTH_NAME", "MONTH_SHORT_NAME", "MONTH_NUM2",
40-
"MONTH_NUM", "WEEKDAY_NAME", "WEEKDAY_SHORT_NAME", "DAY_NUM2", "DAY_NUM",
41-
"AM_PM", "HOUR_NUM2", "HOUR_NUM", "MINUTE_NUM2", "MINUTE_NUM", "SECOND_NUM2",
42-
"SECOND_NUM", "FRACTION_NUM06", "FRACTION_NUM05", "FRACTION_NUM04", "FRACTION_NUM03",
43-
"FRACTION_NUM02", "FRACTION_NUM01", "FRACTION_NUM", "UTC_OFFSET_TIME2",
39+
"ERA", "YEAR_NUMBER4", "YEAR_NUMBER2", "MONTH_NAME", "MONTH_SHORT_NAME",
40+
"MONTH_NUMBER2", "MONTH_NUMBER", "WEEKDAY_NAME", "WEEKDAY_SHORT_NAME",
41+
"DAY_NUMBER2", "DAY_NUMBER", "CLOCK_AM_PM", "HOUR_NUMBER2", "HOUR_NUMBER",
42+
"MINUTE_NUMBER2", "MINUTE_NUMBER", "SECOND_NUMBER2", "SECOND_NUMBER",
43+
"FRACTION_NUMBER6", "FRACTION_NUMBER5", "FRACTION_NUMBER4", "FRACTION_NUMBER3",
44+
"FRACTION_NUMBER2", "FRACTION_NUMBER1", "FRACTION_NUMBER", "UTC_OFFSET_TIME2",
4445
"UTC_OFFSET_TIME1", "UTC_OFFSET_HOUR", "SYMBOL", "WHITESPACE", "TEXT"
4546
};
4647
}
@@ -57,13 +58,13 @@ private static String[] makeLiteralNames() {
5758
private static final String[] _LITERAL_NAMES = makeLiteralNames();
5859
private static String[] makeSymbolicNames() {
5960
return new String[] {
60-
null, "ERA", "YEAR_NUM4", "YEAR_NUM2", "MONTH_NAME", "MONTH_SHORT_NAME",
61-
"MONTH_NUM2", "MONTH_NUM", "WEEKDAY_NAME", "WEEKDAY_SHORT_NAME", "DAY_NUM2",
62-
"DAY_NUM", "AM_PM", "HOUR_NUM2", "HOUR_NUM", "MINUTE_NUM2", "MINUTE_NUM",
63-
"SECOND_NUM2", "SECOND_NUM", "FRACTION_NUM06", "FRACTION_NUM05", "FRACTION_NUM04",
64-
"FRACTION_NUM03", "FRACTION_NUM02", "FRACTION_NUM01", "FRACTION_NUM",
65-
"UTC_OFFSET_TIME2", "UTC_OFFSET_TIME1", "UTC_OFFSET_HOUR", "SYMBOL",
66-
"WHITESPACE", "TEXT"
61+
null, "ERA", "YEAR_NUMBER4", "YEAR_NUMBER2", "MONTH_NAME", "MONTH_SHORT_NAME",
62+
"MONTH_NUMBER2", "MONTH_NUMBER", "WEEKDAY_NAME", "WEEKDAY_SHORT_NAME",
63+
"DAY_NUMBER2", "DAY_NUMBER", "CLOCK_AM_PM", "HOUR_NUMBER2", "HOUR_NUMBER",
64+
"MINUTE_NUMBER2", "MINUTE_NUMBER", "SECOND_NUMBER2", "SECOND_NUMBER",
65+
"FRACTION_NUMBER6", "FRACTION_NUMBER5", "FRACTION_NUMBER4", "FRACTION_NUMBER3",
66+
"FRACTION_NUMBER2", "FRACTION_NUMBER1", "FRACTION_NUMBER", "UTC_OFFSET_TIME2",
67+
"UTC_OFFSET_TIME1", "UTC_OFFSET_HOUR", "SYMBOL", "WHITESPACE", "TEXT"
6768
};
6869
}
6970
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();

src/main/java/com/relogiclabs/json/schema/internal/antlr/DateTimeLexer.tokens

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
11
ERA=1
2-
YEAR_NUM4=2
3-
YEAR_NUM2=3
2+
YEAR_NUMBER4=2
3+
YEAR_NUMBER2=3
44
MONTH_NAME=4
55
MONTH_SHORT_NAME=5
6-
MONTH_NUM2=6
7-
MONTH_NUM=7
6+
MONTH_NUMBER2=6
7+
MONTH_NUMBER=7
88
WEEKDAY_NAME=8
99
WEEKDAY_SHORT_NAME=9
10-
DAY_NUM2=10
11-
DAY_NUM=11
12-
AM_PM=12
13-
HOUR_NUM2=13
14-
HOUR_NUM=14
15-
MINUTE_NUM2=15
16-
MINUTE_NUM=16
17-
SECOND_NUM2=17
18-
SECOND_NUM=18
19-
FRACTION_NUM06=19
20-
FRACTION_NUM05=20
21-
FRACTION_NUM04=21
22-
FRACTION_NUM03=22
23-
FRACTION_NUM02=23
24-
FRACTION_NUM01=24
25-
FRACTION_NUM=25
10+
DAY_NUMBER2=10
11+
DAY_NUMBER=11
12+
CLOCK_AM_PM=12
13+
HOUR_NUMBER2=13
14+
HOUR_NUMBER=14
15+
MINUTE_NUMBER2=15
16+
MINUTE_NUMBER=16
17+
SECOND_NUMBER2=17
18+
SECOND_NUMBER=18
19+
FRACTION_NUMBER6=19
20+
FRACTION_NUMBER5=20
21+
FRACTION_NUMBER4=21
22+
FRACTION_NUMBER3=22
23+
FRACTION_NUMBER2=23
24+
FRACTION_NUMBER1=24
25+
FRACTION_NUMBER=25
2626
UTC_OFFSET_TIME2=26
2727
UTC_OFFSET_TIME1=27
2828
UTC_OFFSET_HOUR=28

src/main/java/com/relogiclabs/json/schema/internal/grammar/DateTimeLexer.g4

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,39 @@ lexer grammar DateTimeLexer;
22

33
ERA : 'G';
44

5-
YEAR_NUM4 : 'YYYY';
6-
YEAR_NUM2 : 'YY';
5+
YEAR_NUMBER4 : 'YYYY';
6+
YEAR_NUMBER2 : 'YY';
77

88
MONTH_NAME : 'MMMM';
99
MONTH_SHORT_NAME : 'MMM';
10-
MONTH_NUM2 : 'MM';
11-
MONTH_NUM : 'M';
10+
MONTH_NUMBER2 : 'MM';
11+
MONTH_NUMBER : 'M';
1212

1313
WEEKDAY_NAME : 'DDDD';
1414
WEEKDAY_SHORT_NAME : 'DDD';
1515

16-
DAY_NUM2 : 'DD';
17-
DAY_NUM : 'D';
16+
DAY_NUMBER2 : 'DD';
17+
DAY_NUMBER : 'D';
1818

19-
AM_PM : 't';
19+
CLOCK_AM_PM : 't';
2020

21-
HOUR_NUM2 : 'hh';
22-
HOUR_NUM : 'h';
21+
HOUR_NUMBER2 : 'hh';
22+
HOUR_NUMBER : 'h';
2323

24-
MINUTE_NUM2 : 'mm';
25-
MINUTE_NUM : 'm';
24+
MINUTE_NUMBER2 : 'mm';
25+
MINUTE_NUMBER : 'm';
2626

27-
SECOND_NUM2 : 'ss';
28-
SECOND_NUM : 's';
27+
SECOND_NUMBER2 : 'ss';
28+
SECOND_NUMBER : 's';
2929

30-
FRACTION_NUM06 : 'ffffff';
31-
FRACTION_NUM05 : 'fffff';
32-
FRACTION_NUM04 : 'ffff';
33-
FRACTION_NUM03 : 'fff';
34-
FRACTION_NUM02 : 'ff';
35-
FRACTION_NUM01 : 'f';
30+
FRACTION_NUMBER6 : 'ffffff';
31+
FRACTION_NUMBER5 : 'fffff';
32+
FRACTION_NUMBER4 : 'ffff';
33+
FRACTION_NUMBER3 : 'fff';
34+
FRACTION_NUMBER2 : 'ff';
35+
FRACTION_NUMBER1 : 'f';
3636

37-
FRACTION_NUM : 'F';
37+
FRACTION_NUMBER : 'F';
3838

3939
UTC_OFFSET_TIME2 : 'ZZZ';
4040
UTC_OFFSET_TIME1 : 'ZZ';
@@ -43,5 +43,4 @@ UTC_OFFSET_HOUR : 'Z';
4343
SYMBOL : [!-/:-@[-`{-~]+;
4444
WHITESPACE : [\n\r\t ]+;
4545
46-
TEXT : '\'' ( ~'\'' | '\'\'')* '\'';
47-
46+
TEXT : '\'' ( ~'\'' | '\'\'')* '\'';

src/main/java/com/relogiclabs/json/schema/internal/message/ActualHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import static com.relogiclabs.json.schema.internal.message.MessageHelper.getTypeName;
99
import static com.relogiclabs.json.schema.internal.util.StringHelper.quote;
1010

11-
public class ActualHelper {
11+
public final class ActualHelper {
1212

1313
private ActualHelper() {
1414
throw new UnsupportedOperationException();

0 commit comments

Comments
 (0)