@Override
  public List<String> getDependency(String name) {
    //normalize all input names to be in the form of IP addresses
    name = NetUtils.normalizeHostName(name);

    if (name==null) {
      return Collections.emptyList();
    }

    List<String> dependencies = dependencyCache.get(name);
    if (dependencies == null) {
      //not cached
      dependencies = getRawMapping().getDependency(name);
      if(dependencies != null) {
        dependencyCache.put(name, dependencies);
      }
    }

    return dependencies;
}
@Test
  public void testNoArgsMeansNoResult() {
    Configuration conf = new Configuration();
    conf.setInt(ScriptBasedMapping.SCRIPT_ARG_COUNT_KEY,
                ScriptBasedMapping.MIN_ALLOWABLE_ARGS - 1);
    conf.set(ScriptBasedMapping.SCRIPT_FILENAME_KEY, "any-filename-1");
    conf.set(ScriptBasedMappingWithDependency.DEPENDENCY_SCRIPT_FILENAME_KEY, 
        "any-filename-2");
    conf.setInt(ScriptBasedMapping.SCRIPT_ARG_COUNT_KEY, 10);

    ScriptBasedMappingWithDependency mapping = createMapping(conf);
    List<String> names = new ArrayList<String>();
    names.add("some.machine.name");
    names.add("other.machine.name");
    List<String> result = mapping.resolve(names);
    assertNull("Expected an empty list for resolve", result);
    result = mapping.getDependency("some.machine.name");
    assertNull("Expected an empty list for getDependency", result);
  }