package org.netbeans.gradle.project.tasks.vars; import org.jtrim.utils.ExceptionHelper; import org.netbeans.gradle.project.NbGradleProject; import org.netbeans.gradle.project.api.task.TaskVariableMap; import org.openide.util.Lookup; public final class StringResolvers { private static final StringResolver GLOBAL_RESOLVER = bindVariableResolver( VariableResolvers.getDefault(), TaskVariableMaps.getGlobalVariableMap()); private static final StringResolverSelector DEFAULT_RESOLVER_SELECTOR = new StringResolverSelector() { @Override public StringResolver getContextFreeResolver() { return GLOBAL_RESOLVER; } @Override public StringResolver getProjectResolver(NbGradleProject project, Lookup context) { TaskVariableMap varMap = TaskVariableMaps.createProjectActionVariableMap(project, context); return bindVariableResolver(VariableResolvers.getDefault(), varMap); } }; public static StringResolverSelector getDefaultResolverSelector() { return DEFAULT_RESOLVER_SELECTOR; } public static StringResolver getDefaultGlobalResolver() { return getDefaultResolverSelector().getContextFreeResolver(); } public static StringResolver bindVariableResolver(final VariableResolver resolver, final TaskVariableMap variables) { ExceptionHelper.checkNotNullArgument(resolver, "resolver"); ExceptionHelper.checkNotNullArgument(variables, "variables"); return new StringResolver() { @Override public String resolveString(String str) { return resolver.replaceVars(str, variables); } @Override public String resolveStringIfValid(String str) { return resolver.replaceVarsIfValid(str, variables); } }; } private StringResolvers() { throw new AssertionError(); } }