[Demonstration 1]

[Buggy Method]
@Override
public void onMessage(final String data) {
    LOGGER.info("Data " + data);
}

[Buggy Hunk]
LOGGER.info("Data " + data);

[Patch]
LOGGER.info("TextMessage.Data (" + data + ")");

[Demonstration 2]

[Buggy Method]
public RemoteViews getRemoteView(RemoteViews views, ScoreItem scoreObject) {
    String league = UtilityHelper.getLeague(Integer.parseInt(scoreObject.getLeague()));
    Timber.d("League: " + league);
    String matchDay = "Match day: " + scoreObject.getMatchDay();
    String homeTeamName = scoreObject.getHome();
    String awayTeamName = scoreObject.getAway();
    String score = UtilityHelper.getScores(scoreObject.getHomeGoals(), scoreObject.getAwayGoals());
    views.setTextViewText(R.id.widget_item_league, league);
    views.setTextViewText(R.id.widget_item_home_name, homeTeamName);
    views.setTextViewText(R.id.widget_item_away_name, awayTeamName);
    views.setTextViewText(R.id.widget_item_score, score);
    views.setTextViewText(R.id.widget_item_match_day, matchDay);
    views.setImageViewResource(R.id.widget_item_home_crest, UtilityHelper.getTeamCrestByTeamName(homeTeamName));
    views.setImageViewResource(R.id.widget_item_away_crest, UtilityHelper.getTeamCrestByTeamName(awayTeamName));
    views.setContentDescription(R.id.widget_item_home_crest, homeTeamName);
    views.setContentDescription(R.id.widget_item_away_crest, awayTeamName);
    views.setContentDescription(R.id.widget_item_home_name, homeTeamName);
    views.setContentDescription(R.id.widget_item_away_name, awayTeamName);
    views.setContentDescription(R.id.widget_item_league, league);
    views.setContentDescription(R.id.widget_item_match_day, matchDay);
    views.setContentDescription(R.id.widget_item_score, score);
    return views;
}

[Buggy Hunk]
String league = UtilityHelper.getLeague(Integer.parseInt(scoreObject.getLeague()));

[Patch]
String league = UtilityHelper.getLeague(getResources(), Integer.parseInt(scoreObject.getLeague()));

[Demonstration 3]

[Buggy Method]
@Override
public void run(DeployJson dc, DeployServers.DeployServer server) throws Exception {
    String hostname = server.getServer();
    log.info("server:" + hostname + " deploy..");
    // handle local protocal
    if (hostname.startsWith("local:")) {
        String realpath = server.getServer().substring(6);
        File jarFileObj = new File(uploadFile);
        FileUtils.copyFileToDir(jarFileObj, realpath);
        return;
    }
    String deployTo = server.getDeployto();
    String chown = server.getChown();
    String chmod = server.getChmod();
    SSHDriver driver = server.getDriver();
    driver.mkdir(deployTo, chmod, chown);
    String release = deployTo + "/" + Constants.REMOTE_RELEASE_DIR;
    driver.mkdir(release, chmod, chown);
    String releaseCommitidDir = deployTo + "/" + app.getDeployContext().getReleseDir();
    driver.mkdir(releaseCommitidDir, chmod, chown);
    SCPClient scpClient = driver.getScpClient();
    String tmpUser = app.getDeployContext().getRemoteTmp();
    log.info(AnsiColorBuilder.green("start to upload " + uploadFile + " to " + hostname));
    scpClient.put(uploadFile, tmpUser);
    if (updateFileName.endsWith("jar")) {
        String mv2target;
        mv2target = "mv -f " + tmpUser + "/" + updateFileName + " " + releaseCommitidDir;
        driver.execCommand(mv2target);
        driver.changePermission(releaseCommitidDir, chmod, chown, false);
        driver.symlink(releaseCommitidDir, updateFileName, dc.getLinkJarName());
    } else if (updateFileName.endsWith("tgz") || updateFileName.endsWith("tar.gz")) {
        String unzipCmd = "tar -zmxvf " + tmpUser + "/" + updateFileName + " -C " + releaseCommitidDir;
        driver.execCommand(unzipCmd);
        driver.symlink(releaseCommitidDir, updateFileName, dc.getLinkJarName());
    }
}

[Buggy Hunk]
driver.symlink(releaseCommitidDir,updateFileName,dc.getLinkJarName());

[Patch]
driver.symlink(releaseCommitidDir,finalJarName,dc.getLinkJarName());