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;
    }