code: public static boolean adjustOutputPath(File outputDir, Object comp, Logger log) {
          boolean adjusted = false;
          ComponentAccess cp = new ComponentAccess(comp);
          for (Access in : cp.inputs()) {
              String fieldName = in.getField().getName();
              Class fieldType = in.getField().getType();
              if (fieldType == File.class) {
                  Role role = in.getField().getAnnotation(Role.class);
                  if (role != null && Annotations.plays(role, Role.OUTPUT)) {
                      try {
                          File f = (File) in.getField().get(comp);
                          if (f != null && !f.isAbsolute()) {
                              f = new File(outputDir, f.getName());
                              in.setFieldValue(f);
                              adjusted = true;
                              if (log.isLoggable(Level.CONFIG)) {
                                  log.config("Adjusting output for '" + fieldName + "' to " + f);
                              }
                          }
                      } catch (Exception ex) {
                          throw new ComponentException("Failed adjusting output path for '" + fieldName);
                      }
                  }
              }
          }
          return adjusted;
      }
docs: Adjust the output path.
  
  @param outputDir
  @param comp
  @param log
  @return true is adjusted, false otherwise.