001/*
002 * Shredzone Commons
003 *
004 * Copyright (C) 2012 Richard "Shred" Körber
005 *   http://commons.shredzone.org
006 *
007 * This program is free software: you can redistribute it and/or modify
008 * it under the terms of the GNU Library General Public License as
009 * published by the Free Software Foundation, either version 3 of the
010 * License, or (at your option) any later version.
011 *
012 * This program is distributed in the hope that it will be useful,
013 * but WITHOUT ANY WARRANTY; without even the implied warranty of
014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
015 * GNU General Public License for more details.
016 *
017 * You should have received a copy of the GNU Library General Public License
018 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
019 */
020
021package org.shredzone.commons.view;
022
023import java.util.Map;
024
025import javax.annotation.Nonnull;
026import javax.annotation.ParametersAreNonnullByDefault;
027
028/**
029 * Context that holds all data required for building a path.
030 *
031 * @author Richard "Shred" Körber
032 */
033@ParametersAreNonnullByDefault
034public interface PathContext {
035
036    /**
037     * Gets a {@link Signature} for this {@link PathContext}.
038     *
039     * @return {@link Signature} object
040     */
041    @Nonnull Signature getSignature();
042
043    /**
044     * Gets the qualifier to be used.
045     *
046     * @return qualifier, or {@code null} for the standard qualifier
047     */
048    String getQualifier();
049
050    /**
051     * Gets a map of variables to be used.
052     *
053     * @return map of variables
054     */
055    @Nonnull Map<String, Object> getVariables();
056
057}