Use Guice to inject GerritServer into RPC backends

Signed-off-by: Shawn O. Pearce <sop@google.com>
This commit is contained in:
Shawn O. Pearce
2009-07-27 20:57:40 -07:00
parent dd326e35bd
commit 9b823915c4
24 changed files with 150 additions and 74 deletions

View File

@@ -60,10 +60,9 @@ import javax.servlet.http.HttpServletRequest;
class AccountSecurityImpl extends BaseServiceImplementation implements
AccountSecurity {
private final Logger log = LoggerFactory.getLogger(getClass());
private final GerritServer server;
AccountSecurityImpl(final GerritServer gs) {
server = gs;
super(gs);
}
public void mySshKeys(final AsyncCallback<List<AccountSshKey>> callback) {

View File

@@ -14,15 +14,21 @@
package com.google.gerrit.server;
import com.google.inject.Inject;
import com.google.inject.Singleton;
/** Publishes {@link AccountSecurityImpl} over JSON. */
@SuppressWarnings("serial")
@Singleton
public class AccountSecuritySrv extends GerritJsonServlet {
class AccountSecuritySrv extends GerritJsonServlet {
@Inject
AccountSecuritySrv(final GerritServer gs) {
super(gs);
}
@Override
protected Object createServiceHandle() throws Exception {
return new AccountSecurityImpl(GerritServer.getInstance());
return new AccountSecurityImpl(server);
}
}

View File

@@ -36,8 +36,12 @@ import java.util.Comparator;
import java.util.List;
import java.util.Set;
public class AccountServiceImpl extends BaseServiceImplementation implements
class AccountServiceImpl extends BaseServiceImplementation implements
AccountService {
AccountServiceImpl(final GerritServer gs) {
super(gs);
}
public void myAccount(final AsyncCallback<Account> callback) {
run(callback, new Action<Account>() {
public Account run(ReviewDb db) throws Failure {

View File

@@ -14,15 +14,21 @@
package com.google.gerrit.server;
import com.google.inject.Inject;
import com.google.inject.Singleton;
/** Publishes {@link AccountServiceImpl} over JSON. */
@SuppressWarnings("serial")
@Singleton
public class AccountServiceSrv extends GerritJsonServlet {
class AccountServiceSrv extends GerritJsonServlet {
@Inject
AccountServiceSrv(final GerritServer gs) {
super(gs);
}
@Override
protected Object createServiceHandle() throws Exception {
return new AccountServiceImpl();
return new AccountServiceImpl(server);
}
}

View File

@@ -32,6 +32,12 @@ import java.util.Set;
/** Support for services which require a {@link ReviewDb} instance. */
public class BaseServiceImplementation {
protected final GerritServer server;
protected BaseServiceImplementation(final GerritServer gs) {
server = gs;
}
/**
* Executes <code>action.run</code> with an active ReviewDb connection.
* <p>

View File

@@ -25,8 +25,12 @@ import com.google.gerrit.client.rpc.NoSuchEntityException;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwtorm.client.OrmException;
public class ChangeDetailServiceImpl extends BaseServiceImplementation
implements ChangeDetailService {
class ChangeDetailServiceImpl extends BaseServiceImplementation implements
ChangeDetailService {
ChangeDetailServiceImpl(final GerritServer gs) {
super(gs);
}
public void changeDetail(final Change.Id id,
final AsyncCallback<ChangeDetail> callback) {
run(callback, new ChangeDetailFactory(id));

View File

@@ -14,15 +14,21 @@
package com.google.gerrit.server;
import com.google.inject.Inject;
import com.google.inject.Singleton;
/** Publishes {@link ChangeDetailServiceImpl} over JSON. */
@SuppressWarnings("serial")
@Singleton
public class ChangeDetailServiceSrv extends GerritJsonServlet {
class ChangeDetailServiceSrv extends GerritJsonServlet {
@Inject
ChangeDetailServiceSrv(final GerritServer gs) {
super(gs);
}
@Override
protected Object createServiceHandle() throws Exception {
return new ChangeDetailServiceImpl();
return new ChangeDetailServiceImpl(server);
}
}

View File

@@ -48,7 +48,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class ChangeListServiceImpl extends BaseServiceImplementation implements
class ChangeListServiceImpl extends BaseServiceImplementation implements
ChangeListService {
private static final Comparator<ChangeInfo> ID_COMP =
new Comparator<ChangeInfo>() {
@@ -81,6 +81,10 @@ public class ChangeListServiceImpl extends BaseServiceImplementation implements
return 0 < pageSize && pageSize <= MAX_PER_PAGE ? pageSize : MAX_PER_PAGE;
}
ChangeListServiceImpl(final GerritServer gs) {
super(gs);
}
public void allOpenPrev(final String pos, final int pageSize,
final AsyncCallback<SingleListChangeInfo> callback) {
run(callback, new QueryPrev(pageSize, pos) {
@@ -467,8 +471,8 @@ public class ChangeListServiceImpl extends BaseServiceImplementation implements
* email addresses. The returned changes are unique and sorted by time
* stamp, newer first.
*/
private Set<Change.Id> changesReviewedBy(final ReviewDb db, final String userName)
throws OrmException {
private Set<Change.Id> changesReviewedBy(final ReviewDb db,
final String userName) throws OrmException {
final Set<Change.Id> resultChanges = new HashSet<Change.Id>();
for (Account.Id account : getAccountSources(db, userName)) {
for (ChangeApproval a : db.changeApprovals().openByUser(account)) {

View File

@@ -14,15 +14,21 @@
package com.google.gerrit.server;
import com.google.inject.Inject;
import com.google.inject.Singleton;
/** Publishes {@link ChangeListServiceImpl} over JSON. */
@SuppressWarnings("serial")
@Singleton
public class ChangeListServiceSrv extends GerritJsonServlet {
class ChangeListServiceSrv extends GerritJsonServlet {
@Inject
ChangeListServiceSrv(final GerritServer gs) {
super(gs);
}
@Override
protected Object createServiceHandle() throws Exception {
return new ChangeListServiceImpl();
return new ChangeListServiceImpl(server);
}
}

View File

@@ -37,8 +37,11 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ChangeManageServiceImpl extends BaseServiceImplementation
implements ChangeManageService {
class ChangeManageServiceImpl extends BaseServiceImplementation implements
ChangeManageService {
ChangeManageServiceImpl(final GerritServer gs) {
super(gs);
}
public void patchSetAction(final ApprovalCategoryValue.Id value,
final PatchSet.Id patchSetId, final AsyncCallback<VoidResult> callback) {

View File

@@ -14,15 +14,21 @@
package com.google.gerrit.server;
import com.google.inject.Inject;
import com.google.inject.Singleton;
/** Publishes {@link ChangeManageServiceImpl} over JSON. */
@SuppressWarnings("serial")
@Singleton
public class ChangeManageServiceSrv extends GerritJsonServlet {
class ChangeManageServiceSrv extends GerritJsonServlet {
@Inject
ChangeManageServiceSrv(final GerritServer gs) {
super(gs);
}
@Override
protected Object createServiceHandle() throws Exception {
return new ChangeManageServiceImpl();
return new ChangeManageServiceImpl(server);
}
}

View File

@@ -16,15 +16,10 @@ package com.google.gerrit.server;
import com.google.gerrit.client.rpc.NotSignedInException;
import com.google.gerrit.client.rpc.SignInRequired;
import com.google.gerrit.git.WorkQueue;
import com.google.gson.GsonBuilder;
import com.google.gwtjsonrpc.server.JsonServlet;
import com.google.gwtjsonrpc.server.SignedToken;
import com.google.gwtjsonrpc.server.XsrfException;
import com.google.gwtorm.client.OrmException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -38,35 +33,15 @@ public abstract class GerritJsonServlet extends JsonServlet<GerritCall> {
return JsonServlet.<GerritCall> getCurrentCall();
}
private GerritServer server;
protected GerritServer server;
@Override
public void init(final ServletConfig config) throws ServletException {
super.init(config);
try {
server = GerritServer.getInstance();
} catch (OrmException e) {
throw new ServletException("Cannot configure GerritServer", e);
} catch (XsrfException e) {
throw new ServletException("Cannot configure GerritServer", e);
}
protected GerritJsonServlet(final GerritServer gs) {
server = gs;
}
@Override
public void destroy() {
WorkQueue.terminate();
GerritServer.closeDataSource();
super.destroy();
}
@Override
protected SignedToken createXsrfSignedToken() throws XsrfException {
try {
return GerritServer.getInstance().getXsrfToken();
} catch (OrmException e) {
throw new XsrfException("Cannot configure GerritServer", e);
}
protected SignedToken createXsrfSignedToken() {
return server.getXsrfToken();
}
@Override

View File

@@ -14,6 +14,8 @@
package com.google.gerrit.server;
import com.google.gerrit.git.WorkQueue;
import com.google.gerrit.server.patch.PatchDetailServiceSrv;
import com.google.gerrit.server.ssh.SshServlet;
import com.google.gwtjsonrpc.server.XsrfException;
import com.google.gwtorm.client.OrmException;
@@ -115,7 +117,7 @@ public class GerritServletConfig extends GuiceServletContextListener {
} catch (ProviderException ce) {
// Assume it never started.
}
WorkQueue.terminate();
super.contextDestroyed(event);
}
}

View File

@@ -39,8 +39,12 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class GroupAdminServiceImpl extends BaseServiceImplementation implements
class GroupAdminServiceImpl extends BaseServiceImplementation implements
GroupAdminService {
GroupAdminServiceImpl(final GerritServer gs) {
super(gs);
}
public void ownedGroups(final AsyncCallback<List<AccountGroup>> callback) {
run(callback, new Action<List<AccountGroup>>() {
public List<AccountGroup> run(ReviewDb db) throws OrmException {

View File

@@ -14,15 +14,21 @@
package com.google.gerrit.server;
import com.google.inject.Inject;
import com.google.inject.Singleton;
/** Publishes {@link GroupAdminServiceImpl} over JSON. */
@SuppressWarnings("serial")
@Singleton
public class GroupAdminServiceSrv extends GerritJsonServlet {
class GroupAdminServiceSrv extends GerritJsonServlet {
@Inject
GroupAdminServiceSrv(final GerritServer gs) {
super(gs);
}
@Override
protected Object createServiceHandle() throws Exception {
return new GroupAdminServiceImpl();
return new GroupAdminServiceImpl(server);
}
}

View File

@@ -14,13 +14,19 @@
package com.google.gerrit.server;
import com.google.inject.Inject;
import com.google.inject.Singleton;
/** Publishes {@link OpenIdServiceImpl} over JSON. */
@SuppressWarnings("serial")
@Singleton
public class OpenIdServiceSrv extends GerritJsonServlet {
class OpenIdServiceSrv extends GerritJsonServlet {
@Inject
OpenIdServiceSrv(final GerritServer gs) {
super(gs);
}
@Override
protected Object createServiceHandle() throws Exception {
return OpenIdServiceImpl.getInstance();

View File

@@ -62,13 +62,12 @@ import java.util.Set;
import javax.servlet.http.HttpServletRequest;
public class ProjectAdminServiceImpl extends BaseServiceImplementation
implements ProjectAdminService {
class ProjectAdminServiceImpl extends BaseServiceImplementation implements
ProjectAdminService {
private final Logger log = LoggerFactory.getLogger(getClass());
private final GerritServer server;
ProjectAdminServiceImpl(final GerritServer gs) {
server = gs;
super(gs);
}
public void ownedProjects(final AsyncCallback<List<Project>> callback) {

View File

@@ -14,15 +14,21 @@
package com.google.gerrit.server;
import com.google.inject.Inject;
import com.google.inject.Singleton;
/** Publishes {@link ProjectAdminServiceImpl} over JSON. */
@SuppressWarnings("serial")
@Singleton
public class ProjectAdminServiceSrv extends GerritJsonServlet {
class ProjectAdminServiceSrv extends GerritJsonServlet {
@Inject
ProjectAdminServiceSrv(final GerritServer gs) {
super(gs);
}
@Override
protected Object createServiceHandle() throws Exception {
return new ProjectAdminServiceImpl(GerritServer.getInstance());
return new ProjectAdminServiceImpl(server);
}
}

View File

@@ -30,10 +30,14 @@ import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
public class SuggestServiceImpl extends BaseServiceImplementation implements
class SuggestServiceImpl extends BaseServiceImplementation implements
SuggestService {
private static final String MAX_SUFFIX = "\u9fa5";
SuggestServiceImpl(final GerritServer gs) {
super(gs);
}
public void suggestProjectNameKey(final String query, final int limit,
final AsyncCallback<List<Project.NameKey>> callback) {
run(callback, new Action<List<Project.NameKey>>() {

View File

@@ -14,15 +14,21 @@
package com.google.gerrit.server;
import com.google.inject.Inject;
import com.google.inject.Singleton;
/** Publishes {@link SuggestServiceImpl} over JSON. */
@SuppressWarnings("serial")
@Singleton
public class SuggestServiceSrv extends GerritJsonServlet {
class SuggestServiceSrv extends GerritJsonServlet {
@Inject
SuggestServiceSrv(final GerritServer gs) {
super(gs);
}
@Override
protected Object createServiceHandle() throws Exception {
return new SuggestServiceImpl();
return new SuggestServiceImpl(server);
}
}

View File

@@ -46,11 +46,17 @@ import java.util.List;
import javax.servlet.http.HttpServletRequest;
public class SystemInfoServiceImpl implements SystemInfoService {
class SystemInfoServiceImpl implements SystemInfoService {
private static final Logger log =
LoggerFactory.getLogger(SystemInfoServiceImpl.class);
private static final JSch JSCH = new JSch();
private final GerritServer server;
SystemInfoServiceImpl(final GerritServer gs) {
server = gs;
}
public static GerritConfig getGerritConfig() {
final GerritConfig cfg = Common.getGerritConfig();
synchronized (cfg) {

View File

@@ -14,15 +14,21 @@
package com.google.gerrit.server;
import com.google.inject.Inject;
import com.google.inject.Singleton;
/** Publishes {@link SystemInfoServiceImpl} over JSON. */
@SuppressWarnings("serial")
@Singleton
public class SystemInfoServiceSrv extends GerritJsonServlet {
class SystemInfoServiceSrv extends GerritJsonServlet {
@Inject
SystemInfoServiceSrv(final GerritServer gs) {
super(gs);
}
@Override
protected Object createServiceHandle() throws Exception {
return new SystemInfoServiceImpl();
return new SystemInfoServiceImpl(server);
}
}

View File

@@ -62,13 +62,12 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
public class PatchDetailServiceImpl extends BaseServiceImplementation implements
class PatchDetailServiceImpl extends BaseServiceImplementation implements
PatchDetailService {
private final Logger log = LoggerFactory.getLogger(getClass());
private final GerritServer server;
public PatchDetailServiceImpl(final GerritServer gs) {
server = gs;
PatchDetailServiceImpl(final GerritServer gs) {
super(gs);
}
public void patchScript(final Patch.Key patchKey, final PatchSet.Id psa,

View File

@@ -12,17 +12,24 @@
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server;
package com.google.gerrit.server.patch;
import com.google.gerrit.server.patch.PatchDetailServiceImpl;
import com.google.gerrit.server.GerritJsonServlet;
import com.google.gerrit.server.GerritServer;
import com.google.inject.Inject;
import com.google.inject.Singleton;
/** Publishes {@link PatchDetailServiceImpl} over JSON. */
@SuppressWarnings("serial")
@Singleton
public class PatchDetailServiceSrv extends GerritJsonServlet {
@Inject
PatchDetailServiceSrv(final GerritServer gs) {
super(gs);
}
@Override
protected Object createServiceHandle() throws Exception {
return new PatchDetailServiceImpl(GerritServer.getInstance());
return new PatchDetailServiceImpl(server);
}
}