Skip to content

Commit

Permalink
Jsm/schema builder fluency (#3)
Browse files Browse the repository at this point in the history
* update Schema.Builder to return subclassed builder

* rename ConstSchema.ConstSchemaBuilder to Builder for consistency

* add japicmp config

* add missed japicmp config
  • Loading branch information
JoshMcCullough authored Aug 17, 2022
1 parent 440c9ef commit 5eeae5c
Show file tree
Hide file tree
Showing 28 changed files with 270 additions and 72 deletions.
24 changes: 24 additions & 0 deletions core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
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
Expand Up @@ -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;

Expand All @@ -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
Expand Down
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
Expand Up @@ -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() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
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
Expand Up @@ -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);
}
Expand Down
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
Expand Up @@ -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() {
Expand Down
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
Expand Up @@ -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<>();

Expand Down
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
Expand Up @@ -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);
Expand Down
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
Expand Up @@ -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;

Expand Down
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
Expand Up @@ -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() {
Expand Down
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
Expand Up @@ -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;

Expand All @@ -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);
Expand Down
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
Expand Up @@ -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);
}

Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -159,7 +165,6 @@ public Builder propertyNameSchema(Schema propertyNameSchema) {
this.propertyNameSchema = propertyNameSchema;
return this;
}

}

public static Builder builder() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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.
Expand Down
Loading

0 comments on commit 5eeae5c

Please sign in to comment.