Skip to content

Commit

Permalink
Base validation method on a functional interface
Browse files Browse the repository at this point in the history
Add stubs for all Java versions
  • Loading branch information
matozoid committed Mar 19, 2017
1 parent 156c897 commit fedf7a5
Show file tree
Hide file tree
Showing 21 changed files with 107 additions and 21 deletions.
Expand Up @@ -126,7 +126,7 @@ public <N extends Node> ParseResult<N> parse(ParseStart<N> start, Provider provi
commentsInserter.insertComments(resultNode, comments.copy().getComments());
}

configuration.getValidator().validate(resultNode, new ProblemReporter(parser.problems));
configuration.getValidator().accept(resultNode, new ProblemReporter(parser.problems));
parser.problems.sort(PROBLEM_BY_BEGIN_POSITION);

return new ParseResult<>(resultNode, parser.problems, parser.getTokens(),
Expand Down
Expand Up @@ -21,7 +21,7 @@

package com.github.javaparser;

import com.github.javaparser.ast.validator.BaseJavaValidator;
import com.github.javaparser.ast.validator.Java1_0Validator;
import com.github.javaparser.ast.validator.Java8Validator;
import com.github.javaparser.ast.validator.Validator;

Expand Down Expand Up @@ -89,7 +89,7 @@ public Validator getValidator() {

/**
* The validator to run directly after parsing.
* By default it is {@link BaseJavaValidator}
* By default it is {@link Java1_0Validator}
*/
public ParserConfiguration setValidator(Validator validator) {
assertNotNull(validator);
Expand Down
Expand Up @@ -20,7 +20,7 @@
/**
* Verifies that only allowed modifiers are used where modifiers are expected.
*/
public class BaseModifierValidator extends VisitorValidator {
public class Java1_0ModifierValidator extends VisitorValidator {
@Override
public void visit(ClassOrInterfaceDeclaration n, ProblemReporter reporter) {
if (n.isInterface()) {
Expand Down
Expand Up @@ -12,8 +12,8 @@
* Contains validations that are valid for every Java version.
* Used by default by the static JavaParser methods.
*/
public class BaseJavaValidator extends Validators {
public BaseJavaValidator() {
public class Java1_0Validator extends Validators {
public Java1_0Validator() {
super(
new VisitorValidator() {
@Override
Expand Down Expand Up @@ -103,7 +103,7 @@ public void visit(AssignExpr n, ProblemReporter reporter) {
super.visit(n, reporter);
}
},
new BaseModifierValidator()
new Java1_0ModifierValidator()
);
}
}
@@ -0,0 +1,12 @@
package com.github.javaparser.ast.validator;

/**
* This validator validates according to Java 8 syntax rules.
*/
public class Java1_1Validator extends Validators {
public Java1_1Validator() {
super(
new Java1_0Validator()
);
}
}
@@ -0,0 +1,12 @@
package com.github.javaparser.ast.validator;

/**
* This validator validates according to Java 8 syntax rules.
*/
public class Java1_2Validator extends Validators {
public Java1_2Validator() {
super(
new Java1_1Validator()
);
}
}
@@ -0,0 +1,12 @@
package com.github.javaparser.ast.validator;

/**
* This validator validates according to Java 8 syntax rules.
*/
public class Java1_3Validator extends Validators {
public Java1_3Validator() {
super(
new Java1_2Validator()
);
}
}
@@ -0,0 +1,12 @@
package com.github.javaparser.ast.validator;

/**
* This validator validates according to Java 8 syntax rules.
*/
public class Java1_4Validator extends Validators {
public Java1_4Validator() {
super(
new Java1_3Validator()
);
}
}
@@ -0,0 +1,12 @@
package com.github.javaparser.ast.validator;

/**
* This validator validates according to Java 8 syntax rules.
*/
public class Java5Validator extends Validators {
public Java5Validator() {
super(
new Java1_4Validator()
);
}
}
@@ -0,0 +1,12 @@
package com.github.javaparser.ast.validator;

/**
* This validator validates according to Java 8 syntax rules.
*/
public class Java6Validator extends Validators {
public Java6Validator() {
super(
new Java5Validator()
);
}
}
@@ -0,0 +1,12 @@
package com.github.javaparser.ast.validator;

/**
* This validator validates according to Java 8 syntax rules.
*/
public class Java7Validator extends Validators {
public Java7Validator() {
super(
new Java6Validator()
);
}
}
Expand Up @@ -6,7 +6,7 @@
public class Java8Validator extends Validators {
public Java8Validator() {
super(
new BaseJavaValidator()
new Java7Validator()
);
}
}
Expand Up @@ -10,7 +10,7 @@
public class Java9Validator extends Validators {
public Java9Validator() {
super(
new BaseJavaValidator(),
new Java1_0Validator(),
new VisitorValidator() {
@Override
public void visit(Name n, ProblemReporter arg) {
Expand Down
Expand Up @@ -7,6 +7,6 @@
*/
public class NoProblemsValidator implements Validator {
@Override
public void validate(Node node, ProblemReporter problemReporter) {
public void accept(Node node, ProblemReporter problemReporter) {
}
}
Expand Up @@ -2,14 +2,16 @@

import com.github.javaparser.ast.Node;

import java.util.function.BiConsumer;

/**
* A validator that can be run on a node to check for semantic errors.
* It is fully up to the implementor how to do this.
*/
public interface Validator {
public interface Validator extends BiConsumer<Node, ProblemReporter> {
/**
* @param node the node that wants to be validated
* @param problemReporter when found, validation errors can be reported here
*/
void validate(Node node, ProblemReporter problemReporter);
void accept(Node node, ProblemReporter problemReporter);
}
Expand Up @@ -21,7 +21,7 @@ public List<Validator> getValidators() {
}

@Override
public void validate(Node node, ProblemReporter problemReporter) {
validators.forEach(v -> v.validate(node, problemReporter));
public void accept(Node node, ProblemReporter problemReporter) {
validators.forEach(v -> v.accept(node, problemReporter));
}
}
Expand Up @@ -10,7 +10,7 @@
*/
public abstract class VisitorValidator extends VoidVisitorAdapter<ProblemReporter> implements Validator {
@Override
public void validate(Node node, ProblemReporter problemReporter) {
public void accept(Node node, ProblemReporter problemReporter) {
node.accept(this, problemReporter);
}
}
Expand Up @@ -560,10 +560,10 @@ private static void initializePropertyMetaModels() {
unaryExprMetaModel.getDeclaredPropertyMetaModels().add(unaryExprMetaModel.expressionPropertyMetaModel);
unaryExprMetaModel.operatorPropertyMetaModel = new PropertyMetaModel(unaryExprMetaModel, "operator", com.github.javaparser.ast.expr.UnaryExpr.Operator.class, Optional.empty(), false, false, false, false, false);
unaryExprMetaModel.getDeclaredPropertyMetaModels().add(unaryExprMetaModel.operatorPropertyMetaModel);
unaryExprMetaModel.postfixPropertyMetaModel = new PropertyMetaModel(unaryExprMetaModel, "postfix", boolean.class, Optional.empty(), false, true, false, false, false);
unaryExprMetaModel.getDerivedPropertyMetaModels().add(unaryExprMetaModel.postfixPropertyMetaModel);
unaryExprMetaModel.prefixPropertyMetaModel = new PropertyMetaModel(unaryExprMetaModel, "prefix", boolean.class, Optional.empty(), false, true, false, false, false);
unaryExprMetaModel.getDerivedPropertyMetaModels().add(unaryExprMetaModel.prefixPropertyMetaModel);
unaryExprMetaModel.postfixPropertyMetaModel = new PropertyMetaModel(unaryExprMetaModel, "postfix", boolean.class, Optional.empty(), false, true, false, false, false);
unaryExprMetaModel.getDerivedPropertyMetaModels().add(unaryExprMetaModel.postfixPropertyMetaModel);
variableDeclarationExprMetaModel.annotationsPropertyMetaModel = new PropertyMetaModel(variableDeclarationExprMetaModel, "annotations", com.github.javaparser.ast.expr.AnnotationExpr.class, Optional.of(annotationExprMetaModel), false, false, true, false, false);
variableDeclarationExprMetaModel.getDeclaredPropertyMetaModels().add(variableDeclarationExprMetaModel.annotationsPropertyMetaModel);
variableDeclarationExprMetaModel.modifiersPropertyMetaModel = new PropertyMetaModel(variableDeclarationExprMetaModel, "modifiers", com.github.javaparser.ast.Modifier.class, Optional.empty(), false, false, false, true, false);
Expand Down
Expand Up @@ -12,7 +12,7 @@ public class UnaryExprMetaModel extends ExpressionMetaModel {

public PropertyMetaModel operatorPropertyMetaModel;

public PropertyMetaModel postfixPropertyMetaModel;

public PropertyMetaModel prefixPropertyMetaModel;

public PropertyMetaModel postfixPropertyMetaModel;
}
Expand Up @@ -9,7 +9,7 @@
import static com.github.javaparser.Providers.provider;
import static com.github.javaparser.utils.TestUtils.assertProblems;

public class BaseModifierValidatorTest {
public class Java1_0ModifierValidatorTest {
private final String allModifiers = "public protected private abstract static final transient volatile synchronized native strictfp transitive default ";

@Test
Expand Down
Expand Up @@ -15,7 +15,7 @@
import static com.github.javaparser.utils.TestUtils.assertNoProblems;
import static com.github.javaparser.utils.TestUtils.assertProblems;

public class BaseJavaValidatorTest {
public class Java1_0ValidatorTest {
@Test
public void tryWithoutAnything() {
ParseResult<Statement> result = new JavaParser().parse(STATEMENT, provider("try{}"));
Expand Down

0 comments on commit fedf7a5

Please sign in to comment.