List of usage examples for org.eclipse.jgit.patch Patch getErrors
public List<FormatError> getErrors()
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./*from w w w .j a v a 2 s .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.google.gitiles.DiffServletTest.java
License:Apache License
private static Patch parsePatch(byte[] enc) { byte[] buf = BaseEncoding.base64().decode(new String(enc, UTF_8)); Patch p = new Patch(); p.parse(buf, 0, buf.length);// ww w . j a va 2s.c om assertEquals(ImmutableList.of(), p.getErrors()); return p; }
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./*ww w. ja va2 s .co 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; }