diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/transport/http/NetscapeCookieFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/transport/http/NetscapeCookieFile.java index c8db52dd5..e16adb9bf 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/transport/http/NetscapeCookieFile.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/transport/http/NetscapeCookieFile.java @@ -277,64 +277,6 @@ public final class NetscapeCookieFile { return cookie; } - /** - * Writes all the cookies being maintained in the set being returned by - * {@link #getCookies(boolean)} to the underlying file. - *

- * Session-cookies will not be persisted. - * - * @param url - * url for which to write the cookies (important to derive - * default values for non-explicitly set attributes) - * @throws IOException - * if the underlying cookie file could not be read or written or - * a problem with the lock file - * @throws InterruptedException - * if the thread is interrupted while waiting for the lock - */ - public void write(URL url) throws IOException, InterruptedException { - try { - byte[] cookieFileContent = getFileContentIfModified(); - if (cookieFileContent != null) { - LOG.debug("Reading the underlying cookie file '{}' " //$NON-NLS-1$ - + "as it has been modified since " //$NON-NLS-1$ - + "the last access", //$NON-NLS-1$ - path); - // reread new changes if necessary - Set cookiesFromFile = NetscapeCookieFile - .parseCookieFile(cookieFileContent, creationDate); - this.cookies = mergeCookies(cookiesFromFile, cookies); - } - } catch (FileNotFoundException e) { - // ignore if file previously did not exist yet! - } - - ByteArrayOutputStream output = new ByteArrayOutputStream(); - try (Writer writer = new OutputStreamWriter(output, - StandardCharsets.US_ASCII)) { - write(writer, cookies, url, creationDate); - } - LockFile lockFile = new LockFile(path.toFile()); - for (int retryCount = 0; retryCount < LOCK_ACQUIRE_MAX_RETRY_COUNT; retryCount++) { - if (lockFile.lock()) { - try { - lockFile.setNeedSnapshot(true); - lockFile.write(output.toByteArray()); - if (!lockFile.commit()) { - throw new IOException(MessageFormat.format( - JGitText.get().cannotCommitWriteTo, path)); - } - } finally { - lockFile.unlock(); - } - return; - } - Thread.sleep(LOCK_ACQUIRE_RETRY_SLEEP); - } - throw new IOException( - MessageFormat.format(JGitText.get().cannotLock, lockFile)); - } - /** * Read the underying file and return its content but only in case it has * been modified since the last access. @@ -395,10 +337,68 @@ public final class NetscapeCookieFile { } - private byte[] hash(final byte[] in) { + private static byte[] hash(final byte[] in) { return Constants.newMessageDigest().digest(in); } + /** + * Writes all the cookies being maintained in the set being returned by + * {@link #getCookies(boolean)} to the underlying file. + *

+ * Session-cookies will not be persisted. + * + * @param url + * url for which to write the cookies (important to derive + * default values for non-explicitly set attributes) + * @throws IOException + * if the underlying cookie file could not be read or written or + * a problem with the lock file + * @throws InterruptedException + * if the thread is interrupted while waiting for the lock + */ + public void write(URL url) throws IOException, InterruptedException { + try { + byte[] cookieFileContent = getFileContentIfModified(); + if (cookieFileContent != null) { + LOG.debug("Reading the underlying cookie file '{}' " //$NON-NLS-1$ + + "as it has been modified since " //$NON-NLS-1$ + + "the last access", //$NON-NLS-1$ + path); + // reread new changes if necessary + Set cookiesFromFile = NetscapeCookieFile + .parseCookieFile(cookieFileContent, creationDate); + this.cookies = mergeCookies(cookiesFromFile, cookies); + } + } catch (FileNotFoundException e) { + // ignore if file previously did not exist yet! + } + + ByteArrayOutputStream output = new ByteArrayOutputStream(); + try (Writer writer = new OutputStreamWriter(output, + StandardCharsets.US_ASCII)) { + write(writer, cookies, url, creationDate); + } + LockFile lockFile = new LockFile(path.toFile()); + for (int retryCount = 0; retryCount < LOCK_ACQUIRE_MAX_RETRY_COUNT; retryCount++) { + if (lockFile.lock()) { + try { + lockFile.setNeedSnapshot(true); + lockFile.write(output.toByteArray()); + if (!lockFile.commit()) { + throw new IOException(MessageFormat.format( + JGitText.get().cannotCommitWriteTo, path)); + } + } finally { + lockFile.unlock(); + } + return; + } + Thread.sleep(LOCK_ACQUIRE_RETRY_SLEEP); + } + throw new IOException( + MessageFormat.format(JGitText.get().cannotLock, lockFile)); + } + /** * Writes the given cookies to the file in the Netscape Cookie File Format * (also used by curl).