Skip to content

Commit 24306a2

Browse files
committed
migrating ReferenceSchema to visitor model
1 parent 4eccef5 commit 24306a2

File tree

4 files changed

+27
-9
lines changed

4 files changed

+27
-9
lines changed

core/src/main/java/org/everit/json/schema/ReferenceSchema.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,6 @@ public ReferenceSchema(final Builder builder) {
5656
this.refValue = requireNonNull(builder.refValue, "refValue cannot be null");
5757
}
5858

59-
@Override
60-
public void validate(final Object subject) {
61-
if (referredSchema == null) {
62-
throw new IllegalStateException("referredSchema must be injected before validation");
63-
}
64-
referredSchema.validate(subject);
65-
}
66-
6759
@Override
6860
public boolean definesProperty(String field) {
6961
if (referredSchema == null) {
@@ -116,7 +108,7 @@ protected boolean canEqual(Object other) {
116108
}
117109

118110
@Override void accept(Visitor visitor) {
119-
throw new UnsupportedOperationException("not yet implemented");
111+
visitor.visitReferenceSchema(this);
120112
}
121113

122114
@Override void describePropertiesTo(JSONPrinter writer) {

core/src/main/java/org/everit/json/schema/ValidatingVisitor.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,17 @@ private static boolean isNull(Object obj) {
7272
}
7373
}
7474

75+
@Override void visitReferenceSchema(ReferenceSchema referenceSchema) {
76+
Schema referredSchema = referenceSchema.getReferredSchema();
77+
if (referredSchema == null) {
78+
throw new IllegalStateException("referredSchema must be injected before validation");
79+
}
80+
ValidationException failure = getFailureOfSchema(referredSchema, subject);
81+
if (failure != null) {
82+
failureReporter.failure(failure);
83+
}
84+
}
85+
7586
ValidationException getFailureOfSchema(Schema schema, Object input) {
7687
Object origSubject = this.subject;
7788
this.subject = input;

core/src/main/java/org/everit/json/schema/Visitor.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,4 +102,7 @@ void visitFalseSchema(FalseSchema falseSchema) {
102102

103103
void visitNotSchema(NotSchema notSchema) {
104104
}
105+
106+
void visitReferenceSchema(ReferenceSchema referenceSchema) {
107+
}
105108
}

core/src/test/java/org/everit/json/schema/ReferenceSchemaTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,18 @@ public void validationShouldDelegateToReferredSchema() {
5454
.expect();
5555
}
5656

57+
@Test(expected = IllegalStateException.class)
58+
public void validateThrowsExc_IfNoReferredSchemaIsSet() {
59+
ReferenceSchema subject = ReferenceSchema.builder().build();
60+
subject.validate(null);
61+
}
62+
63+
@Test(expected = IllegalStateException.class)
64+
public void definesPropertyThrowsExc_IfNoReferredSchemaIsSet() {
65+
ReferenceSchema subject = ReferenceSchema.builder().build();
66+
subject.definesProperty("propName");
67+
}
68+
5769
@Test
5870
public void equalsVerifier() {
5971
EqualsVerifier.forClass(ReferenceSchema.class)

0 commit comments

Comments
 (0)