diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificateParser.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificateParser.java index ba50a8474..fd49e40c7 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificateParser.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PushCertificateParser.java @@ -153,23 +153,7 @@ public String read() throws IOException { */ public static PushCertificate fromReader(Reader r) throws PackProtocolException, IOException { - PushCertificateParser parser = new PushCertificateParser(); - StreamReader reader = new StreamReader(r); - parser.receiveHeader(reader, true); - String line; - try { - while (!(line = reader.read()).isEmpty()) { - if (line.equals(BEGIN_SIGNATURE)) { - parser.receiveSignature(reader); - break; - } - parser.addCommand(line); - } - } catch (EOFException e) { - // EOF reached, but might have been at a valid state. Let build call below - // sort it out. - } - return parser.build(); + return new PushCertificateParser().parse(r); } private boolean received; @@ -229,6 +213,40 @@ private PushCertificateParser() { enabled = true; } + /** + * Parse a push certificate from a reader. + * + * @see #fromReader(Reader) + * @param r + * input reader; consumed only up until the end of the next + * signature in the input. + * @return the parsed certificate, or null if the reader was at EOF. + * @throws PackProtocolException + * if the certificate is malformed. + * @throws IOException + * if there was an error reading from the input. + * @since 4.1 + */ + public PushCertificate parse(Reader r) + throws PackProtocolException, IOException { + StreamReader reader = new StreamReader(r); + receiveHeader(reader, true); + String line; + try { + while (!(line = reader.read()).isEmpty()) { + if (line.equals(BEGIN_SIGNATURE)) { + receiveSignature(reader); + break; + } + addCommand(line); + } + } catch (EOFException e) { + // EOF reached, but might have been at a valid state. Let build call below + // sort it out. + } + return build(); + } + /** * @return the parsed certificate, or null if push certificates are disabled. * @throws IOException