/* * Copyright [2014] [Christian Loehnert, krampenschiesser@gmail.com] * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package de.ks.validation; import javax.validation.ElementKind; import javax.validation.Path; import java.lang.reflect.Field; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Spliterator; import java.util.function.Consumer; /** * */ public class FieldPath implements Path { private final Field field; private final Node node; private final List<Node> nodes; public FieldPath(Field field) { this.field = field; this.node = new Node() { @Override public String getName() { return field.getName(); } @Override public boolean isInIterable() { return true; } @Override public Integer getIndex() { return 0; } @Override public Object getKey() { return field.getName(); } @Override public ElementKind getKind() { return ElementKind.PROPERTY; } @Override public <T extends Node> T as(Class<T> nodeType) { return null; } }; nodes = Collections.singletonList(node); } @Override public Iterator<Node> iterator() { return nodes.iterator(); } @Override public void forEach(Consumer<? super Node> action) { nodes.forEach(action); } @Override public Spliterator<Node> spliterator() { return nodes.spliterator(); } }