diff options
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/yql/JavaListTypeChecker.java')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/yql/JavaListTypeChecker.java | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/yql/JavaListTypeChecker.java b/container-search/src/main/java/com/yahoo/search/yql/JavaListTypeChecker.java new file mode 100644 index 00000000000..86e2cbf01ff --- /dev/null +++ b/container-search/src/main/java/com/yahoo/search/yql/JavaListTypeChecker.java @@ -0,0 +1,29 @@ +// Copyright 2016 Yahoo Inc. 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; + +class JavaListTypeChecker extends OperatorTypeChecker { + + private final Class<?> elementType; + + public JavaListTypeChecker(Operator parent, int idx, Class<?> elementType) { + super(parent, idx); + this.elementType = elementType; + } + + @Override + public void check(Object argument) { + Preconditions.checkNotNull(argument, "Argument %s of %s must not be null", idx, parent); + Preconditions.checkArgument(argument instanceof List, "Argument %s of %s must be a List<%s>", idx, parent, elementType.getName(), argument.getClass().getName()); + List<?> lst = (List<?>) argument; + for (Object elt : lst) { + Preconditions.checkNotNull(elt, "Argument %s of %s List elements may not be null", idx, parent); + Preconditions.checkArgument(elementType.isInstance(elt), "Argument %s of %s List elements must be %s (is %s)", idx, parent, elementType.getName(), elt.getClass().getName()); + } + } + +} + |