Skip to content

schema builder fluency #465

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions core/pom.xml
Original file line number Diff line number Diff line change
@@ -166,6 +166,30 @@
<binaryCompatible>true</binaryCompatible>
<sourceCompatible>true</sourceCompatible>
</overrideCompatibilityChangeParameter>
<overrideCompatibilityChangeParameter>
<compatibilityChange>METHOD_REMOVED</compatibilityChange>
<binaryCompatible>true</binaryCompatible>
<sourceCompatible>true</sourceCompatible>
<semanticVersionLevel>MAJOR</semanticVersionLevel>
</overrideCompatibilityChangeParameter>
<overrideCompatibilityChangeParameter>
<compatibilityChange>METHOD_RETURN_TYPE_CHANGED</compatibilityChange>
<binaryCompatible>true</binaryCompatible>
<sourceCompatible>true</sourceCompatible>
<semanticVersionLevel>MAJOR</semanticVersionLevel>
</overrideCompatibilityChangeParameter>
<overrideCompatibilityChangeParameter>
<compatibilityChange>CONSTRUCTOR_REMOVED</compatibilityChange>
<binaryCompatible>true</binaryCompatible>
<sourceCompatible>true</sourceCompatible>
<semanticVersionLevel>MAJOR</semanticVersionLevel>
</overrideCompatibilityChangeParameter>
<overrideCompatibilityChangeParameter>
<compatibilityChange>METHOD_ABSTRACT_ADDED_TO_CLASS</compatibilityChange>
<binaryCompatible>true</binaryCompatible>
<sourceCompatible>true</sourceCompatible>
<semanticVersionLevel>MAJOR</semanticVersionLevel>
</overrideCompatibilityChangeParameter>
</overrideCompatibilityChangeParameters>
</parameter>
</configuration>
8 changes: 7 additions & 1 deletion core/src/main/java/org/everit/json/schema/ArraySchema.java
Original file line number Diff line number Diff line change
@@ -19,7 +19,7 @@ public class ArraySchema
* Builder class for {@link ArraySchema}.
*/
public static class Builder
extends Schema.Builder<ArraySchema> {
extends Schema.Builder<ArraySchema, Builder> {

private boolean requiresArray = true;

@@ -39,6 +39,12 @@ public static class Builder

private Schema containedItemSchema;

@Override
protected Builder getBuilder()
{
return this;
}

/**
* Adds an item schema for tuple validation. The array items of the subject under validation
* will be matched to expected schemas by their index. In other words the {n}th
8 changes: 7 additions & 1 deletion core/src/main/java/org/everit/json/schema/BooleanSchema.java
Original file line number Diff line number Diff line change
@@ -12,7 +12,13 @@ public class BooleanSchema extends Schema {
/**
* Builder class for {@link BooleanSchema}.
*/
public static class Builder extends Schema.Builder<BooleanSchema> {
public static class Builder extends Schema.Builder<BooleanSchema, Builder> {

@Override
protected Builder getBuilder()
{
return this;
}

@Override
public BooleanSchema build() {
Original file line number Diff line number Diff line change
@@ -17,14 +17,20 @@ public class CombinedSchema extends Schema {
/**
* Builder class for {@link CombinedSchema}.
*/
public static class Builder extends Schema.Builder<CombinedSchema> {
public static class Builder extends Schema.Builder<CombinedSchema, Builder> {

private ValidationCriterion criterion;

private Collection<Schema> subschemas = new ArrayList<>();

private boolean synthetic;

@Override
protected Builder getBuilder()
{
return this;
}

@Override
public CombinedSchema build() {
return new CombinedSchema(this);
Original file line number Diff line number Diff line change
@@ -10,11 +10,17 @@ public class ConditionalSchema extends Schema {
/**
* Builder class for {@link ConditionalSchema}.
*/
public static class Builder extends Schema.Builder<ConditionalSchema> {
public static class Builder extends Schema.Builder<ConditionalSchema, Builder> {
private Schema ifSchema;
private Schema thenSchema;
private Schema elseSchema;

@Override
protected Builder getBuilder()
{
return this;
}

public Builder ifSchema(final Schema ifSchema) {
this.ifSchema = ifSchema;
return this;
23 changes: 18 additions & 5 deletions core/src/main/java/org/everit/json/schema/ConstSchema.java
Original file line number Diff line number Diff line change
@@ -4,27 +4,40 @@

public class ConstSchema extends Schema {

public static class ConstSchemaBuilder extends Schema.Builder<ConstSchema> {
/**
* @deprecated This class has been renamed to "Builder".
*/
@Deprecated
public static class ConstSchemaBuilder extends Builder {
}

public static class Builder extends Schema.Builder<ConstSchema, Builder> {

private Object permittedValue;

public ConstSchemaBuilder permittedValue(Object permittedValue) {
public Builder permittedValue(Object permittedValue) {
this.permittedValue = permittedValue;
return this;
}

@Override
protected Builder getBuilder()
{
return this;
}

@Override public ConstSchema build() {
return new ConstSchema(this);
}
}

public static ConstSchemaBuilder builder() {
return new ConstSchemaBuilder();
public static Builder builder() {
return new Builder();
}

private final Object permittedValue;

protected ConstSchema(ConstSchemaBuilder builder) {
protected ConstSchema(Builder builder) {
super(builder);
this.permittedValue = toJavaValue(builder.permittedValue);
}
8 changes: 7 additions & 1 deletion core/src/main/java/org/everit/json/schema/EmptySchema.java
Original file line number Diff line number Diff line change
@@ -10,7 +10,13 @@ public class EmptySchema extends Schema {
/**
* Builder class for {@link EmptySchema}.
*/
public static class Builder extends Schema.Builder<EmptySchema> {
public static class Builder extends Schema.Builder<EmptySchema, Builder> {

@Override
protected Builder getBuilder()
{
return this;
}

@Override
public EmptySchema build() {
8 changes: 7 additions & 1 deletion core/src/main/java/org/everit/json/schema/EnumSchema.java
Original file line number Diff line number Diff line change
@@ -38,7 +38,13 @@ static List<Object> toJavaValues(List<Object> orgJsons) {
/**
* Builder class for {@link EnumSchema}.
*/
public static class Builder extends Schema.Builder<EnumSchema> {
public static class Builder extends Schema.Builder<EnumSchema, Builder> {

@Override
protected Builder getBuilder()
{
return this;
}

private List<Object> possibleValues = new ArrayList<>();

8 changes: 7 additions & 1 deletion core/src/main/java/org/everit/json/schema/FalseSchema.java
Original file line number Diff line number Diff line change
@@ -5,7 +5,13 @@
*/
public class FalseSchema extends Schema {

public static class Builder extends Schema.Builder<FalseSchema> {
public static class Builder extends Schema.Builder<FalseSchema, Builder> {

@Override
protected Builder getBuilder()
{
return this;
}

@Override public FalseSchema build() {
return new FalseSchema(this);
8 changes: 7 additions & 1 deletion core/src/main/java/org/everit/json/schema/NotSchema.java
Original file line number Diff line number Diff line change
@@ -12,7 +12,13 @@ public class NotSchema extends Schema {
/**
* Builder class for {@link NotSchema}.
*/
public static class Builder extends Schema.Builder<NotSchema> {
public static class Builder extends Schema.Builder<NotSchema, Builder> {

@Override
protected Builder getBuilder()
{
return this;
}

private Schema mustNotMatch;

8 changes: 7 additions & 1 deletion core/src/main/java/org/everit/json/schema/NullSchema.java
Original file line number Diff line number Diff line change
@@ -8,7 +8,13 @@ public class NullSchema extends Schema {
/**
* Builder class for {@link NullSchema}.
*/
public static class Builder extends Schema.Builder<NullSchema> {
public static class Builder extends Schema.Builder<NullSchema, Builder> {

@Override
protected Builder getBuilder()
{
return this;
}

@Override
public NullSchema build() {
8 changes: 7 additions & 1 deletion core/src/main/java/org/everit/json/schema/NumberSchema.java
Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@ public class NumberSchema extends Schema {
/**
* Builder class for {@link NumberSchema}.
*/
public static class Builder extends Schema.Builder<NumberSchema> {
public static class Builder extends Schema.Builder<NumberSchema, Builder> {

private Number minimum;

@@ -30,6 +30,12 @@ public static class Builder extends Schema.Builder<NumberSchema> {

private boolean requiresInteger = false;

@Override
protected Builder getBuilder()
{
return this;
}

@Override
public NumberSchema build() {
return new NumberSchema(this);
11 changes: 8 additions & 3 deletions core/src/main/java/org/everit/json/schema/ObjectSchema.java
Original file line number Diff line number Diff line change
@@ -27,11 +27,11 @@ public class ObjectSchema extends Schema {
/**
* Builder class for {@link ObjectSchema}.
*/
public static class Builder extends Schema.Builder<ObjectSchema> {
public static class Builder extends Schema.Builder<ObjectSchema, Builder> {

private static final RegexpFactory DEFAULT_REGEXP_FACTORY = new JavaUtilRegexpFactory();

private static final Regexp toRegexp(String pattern) {
private static Regexp toRegexp(String pattern) {
return DEFAULT_REGEXP_FACTORY.createHandler(pattern);
}

@@ -59,6 +59,12 @@ private static final Regexp toRegexp(String pattern) {

public boolean oneOrMoreDefaultProperty = false;

@Override
protected Builder getBuilder()
{
return this;
}

public Builder additionalProperties(boolean additionalProperties) {
this.additionalProperties = additionalProperties;
return this;
@@ -159,7 +165,6 @@ public Builder propertyNameSchema(Schema propertyNameSchema) {
this.propertyNameSchema = propertyNameSchema;
return this;
}

}

public static Builder builder() {
Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@ public class ReferenceSchema extends Schema {
/**
* Builder class for {@link ReferenceSchema}.
*/
public static class Builder extends Schema.Builder<ReferenceSchema> {
public static class Builder extends Schema.Builder<ReferenceSchema, Builder> {

private ReferenceSchema retval;

@@ -25,6 +25,12 @@ public static class Builder extends Schema.Builder<ReferenceSchema> {
*/
private String refValue = "";

@Override
protected Builder getBuilder()
{
return this;
}

/**
* This method caches its result, so multiple invocations will return referentially the same
* {@link ReferenceSchema} instance.
Loading