Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Erdfelt2016-02-23 12:31:21 -0500
committerJoakim Erdfelt2016-02-23 12:31:21 -0500
commit0a5bffcfcee6c3266f2e8d1dfbeebb81b6914249 (patch)
tree4c45053a7afaa645af97a57f67709627e2801f87
parent9b050cb41cc1ef38de7719e9440e114e231f5eec (diff)
downloadorg.eclipse.jetty.toolchain-0a5bffcfcee6c3266f2e8d1dfbeebb81b6914249.tar.gz
org.eclipse.jetty.toolchain-0a5bffcfcee6c3266f2e8d1dfbeebb81b6914249.tar.xz
org.eclipse.jetty.toolchain-0a5bffcfcee6c3266f2e8d1dfbeebb81b6914249.zip
Adding support for the new github behavior
-rw-r--r--jetty-version-maven-plugin/pom.xml12
-rw-r--r--jetty-version-maven-plugin/src/main/java/org/eclipse/jetty/toolchain/version/VersionPattern.java1
-rw-r--r--jetty-version-maven-plugin/src/main/java/org/eclipse/jetty/toolchain/version/issues/IssueParser.java51
-rw-r--r--jetty-version-maven-plugin/src/test/java/org/eclipse/jetty/toolchain/version/git/GitLogParserTest.java93
-rw-r--r--jetty-version-maven-plugin/src/test/java/org/eclipse/jetty/toolchain/version/issues/IssueParserTest.java119
-rw-r--r--jetty-version-maven-plugin/src/test/resources/git-log-9.3.7..HEAD.txt680
6 files changed, 866 insertions, 90 deletions
diff --git a/jetty-version-maven-plugin/pom.xml b/jetty-version-maven-plugin/pom.xml
index 38d0550..49d9acc 100644
--- a/jetty-version-maven-plugin/pom.xml
+++ b/jetty-version-maven-plugin/pom.xml
@@ -40,7 +40,7 @@
<dependency>
<groupId>org.eclipse.jetty.toolchain</groupId>
<artifactId>jetty-test-helper</artifactId>
- <version>1.6</version>
+ <version>3.1</version>
<scope>test</scope>
</dependency>
</dependencies>
@@ -50,8 +50,8 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
- <source>1.5</source>
- <target>1.5</target>
+ <source>1.7</source>
+ <target>1.7</target>
</configuration>
</plugin>
<plugin>
@@ -70,8 +70,8 @@
</plugins>
</build>
<scm>
- <connection>scm:git:http://git.eclipse.org/gitroot/jetty/org.eclipse.jetty.toolchain.git</connection>
- <developerConnection>scm:git:ssh://git.eclipse.org/gitroot/jetty/org.eclipse.jetty.toolchain.git</developerConnection>
- <url>http://git.eclipse.org/c/jetty/org.eclipse.jetty.toolchain.git/tree/jetty-version-maven-plugin</url>
+ <connection>scm:git:https://github.com/eclipse/jetty.toolchain.git</connection>
+ <developerConnection>scm:git:ssh://github.com/eclipse/jetty.toolchain.git</developerConnection>
+ <url>https://github.com/eclipse/jetty.toolchain/tree/master/jetty-version-maven-plugin</url>
</scm>
</project>
diff --git a/jetty-version-maven-plugin/src/main/java/org/eclipse/jetty/toolchain/version/VersionPattern.java b/jetty-version-maven-plugin/src/main/java/org/eclipse/jetty/toolchain/version/VersionPattern.java
index e6142d5..6a51a28 100644
--- a/jetty-version-maven-plugin/src/main/java/org/eclipse/jetty/toolchain/version/VersionPattern.java
+++ b/jetty-version-maven-plugin/src/main/java/org/eclipse/jetty/toolchain/version/VersionPattern.java
@@ -22,6 +22,7 @@ public class VersionPattern
{
public static final VersionPattern ECLIPSE = new VersionPattern("jetty-VERSION");
public static final VersionPattern CODEHAUS = new VersionPattern("jetty@codehaus-VERSION");
+
private final String key;
private final Pattern pat;
private String lastVersion;
diff --git a/jetty-version-maven-plugin/src/main/java/org/eclipse/jetty/toolchain/version/issues/IssueParser.java b/jetty-version-maven-plugin/src/main/java/org/eclipse/jetty/toolchain/version/issues/IssueParser.java
index 1ab9009..9f76dfe 100644
--- a/jetty-version-maven-plugin/src/main/java/org/eclipse/jetty/toolchain/version/issues/IssueParser.java
+++ b/jetty-version-maven-plugin/src/main/java/org/eclipse/jetty/toolchain/version/issues/IssueParser.java
@@ -15,13 +15,13 @@
*******************************************************************************/
package org.eclipse.jetty.toolchain.version.issues;
+import org.codehaus.plexus.util.StringUtils;
+
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.codehaus.plexus.util.StringUtils;
-
public class IssueParser
{
public static final String REGEX_ISSUE_BULLET = "^ [\\*\\+-] ";
@@ -31,12 +31,16 @@ public class IssueParser
{
// Possible delimitors between issue id and text
String DELIM = "[-\\[\\]: ]*";
-
+
issue_id_patterns = new ArrayList<Pattern>();
- issue_id_patterns.add(Pattern.compile("^[\\[\\s]*[Bb]ug ([0-9]{6,})" + DELIM)); // Bugzilla id (from mylyn)
- issue_id_patterns.add(Pattern.compile("^([0-9]{6,})" + DELIM)); // Bugzilla id
- issue_id_patterns.add(Pattern.compile("^[\\[\\s]*[Bb]ug (JETTY-[0-9]{2,})" + DELIM)); // Jira id (from mylyn)
- issue_id_patterns.add(Pattern.compile("(JETTY-[0-9]{2,})[^0-9]")); // Jira id
+ // Github Based
+ issue_id_patterns.add(Pattern.compile("^[\\[\\s]*[I]ssue #([0-9]{2,})" + DELIM));
+ // Bugzilla Based
+ issue_id_patterns.add(Pattern.compile("^[\\[\\s]*[Bb]ug ([0-9]{6,})" + DELIM));
+ issue_id_patterns.add(Pattern.compile("^([0-9]{6,})" + DELIM));
+ // Jira Based
+ issue_id_patterns.add(Pattern.compile("^[\\[\\s]*[Bb]ug (JETTY-[0-9]{2,})" + DELIM));
+ issue_id_patterns.add(Pattern.compile("(JETTY-[0-9]{2,})[^0-9]"));
}
/**
@@ -85,16 +89,37 @@ public class IssueParser
if (mat.find())
{
id = mat.group(1);
- // Cleanup Subject Line
subject = subject.substring(mat.end());
- if (subject.startsWith("- "))
- {
- subject = subject.substring(2);
- }
- return new Issue(id,subject.trim());
+ // Cleanup Subject Line
+ subject = cleanSubjectLine(subject);
+ return new Issue(id,subject);
}
}
return null;
}
+
+ private String cleanSubjectLine(String subject)
+ {
+ if (subject.startsWith("- "))
+ {
+ subject = subject.substring(2);
+ }
+
+ Pattern endPunctuation = Pattern.compile("^(.*)\\s*[\\.!,]+\\s*$");
+ Matcher mat = endPunctuation.matcher(subject);
+ if (mat.matches())
+ {
+ subject = mat.group(1);
+ }
+
+ Pattern parenWrapped = Pattern.compile("^\\s*\\((.*)\\)\\s*$");
+ mat = parenWrapped.matcher(subject);
+ if (mat.matches())
+ {
+ subject = mat.group(1);
+ }
+
+ return subject.trim();
+ }
}
diff --git a/jetty-version-maven-plugin/src/test/java/org/eclipse/jetty/toolchain/version/git/GitLogParserTest.java b/jetty-version-maven-plugin/src/test/java/org/eclipse/jetty/toolchain/version/git/GitLogParserTest.java
index 65c43ab..e9ea542 100644
--- a/jetty-version-maven-plugin/src/test/java/org/eclipse/jetty/toolchain/version/git/GitLogParserTest.java
+++ b/jetty-version-maven-plugin/src/test/java/org/eclipse/jetty/toolchain/version/git/GitLogParserTest.java
@@ -28,6 +28,7 @@ import org.eclipse.jetty.toolchain.version.VersionPattern;
import org.eclipse.jetty.toolchain.version.VersionText;
import org.eclipse.jetty.toolchain.version.issues.Issue;
import org.junit.Assert;
+import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
@@ -95,7 +96,7 @@ public class GitLogParserTest extends AbstractGitTestCase
Assert.assertEquals("Commits by Jesse",79,jesseCount);
}
-
+
@Test
public void testParseJetty9GitLog() throws IOException, ParseException
{
@@ -116,21 +117,21 @@ public class GitLogParserTest extends AbstractGitTestCase
}
Assert.assertEquals("Commits by Joakim",10,joakimCount);
-
+
// Test for known issues
List<String> issueIds = new ArrayList<String>();
issueIds.add("391483");
issueIds.add("388079");
issueIds.add("391588");
issueIds.add("JETTY-1515");
-
+
for(Issue issue: parser.getIssues()) {
if(issueIds.contains(issue.getId())) {
issueIds.remove(issue.getId());
}
// System.out.printf("Issue[%s] %s%n", issue.getId(), issue.getText());
}
-
+
if(issueIds.size()>0) {
StringBuilder err = new StringBuilder();
err.append("Issue parser failed to find issue id");
@@ -144,11 +145,85 @@ public class GitLogParserTest extends AbstractGitTestCase
err.append(".");
Assert.assertEquals(err.toString(), 0, issueIds.size());
}
-
+
Assert.assertEquals("Issue count", 42, parser.getIssues().size());
}
@Test
+ public void testParseJetty93_GitHubLog() throws IOException, ParseException
+ {
+ File sampleFile = MavenTestingUtils.getTestResourceFile("git-log-9.3.7..HEAD.txt");
+ GitLogParser parser = new GitLogParser();
+ parseSampleFile(parser,sampleFile);
+
+ Assert.assertNotNull("parser.gitCommitLogs",parser.getGitCommitLogs());
+ Assert.assertEquals("parser.gitCommitLogs.size",75,parser.getGitCommitLogs().size());
+
+ int joakimCount = 0;
+ int simoneCount = 0;
+ int gregCount = 0;
+ for (GitCommit commit : parser.getGitCommitLogs())
+ {
+ if (commit.getAuthorName().contains("Joakim"))
+ {
+ joakimCount++;
+ } else if (commit.getAuthorName().contains("Simone"))
+ {
+ simoneCount++;
+ } else if (commit.getAuthorName().contains("Greg"))
+ {
+ gregCount++;
+ }
+ }
+
+ // The expected values were hand counted in the raw file
+ Assert.assertEquals("Commits by Joakim",18,joakimCount);
+ Assert.assertEquals("Commits by Simone",25,simoneCount);
+ Assert.assertEquals("Commits by Greg",21,gregCount);
+
+ // Test for some known issues (not all)
+ List<String> issueIds = new ArrayList<String>();
+ // Bugzilla Ids
+ issueIds.add("478918");
+ issueIds.add("487714");
+ issueIds.add("487158");
+ issueIds.add("487750");
+ issueIds.add("484446");
+ issueIds.add("486511");
+ issueIds.add("486394");
+
+ // Github Issues
+ issueIds.add("81");
+ issueIds.add("84");
+ issueIds.add("83");
+ issueIds.add("80");
+ issueIds.add("79");
+
+ for(Issue issue: parser.getIssues()) {
+ if(issueIds.contains(issue.getId())) {
+ issueIds.remove(issue.getId());
+ }
+ // System.out.printf("Issue[%s] %s%n", issue.getId(), issue.getText());
+ }
+
+ if(issueIds.size()>0) {
+ StringBuilder err = new StringBuilder();
+ err.append("Issue parser failed to find issue id");
+ if(issueIds.size()>1) {
+ err.append("s");
+ }
+ err.append(":");
+ for(String id: issueIds) {
+ err.append(" ").append(id);
+ }
+ err.append(".");
+ Assert.assertEquals(err.toString(), 0, issueIds.size());
+ }
+
+ Assert.assertEquals("Issue count", 48, parser.getIssues().size());
+ }
+
+ @Test
public void testParseSingleGitLog() throws IOException, ParseException
{
File sampleFile = MavenTestingUtils.getTestResourceFile("git-log-specific-commit.txt");
@@ -161,4 +236,12 @@ public class GitLogParserTest extends AbstractGitTestCase
Assert.assertNotNull("parser.getGitCommitLog(0)",commit);
Assert.assertEquals("commit.id","596fa1bd4edebc21de0389ff70b10b8060667ed1",commit.getCommitId());
}
+
+ @Test
+ @Ignore
+ public void testShowPrettyFormat()
+ {
+ GitLogParser parser = new GitLogParser();
+ System.out.println(parser.getFormat());
+ }
}
diff --git a/jetty-version-maven-plugin/src/test/java/org/eclipse/jetty/toolchain/version/issues/IssueParserTest.java b/jetty-version-maven-plugin/src/test/java/org/eclipse/jetty/toolchain/version/issues/IssueParserTest.java
index a0431fe..6eb8e63 100644
--- a/jetty-version-maven-plugin/src/test/java/org/eclipse/jetty/toolchain/version/issues/IssueParserTest.java
+++ b/jetty-version-maven-plugin/src/test/java/org/eclipse/jetty/toolchain/version/issues/IssueParserTest.java
@@ -17,86 +17,73 @@ package org.eclipse.jetty.toolchain.version.issues;
import org.junit.Assert;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(Parameterized.class)
public class IssueParserTest
{
- private final IssueParser issueParser = new IssueParser();
-
- private void assertKnownIssue(String rawissue, String expectedID, String expectedText)
+ private static class DataList extends ArrayList<String[]>
{
- Issue issue = issueParser.parseKnownIssue(rawissue);
- Assert.assertNotNull("Should always result in a issue",issue);
- if (expectedID == null)
+ public void addCase(String rawline, String expectedID, String expectedText)
{
- Assert.assertFalse("Should not have an issue.id",issue.hasId());
+ add(new String[]{ rawline, expectedID, expectedText });
}
- else
- {
- Assert.assertTrue("Should have an issue.id",issue.hasId());
- Assert.assertEquals("issue.id",expectedID,issue.getId());
- }
- Assert.assertEquals("issue.text",expectedText,issue.getText());
}
- @Test
- public void testParseKnownBullet()
- {
- assertKnownIssue(" + Fixed client abort",null,"Fixed client abort");
- }
+ @Parameterized.Parameters
+ public static List<String[]> data() {
+ DataList data = new DataList();
+ data.addCase(" + Fixed client abort",null,"Fixed client abort");
+ data.addCase(" - Missing request dispatchers",null,"Missing request dispatchers");
+ data.addCase(" * Totally rearchitected and rebuilt",null,"Totally rearchitected and rebuilt");
+ data.addCase(" + JETTY-171 Fixed filter mapping","JETTY-171","Fixed filter mapping");
+ data.addCase("391623 Add option to --stop to wait for target jetty to stop", "391623", "Add option to --stop to wait for target jetty to stop");
+ data.addCase("388079: AbstractHttpConnection. Flush the buffer before shutting output down on error condition", "388079", "AbstractHttpConnection. Flush the buffer before shutting output down on error condition");
+ data.addCase("[Bug 388073] null session id from cookie causes NPE fixed", "388073", "null session id from cookie causes NPE fixed");
+ data.addCase("Bug 391588 - WebSocket Client does not set masking on close frames", "391588", "WebSocket Client does not set masking on close frames");
+ data.addCase("393385: Make hostname verification configurable in SslContextFactory and enable it by default (See http://www.ietf.org/rfc/rfc2818.txt section 3.1)",
+ "393385",
+ "Make hostname verification configurable in SslContextFactory and enable it by default (See http://www.ietf.org/rfc/rfc2818.txt section 3.1)");
+ data.addCase("+ Fixed JETTY-68. Complete request after sendRedirect","JETTY-68","Complete request after sendRedirect");
+ // Github specific
+ data.addCase("Issue #354 (Spin loop in case of exception thrown during accept()).",
+ "354", "Spin loop in case of exception thrown during accept()");
+ data.addCase("Issue #84 Ignored test", "84", "Ignored test");
+ // Bad git subject line issue
+ data.addCase("Issue #123: foo Issue #124: bar",
+ "123", "foo Issue #124: bar");
- @Test
- public void testParseKnownBulletDash()
- {
- assertKnownIssue(" - Missing request dispatchers",null,"Missing request dispatchers");
+ return data;
}
- @Test
- public void testParseKnownBulletSplat()
- {
- assertKnownIssue(" * Totally rearchitected and rebuilt",null,"Totally rearchitected and rebuilt");
- }
+ @Parameterized.Parameter(0)
+ public String rawline;
- @Test
- public void testParseKnownEarlyJetty()
- {
- assertKnownIssue(" + JETTY-171 Fixed filter mapping","JETTY-171","Fixed filter mapping");
- }
+ @Parameterized.Parameter(1)
+ public String expectedID;
- @Test
- public void testParseKnownJetty9a()
- {
- assertKnownIssue("391623 Add option to --stop to wait for target jetty to stop", "391623", "Add option to --stop to wait for target jetty to stop");
- }
+ @Parameterized.Parameter(2)
+ public String expectedText;
@Test
- public void testParseKnownJetty9b()
+ public void assertKnownIssue()
{
- assertKnownIssue("388079: AbstractHttpConnection. Flush the buffer before shutting output down on error condition", "388079", "AbstractHttpConnection. Flush the buffer before shutting output down on error condition");
- }
-
- @Test
- public void testParseKnownJetty9c()
- {
- assertKnownIssue("[Bug 388073] null session id from cookie causes NPE fixed", "388073", "null session id from cookie causes NPE fixed");
- }
-
- @Test
- public void testParseKnownJetty9d()
- {
- assertKnownIssue("Bug 391588 - WebSocket Client does not set masking on close frames", "391588", "WebSocket Client does not set masking on close frames");
- }
-
- @Test
- public void testParseKnownJetty9e()
- {
- assertKnownIssue("393385: Make hostname verification configurable in SslContextFactory and enable it by default (See http://www.ietf.org/rfc/rfc2818.txt section 3.1)",
- "393385",
- "Make hostname verification configurable in SslContextFactory and enable it by default (See http://www.ietf.org/rfc/rfc2818.txt section 3.1)");
- }
-
- @Test
- public void testParseKnownEarlyJettyOdd()
- {
- assertKnownIssue("+ Fixed JETTY-68. Complete request after sendRedirect","JETTY-68","Complete request after sendRedirect");
+ IssueParser issueParser = new IssueParser();
+ Issue issue = issueParser.parseKnownIssue(rawline);
+ Assert.assertNotNull("Should always result in a issue",issue);
+ if (expectedID == null)
+ {
+ Assert.assertFalse("Should not have an issue.id",issue.hasId());
+ }
+ else
+ {
+ Assert.assertTrue("Should have an issue.id",issue.hasId());
+ Assert.assertEquals("issue.id",expectedID,issue.getId());
+ }
+ Assert.assertEquals("issue.text",expectedText,issue.getText());
}
-} \ No newline at end of file
+}
diff --git a/jetty-version-maven-plugin/src/test/resources/git-log-9.3.7..HEAD.txt b/jetty-version-maven-plugin/src/test/resources/git-log-9.3.7..HEAD.txt
new file mode 100644
index 0000000..ab3689d
--- /dev/null
+++ b/jetty-version-maven-plugin/src/test/resources/git-log-9.3.7..HEAD.txt
@@ -0,0 +1,680 @@
+#COMMIT_ID#:3c671aa8b6b06e724889da4fb52741ef865a0eee
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-23 17:33:53 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-23 17:33:53 +0100
+#SUBJECT#:Issue #346 HttpParser RFC2616 Compliance mode
+#BODY#:Reimplmented HTTP/0.9 support in RFC2616 compliance mode
+
+####
+#COMMIT_ID#:76689dd303b67052899fa060f5f7a135139952a3
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-23 11:36:39 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-23 11:37:08 +0100
+#SUBJECT#:Issue #354 (Spin loop in case of exception thrown during accept()).
+#BODY#:Fixed by introducing an overridable method that performs an arbitrary
+sleep to avoid the spin loop. Subclasses may customize.
+
+####
+#COMMIT_ID#:ef6d0194b9d3af44176b6d1488be158d5f9efc3f
+#AUTHOR_NAME#:Jan Bartel
+#AUTHOR_DATE#:2016-02-22 15:08:29 +0100
+#COMMITTER_NAME#:Jan Bartel
+#COMMITTER_DATE#:2016-02-22 15:11:54 +0100
+#SUBJECT#:Issue #352 Integrate session idling for MongoSessionManager
+#BODY#:
+####
+#COMMIT_ID#:89ead7561ee08a08e0e044537ba0fcc18fd6a110
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-22 11:33:23 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-22 11:33:23 +0100
+#SUBJECT#:Issue #285 (PathContentProvider - Use of Direct buffers without pooling).
+#BODY#:Introduced PathContentProvider.setByteBufferPool() so that a buffer
+pool can be set (for example from HttpClient.getByteBufferPool()).
+If present, PathContentProvider will use it.
+
+####
+#COMMIT_ID#:a57f8d05172d05326963a412d494184983bf1874
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-19 16:51:23 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-19 16:51:23 +0100
+#SUBJECT#:Updated the certificate to make the test pass with the latest JDKs.
+#BODY#:
+####
+#COMMIT_ID#:2e62bca2ea5de4c01c6b0797a36093f7763f1c67
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-19 16:33:55 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-19 16:33:55 +0100
+#SUBJECT#:Issue #251 (Consider removing SSLEngine.beginHandshake() calls).
+#BODY#:Removed SSLEngine.beginHandshake() calls.
+
+####
+#COMMIT_ID#:e09396db4ef5800160a77cb0f08388a140e2432a
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-19 16:32:44 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-19 16:32:44 +0100
+#SUBJECT#:Issue #298 (qtp threads spin-locked in MBeanContainer.beanAdded).
+#BODY#:Replaced WeakHashMap with ConcurrentMap.
+The "weak" features of WHM were not used anyway.
+
+####
+#COMMIT_ID#:df32714e8d00d3233a3ac28c97d96232a409edc3
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-19 12:36:50 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-19 12:36:50 +0100
+#SUBJECT#:Issue #344 (init script does not properly display status of a non running service).
+#BODY#:
+####
+#COMMIT_ID#:1d04b9ece0ed15a2249a590f06c79028148c9772
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-19 12:22:04 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-19 12:22:13 +0100
+#SUBJECT#:Issue #347 (Avoid sending request using a connection that is idle timing out).
+#BODY#:Can't make atomic decisions using AtomicInteger _and_ another field.
+Now using synchronized.
+
+####
+#COMMIT_ID#:27585d923c6f464dc57df20a1b8ea40fb2ad2707
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-19 12:14:06 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-19 12:14:06 +0100
+#SUBJECT#:Issue #346 HttpParser RFC2616 Compliance mode
+#BODY#:removed System Property for compliance
+
+####
+#COMMIT_ID#:55eb54799f812a39bb29e09d5429594e8ee350f0
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-19 11:39:08 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-19 11:41:07 +0100
+#SUBJECT#:Issue #346 HttpParser RFC2616 Compliance mode
+#BODY#:Added HttpParser.Compliance field to HttpConnectionFactory
+
+####
+#COMMIT_ID#:48c4e08b94856cdf6fe4efc4ca4c45cce42e75c8
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-19 11:35:39 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-19 11:36:06 +0100
+#SUBJECT#:Issue #347 (Avoid sending request using a connection that is idle timing out).
+#BODY#:Fixed by improving the guard with a timestamp, and checking that the
+time elapsed from the last timestamp is enough to prove it is a real
+idle timeout.
+
+####
+#COMMIT_ID#:1cce6fd69f95c4c281540c82a4ec79d3375d221c
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-18 22:10:41 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-19 11:36:06 +0100
+#SUBJECT#:Improved logging.
+#BODY#:
+####
+#COMMIT_ID#:519734bec4dc004042bc283d30e75c1a5cb7e73d
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-18 12:38:47 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-19 11:36:06 +0100
+#SUBJECT#:Fixed usage of volatile reference.
+#BODY#:
+####
+#COMMIT_ID#:55817a212f84850607e8fedd9bc4ab1626fffd5d
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-16 18:49:43 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-19 11:36:06 +0100
+#SUBJECT#:Improved toString().
+#BODY#:
+####
+#COMMIT_ID#:72edbe5cea4f17a6a77e20af41971494d7e427f1
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-19 11:21:39 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-19 11:22:52 +0100
+#SUBJECT#:Issue #346 HttpParser RFC2616 Compliance mode
+#BODY#:Added RFC2616 compliance mode that allows wrapped headers
+
+####
+#COMMIT_ID#:4a6602d00753375f234f5055799b5a9eed33a1eb
+#AUTHOR_NAME#:Joakim Erdfelt
+#AUTHOR_DATE#:2016-02-18 11:31:55 -0700
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-02-18 11:31:55 -0700
+#SUBJECT#:Issue #342 - Reintroducing Request to logExtended
+#BODY#:+ the old/bad AbstractNCSARequestLog.logExtended is now
+ deprecated
++ the corrected logExtended is the appropriate one to use
+
+####
+#COMMIT_ID#:5ddb176f6bb3ba9367bb3f19e2e05e0a35af3a95
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-17 16:05:28 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-17 16:07:31 +0100
+#SUBJECT#:Issue #298 spin-locked in MBeanContainer
+#BODY#:protected the _beans map with a Lock
+
+####
+#COMMIT_ID#:ba132dfb0fbdbcc0fe73bbc27d05491cfc195412
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-17 14:11:53 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-17 14:11:53 +0100
+#SUBJECT#:Disabling circleCI for now
+#BODY#:
+####
+#COMMIT_ID#:2bc67e5a616473697edb948079451622ad78f356
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-17 13:33:34 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-17 13:33:34 +0100
+#SUBJECT#:Enable IPv6 for circle CI
+#BODY#:
+####
+#COMMIT_ID#:2cfc266acd03c22ae79ba569a77897bc1b4337c4
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-17 13:09:22 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-17 13:09:22 +0100
+#SUBJECT#:Trying CircleCI again
+#BODY#:
+####
+#COMMIT_ID#:8068aeead90937e51f0098c28e9f7ba23b6df514
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-17 11:10:47 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-17 11:11:52 +0100
+#SUBJECT#:Fixed unit test race
+#BODY#:Test was assuming that receiving completed response on client
+always happened before server processing had completed.
+Added a spin test.
+
+####
+#COMMIT_ID#:11d3448e284789d56a5663bd980d7d5e36b0f8c1
+#AUTHOR_NAME#:Jan Bartel
+#AUTHOR_DATE#:2016-02-16 17:41:19 +0100
+#COMMITTER_NAME#:Jan Bartel
+#COMMITTER_DATE#:2016-02-16 17:43:56 +0100
+#SUBJECT#:Issue #81 Exception not always thrown in Jetty to application when upload part is too big Issue #82 Request.getPart() that results in Exception still allows other parts to be fetched
+#BODY#:
+####
+#COMMIT_ID#:496be5e05f086b2ad1eb880dae5b61cdf459e42a
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-16 17:08:10 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-16 17:08:10 +0100
+#SUBJECT#:Issue #84 Ignored test
+#BODY#:
+####
+#COMMIT_ID#:1585dc1c20b9ae9e61c1ae6e265af9a07ab13641
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-16 16:00:51 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-16 16:00:51 +0100
+#SUBJECT#:Issue #83 Ignored
+#BODY#:
+####
+#COMMIT_ID#:f10f32c0808b13f14f81a99d83dc9daff5737e46
+#AUTHOR_NAME#:Jan Bartel
+#AUTHOR_DATE#:2016-02-16 10:46:31 +0100
+#COMMITTER_NAME#:Jan Bartel
+#COMMITTER_DATE#:2016-02-16 10:48:20 +0100
+#SUBJECT#:478918 Change javax.servlet.error,forward,include literals to RequestDispatcher constants
+#BODY#:
+####
+#COMMIT_ID#:fd5b3a8062435eec5947a703e4f45c32cf1701fb
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-16 10:06:25 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-16 10:06:25 +0100
+#SUBJECT#:487714 - Avoid NPE in close race for async write
+#BODY#:The race has not been solved, as with lock-free style it is difficult to prevent a
+close racing with a write in progress. Instead, the code has been made more
+resiliant to such state changes and exceptions thrown are converted to IOExceptions.
+
+####
+#COMMIT_ID#:26b6c848f38d82c3ba1db8a944bf013332167008
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-15 20:48:52 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-15 20:50:22 +0100
+#SUBJECT#:Issue #80 (Spin loop in case of HTTP/2 prefaces without H2C).
+#BODY#:Fixed by changing the state of the parser before calling the parser
+handler callbacks, and by closing the parser if the upgrade to HTTP/2
+is not successful.
+
+####
+#COMMIT_ID#:6a9002991ae32e8eaf084013716bff4aef00e707
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-15 19:40:10 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-15 19:40:10 +0100
+#SUBJECT#:Issue #79 Parse HTTP request target starting with //
+#BODY#:Added a new parseRequestTarget method
+
+####
+#COMMIT_ID#:98607e2abfeee8a3c5a79f4977eff4429185ef8e
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-15 12:26:42 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-15 12:26:42 +0100
+#SUBJECT#:487158 Switched SCM URIs to github
+#BODY#:
+####
+#COMMIT_ID#:5167c52ab04734995e2c240da3cb6f1826ce6316
+#AUTHOR_NAME#:annorax
+#AUTHOR_DATE#:2016-02-03 20:10:20 +0200
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-02-13 07:32:42 -0700
+#SUBJECT#:Add missing property configuration to jetty.xml
+#BODY#:Signed-off-by: Ido <ido.dovrat@gmail.com>
+####
+#COMMIT_ID#:0eef227e847aa04fa79755b89649b0a2c61e002c
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-13 11:14:00 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-13 11:15:58 +0100
+#SUBJECT#:487750 - HTTP/2 push must not be recursive.
+#BODY#:Avoid recursive pushes by pushing the whole resource tree on the
+primary request, and avoid pushes for synthetic requests generated by
+the pushes.
+
+####
+#COMMIT_ID#:30b5fe1c9675257df3ebfbd1f427ef5b033a9081
+#AUTHOR_NAME#:Joakim Erdfelt
+#AUTHOR_DATE#:2016-02-12 09:29:49 -0700
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-02-12 09:29:49 -0700
+#SUBJECT#:AttributeNormalizer.normalize() now supports URI
+#BODY#:
+####
+#COMMIT_ID#:bc59c0853d6163cfaec38ba61e3c204445593804
+#AUTHOR_NAME#:Joakim Erdfelt
+#AUTHOR_DATE#:2016-02-12 09:10:55 -0700
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-02-12 09:11:19 -0700
+#SUBJECT#:Adjusting quickstart AttributeNormalizer to treat 'WAR' as a URI, not a Path
+#BODY#:
+####
+#COMMIT_ID#:7c7c49f06b5783482e973d41f1eb3ec97d617eab
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-12 11:19:31 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-12 11:19:31 +0100
+#SUBJECT#:484446 - InputStreamResponseListener's InputStream uses default read (3) and blocks early on never-ending response.
+#BODY#:Implemented read(byte[],int.int) to fix the reported issue.
+Reworked InputStreamResponseListener to use a callback approach
+rather than blocking waiting for content.
+
+####
+#COMMIT_ID#:9c075ff85ca4e754df6a81f49143b68c09ba4953
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-11 09:37:46 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-11 09:37:46 +0100
+#SUBJECT#:Converted anonymous inner classes to lambdas.
+#BODY#:
+####
+#COMMIT_ID#:a1a8f6aeae1597f709458a78fb683dd0562633b3
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-10 15:04:36 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-10 15:04:36 +0100
+#SUBJECT#:486589 - HttpRequest has a wrong HTTP Version in HTTP/2.
+#BODY#:
+####
+#COMMIT_ID#:6306f06e2f877b165452b32a719331ad52d682e2
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-09 18:12:04 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-09 18:12:04 +0100
+#SUBJECT#:Merged branch 'jetty-9.2.x' into 'jetty-9.3.x'.
+#BODY#:
+####
+#COMMIT_ID#:145e4bee7139125408acc7388bf58531e96ae3d7
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-09 17:50:26 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-09 17:50:26 +0100
+#SUBJECT#:487511 - Jetty HTTP won't work on turkish systems.
+#BODY#:Fixed usages of toLowerCase() and toUpperCase() to use Locale.ENGLISH.
+
+####
+#COMMIT_ID#:1ed327ecceb9ab343b790efe14d23a5efdebaebf
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-08 15:56:53 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-08 15:56:53 +0100
+#SUBJECT#:Merged branch 'jetty-9.2.x' into 'jetty-9.3.x'.
+#BODY#:
+####
+#COMMIT_ID#:e853632c2210eaf5225dd48618b482004dab38ef
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-08 15:52:03 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-08 15:52:03 +0100
+#SUBJECT#:Updated ALPN version for JDK 8u73 and 8u74.
+#BODY#:
+####
+#COMMIT_ID#:4a7fae30fbecfedf49200f2c2b6c644aea2df7b0
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-05 18:12:13 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-05 18:12:37 +0100
+#SUBJECT#:486829 - Cancel stream error after a failed request with the HTTP/2.0 client.
+#BODY#:Fixed by properly notifying the callback even when the exchange has
+already been aborted.
+
+####
+#COMMIT_ID#:98cd85287c4d994b6b8acbe496b331bf85699966
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-05 16:53:52 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-05 18:12:37 +0100
+#SUBJECT#:487354 - Aborted request or response does not send RST_STREAM frame.
+#BODY#:Fixed by sending a RST_STREAM frame when the channel is aborted.
+
+####
+#COMMIT_ID#:460c778ca110798daf21ac35a3318ada99f8f50a
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-02-04 12:10:10 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-02-05 18:12:37 +0100
+#SUBJECT#:Added Javadocs.
+#BODY#:
+####
+#COMMIT_ID#:7b5d12b3382d2dd50cdb690fd87af7df2f4aa7d2
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-05 14:54:39 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-05 14:54:39 +0100
+#SUBJECT#:Added HttpInput prepend content
+#BODY#:Allows content to be reread
+
+####
+#COMMIT_ID#:90efbe62c8b8580e6e864f59cdf9ea42c10c44fd
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2015-10-09 10:21:15 +1100
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-02-04 11:58:23 -0700
+#SUBJECT#:487277 - Introduce http-forwarded module for X-Forwarded support
+#BODY#:
+####
+#COMMIT_ID#:06fa8370fb19df05fe4d95e3a4d859abeb7f9eae
+#AUTHOR_NAME#:Joakim Erdfelt
+#AUTHOR_DATE#:2016-02-04 11:25:18 -0700
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-02-04 11:25:18 -0700
+#SUBJECT#:removing debugging output
+#BODY#:
+####
+#COMMIT_ID#:cfe823a7d6edab044d4a1751dd3dfa2dda89c3e6
+#AUTHOR_NAME#:Joakim Erdfelt
+#AUTHOR_DATE#:2016-02-04 11:03:45 -0700
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-02-04 11:03:45 -0700
+#SUBJECT#:487197 - Deflater/Inflater memory leak with WebSocket permessage-deflate extension
+#BODY#:+ CompressExtension implementations are now part of the Jetty LifeCycle
++ Deflater and Inflater implementations are only instantiated when
+ needed.
++ CompressExtension.doStop() LifeCycle will call .end() on instantiated
+ Deflater and Inflater implementations
+
+####
+#COMMIT_ID#:980ab316cad2a95d2b4ac73882ceb2a3bb147b09
+#AUTHOR_NAME#:Jan Bartel
+#AUTHOR_DATE#:2016-02-04 10:45:33 +0100
+#COMMITTER_NAME#:Jan Bartel
+#COMMITTER_DATE#:2016-02-04 10:45:33 +0100
+#SUBJECT#:487198 ContextScopeListener should be called on context start and stop
+#BODY#:
+####
+#COMMIT_ID#:dd2e042ddfe863d88db1fbeb92b8447fb13929a3
+#AUTHOR_NAME#:Jan Bartel
+#AUTHOR_DATE#:2016-02-04 08:41:14 +0100
+#COMMITTER_NAME#:Jan Bartel
+#COMMITTER_DATE#:2016-02-04 08:41:14 +0100
+#SUBJECT#:Revert "486394 - Restore MultiPartFilter behavior with regards to temp file access"
+#BODY#:This reverts commit 009fde2400a746b1ce24ba04bd4fcd001378516b.
+
+####
+#COMMIT_ID#:94a56f080296297fc1c3ca6d9862fdf3bf1c2cb7
+#AUTHOR_NAME#:Jan Bartel
+#AUTHOR_DATE#:2016-02-04 08:41:00 +0100
+#COMMITTER_NAME#:Jan Bartel
+#COMMITTER_DATE#:2016-02-04 08:41:00 +0100
+#SUBJECT#:Revert "Fixing license header formatting on new file"
+#BODY#:This reverts commit c858bc126a16b79346d608452341f575de8590e2.
+
+####
+#COMMIT_ID#:c858bc126a16b79346d608452341f575de8590e2
+#AUTHOR_NAME#:Joakim Erdfelt
+#AUTHOR_DATE#:2016-02-03 08:31:08 -0700
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-02-03 08:31:08 -0700
+#SUBJECT#:Fixing license header formatting on new file
+#BODY#:
+####
+#COMMIT_ID#:009fde2400a746b1ce24ba04bd4fcd001378516b
+#AUTHOR_NAME#:Joakim Erdfelt
+#AUTHOR_DATE#:2016-02-03 08:19:37 -0700
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-02-03 08:19:37 -0700
+#SUBJECT#:486394 - Restore MultiPartFilter behavior with regards to temp file access
+#BODY#:+ Adding HttpServletRequest.getParts() demonstration of duplicate name="" entries
++ Adding 2 new testcases in MultipartFilterTest demonstrating
+ location/temp file access issue (currently @Ignored)
+
+####
+#COMMIT_ID#:f2e71a2ddedd7938b9a0554a989d3c9cd69f4bed
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-03 14:26:58 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-03 14:28:08 +0100
+#SUBJECT#:485306 - HttpParser (HttpURI) mistaking basic auth password as a port number
+#BODY#:Added support for a password and a getUser() method
+
+####
+#COMMIT_ID#:1b7045babd2926d5ae4fba03ea124d695533a28c
+#AUTHOR_NAME#:Jan Bartel
+#AUTHOR_DATE#:2016-02-03 14:09:49 +0100
+#COMMITTER_NAME#:Jan Bartel
+#COMMITTER_DATE#:2016-02-03 14:15:15 +0100
+#SUBJECT#:486394 Make old behaviour of MultiPartInputStreamParser configurable
+#BODY#:
+####
+#COMMIT_ID#:d151143556f941b7f8f7c02d41744ff3d34b9f4e
+#AUTHOR_NAME#:Jan Bartel
+#AUTHOR_DATE#:2016-02-03 11:59:31 +0100
+#COMMITTER_NAME#:Jan Bartel
+#COMMITTER_DATE#:2016-02-03 14:15:15 +0100
+#SUBJECT#:Revert "486394 - MultipartConfig.fileSizeThreshold default of 0 should always create a file"
+#BODY#:This reverts commit 734d18fb93da4f363acca96bd78ca6ca0f4b577b.
+
+####
+#COMMIT_ID#:6c9a444b6c5b872f69bc452e84e76bce1426697a
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-03 10:54:39 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-03 10:54:39 +0100
+#SUBJECT#:486530 - Handler added to WebAppContext prevents ServletContext initialization
+#BODY#:Added warnings for loops and inappropriate handlers.
+Used insertHandler in more XML files
+
+####
+#COMMIT_ID#:79a7863ac857c60f51961f5ff1b8ccdc59fd6d45
+#AUTHOR_NAME#:Joakim Erdfelt
+#AUTHOR_DATE#:2016-02-02 12:48:17 -0700
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-02-02 12:48:17 -0700
+#SUBJECT#:486877 - Google Chrome flagging 'obsolete cipher suite' in Jetty and will soon issue broken padlock
+#BODY#:+ Rely on SslContextFactory defaults for Includes/Excludes of Cipher
+ Suites
++ Reference documentation for advice on setting up custom includes
+ and excludes
+
+####
+#COMMIT_ID#:7d50167ec194280901d764571424949d28dfbfb0
+#AUTHOR_NAME#:Joakim Erdfelt
+#AUTHOR_DATE#:2016-02-02 10:00:55 -0700
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-02-02 10:00:55 -0700
+#SUBJECT#:486674 - Quickstart path attribute normalization should be based on longest path match
+#BODY#:+ Adding weight to individual PathAttribute's to allow specific
+ keys to win in the situation where more than 1 key is the same path value
+
+####
+#COMMIT_ID#:717955ac7d77fe1d43fc151b6e890b35c3746b83
+#AUTHOR_NAME#:Joakim Erdfelt
+#AUTHOR_DATE#:2016-02-02 09:50:08 -0700
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-02-02 09:50:08 -0700
+#SUBJECT#:Fixing blog iframe src reference
+#BODY#:
+####
+#COMMIT_ID#:1b87db6782de9fcf8206c5b32fb4927a8b963ecc
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-02 16:11:00 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-02 16:11:00 +0100
+#SUBJECT#:486930 - Selector does not correctly handle rejected execution exception
+#BODY#:ignoring the test harness, as it does not work from command line?
+
+####
+#COMMIT_ID#:2831674067ed542528f1384c58818a60975a2c92
+#AUTHOR_NAME#:Jan Bartel
+#AUTHOR_DATE#:2016-02-02 15:04:22 +0100
+#COMMITTER_NAME#:Jan Bartel
+#COMMITTER_DATE#:2016-02-02 15:04:22 +0100
+#SUBJECT#:486530 Handler added to WebAppContext prevents ServletContext initialization
+#BODY#:
+####
+#COMMIT_ID#:d8c33e8dca4953b4cf42a327cd99efdcf60ca15b
+#AUTHOR_NAME#:Jan Bartel
+#AUTHOR_DATE#:2016-02-01 17:42:01 +0100
+#COMMITTER_NAME#:Jan Bartel
+#COMMITTER_DATE#:2016-02-01 17:42:56 +0100
+#SUBJECT#:486497 NPE in MappedLoginService
+#BODY#:
+####
+#COMMIT_ID#:7ec6e2e899c5c9fa2aa136cb321892682fcba5dd
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-01 17:18:42 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-01 17:18:42 +0100
+#SUBJECT#:486930 - Selector does not correctly handle rejected execution exception
+#BODY#:Improved comments and unit test
+
+####
+#COMMIT_ID#:c81dcfc79059b6e0a3a0bfd22cb5b5633dd3291b
+#AUTHOR_NAME#:Greg Wilkins
+#AUTHOR_DATE#:2016-02-01 17:10:24 +0100
+#COMMITTER_NAME#:Greg Wilkins
+#COMMITTER_DATE#:2016-02-01 17:10:24 +0100
+#SUBJECT#:486930 - Selector does not correctly handle rejected execution exception
+#BODY#:This fix work in two ways:
+
+1) Both the PEC and EPC strategies when confronted with a
+RejectedExecutionException will continue to Produce rather than consume.
+
+2) If a produced Runnable cannot be consumed and it supports the new Rejectable interface,
+then it's reject() method is called by the producer thread. Typically this is implemented
+to close the connection - with the risk being that the close might block, but that is
+probably better than leaking the connection?
+
+####
+#COMMIT_ID#:2902a134637f6c638ee76859324035c82e2583fe
+#AUTHOR_NAME#:Joakim Erdfelt
+#AUTHOR_DATE#:2016-01-29 12:46:58 -0700
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-01-29 12:46:58 -0700
+#SUBJECT#:485469 - permessage-deflate extension causes protocol error in Firefox/Chrome
+#BODY#:+ Ensure that CONTINUATION frames are marked without RSV1 bit set
+ during all code paths for permessage-deflate
+
+####
+#COMMIT_ID#:14ec878d420986c7411a9ebef316a3aaa08546f1
+#AUTHOR_NAME#:Joakim Erdfelt
+#AUTHOR_DATE#:2016-01-28 13:42:18 -0700
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-01-28 13:42:18 -0700
+#SUBJECT#:486530 - Handler added to WebAppContext prevents ServletContext initialization
+#BODY#:+ Adding (commented out) testcase to JstlTest to demonstrate behavior
+
+####
+#COMMIT_ID#:83bc83a99d35193745b606497124915255b95fac
+#AUTHOR_NAME#:Joakim Erdfelt
+#AUTHOR_DATE#:2016-01-27 11:55:08 -0700
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-01-27 11:55:08 -0700
+#SUBJECT#:486674 - Quickstart path attribute normalization should be based on longest path match
+#BODY#:
+####
+#COMMIT_ID#:1aef09acc2ad6fad040c56e6826a83e9749fdedd
+#AUTHOR_NAME#:Joakim Erdfelt
+#AUTHOR_DATE#:2016-01-27 11:55:00 -0700
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-01-27 11:55:00 -0700
+#SUBJECT#:486604 - Add debug logging of ErrorPageErrorHandler logic
+#BODY#:
+####
+#COMMIT_ID#:e3dd0cb83be2df2470595b272dc740a538b7c8f1
+#AUTHOR_NAME#:Joakim Erdfelt
+#AUTHOR_DATE#:2016-01-25 13:23:41 -0700
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-01-25 13:23:41 -0700
+#SUBJECT#:486511 - Server.getURI() returns wrong scheme on SSL/HTTPS
+#BODY#:
+####
+#COMMIT_ID#:734d18fb93da4f363acca96bd78ca6ca0f4b577b
+#AUTHOR_NAME#:Joakim Erdfelt
+#AUTHOR_DATE#:2016-01-22 14:07:51 -0700
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-01-22 14:07:51 -0700
+#SUBJECT#:486394 - MultipartConfig.fileSizeThreshold default of 0 should always create a file
+#BODY#:+ Refactored fileSizeThreshold logic so that a configuration value of
+ 0 is always create file
+ (negative) is never create file
+ positive is tested against filesize
+
+####
+#COMMIT_ID#:288f2e1f5190b2efa9ba998e3e4f864921a374cc
+#AUTHOR_NAME#:Joakim Erdfelt
+#AUTHOR_DATE#:2016-01-21 16:53:04 -0700
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-01-21 16:53:04 -0700
+#SUBJECT#:Fixing javadoc: Invalid member type qualification
+#BODY#:
+####
+#COMMIT_ID#:7703784cabaa836b8a8469ffdec91b808af7441c
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-01-21 17:32:14 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-01-21 17:32:14 +0100
+#SUBJECT#:Merged branch 'jetty-9.2.x' into 'jetty-9.3.x'.
+#BODY#:
+####
+#COMMIT_ID#:35bc923f50a8d82c147534422f541e8b9e84c0f4
+#AUTHOR_NAME#:Simone Bordet
+#AUTHOR_DATE#:2016-01-21 17:25:48 +0100
+#COMMITTER_NAME#:Simone Bordet
+#COMMITTER_DATE#:2016-01-21 17:25:48 +0100
+#SUBJECT#:Updated ALPN version for JDK 8u71 and 8u72.
+#BODY#:
+####
+#COMMIT_ID#:e0ce545ad71f5a61b6ed5f338a9ad7309a1a421a
+#AUTHOR_NAME#:Joakim Erdfelt
+#AUTHOR_DATE#:2016-01-15 17:15:14 -0700
+#COMMITTER_NAME#:Joakim Erdfelt
+#COMMITTER_DATE#:2016-01-15 17:15:14 -0700
+#SUBJECT#:Updating to version 9.3.8-SNAPSHOT
+#BODY#:
+#### \ No newline at end of file

Back to the top