package com.l7tech.xml.xpath;

import java.util.concurrent.Callable;
import org.jetbrains.annotations.Nullable;

public class XpathVariableContext {
   private static final ThreadLocal<XpathVariableFinder> a = new ThreadLocal<>();

   @Nullable
   public static XpathVariableFinder getCurrentVariableFinder() {
      return a.get();
   }

   public static <RT> RT doWithVariableFinder(@Nullable XpathVariableFinder var0, Callable<RT> var1) throws Exception {
      XpathVariableFinder var2 = a.get();

      try {
         a.set(var0);
         return (RT)var1.call();
      } finally {
         a.set(var2);
      }
   }
}
