Skip to content

Commit ff878b0

Browse files
committed
Update constraints for extension enhancement
1 parent 7a18cea commit ff878b0

File tree

13 files changed

+325
-373
lines changed

13 files changed

+325
-373
lines changed

src/main/java/com/relogiclabs/jschema/function/FunctionProvider.java

Lines changed: 0 additions & 16 deletions
This file was deleted.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.relogiclabs.jschema.function;
2+
3+
import com.relogiclabs.jschema.extension.ConstraintFunctions;
4+
import com.relogiclabs.jschema.internal.function.SchemaFunctions5;
5+
6+
/**
7+
* {@code SchemaFunctions} is designed to provide public access to all internal constraint
8+
* functions.
9+
*/
10+
public class SchemaFunctions extends SchemaFunctions5 {
11+
public static SchemaFunctions getInstance(ConstraintFunctions functions) {
12+
var instance = functions.getRuntime().getImports().getInstance(SchemaFunctions.class);
13+
if(instance == null) throw new IllegalStateException("Instance not found for "
14+
+ SchemaFunctions.class);
15+
instance.setContext(functions);
16+
return instance;
17+
}
18+
}

src/main/java/com/relogiclabs/jschema/internal/function/CoreLibrary.java

Lines changed: 0 additions & 14 deletions
This file was deleted.

src/main/java/com/relogiclabs/jschema/internal/function/DateTimeAgent.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77
import com.relogiclabs.jschema.message.ActualDetail;
88
import com.relogiclabs.jschema.message.ErrorDetail;
99
import com.relogiclabs.jschema.message.ExpectedDetail;
10-
import com.relogiclabs.jschema.node.JFunction;
10+
import com.relogiclabs.jschema.node.JNode;
1111
import com.relogiclabs.jschema.node.JString;
1212
import com.relogiclabs.jschema.time.DateTimeType;
1313
import com.relogiclabs.jschema.time.JsonDateTime;
14+
import com.relogiclabs.jschema.type.EString;
1415

1516
import static com.relogiclabs.jschema.internal.util.StringHelper.quote;
1617

@@ -30,26 +31,28 @@ public DateTimeAgent(DateTimeParser parser) {
3031
this.parser = parser;
3132
}
3233

33-
public JsonDateTime parse(JFunction caller, JString dateTime) {
34+
public JsonDateTime parse(JNode invoker, EString dateTime) {
3435
try {
3536
if(parser == null) parser = new DateTimeParser(pattern, type);
3637
return parser.parse(dateTime.getValue());
3738
} catch(DateTimeLexerException ex) {
38-
fail(caller, new FunctionValidationException(
39+
if(!(dateTime instanceof JString node)) fail(invoker, ex);
40+
else fail(invoker, new FunctionValidationException(
3941
new ErrorDetail(ex.getCode(), ex.getMessage()),
40-
new ExpectedDetail(caller, "a valid " + type + " pattern"),
41-
new ActualDetail(dateTime, "found " + quote(pattern) + " that is invalid"), ex));
42+
new ExpectedDetail(invoker, "a valid " + type + " pattern"),
43+
new ActualDetail(node, "found " + quote(pattern) + " that is invalid"), ex));
4244
} catch(InvalidDateTimeException ex) {
43-
fail(caller, new FunctionValidationException(
45+
if(!(dateTime instanceof JString node)) fail(invoker, ex);
46+
else fail(invoker, new FunctionValidationException(
4447
new ErrorDetail(ex.getCode(), ex.getMessage()),
45-
new ExpectedDetail(caller, "a valid " + type + " formatted as " + quote(pattern)),
46-
new ActualDetail(dateTime, "target " + dateTime + " is invalid or malformed"),
48+
new ExpectedDetail(invoker, "a valid " + type + " formatted as " + quote(pattern)),
49+
new ActualDetail(node, "target " + dateTime + " is invalid or malformed"),
4750
ex));
4851
}
4952
return null;
5053
}
5154

52-
private static void fail(JFunction caller, RuntimeException exception) {
53-
caller.getRuntime().getExceptions().fail(exception);
55+
private static void fail(JNode invoker, RuntimeException exception) {
56+
invoker.getRuntime().getExceptions().fail(exception);
5457
}
5558
}

src/main/java/com/relogiclabs/jschema/internal/function/FunctionId.java

Lines changed: 0 additions & 35 deletions
This file was deleted.

src/main/java/com/relogiclabs/jschema/internal/function/FunctionLoader.java

Lines changed: 0 additions & 84 deletions
This file was deleted.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.relogiclabs.jschema.internal.function;
2+
3+
import com.relogiclabs.jschema.extension.ConstraintFunctions;
4+
import com.relogiclabs.jschema.node.JNode;
5+
import com.relogiclabs.jschema.tree.RuntimeContext;
6+
import lombok.Getter;
7+
import lombok.Setter;
8+
9+
import java.lang.reflect.Method;
10+
11+
@Getter @Setter
12+
public abstract class FunctionSupport implements ConstraintFunctions {
13+
protected RuntimeContext runtime;
14+
protected Method method;
15+
protected JNode invoker;
16+
17+
public <T extends JNode> T getInvoker(Class<T> type) {
18+
return type.cast(invoker);
19+
}
20+
21+
public String getOutline(Object object) {
22+
return runtime.getOutlineFormatter().getOutline(object);
23+
}
24+
}

src/main/java/com/relogiclabs/jschema/internal/function/IPAddress.java renamed to src/main/java/com/relogiclabs/jschema/internal/function/IPAddressAgent.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import java.util.regex.Pattern;
44

5-
public final class IPAddress {
5+
public final class IPAddressAgent {
66
public static final int IPV4_VERSION = 4;
77
public static final int IPV6_VERSION = 6;
88

@@ -32,7 +32,7 @@ public final class IPAddress {
3232
private static final Pattern IPV4_PATTERN = Pattern.compile(IPV4_REGEX);
3333
private static final Pattern IPV6_PATTERN = Pattern.compile(IPV6_REGEX);
3434

35-
private IPAddress() {
35+
private IPAddressAgent() {
3636
throw new UnsupportedOperationException("This class is not intended for instantiation");
3737
}
3838

0 commit comments

Comments
 (0)