Example usage for org.eclipse.jgit.patch FileHeader getNewPath

List of usage examples for org.eclipse.jgit.patch FileHeader getNewPath

Introduction

In this page you can find the example usage for org.eclipse.jgit.patch FileHeader getNewPath.

Prototype

public String getNewPath() 

Source Link

Document

Get the new name associated with this file.

Usage

From source file:MySmartApply.java

License:Eclipse Distribution License

/**
 * Executes the {@code ApplyCommand} command with all the options and
 * parameters collected by the setter methods (e.g.
 * {@link #setPatch(InputStream)} of this class. Each instance of this class
 * should only be used for one invocation of the command. Don't call this
 * method twice on an instance./*  w  w w .  j  ava 2s. com*/
 *
 * @return an {@link ApplyResult} object representing the command result
 * @throws GitAPIException
 * @throws PatchFormatException
 * @throws PatchApplyException
 */
public ApplyResult call() throws GitAPIException, PatchFormatException, PatchApplyException {
    ApplyResult r = new ApplyResult();
    try {
        final Patch p = new Patch();
        try {
            p.parse(in);
        } finally {
            in.close();
        }
        if (!p.getErrors().isEmpty())
            throw new PatchFormatException(p.getErrors());
        for (FileHeader fh : p.getFiles()) {

            if (listener != null)
                listener.setFilename(
                        getFile((fh.getChangeType() != ChangeType.ADD) ? fh.getOldPath() : fh.getNewPath(),
                                false).getName());

            if (fh.getChangeType() == ChangeType.ADD || fh.getChangeType() == ChangeType.MODIFY
                    || fh.getChangeType() == ChangeType.COPY) {
                if (fh.getNewPath().contains(".lang.php") || fh.getNewPath().contains(".gitignore")
                        || fh.getNewPath().equals("includes/config.php")
                        || fh.getNewPath().contains("/images")) {
                    if (fh.getNewPath().contains(".lang.php") || fh.getNewPath().contains("/images"))
                        this.failed_files.add(getFile(
                                (fh.getChangeType() != ChangeType.ADD) ? fh.getOldPath() : fh.getNewPath(),
                                false));

                    if (listener != null)
                        listener.skipped();
                    continue;
                }
            }

            if (listener != null)
                listener.started();

            ChangeType type = fh.getChangeType();
            File f = null;
            switch (type) {
            case ADD:
                f = getFile(fh.getNewPath(), true);
                apply(f, fh);
                break;
            case MODIFY:
                f = getFile(fh.getOldPath(), false);
                apply(f, fh);
                break;
            case DELETE:
                f = getFile(fh.getOldPath(), false);
                if (!f.delete())
                    throw new PatchApplyException(MessageFormat.format(JGitText.get().cannotDeleteFile, f));
                break;
            case RENAME:
                f = getFile(fh.getOldPath(), false);
                File dest = getFile(fh.getNewPath(), false);
                if (!f.renameTo(dest))
                    throw new PatchApplyException(
                            MessageFormat.format(JGitText.get().renameFileFailed, f, dest));
                break;
            case COPY:
                f = getFile(fh.getOldPath(), false);
                byte[] bs = IO.readFully(f);
                FileOutputStream fos = new FileOutputStream(getFile(fh.getNewPath(), true));
                try {
                    fos.write(bs);
                } finally {
                    fos.close();
                }
            }

            // ... //

            if (!failed_files.contains(f) && type != ChangeType.DELETE)
                r.addUpdatedFile(f);

            // ... //
        }
    } catch (IOException e) {
        throw new PatchApplyException(MessageFormat.format(JGitText.get().patchApplyException, e.getMessage()),
                e);
    }

    return r;
}

From source file:com.github.rwhogg.git_vcr.Util.java

License:Open Source License

/**
 * getFilesChanged returns a list of all the files changed by this patch
 * @param patch The patch to check//from   w  w  w.  j av a 2 s .  co m
 * @return a list of pairs of files changed (first is the old path, second is the new path)
 */
public static List<ImmutablePair<String, String>> getFilesChanged(Patch patch) {
    List<ImmutablePair<String, String>> changeList = new LinkedList<>();
    List<? extends FileHeader> headers = patch.getFiles();
    for (FileHeader header : headers) {
        ImmutablePair<String, String> pair = new ImmutablePair<>(header.getOldPath(), header.getNewPath());
        changeList.add(pair);
    }
    return changeList;
}

From source file:com.google.gerrit.server.patch.PatchListEntry.java

License:Apache License

