Force ticket service off We do not use the GitBlit ticket review system which would need the git servlet anyway, which is already off Change-Id: I55bb268220c5b4d647985f10911a18781f2edd72
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java index 3ec851d..9012053 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java +++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java
@@ -55,6 +55,7 @@ import com.google.inject.Inject; import com.google.inject.servlet.ServletModule; import com.googlesource.gerrit.plugins.gitblit.app.GitBlitSettings; +import com.googlesource.gerrit.plugins.gitblit.app.ReallyNullTicketService; import com.googlesource.gerrit.plugins.gitblit.auth.GerritToGitBlitUserService; public class GitBlitServletModule extends ServletModule { @@ -75,7 +76,7 @@ // bind complex providers bind(IPublicKeyManager.class).toProvider(IPublicKeyManagerProvider.class); - bind(ITicketService.class).toProvider(ITicketServiceProvider.class); + bind(ITicketService.class).to(ReallyNullTicketService.class); bind(WorkQueue.class).toProvider(WorkQueueProvider.class); // core managers
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/app/ReallyNullTicketService.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/app/ReallyNullTicketService.java new file mode 100644 index 0000000..14f3fe3 --- /dev/null +++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/app/ReallyNullTicketService.java
@@ -0,0 +1,79 @@ +// Copyright (C) 2014 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package com.googlesource.gerrit.plugins.gitblit.app; + +import java.util.Collections; +import java.util.List; + +import com.gitblit.manager.INotificationManager; +import com.gitblit.manager.IPluginManager; +import com.gitblit.manager.IRepositoryManager; +import com.gitblit.manager.IRuntimeManager; +import com.gitblit.manager.IUserManager; +import com.gitblit.models.RepositoryModel; +import com.gitblit.tickets.NullTicketService; +import com.gitblit.tickets.TicketLabel; +import com.gitblit.tickets.TicketMilestone; +import com.google.inject.Inject; +import com.google.inject.Singleton; + +/** + * The {@link NullTicketService} of GitBlit is not really a null service. It + * creates a TicketIndexer, and because it neglects to override some methods + * from its base class, that even gets called sometimes, which then produces + * exceptions. + */ +@Singleton +public class ReallyNullTicketService extends NullTicketService { + + @Inject + public ReallyNullTicketService(IRuntimeManager runtimeManager, + IPluginManager pluginManager, + INotificationManager notificationManager, + IUserManager userManager, + IRepositoryManager repositoryManager) { + super(runtimeManager, pluginManager, notificationManager, userManager, + repositoryManager); + } + + @Override + public boolean hasTickets(RepositoryModel repository) { + return false; + } + + @Override + public boolean isAcceptingNewPatchsets(RepositoryModel repository) { + return false; + } + + @Override + public boolean isAcceptingNewTickets(RepositoryModel repository) { + return false; + } + + @Override + public boolean isAcceptingTicketUpdates(RepositoryModel repository) { + return false; + } + + @Override + public List<TicketLabel> getLabels(RepositoryModel repository) { + return Collections.emptyList(); + } + + @Override + public List<TicketMilestone> getMilestones(RepositoryModel repository) { + return Collections.emptyList(); + } +}