From 07871b9cdb7bc5ed8c0a8c741ce65ca2474917d2 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Sat, 27 Jul 2013 15:47:26 +0200 Subject: [PATCH] handle response of HookChangesetProvider should be synchronized --- .../spi/GitHookChangesetProvider.java | 3 +- .../spi/HgHookChangesetProvider.java | 2 +- .../spi/AbstractSvnHookChangesetProvider.java | 33 ++++++++++++------- 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitHookChangesetProvider.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitHookChangesetProvider.java index e8f5c13c04..f908a8c746 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitHookChangesetProvider.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitHookChangesetProvider.java @@ -75,7 +75,8 @@ public class GitHookChangesetProvider implements HookChangesetProvider * @return */ @Override - public HookChangesetResponse handleRequest(HookChangesetRequest request) + public synchronized HookChangesetResponse handleRequest( + HookChangesetRequest request) { if (response == null) { diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgHookChangesetProvider.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgHookChangesetProvider.java index 04cc3ef016..17c0816686 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgHookChangesetProvider.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgHookChangesetProvider.java @@ -95,7 +95,7 @@ public class HgHookChangesetProvider implements HookChangesetProvider * @return */ @Override - public HookChangesetResponse handleRequest(HookChangesetRequest request) + public synchronized HookChangesetResponse handleRequest(HookChangesetRequest request) { if (response == null) { diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/AbstractSvnHookChangesetProvider.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/AbstractSvnHookChangesetProvider.java index 75c8d00ce4..745ffa7e0d 100644 --- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/AbstractSvnHookChangesetProvider.java +++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/AbstractSvnHookChangesetProvider.java @@ -77,20 +77,31 @@ public abstract class AbstractSvnHookChangesetProvider * @return */ @Override - public HookChangesetResponse handleRequest(HookChangesetRequest request) + public synchronized HookChangesetResponse handleRequest( + HookChangesetRequest request) { - Changeset c = fetchChangeset(); - Iterable iterable; + if (response == null) + { + Changeset c = fetchChangeset(); + Iterable iterable; - if (c == null) - { - iterable = Collections.EMPTY_SET; - } - else - { - iterable = ImmutableSet.of(c); + if (c == null) + { + iterable = Collections.EMPTY_SET; + } + else + { + iterable = ImmutableSet.of(c); + } + + response = new HookChangesetResponse(iterable); } - return new HookChangesetResponse(iterable); + return response; } + + //~--- fields --------------------------------------------------------------- + + /** Field description */ + private HookChangesetResponse response; }