001package io.ebean;
002
003import java.util.Set;
004
005/**
006 * Provides paths and properties for an object graph that can be used to control what parts of the object graph
007 * is fetching (select and fetch clauses) and also can be used to control JSON marshalling (what parts of the object
008 * graph are included in the JSON).
009 */
010public interface FetchPath {
011
012  /**
013   * Return true if the path is included in this FetchPath.
014   */
015  boolean hasPath(String path);
016
017  /**
018   * Return the properties at the given path.
019   */
020  Set<String> getProperties(String path);
021
022  /**
023   * Apply the fetch path to the query.
024   */
025  <T> void apply(Query<T> query);
026}