/*_############################################################################
  _##
  _##  SNMP4J-Agent 3 - ReferenceVariableProvider.java
  _##
  _##  Copyright (C) 2005-2026  Frank Fock (SNMP4J.org)
  _##
  _##  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 org.snmp4j.agent.io.prop;

import org.snmp4j.agent.mo.util.VariableProvider;
import org.snmp4j.smi.Variable;

/**
 * A {@link VariableProvider} that never resolves a variable to a concrete runtime value but instead
 * returns an {@link UnresolvedReference} preserving the requested name/OID. It is used when a
 * {@link PropertyMOInput} configuration is parsed for inspection/documentation purposes (no running
 * agent), so that {@code {$name}} value references and {@code ${name}}/{@code $#{name}} OID-index
 * references are kept visible instead of being silently discarded.
 *
 * @author SNMP4J.org
 * @version 3.9.2
 * @since 3.9.2
 */
public class ReferenceVariableProvider implements VariableProvider {

    /**
     * Returns an {@link UnresolvedReference} for the given name, thereby marking the value as an
     * unresolved configuration reference.
     *
     * @param name
     *    the name or instance OID of the referenced variable.
     * @return an {@link UnresolvedReference} wrapping {@code name} (never {@code null}).
     */
    @Override
    public Variable getVariable(String name) {
        return new UnresolvedReference(name);
    }
}
