aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/yql/ArgumentsTypeChecker.java
blob: 014ec9df237b7efaca2b4a79a155ee7d925f4432 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.yql;

import com.google.common.base.Preconditions;

import java.util.List;

final class ArgumentsTypeChecker {

    private final Operator target;
    private final List<OperatorTypeChecker> checkers;

    public ArgumentsTypeChecker(Operator target, List<OperatorTypeChecker> checkers) {
        this.target = target;
        this.checkers = checkers;
    }

    public void check(Object... args) {
        if (args == null) {
            Preconditions.checkArgument(checkers.size() == 0, "Operator %s argument count mismatch: expected %s got 0", target, checkers.size());
            return;
        } else {
            Preconditions.checkArgument(args.length == checkers.size(), "Operator %s argument count mismatch: expected: %s got %s", target, checkers.size(), args.length);
        }
        for (int i = 0; i < checkers.size(); ++i) {
            checkers.get(i).check(args[i]);
        }
    }

}