PatchListEntry(final FileHeader hdr, List<Edit> editList) {
    changeType = toChangeType(hdr);//from   www  . ja  v  a2  s.c om
    patchType = toPatchType(hdr);

    switch (changeType) {
    case DELETED:
        oldName = null;
        newName = hdr.getOldPath();
        break;

    case ADDED:
    case MODIFIED:
        oldName = null;
        newName = hdr.getNewPath();
        break;

    case COPIED:
    case RENAMED:
        oldName = hdr.getOldPath();
        newName = hdr.getNewPath();
        break;

    default:
        throw new IllegalArgumentException("Unsupported type " + changeType);
    }

    header = compact(hdr);

    if (hdr instanceof CombinedFileHeader || hdr.getHunks().isEmpty() //
            || hdr.getOldMode() == FileMode.GITLINK || hdr.getNewMode() == FileMode.GITLINK) {
        edits = Collections.emptyList();
    } else {
        edits = Collections.unmodifiableList(editList);
    }

    int ins = 0;
    int del = 0;
    for (Edit e : editList) {
        del += e.getEndA() - e.getBeginA();
        ins += e.getEndB() - e.getBeginB();
    }
    insertions = ins;
    deletions = del;
}

From source file:com.wirelust.sonar.plugins.bitbucket.PullRequestFacade.java

License:Open Source License

public void loadPatch(PullRequest pullRequest) throws IOException {

    Response response = bitbucketClient.getPullRequestDiff(config.repositoryOwner(), config.repository(),
            pullRequest.getId());/*from w  w w.j av a  2 s .  c  o m*/
    LOGGER.debug("received bitbucket response getPullRequestDiff:{}", response.getStatus());

    String diffString = response.readEntity(String.class);
    InputStream diffStream = new ByteArrayInputStream(diffString.getBytes(StandardCharsets.UTF_8));

    Patch patch = new Patch();
    patch.parse(diffStream);

    modifiedLinesByFile = new HashMap<>();

    for (FileHeader fileHeader : patch.getFiles()) {
        List<Integer> patchLocationMapping = new ArrayList<>();
        modifiedLinesByFile.put(fileHeader.getNewPath(), patchLocationMapping);

        if (fileHeader.getHunks() != null) {
            loadHeaderHunks(patchLocationMapping, fileHeader);
        }
    }
}

From source file:org.eclipse.orion.server.git.patch.ApplyCommand.java

License:Open Source License

/**
 * Executes the {@code ApplyCommand} command with all the options and
 * parameters collected by the setter methods (e.g.
 * {@link #setPatch(InputStream)} of this class. Each instance of this class
 * should only be used for one invocation of the command. Don't call this
 * method twice on an instance.//from   w w w .ja va  2 s  . c o m
 *
 * @return collection of formatting errors, if any
 */
public ApplyResult call() {
    ApplyResult r = new ApplyResult();
    try {
        final Patch p = new Patch();
        p.parse(in);
        if (!p.getErrors().isEmpty())
            return r.setFormatErrors(p.getErrors());
        for (FileHeader fh : p.getFiles()) {
            ChangeType type = fh.getChangeType();
            File f = null;
            switch (type) {
            case ADD:
                f = getFile(fh.getNewPath(), true);
                apply(f, fh, r);
                break;
            case MODIFY:
                f = getFile(fh.getOldPath(), false);
                apply(f, fh, r);
                break;
            case DELETE:
                f = getFile(fh.getOldPath(), false);
                if (!f.delete())
                    r.addApplyError(new ApplyError(fh, ChangeType.DELETE));
                break;
            case RENAME:
                f = getFile(fh.getOldPath(), false);
                File dest = getFile(fh.getNewPath(), false);
                if (!f.renameTo(dest))
                    r.addApplyError(new ApplyError(fh, ChangeType.RENAME));
                break;
            case COPY:
                f = getFile(fh.getOldPath(), false);
                byte[] bs = IO.readFully(f);
                FileWriter fw = new FileWriter(getFile(fh.getNewPath(), true));
                fw.write(new String(bs));
                fw.close();
            }
        }
    } catch (IOException e) {
        r.addApplyError(new ApplyError(e));
    } finally {
        IOUtilities.safeClose(in);
    }
    return r;
}

From source file:org.uberfire.java.nio.fs.jgit.util.commands.DiffBranches.java

License:Apache License

private FileDiff createFileDiff(final DiffEntry elem, final FileHeader header, final Edit edit) {
    try {/*w ww.ja va2  s  . c  o  m*/
        final String changeType = header.getChangeType().toString();
        final int startA = edit.getBeginA();
        final int endA = edit.getEndA();
        final int startB = edit.getBeginB();
        final int endB = edit.getEndB();

        String pathA = header.getOldPath();
        String pathB = header.getNewPath();

        final List<String> linesA = getLines(elem.getOldId().toObjectId(), startA, endA);
        final List<String> linesB = getLines(elem.getNewId().toObjectId(), startB, endB);

        return new FileDiff(pathA, pathB, startA, endA, startB, endB, changeType, linesA, linesB);
    } catch (IOException e) {
        throw new GitException("A problem occurred when trying to obtain diffs between files", e);
    }
}