Make query parser and rewriter request scoped

Because these need access to the CurrentUser in order to implement
the is:starred or is:visible operators they need to be request scope
and obtained on demand.

Change-Id: Id9f677744c6201176455b15320b8ce45edd75504
Signed-off-by: Shawn O. Pearce <sop@google.com>
This commit is contained in:
Shawn O. Pearce
2010-07-19 07:15:49 -07:00
parent 6ef732fd3b
commit 516f6d0180
4 changed files with 19 additions and 10 deletions

View File

@@ -28,6 +28,8 @@ import com.google.gerrit.server.mail.ReplacePatchSetSender;
import com.google.gerrit.server.patch.PublishComments;
import com.google.gerrit.server.project.ChangeControl;
import com.google.gerrit.server.project.ProjectControl;
import com.google.gerrit.server.query.change.ChangeQueryBuilder;
import com.google.gerrit.server.query.change.ChangeQueryRewriter;
import com.google.inject.servlet.RequestScoped;
/** Bindings for {@link RequestScoped} entities. */
@@ -39,6 +41,8 @@ public class GerritRequestModule extends FactoryModule {
RequestScoped.class);
bind(IdentifiedUser.RequestFactory.class).in(SINGLETON);
bind(AccountResolver.class);
bind(ChangeQueryBuilder.class);
bind(ChangeQueryRewriter.class);
bind(ChangeControl.Factory.class).in(SINGLETON);
bind(GroupControl.Factory.class).in(SINGLETON);

View File

@@ -35,6 +35,7 @@ import com.google.gerrit.server.query.QueryParseException;
import com.google.gwtorm.client.OrmException;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.servlet.RequestScoped;
import org.eclipse.jgit.lib.AbbreviatedObjectId;
@@ -45,6 +46,7 @@ import java.util.regex.Pattern;
/**
* Parses a query string meant to be applied to change objects.
*/
@RequestScoped
public class ChangeQueryBuilder extends QueryBuilder<ChangeData> {
private static final Pattern PAT_LEGACY_ID = Pattern.compile("^[1-9][0-9]*$");
private static final Pattern PAT_CHANGE_ID =

View File

@@ -28,9 +28,11 @@ import com.google.inject.Inject;
import com.google.inject.OutOfScopeException;
import com.google.inject.Provider;
import com.google.inject.name.Named;
import com.google.inject.servlet.RequestScoped;
import java.util.Collection;
@RequestScoped
public class ChangeQueryRewriter extends QueryRewriter<ChangeData> {
private static final QueryRewriter.Definition<ChangeData, ChangeQueryRewriter> mydef =
new QueryRewriter.Definition<ChangeData, ChangeQueryRewriter>(