[Demonstration 1]

[Buggy Method]
@PostMapping(value = "upload")
@ResponseBody
public RestResponseBo upload(HttpServletRequest request, @RequestParam("file") MultipartFile[] multipartFiles) throws IOException {
    UserVo users = this.user(request);
    Integer uid = users.getUid();
    List<String> errorFiles = new ArrayList<>();
    try {
        for (MultipartFile multipartFile : multipartFiles) {
            String fname = multipartFile.getOriginalFilename();
            if (multipartFile.getSize() <= WebConst.MAX_FILE_SIZE) {
                String fkey = TaleUtils.getFileKey(fname);
                String ftype = TaleUtils.isImage(multipartFile.getInputStream()) ? Types.IMAGE.getType() : Types.FILE.getType();
                File file = new File(fkey);
                try {
                    FileCopyUtils.copy(multipartFile.getInputStream(), new FileOutputStream(file));
                } catch (IOException e) {
                    e.printStackTrace();
                }
                attachService.save(fname, fkey, ftype, uid);
            } else {
                errorFiles.add(fname);
            }
        }
    } catch (Exception e) {
        return RestResponseBo.fail();
    }
    return RestResponseBo.ok(errorFiles);
}

[Buggy Hunk]
File file = new File(fkey);

[Patch]
File file = new File(CLASSPATH+fkey);

[Demonstration 2]

[Buggy Method]
@Test(enabled = true)
public void testResolveLocales() {
    final String bundlepackage = "de/alpharogroup/lang";
    final String bundlename = "resources";
    Map<File, Locale> fileToLocaleMap = LocaleResolver.resolveLocales(bundlepackage, bundlename);
    AssertJUnit.assertTrue(fileToLocaleMap.containsValue(Locale.GERMAN));
    AssertJUnit.assertTrue(fileToLocaleMap.containsValue(Locale.GERMANY));
    AssertJUnit.assertTrue(fileToLocaleMap.containsValue(Locale.ENGLISH));
}

[Buggy Hunk]
Map<File, Locale> fileToLocaleMap = LocaleResolver.resolveLocales(bundlepackage,

[Patch]
final Map<File, Locale> fileToLocaleMap = LocaleResolver.resolveLocales(bundlepackage,

[Demonstration 3]

[Buggy Method]
@Override
public void read(FileItem fileItem, ReadCallback callback) throws IOException {
    if (Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {
        throw new IOException("External storage is not mounted.");
    }
    File[] paths = context.getExternalFilesDirs("files");
    if (paths == null) {
        throw new IOException("File does not exists.");
    }
    File file = null;
    for (File path : paths) {
        file = new File(path, fileItem.getName());
        if (file.exists() && !file.isDirectory()) {
            break;
        }
    }
    if (file == null) {
        throw new IOException("File does not exists.");
    }
    if (file.length() == 0) {
        throw new IOException("File size is 0, invalid file.");
    }
    FileInputStream is = new FileInputStream(file);
    try {
        callback.invoke(is);
    } finally {
        is.close();
    }
}

[Buggy Hunk]
if (Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {

[Patch]
if (!Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {