You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dp...@apache.org on 2019/01/22 14:19:25 UTC
[ignite-teamcity-bot] branch master updated: IGNITE-10989: Removed
issues storage and issues detector from TC Helper god object.
This is an automated email from the ASF dual-hosted git repository.
dpavlov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git
The following commit(s) were added to refs/heads/master by this push:
new 5076a4d IGNITE-10989: Removed issues storage and issues detector from TC Helper god object.
5076a4d is described below
commit 5076a4d51dd521b2b5e67229a4835b5df473a336
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Tue Jan 22 17:19:21 2019 +0300
IGNITE-10989: Removed issues storage and issues detector from TC Helper god object.
---
.../main/java/org/apache/ignite/ci/ITcHelper.java | 12 ++------
.../main/java/org/apache/ignite/ci/TcHelper.java | 26 ------------------
.../java/org/apache/ignite/ci/db/DbMigrations.java | 6 ----
.../org/apache/ignite/ci/issue/IssuesStorage.java | 18 ++----------
.../ci/tcbot/TcBotBusinessServicesModule.java | 4 +--
.../apache/ignite/ci/tcbot/user/IUserStorage.java | 7 +++++
.../ignite/ci/user/UserAndSessionsStorage.java | 6 ++--
.../java/org/apache/ignite/ci/web/CtxListener.java | 21 +++++---------
.../ignite/ci/web/rest/GetChainResultsAsHtml.java | 2 +-
.../apache/ignite/ci/web/rest/issues/TcIssues.java | 25 ++++++++---------
.../ignite/ci/web/rest/login/UserService.java | 32 +++++++++++++---------
11 files changed, 56 insertions(+), 103 deletions(-)
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITcHelper.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITcHelper.java
index ab926af..3fcf965 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITcHelper.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/ITcHelper.java
@@ -17,13 +17,8 @@
package org.apache.ignite.ci;
-import org.apache.ignite.ci.jira.Tickets;
-import org.apache.ignite.ci.tcbot.issue.IssueDetector;
-import org.apache.ignite.ci.issue.IssuesStorage;
-import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
import org.apache.ignite.ci.user.ICredentialsProv;
import org.apache.ignite.ci.user.UserAndSessionsStorage;
-import org.apache.ignite.ci.web.model.Visa;
/**
* Teamcity Bot main interface. This inteface became too huge.
@@ -38,17 +33,16 @@ public interface ITcHelper {
*/
public String TEAMCITY_BOT_REGIONSIZE = "teamcity.bot.regionsize";
- IssuesStorage issues();
-
- IssueDetector issueDetector();
-
+ @Deprecated
UserAndSessionsStorage users();
String primaryServerId();
+ @Deprecated
/** */
void setServerAuthorizerCreds(ICredentialsProv creds);
+ @Deprecated
/** */
ICredentialsProv getServerAuthorizerCreds();
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java
index ca3fcb1..cd6e75d 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java
@@ -20,28 +20,18 @@ package org.apache.ignite.ci;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.inject.Inject;
-import org.apache.ignite.ci.issue.IssuesStorage;
import org.apache.ignite.ci.tcbot.issue.IssueDetector;
-import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
import org.apache.ignite.ci.user.ICredentialsProv;
import org.apache.ignite.ci.user.UserAndSessionsStorage;
-import org.jetbrains.annotations.Nullable;
/**
* TC Bot implementation. To be migrated to smaller injected classes
*/
@Deprecated
public class TcHelper implements ITcHelper {
- /** Stop guard. */
- private AtomicBoolean stop = new AtomicBoolean();
-
/** Server authorizer credentials. */
private ICredentialsProv serverAuthorizerCreds;
- @Inject private IssuesStorage issuesStorage;
-
- @Inject private IssueDetector detector;
-
@Inject private UserAndSessionsStorage userAndSessionsStorage;
@@ -61,16 +51,6 @@ public class TcHelper implements ITcHelper {
}
/** {@inheritDoc} */
- @Override public IssuesStorage issues() {
- return issuesStorage;
- }
-
- /** {@inheritDoc} */
- @Override public IssueDetector issueDetector() {
- return detector;
- }
-
- /** {@inheritDoc} */
@Override public UserAndSessionsStorage users() {
return userAndSessionsStorage;
}
@@ -78,10 +58,4 @@ public class TcHelper implements ITcHelper {
@Override public String primaryServerId() {
return "apache"; //todo remove
}
-
- public void close() {
- if (stop.compareAndSet(false, true))
- detector.stop();
- }
-
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/db/DbMigrations.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/db/DbMigrations.java
index 42d91fb..d0cd305 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/db/DbMigrations.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/db/DbMigrations.java
@@ -23,7 +23,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
-import java.util.function.Consumer;
import javax.cache.Cache;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
@@ -31,17 +30,12 @@ import org.apache.ignite.IgniteDataStreamer;
import org.apache.ignite.binary.BinaryObject;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.CacheMode;
-import org.apache.ignite.ci.ITeamcity;
import org.apache.ignite.ci.IgnitePersistentTeamcity;
-import org.apache.ignite.ci.analysis.RunStat;
-import org.apache.ignite.ci.analysis.SuiteInBranch;
-import org.apache.ignite.ci.analysis.TestInBranch;
import org.apache.ignite.ci.issue.Issue;
import org.apache.ignite.ci.issue.IssueKey;
import org.apache.ignite.ci.issue.IssuesStorage;
import org.apache.ignite.ci.observer.CompactBuildsInfo;
import org.apache.ignite.ci.tcmodel.result.Build;
-import org.apache.ignite.ci.tcmodel.result.stat.Statistics;
import org.apache.ignite.ci.web.model.CompactContributionKey;
import org.apache.ignite.ci.web.model.CompactVisa;
import org.apache.ignite.ci.web.model.CompactVisaRequest;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/issue/IssuesStorage.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/issue/IssuesStorage.java
index ef0a243..d13d9d4 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/issue/IssuesStorage.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/issue/IssuesStorage.java
@@ -17,8 +17,6 @@
package org.apache.ignite.ci.issue;
-import java.util.ArrayList;
-import java.util.List;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
import javax.cache.Cache;
@@ -29,6 +27,9 @@ import org.apache.ignite.IgniteCache;
import org.apache.ignite.ci.db.TcHelperDb;
import org.apache.ignite.ci.tcbot.issue.IIssuesStorage;
+/**
+ *
+ */
public class IssuesStorage implements IIssuesStorage {
public static final String BOT_DETECTED_ISSUES = "botDetectedIssues";
@@ -50,19 +51,6 @@ public class IssuesStorage implements IIssuesStorage {
return ignite.getOrCreateCache(TcHelperDb.getCacheV2TxConfig(BOT_DETECTED_ISSUES));
}
- public List<Issue> all() {
- List<Issue> res = new ArrayList<>();
-
- for (Cache.Entry<IssueKey, Issue> next : cache()) {
- if (next.getValue().issueKey() == null)
- continue;
-
- res.add(next.getValue());
- }
-
- return res;
- }
-
/** {@inheritDoc} */
@Override public boolean setNotified(IssueKey issueKey, String to) {
Issue issue = cache().get(issueKey);
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/TcBotBusinessServicesModule.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/TcBotBusinessServicesModule.java
index cca872c..b3a2368 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/TcBotBusinessServicesModule.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/TcBotBusinessServicesModule.java
@@ -30,8 +30,8 @@ import org.apache.ignite.ci.user.UserAndSessionsStorage;
* TC Bot self services mapping (without 3rd party integrations configuration.
*/
public class TcBotBusinessServicesModule extends AbstractModule {
- @Override
- protected void configure() {
+ /** {@inheritDoc} */
+ @Override protected void configure() {
bind(ITcBotConfig.class).to(LocalFilesBasedConfig.class).in(new SingletonScope());
bind(IUserStorage.class).to(UserAndSessionsStorage.class).in(new SingletonScope());
bind(IIssuesStorage.class).to(IssuesStorage.class).in(new SingletonScope());
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/user/IUserStorage.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/user/IUserStorage.java
index 9b87d8c..56f3fd1 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/user/IUserStorage.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/user/IUserStorage.java
@@ -19,12 +19,19 @@ package org.apache.ignite.ci.tcbot.user;
import org.apache.ignite.ci.user.TcHelperUser;
import java.util.stream.Stream;
+import org.jetbrains.annotations.Nullable;
/**
* Teamcity Bot User and Sessions storage interface.
*/
public interface IUserStorage {
/**
+ * Get user by username.
+ * @param username Username.
+ */
+ @Nullable public TcHelperUser getUser(String username);
+
+ /**
* @return All users in storage stream.
*/
public Stream<TcHelperUser> allUsers();
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/UserAndSessionsStorage.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/UserAndSessionsStorage.java
index 3312c2b..2bcf6fb 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/UserAndSessionsStorage.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/user/UserAndSessionsStorage.java
@@ -60,11 +60,11 @@ public class UserAndSessionsStorage implements IUserStorage {
return getIgnite().getOrCreateCache(TcHelperDb.getCacheV2TxConfig(USER_SESSIONS));
}
- public void putSession(String sessId, UserSession userSession) {
- sessions().put(sessId, userSession);
+ public void putSession(String sessId, UserSession userSes) {
+ sessions().put(sessId, userSes);
}
- public TcHelperUser getUser(String username) {
+ @Override @Nullable public TcHelperUser getUser(String username) {
return users().get(username);
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/CtxListener.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/CtxListener.java
index 026a0e7..e04def3 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/CtxListener.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/CtxListener.java
@@ -17,28 +17,22 @@
package org.apache.ignite.ci.web;
+import com.google.common.base.Preconditions;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.QueryParam;
-
-import com.google.common.base.Preconditions;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
import org.apache.ignite.Ignite;
-import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
-import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
import org.apache.ignite.ci.ITcHelper;
-import org.apache.ignite.ci.TcHelper;
import org.apache.ignite.ci.db.TcHelperDb;
import org.apache.ignite.ci.di.IgniteTcBotModule;
import org.apache.ignite.ci.di.scheduler.IScheduler;
import org.apache.ignite.ci.observer.BuildObserver;
+import org.apache.ignite.ci.tcbot.issue.IssueDetector;
import org.apache.ignite.ci.teamcity.pure.TeamcityRecorder;
-import org.apache.ignite.ci.user.ICredentialsProv;
-import org.jetbrains.annotations.Nullable;
+import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
/**
*/
@@ -96,10 +90,9 @@ public class CtxListener implements ServletContextListener {
getBackgroundUpdater(ctx).stop();
- TcHelper helper = (TcHelper)getTcHelper(ctx);
- helper.close();
-
try {
+
+ injector.getInstance(IssueDetector.class).stop();
injector.getInstance(TcUpdatePool.class).stop();
injector.getInstance(BuildObserver.class).stop();
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetChainResultsAsHtml.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetChainResultsAsHtml.java
index 215b98f..dc385f5 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetChainResultsAsHtml.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/GetChainResultsAsHtml.java
@@ -86,7 +86,7 @@ public class GetChainResultsAsHtml {
failRateBranch,
SyncMode.RELOAD_QUEUED);
- ChainAtServerCurrentStatus status = new ChainAtServerCurrentStatus(teamcity.serverId(), ctx.branchName());
+ ChainAtServerCurrentStatus status = new ChainAtServerCurrentStatus(tcIgn.serverId(), ctx.branchName());
ctx.getRunningUpdates().forEach(FutureUtil::getResultSilent);
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/issues/TcIssues.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/issues/TcIssues.java
index 1676069..7753881 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/issues/TcIssues.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/issues/TcIssues.java
@@ -17,15 +17,8 @@
package org.apache.ignite.ci.web.rest.issues;
-import org.apache.ignite.ci.ITcHelper;
-import org.apache.ignite.ci.issue.IssueList;
-import org.apache.ignite.ci.issue.IssuesStorage;
-import org.apache.ignite.ci.user.ICredentialsProv;
-import org.apache.ignite.ci.web.CtxListener;
-import org.apache.ignite.ci.web.model.SimpleResult;
-import org.apache.ignite.ci.web.model.current.UpdateInfo;
-import org.jetbrains.annotations.Nullable;
-
+import com.google.inject.Injector;
+import java.util.stream.Collectors;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.GET;
@@ -34,6 +27,12 @@ import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
+import org.apache.ignite.ci.issue.IssueList;
+import org.apache.ignite.ci.tcbot.issue.IIssuesStorage;
+import org.apache.ignite.ci.web.CtxListener;
+import org.apache.ignite.ci.web.model.SimpleResult;
+import org.apache.ignite.ci.web.model.current.UpdateInfo;
+import org.jetbrains.annotations.Nullable;
import static com.google.common.base.Strings.isNullOrEmpty;
@@ -62,15 +61,13 @@ public class TcIssues {
public IssueList listIssues(@Nullable @QueryParam("branch") String branchOpt,
@Nullable @QueryParam("count") Integer count,
@Nullable @QueryParam("checkAllLogs") Boolean checkAllLogs) {
- final ITcHelper helper = CtxListener.getTcHelper(ctx);
+ Injector injector = CtxListener.getInjector(ctx);
final String branch = isNullOrEmpty(branchOpt) ? "master" : branchOpt;
- final ICredentialsProv prov = ICredentialsProv.get(req);
-
- IssuesStorage issues = helper.issues();
+ IIssuesStorage issues = injector.getInstance(IIssuesStorage.class);
- IssueList issueList = new IssueList(issues.all());
+ IssueList issueList = new IssueList(issues.allIssues().collect(Collectors.toList()));
issueList.branch = branch;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/UserService.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/UserService.java
index 596710a..f2c479f 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/UserService.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/login/UserService.java
@@ -34,6 +34,7 @@ import javax.ws.rs.core.MediaType;
import org.apache.ignite.ci.ITcHelper;
import org.apache.ignite.ci.tcbot.conf.ITcBotConfig;
import org.apache.ignite.ci.tcbot.issue.IssueDetector;
+import org.apache.ignite.ci.tcbot.user.IUserStorage;
import org.apache.ignite.ci.tcbot.visa.TcBotTriggerAndSignOffService;
import org.apache.ignite.ci.tcmodel.user.User;
import org.apache.ignite.ci.teamcity.pure.ITcLogin;
@@ -67,19 +68,22 @@ public class UserService {
if (prov == null)
return new SimpleResult("");
+ Injector injector = CtxListener.getInjector(ctx);
- final ITcHelper helper = CtxListener.getTcHelper(ctx);
-
- return userMenu(prov, helper);
+ return userMenu(prov,
+ injector.getInstance(IUserStorage.class),
+ injector.getInstance(IssueDetector.class));
}
- @NotNull public SimpleResult userMenu(ICredentialsProv prov, ITcHelper helper) {
- final UserAndSessionsStorage users = helper.users();
+ @NotNull public SimpleResult userMenu(ICredentialsProv prov, IUserStorage users, IssueDetector issueDetector) {
final TcHelperUser user = users.getUser(prov.getPrincipalId());
+ if (user == null)
+ return new UserMenuResult("?");
+
UserMenuResult res = new UserMenuResult(user.getDisplayName());
- res.authorizedState = helper.issueDetector().isAuthorized();
+ res.authorizedState = issueDetector.isAuthorized();
return res;
}
@@ -89,17 +93,19 @@ public class UserService {
public SimpleResult setAuthorizedState() {
final ICredentialsProv prov = ICredentialsProv.get(req);
- final ITcHelper helper = CtxListener.getTcHelper(ctx);
+ Injector injector = CtxListener.getInjector(ctx);
+ IssueDetector issueDetector = injector.getInstance(IssueDetector.class);
+ final ITcHelper helper = injector.getInstance(ITcHelper.class);
helper.setServerAuthorizerCreds(prov);
- IssueDetector detector = helper.issueDetector();
-
- detector.startBackgroundCheck(prov);
+ issueDetector.startBackgroundCheck(prov);
CtxListener.getInjector(ctx).getInstance(TcBotTriggerAndSignOffService.class).startObserver();
- return userMenu(prov, helper);
+ return userMenu(prov,
+ injector.getInstance(IUserStorage.class),
+ issueDetector);
}
@GET
@@ -110,8 +116,8 @@ public class UserService {
Injector injector = CtxListener.getInjector(ctx);
ITcBotConfig cfg = injector.getInstance(ITcBotConfig.class);
- ITcHelper helper = injector.getInstance(ITcHelper.class);
- final TcHelperUser user = helper.users().getUser(login);
+ IUserStorage users = injector.getInstance(IUserStorage.class);
+ final TcHelperUser user = users.getUser(login);
final TcHelperUserUi tcHelperUserUi = new TcHelperUserUi(user, cfg.getTrackedBranchesIds());