package com.l7tech.server.policy;

import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.assertion.ext.VariableServices;
import com.l7tech.policy.variable.PolicyVariableUtils;
import com.l7tech.policy.variable.Syntax;
import com.l7tech.policy.variable.VariableMetadata;
import com.l7tech.server.policy.variable.ExpandVariables;
import java.util.Map;

public class VariableServicesImpl implements VariableServices {
   private final Audit a;
   private final Assertion b;

   public VariableServicesImpl(Audit var1, Assertion var2) {
      this.a = var1;
      this.b = var2;
   }

   public String[] getReferencedVarNames(String var1) {
      return Syntax.getReferencedNames(var1);
   }

   public Object expandVariable(String var1, Map var2) {
      return var1 != null && var2 != null ? ExpandVariables.process(var1, var2, this.a) : null;
   }

   public Map<String, VariableMetadata> getVariablesSetByPredecessors() {
      return PolicyVariableUtils.getVariablesSetByPredecessors(this.b);
   }
}
