mirror of
https://github.com/theonedev/onedev.git
synced 2025-12-10 08:51:36 -06:00
chore: Refactoring
This commit is contained in:
parent
b8a4d7cdc2
commit
618dbaf297
7
development.md
Normal file
7
development.md
Normal file
@ -0,0 +1,7 @@
|
||||
# Conventions
|
||||
|
||||
## Service Methods
|
||||
|
||||
1. Various service methods will not check permissions, except for those with subject param
|
||||
1. User param of service methods are used to indicate who performs the action, instead of requiring permission check
|
||||
1. Service methods will not audit changes, unless stated explicitly
|
||||
5
pom.xml
5
pom.xml
@ -227,6 +227,11 @@
|
||||
<artifactId>wicket-native-websocket-core</artifactId>
|
||||
<version>${wicket.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.wicket</groupId>
|
||||
<artifactId>wicket-guice</artifactId>
|
||||
<version>${wicket.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.glassfish.jersey.containers</groupId>
|
||||
<artifactId>jersey-container-servlet</artifactId>
|
||||
|
||||
@ -274,6 +274,10 @@
|
||||
<groupId>org.apache.wicket</groupId>
|
||||
<artifactId>wicket-native-websocket-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.wicket</groupId>
|
||||
<artifactId>wicket-guice</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-fileupload</groupId>
|
||||
<artifactId>commons-fileupload</artifactId>
|
||||
@ -374,7 +378,12 @@
|
||||
<groupId>com.openai</groupId>
|
||||
<artifactId>openai-java</artifactId>
|
||||
<version>2.7.0</version>
|
||||
</dependency>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.ow2.asm</groupId>
|
||||
<artifactId>asm-util</artifactId>
|
||||
<version>9.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-stdlib</artifactId>
|
||||
|
||||
@ -76,8 +76,8 @@ import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.k8shelper.KubernetesHelper;
|
||||
import io.onedev.k8shelper.OsInfo;
|
||||
import io.onedev.server.annotation.Shallow;
|
||||
import io.onedev.server.attachment.AttachmentManager;
|
||||
import io.onedev.server.attachment.DefaultAttachmentManager;
|
||||
import io.onedev.server.attachment.AttachmentService;
|
||||
import io.onedev.server.attachment.DefaultAttachmentService;
|
||||
import io.onedev.server.buildspec.BuildSpecSchemaResource;
|
||||
import io.onedev.server.buildspec.job.log.instruction.LogInstruction;
|
||||
import io.onedev.server.cluster.ClusterResource;
|
||||
@ -91,186 +91,10 @@ import io.onedev.server.commandhandler.ResetAdminPassword;
|
||||
import io.onedev.server.commandhandler.RestoreDatabase;
|
||||
import io.onedev.server.commandhandler.Translate;
|
||||
import io.onedev.server.commandhandler.Upgrade;
|
||||
import io.onedev.server.data.DataManager;
|
||||
import io.onedev.server.data.DefaultDataManager;
|
||||
import io.onedev.server.entitymanager.AccessTokenAuthorizationManager;
|
||||
import io.onedev.server.entitymanager.AccessTokenManager;
|
||||
import io.onedev.server.entitymanager.AgentAttributeManager;
|
||||
import io.onedev.server.entitymanager.AgentLastUsedDateManager;
|
||||
import io.onedev.server.entitymanager.AgentManager;
|
||||
import io.onedev.server.entitymanager.AgentTokenManager;
|
||||
import io.onedev.server.entitymanager.AlertManager;
|
||||
import io.onedev.server.entitymanager.BaseAuthorizationManager;
|
||||
import io.onedev.server.entitymanager.BuildDependenceManager;
|
||||
import io.onedev.server.entitymanager.BuildLabelManager;
|
||||
import io.onedev.server.entitymanager.BuildManager;
|
||||
import io.onedev.server.entitymanager.BuildMetricManager;
|
||||
import io.onedev.server.entitymanager.BuildParamManager;
|
||||
import io.onedev.server.entitymanager.BuildQueryPersonalizationManager;
|
||||
import io.onedev.server.entitymanager.CodeCommentManager;
|
||||
import io.onedev.server.entitymanager.CodeCommentMentionManager;
|
||||
import io.onedev.server.entitymanager.CodeCommentQueryPersonalizationManager;
|
||||
import io.onedev.server.entitymanager.CodeCommentReplyManager;
|
||||
import io.onedev.server.entitymanager.CodeCommentStatusChangeManager;
|
||||
import io.onedev.server.entitymanager.CodeCommentTouchManager;
|
||||
import io.onedev.server.entitymanager.CommitQueryPersonalizationManager;
|
||||
import io.onedev.server.entitymanager.DashboardGroupShareManager;
|
||||
import io.onedev.server.entitymanager.DashboardManager;
|
||||
import io.onedev.server.entitymanager.DashboardUserShareManager;
|
||||
import io.onedev.server.entitymanager.DashboardVisitManager;
|
||||
import io.onedev.server.entitymanager.EmailAddressManager;
|
||||
import io.onedev.server.entitymanager.GitLfsLockManager;
|
||||
import io.onedev.server.entitymanager.GpgKeyManager;
|
||||
import io.onedev.server.entitymanager.GroupAuthorizationManager;
|
||||
import io.onedev.server.entitymanager.GroupManager;
|
||||
import io.onedev.server.entitymanager.IssueAuthorizationManager;
|
||||
import io.onedev.server.entitymanager.IssueChangeManager;
|
||||
import io.onedev.server.entitymanager.IssueCommentManager;
|
||||
import io.onedev.server.entitymanager.IssueCommentReactionManager;
|
||||
import io.onedev.server.entitymanager.IssueCommentRevisionManager;
|
||||
import io.onedev.server.entitymanager.IssueDescriptionRevisionManager;
|
||||
import io.onedev.server.entitymanager.IssueFieldManager;
|
||||
import io.onedev.server.entitymanager.IssueLinkManager;
|
||||
import io.onedev.server.entitymanager.IssueManager;
|
||||
import io.onedev.server.entitymanager.IssueMentionManager;
|
||||
import io.onedev.server.entitymanager.IssueQueryPersonalizationManager;
|
||||
import io.onedev.server.entitymanager.IssueReactionManager;
|
||||
import io.onedev.server.entitymanager.IssueScheduleManager;
|
||||
import io.onedev.server.entitymanager.IssueStateHistoryManager;
|
||||
import io.onedev.server.entitymanager.IssueTouchManager;
|
||||
import io.onedev.server.entitymanager.IssueVoteManager;
|
||||
import io.onedev.server.entitymanager.IssueWatchManager;
|
||||
import io.onedev.server.entitymanager.IssueWorkManager;
|
||||
import io.onedev.server.entitymanager.IterationManager;
|
||||
import io.onedev.server.entitymanager.JobCacheManager;
|
||||
import io.onedev.server.entitymanager.LabelSpecManager;
|
||||
import io.onedev.server.entitymanager.LinkAuthorizationManager;
|
||||
import io.onedev.server.entitymanager.LinkSpecManager;
|
||||
import io.onedev.server.entitymanager.MembershipManager;
|
||||
import io.onedev.server.entitymanager.PackBlobManager;
|
||||
import io.onedev.server.entitymanager.PackBlobReferenceManager;
|
||||
import io.onedev.server.entitymanager.PackLabelManager;
|
||||
import io.onedev.server.entitymanager.PackManager;
|
||||
import io.onedev.server.entitymanager.PackQueryPersonalizationManager;
|
||||
import io.onedev.server.entitymanager.PendingSuggestionApplyManager;
|
||||
import io.onedev.server.entitymanager.ProjectLabelManager;
|
||||
import io.onedev.server.entitymanager.ProjectLastEventDateManager;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.entitymanager.PullRequestAssignmentManager;
|
||||
import io.onedev.server.entitymanager.PullRequestChangeManager;
|
||||
import io.onedev.server.entitymanager.PullRequestCommentManager;
|
||||
import io.onedev.server.entitymanager.PullRequestCommentReactionManager;
|
||||
import io.onedev.server.entitymanager.PullRequestCommentRevisionManager;
|
||||
import io.onedev.server.entitymanager.PullRequestDescriptionRevisionManager;
|
||||
import io.onedev.server.entitymanager.PullRequestLabelManager;
|
||||
import io.onedev.server.entitymanager.PullRequestManager;
|
||||
import io.onedev.server.entitymanager.PullRequestMentionManager;
|
||||
import io.onedev.server.entitymanager.PullRequestQueryPersonalizationManager;
|
||||
import io.onedev.server.entitymanager.PullRequestReactionManager;
|
||||
import io.onedev.server.entitymanager.PullRequestReviewManager;
|
||||
import io.onedev.server.entitymanager.PullRequestTouchManager;
|
||||
import io.onedev.server.entitymanager.PullRequestUpdateManager;
|
||||
import io.onedev.server.entitymanager.PullRequestWatchManager;
|
||||
import io.onedev.server.entitymanager.ReviewedDiffManager;
|
||||
import io.onedev.server.entitymanager.RoleManager;
|
||||
import io.onedev.server.entitymanager.SettingManager;
|
||||
import io.onedev.server.entitymanager.SshKeyManager;
|
||||
import io.onedev.server.entitymanager.SsoAccountManager;
|
||||
import io.onedev.server.entitymanager.SsoProviderManager;
|
||||
import io.onedev.server.entitymanager.StopwatchManager;
|
||||
import io.onedev.server.entitymanager.UserAuthorizationManager;
|
||||
import io.onedev.server.entitymanager.UserInvitationManager;
|
||||
import io.onedev.server.entitymanager.UserManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultAccessTokenAuthorizationManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultAccessTokenManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultAgentAttributeManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultAgentLastUsedDateManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultAgentManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultAgentTokenManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultAlertManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultBaseAuthorizationManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultBuildDependenceManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultBuildLabelManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultBuildManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultBuildMetricManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultBuildParamManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultBuildQueryPersonalizationManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultCodeCommentManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultCodeCommentMentionManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultCodeCommentQueryPersonalizationManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultCodeCommentReplyManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultCodeCommentStatusChangeManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultCodeCommentTouchManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultCommitQueryPersonalizationManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultDashboardGroupShareManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultDashboardManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultDashboardUserShareManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultDashboardVisitManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultEmailAddressManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultGitLfsLockManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultGpgKeyManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultGroupAuthorizationManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultGroupManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIssueAuthorizationManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIssueChangeManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIssueCommentManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIssueCommentReactionManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIssueCommentRevisionManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIssueDescriptionRevisionManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIssueFieldManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIssueLinkManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIssueManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIssueMentionManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIssueQueryPersonalizationManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIssueReactionManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIssueScheduleManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIssueStateHistoryManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIssueTouchManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIssueVoteManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIssueWatchManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIssueWorkManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultIterationManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultJobCacheManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultLabelSpecManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultLinkAuthorizationManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultLinkSpecManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultMembershipManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPackBlobManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPackBlobReferenceManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPackLabelManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPackManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPackQueryPersonalizationManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPendingSuggestionApplyManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultProjectLabelManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultProjectLastEventDateManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultProjectManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPullRequestAssignmentManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPullRequestChangeManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPullRequestCommentManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPullRequestCommentReactionManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPullRequestCommentRevisionManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPullRequestDescriptionRevisionManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPullRequestLabelManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPullRequestManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPullRequestMentionManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPullRequestQueryPersonalizationManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPullRequestReactionManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPullRequestReviewManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPullRequestTouchManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPullRequestUpdateManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultPullRequestWatchManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultReviewedDiffManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultRoleManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultSettingManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultSshKeyManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultSsoAccountManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultSsoProviderManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultStopwatchManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultUserAuthorizationManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultUserInvitationManager;
|
||||
import io.onedev.server.entitymanager.impl.DefaultUserManager;
|
||||
import io.onedev.server.entityreference.DefaultReferenceChangeManager;
|
||||
import io.onedev.server.entityreference.ReferenceChangeManager;
|
||||
import io.onedev.server.data.DataService;
|
||||
import io.onedev.server.data.DefaultDataService;
|
||||
import io.onedev.server.entityreference.DefaultReferenceChangeService;
|
||||
import io.onedev.server.entityreference.ReferenceChangeService;
|
||||
import io.onedev.server.event.DefaultListenerRegistry;
|
||||
import io.onedev.server.event.ListenerRegistry;
|
||||
import io.onedev.server.exception.handler.ExceptionHandler;
|
||||
@ -285,23 +109,23 @@ import io.onedev.server.git.hook.GitPreReceiveChecker;
|
||||
import io.onedev.server.git.location.GitLocation;
|
||||
import io.onedev.server.git.service.DefaultGitService;
|
||||
import io.onedev.server.git.service.GitService;
|
||||
import io.onedev.server.git.signatureverification.DefaultSignatureVerificationManager;
|
||||
import io.onedev.server.git.signatureverification.SignatureVerificationManager;
|
||||
import io.onedev.server.git.signatureverification.DefaultSignatureVerificationService;
|
||||
import io.onedev.server.git.signatureverification.SignatureVerificationService;
|
||||
import io.onedev.server.git.signatureverification.SignatureVerifier;
|
||||
import io.onedev.server.jetty.DefaultJettyManager;
|
||||
import io.onedev.server.jetty.DefaultJettyService;
|
||||
import io.onedev.server.jetty.DefaultSessionDataStoreFactory;
|
||||
import io.onedev.server.jetty.JettyManager;
|
||||
import io.onedev.server.job.DefaultJobManager;
|
||||
import io.onedev.server.jetty.JettyService;
|
||||
import io.onedev.server.job.DefaultJobService;
|
||||
import io.onedev.server.job.DefaultResourceAllocator;
|
||||
import io.onedev.server.job.JobManager;
|
||||
import io.onedev.server.job.JobService;
|
||||
import io.onedev.server.job.ResourceAllocator;
|
||||
import io.onedev.server.job.log.DefaultLogManager;
|
||||
import io.onedev.server.job.log.LogManager;
|
||||
import io.onedev.server.mail.DefaultMailManager;
|
||||
import io.onedev.server.mail.MailManager;
|
||||
import io.onedev.server.markdown.DefaultMarkdownManager;
|
||||
import io.onedev.server.job.log.DefaultLogService;
|
||||
import io.onedev.server.job.log.LogService;
|
||||
import io.onedev.server.mail.DefaultMailService;
|
||||
import io.onedev.server.mail.MailService;
|
||||
import io.onedev.server.markdown.DefaultMarkdownService;
|
||||
import io.onedev.server.markdown.HtmlProcessor;
|
||||
import io.onedev.server.markdown.MarkdownManager;
|
||||
import io.onedev.server.markdown.MarkdownService;
|
||||
import io.onedev.server.model.support.administration.GroovyScript;
|
||||
import io.onedev.server.model.support.administration.authenticator.Authenticator;
|
||||
import io.onedev.server.notification.BuildNotificationManager;
|
||||
@ -312,21 +136,21 @@ import io.onedev.server.notification.PackNotificationManager;
|
||||
import io.onedev.server.notification.PullRequestNotificationManager;
|
||||
import io.onedev.server.notification.WebHookManager;
|
||||
import io.onedev.server.pack.PackFilter;
|
||||
import io.onedev.server.persistence.DefaultIdManager;
|
||||
import io.onedev.server.persistence.DefaultSessionFactoryManager;
|
||||
import io.onedev.server.persistence.DefaultSessionManager;
|
||||
import io.onedev.server.persistence.DefaultTransactionManager;
|
||||
import io.onedev.server.persistence.DefaultIdService;
|
||||
import io.onedev.server.persistence.DefaultSessionFactoryService;
|
||||
import io.onedev.server.persistence.DefaultSessionService;
|
||||
import io.onedev.server.persistence.DefaultTransactionService;
|
||||
import io.onedev.server.persistence.HibernateInterceptor;
|
||||
import io.onedev.server.persistence.IdManager;
|
||||
import io.onedev.server.persistence.IdService;
|
||||
import io.onedev.server.persistence.PersistListener;
|
||||
import io.onedev.server.persistence.PrefixedNamingStrategy;
|
||||
import io.onedev.server.persistence.SessionFactoryManager;
|
||||
import io.onedev.server.persistence.SessionFactoryService;
|
||||
import io.onedev.server.persistence.SessionFactoryProvider;
|
||||
import io.onedev.server.persistence.SessionInterceptor;
|
||||
import io.onedev.server.persistence.SessionManager;
|
||||
import io.onedev.server.persistence.SessionService;
|
||||
import io.onedev.server.persistence.SessionProvider;
|
||||
import io.onedev.server.persistence.TransactionInterceptor;
|
||||
import io.onedev.server.persistence.TransactionManager;
|
||||
import io.onedev.server.persistence.TransactionService;
|
||||
import io.onedev.server.persistence.annotation.Sessional;
|
||||
import io.onedev.server.persistence.annotation.Transactional;
|
||||
import io.onedev.server.persistence.dao.Dao;
|
||||
@ -338,16 +162,16 @@ import io.onedev.server.rest.ResourceConfigProvider;
|
||||
import io.onedev.server.rest.WebApplicationExceptionHandler;
|
||||
import io.onedev.server.rest.resource.McpHelperResource;
|
||||
import io.onedev.server.rest.resource.ProjectResource;
|
||||
import io.onedev.server.search.code.CodeIndexManager;
|
||||
import io.onedev.server.search.code.CodeSearchManager;
|
||||
import io.onedev.server.search.code.DefaultCodeIndexManager;
|
||||
import io.onedev.server.search.code.DefaultCodeSearchManager;
|
||||
import io.onedev.server.search.entitytext.CodeCommentTextManager;
|
||||
import io.onedev.server.search.entitytext.DefaultCodeCommentTextManager;
|
||||
import io.onedev.server.search.entitytext.DefaultIssueTextManager;
|
||||
import io.onedev.server.search.entitytext.DefaultPullRequestTextManager;
|
||||
import io.onedev.server.search.entitytext.IssueTextManager;
|
||||
import io.onedev.server.search.entitytext.PullRequestTextManager;
|
||||
import io.onedev.server.search.code.CodeIndexService;
|
||||
import io.onedev.server.search.code.CodeSearchService;
|
||||
import io.onedev.server.search.code.DefaultCodeIndexService;
|
||||
import io.onedev.server.search.code.DefaultCodeSearchService;
|
||||
import io.onedev.server.search.entitytext.CodeCommentTextService;
|
||||
import io.onedev.server.search.entitytext.DefaultCodeCommentTextService;
|
||||
import io.onedev.server.search.entitytext.DefaultIssueTextService;
|
||||
import io.onedev.server.search.entitytext.DefaultPullRequestTextService;
|
||||
import io.onedev.server.search.entitytext.IssueTextService;
|
||||
import io.onedev.server.search.entitytext.PullRequestTextService;
|
||||
import io.onedev.server.security.BasicAuthenticationFilter;
|
||||
import io.onedev.server.security.BearerAuthenticationFilter;
|
||||
import io.onedev.server.security.CodePullAuthorizationSource;
|
||||
@ -359,26 +183,202 @@ import io.onedev.server.security.DefaultWebSecurityManager;
|
||||
import io.onedev.server.security.FilterChainConfigurator;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
import io.onedev.server.security.realm.GeneralAuthorizingRealm;
|
||||
import io.onedev.server.service.AccessTokenAuthorizationService;
|
||||
import io.onedev.server.service.AccessTokenService;
|
||||
import io.onedev.server.service.AgentAttributeService;
|
||||
import io.onedev.server.service.AgentLastUsedDateService;
|
||||
import io.onedev.server.service.AgentService;
|
||||
import io.onedev.server.service.AgentTokenService;
|
||||
import io.onedev.server.service.AlertService;
|
||||
import io.onedev.server.service.BaseAuthorizationService;
|
||||
import io.onedev.server.service.BuildDependenceService;
|
||||
import io.onedev.server.service.BuildLabelService;
|
||||
import io.onedev.server.service.BuildMetricService;
|
||||
import io.onedev.server.service.BuildParamService;
|
||||
import io.onedev.server.service.BuildQueryPersonalizationService;
|
||||
import io.onedev.server.service.BuildService;
|
||||
import io.onedev.server.service.CodeCommentService;
|
||||
import io.onedev.server.service.CodeCommentMentionService;
|
||||
import io.onedev.server.service.CodeCommentQueryPersonalizationService;
|
||||
import io.onedev.server.service.CodeCommentReplyService;
|
||||
import io.onedev.server.service.CodeCommentStatusChangeService;
|
||||
import io.onedev.server.service.CodeCommentTouchService;
|
||||
import io.onedev.server.service.CommitQueryPersonalizationService;
|
||||
import io.onedev.server.service.DashboardGroupShareService;
|
||||
import io.onedev.server.service.DashboardService;
|
||||
import io.onedev.server.service.DashboardUserShareService;
|
||||
import io.onedev.server.service.DashboardVisitService;
|
||||
import io.onedev.server.service.EmailAddressService;
|
||||
import io.onedev.server.service.GitLfsLockService;
|
||||
import io.onedev.server.service.GpgKeyService;
|
||||
import io.onedev.server.service.GroupAuthorizationService;
|
||||
import io.onedev.server.service.GroupService;
|
||||
import io.onedev.server.service.IssueAuthorizationService;
|
||||
import io.onedev.server.service.IssueChangeService;
|
||||
import io.onedev.server.service.IssueCommentService;
|
||||
import io.onedev.server.service.IssueCommentReactionService;
|
||||
import io.onedev.server.service.IssueCommentRevisionService;
|
||||
import io.onedev.server.service.IssueDescriptionRevisionService;
|
||||
import io.onedev.server.service.IssueFieldService;
|
||||
import io.onedev.server.service.IssueLinkService;
|
||||
import io.onedev.server.service.IssueMentionService;
|
||||
import io.onedev.server.service.IssueQueryPersonalizationService;
|
||||
import io.onedev.server.service.IssueReactionService;
|
||||
import io.onedev.server.service.IssueScheduleService;
|
||||
import io.onedev.server.service.IssueService;
|
||||
import io.onedev.server.service.IssueStateHistoryService;
|
||||
import io.onedev.server.service.IssueTouchService;
|
||||
import io.onedev.server.service.IssueVoteService;
|
||||
import io.onedev.server.service.IssueWatchService;
|
||||
import io.onedev.server.service.IssueWorkService;
|
||||
import io.onedev.server.service.IterationService;
|
||||
import io.onedev.server.service.JobCacheService;
|
||||
import io.onedev.server.service.LabelSpecService;
|
||||
import io.onedev.server.service.LinkAuthorizationService;
|
||||
import io.onedev.server.service.LinkSpecService;
|
||||
import io.onedev.server.service.MembershipService;
|
||||
import io.onedev.server.service.PackBlobReferenceService;
|
||||
import io.onedev.server.service.PackBlobService;
|
||||
import io.onedev.server.service.PackLabelService;
|
||||
import io.onedev.server.service.PackQueryPersonalizationService;
|
||||
import io.onedev.server.service.PackService;
|
||||
import io.onedev.server.service.PendingSuggestionApplyService;
|
||||
import io.onedev.server.service.ProjectLabelService;
|
||||
import io.onedev.server.service.ProjectLastEventDateService;
|
||||
import io.onedev.server.service.ProjectService;
|
||||
import io.onedev.server.service.PullRequestAssignmentService;
|
||||
import io.onedev.server.service.PullRequestChangeService;
|
||||
import io.onedev.server.service.PullRequestCommentService;
|
||||
import io.onedev.server.service.PullRequestCommentReactionService;
|
||||
import io.onedev.server.service.PullRequestCommentRevisionService;
|
||||
import io.onedev.server.service.PullRequestDescriptionRevisionService;
|
||||
import io.onedev.server.service.PullRequestLabelService;
|
||||
import io.onedev.server.service.PullRequestMentionService;
|
||||
import io.onedev.server.service.PullRequestQueryPersonalizationService;
|
||||
import io.onedev.server.service.PullRequestReactionService;
|
||||
import io.onedev.server.service.PullRequestReviewService;
|
||||
import io.onedev.server.service.PullRequestService;
|
||||
import io.onedev.server.service.PullRequestTouchService;
|
||||
import io.onedev.server.service.PullRequestUpdateService;
|
||||
import io.onedev.server.service.PullRequestWatchService;
|
||||
import io.onedev.server.service.ReviewedDiffService;
|
||||
import io.onedev.server.service.RoleService;
|
||||
import io.onedev.server.service.SettingService;
|
||||
import io.onedev.server.service.SshKeyService;
|
||||
import io.onedev.server.service.SsoAccountService;
|
||||
import io.onedev.server.service.SsoProviderService;
|
||||
import io.onedev.server.service.StopwatchService;
|
||||
import io.onedev.server.service.UserAuthorizationService;
|
||||
import io.onedev.server.service.UserInvitationService;
|
||||
import io.onedev.server.service.UserService;
|
||||
import io.onedev.server.service.impl.DefaultAccessTokenAuthorizationService;
|
||||
import io.onedev.server.service.impl.DefaultAccessTokenService;
|
||||
import io.onedev.server.service.impl.DefaultAgentAttributeService;
|
||||
import io.onedev.server.service.impl.DefaultAgentLastUsedDateService;
|
||||
import io.onedev.server.service.impl.DefaultAgentService;
|
||||
import io.onedev.server.service.impl.DefaultAgentTokenService;
|
||||
import io.onedev.server.service.impl.DefaultAlertService;
|
||||
import io.onedev.server.service.impl.DefaultBaseAuthorizationService;
|
||||
import io.onedev.server.service.impl.DefaultBuildDependenceService;
|
||||
import io.onedev.server.service.impl.DefaultBuildLabelService;
|
||||
import io.onedev.server.service.impl.DefaultBuildMetricService;
|
||||
import io.onedev.server.service.impl.DefaultBuildParamService;
|
||||
import io.onedev.server.service.impl.DefaultBuildQueryPersonalizationService;
|
||||
import io.onedev.server.service.impl.DefaultBuildService;
|
||||
import io.onedev.server.service.impl.DefaultCodeCommentService;
|
||||
import io.onedev.server.service.impl.DefaultCodeCommentMentionService;
|
||||
import io.onedev.server.service.impl.DefaultCodeCommentQueryPersonalizationService;
|
||||
import io.onedev.server.service.impl.DefaultCodeCommentReplyService;
|
||||
import io.onedev.server.service.impl.DefaultCodeCommentStatusChangeService;
|
||||
import io.onedev.server.service.impl.DefaultCodeCommentTouchService;
|
||||
import io.onedev.server.service.impl.DefaultCommitQueryPersonalizationService;
|
||||
import io.onedev.server.service.impl.DefaultDashboardGroupShareService;
|
||||
import io.onedev.server.service.impl.DefaultDashboardService;
|
||||
import io.onedev.server.service.impl.DefaultDashboardUserShareService;
|
||||
import io.onedev.server.service.impl.DefaultDashboardVisitService;
|
||||
import io.onedev.server.service.impl.DefaultEmailAddressService;
|
||||
import io.onedev.server.service.impl.DefaultGitLfsLockService;
|
||||
import io.onedev.server.service.impl.DefaultGpgKeyService;
|
||||
import io.onedev.server.service.impl.DefaultGroupAuthorizationService;
|
||||
import io.onedev.server.service.impl.DefaultGroupService;
|
||||
import io.onedev.server.service.impl.DefaultIssueAuthorizationService;
|
||||
import io.onedev.server.service.impl.DefaultIssueChangeService;
|
||||
import io.onedev.server.service.impl.DefaultIssueCommentService;
|
||||
import io.onedev.server.service.impl.DefaultIssueCommentReactionService;
|
||||
import io.onedev.server.service.impl.DefaultIssueCommentRevisionService;
|
||||
import io.onedev.server.service.impl.DefaultIssueDescriptionRevisionService;
|
||||
import io.onedev.server.service.impl.DefaultIssueFieldService;
|
||||
import io.onedev.server.service.impl.DefaultIssueLinkService;
|
||||
import io.onedev.server.service.impl.DefaultIssueMentionService;
|
||||
import io.onedev.server.service.impl.DefaultIssueQueryPersonalizationService;
|
||||
import io.onedev.server.service.impl.DefaultIssueReactionService;
|
||||
import io.onedev.server.service.impl.DefaultIssueScheduleService;
|
||||
import io.onedev.server.service.impl.DefaultIssueService;
|
||||
import io.onedev.server.service.impl.DefaultIssueStateHistoryService;
|
||||
import io.onedev.server.service.impl.DefaultIssueTouchService;
|
||||
import io.onedev.server.service.impl.DefaultIssueVoteService;
|
||||
import io.onedev.server.service.impl.DefaultIssueWatchService;
|
||||
import io.onedev.server.service.impl.DefaultIssueWorkService;
|
||||
import io.onedev.server.service.impl.DefaultIterationService;
|
||||
import io.onedev.server.service.impl.DefaultJobCacheService;
|
||||
import io.onedev.server.service.impl.DefaultLabelSpecService;
|
||||
import io.onedev.server.service.impl.DefaultLinkAuthorizationService;
|
||||
import io.onedev.server.service.impl.DefaultLinkSpecService;
|
||||
import io.onedev.server.service.impl.DefaultMembershipService;
|
||||
import io.onedev.server.service.impl.DefaultPackBlobReferenceService;
|
||||
import io.onedev.server.service.impl.DefaultPackBlobService;
|
||||
import io.onedev.server.service.impl.DefaultPackLabelService;
|
||||
import io.onedev.server.service.impl.DefaultPackQueryPersonalizationService;
|
||||
import io.onedev.server.service.impl.DefaultPackService;
|
||||
import io.onedev.server.service.impl.DefaultPendingSuggestionApplyService;
|
||||
import io.onedev.server.service.impl.DefaultProjectLabelService;
|
||||
import io.onedev.server.service.impl.DefaultProjectLastEventDateService;
|
||||
import io.onedev.server.service.impl.DefaultProjectService;
|
||||
import io.onedev.server.service.impl.DefaultPullRequestAssignmentService;
|
||||
import io.onedev.server.service.impl.DefaultPullRequestChangeService;
|
||||
import io.onedev.server.service.impl.DefaultPullRequestCommentService;
|
||||
import io.onedev.server.service.impl.DefaultPullRequestCommentReactionService;
|
||||
import io.onedev.server.service.impl.DefaultPullRequestCommentRevisionService;
|
||||
import io.onedev.server.service.impl.DefaultPullRequestDescriptionRevisionService;
|
||||
import io.onedev.server.service.impl.DefaultPullRequestLabelService;
|
||||
import io.onedev.server.service.impl.DefaultPullRequestMentionService;
|
||||
import io.onedev.server.service.impl.DefaultPullRequestQueryPersonalizationService;
|
||||
import io.onedev.server.service.impl.DefaultPullRequestReactionService;
|
||||
import io.onedev.server.service.impl.DefaultPullRequestReviewService;
|
||||
import io.onedev.server.service.impl.DefaultPullRequestService;
|
||||
import io.onedev.server.service.impl.DefaultPullRequestTouchService;
|
||||
import io.onedev.server.service.impl.DefaultPullRequestUpdateService;
|
||||
import io.onedev.server.service.impl.DefaultPullRequestWatchService;
|
||||
import io.onedev.server.service.impl.DefaultReviewedDiffService;
|
||||
import io.onedev.server.service.impl.DefaultRoleService;
|
||||
import io.onedev.server.service.impl.DefaultSettingService;
|
||||
import io.onedev.server.service.impl.DefaultSshKeyService;
|
||||
import io.onedev.server.service.impl.DefaultSsoAccountService;
|
||||
import io.onedev.server.service.impl.DefaultSsoProviderService;
|
||||
import io.onedev.server.service.impl.DefaultStopwatchService;
|
||||
import io.onedev.server.service.impl.DefaultUserAuthorizationService;
|
||||
import io.onedev.server.service.impl.DefaultUserInvitationService;
|
||||
import io.onedev.server.service.impl.DefaultUserService;
|
||||
import io.onedev.server.ssh.CommandCreator;
|
||||
import io.onedev.server.ssh.DefaultSshAuthenticator;
|
||||
import io.onedev.server.ssh.DefaultSshManager;
|
||||
import io.onedev.server.ssh.DefaultSshService;
|
||||
import io.onedev.server.ssh.SshAuthenticator;
|
||||
import io.onedev.server.ssh.SshManager;
|
||||
import io.onedev.server.ssh.SshService;
|
||||
import io.onedev.server.taskschedule.DefaultTaskScheduler;
|
||||
import io.onedev.server.taskschedule.TaskScheduler;
|
||||
import io.onedev.server.updatecheck.DefaultUpdateCheckManager;
|
||||
import io.onedev.server.updatecheck.UpdateCheckManager;
|
||||
import io.onedev.server.updatecheck.DefaultUpdateCheckService;
|
||||
import io.onedev.server.updatecheck.UpdateCheckService;
|
||||
import io.onedev.server.util.ScriptContribution;
|
||||
import io.onedev.server.util.concurrent.BatchWorkManager;
|
||||
import io.onedev.server.util.concurrent.DefaultBatchWorkManager;
|
||||
import io.onedev.server.util.concurrent.DefaultWorkExecutor;
|
||||
import io.onedev.server.util.concurrent.WorkExecutor;
|
||||
import io.onedev.server.util.concurrent.BatchWorkExecutionService;
|
||||
import io.onedev.server.util.concurrent.DefaultBatchWorkExecutionService;
|
||||
import io.onedev.server.util.concurrent.DefaultWorkExecutionService;
|
||||
import io.onedev.server.util.concurrent.WorkExecutionService;
|
||||
import io.onedev.server.util.jackson.ObjectMapperConfigurator;
|
||||
import io.onedev.server.util.jackson.ObjectMapperProvider;
|
||||
import io.onedev.server.util.jackson.git.GitObjectMapperConfigurator;
|
||||
import io.onedev.server.util.jackson.hibernate.HibernateObjectMapperConfigurator;
|
||||
import io.onedev.server.util.oauth.DefaultOAuthTokenManager;
|
||||
import io.onedev.server.util.oauth.OAuthTokenManager;
|
||||
import io.onedev.server.util.oauth.DefaultOAuthTokenService;
|
||||
import io.onedev.server.util.oauth.OAuthTokenService;
|
||||
import io.onedev.server.util.xstream.CollectionConverter;
|
||||
import io.onedev.server.util.xstream.HibernateProxyConverter;
|
||||
import io.onedev.server.util.xstream.MapConverter;
|
||||
@ -389,14 +389,14 @@ import io.onedev.server.util.xstream.VersionedDocumentConverter;
|
||||
import io.onedev.server.validation.MessageInterpolator;
|
||||
import io.onedev.server.validation.ShallowValidatorProvider;
|
||||
import io.onedev.server.validation.ValidatorProvider;
|
||||
import io.onedev.server.web.DefaultUrlManager;
|
||||
import io.onedev.server.web.DefaultUrlService;
|
||||
import io.onedev.server.web.DefaultWicketFilter;
|
||||
import io.onedev.server.web.DefaultWicketServlet;
|
||||
import io.onedev.server.web.ResourcePackScopeContribution;
|
||||
import io.onedev.server.web.UrlManager;
|
||||
import io.onedev.server.web.UrlService;
|
||||
import io.onedev.server.web.WebApplication;
|
||||
import io.onedev.server.web.avatar.AvatarManager;
|
||||
import io.onedev.server.web.avatar.DefaultAvatarManager;
|
||||
import io.onedev.server.web.avatar.AvatarService;
|
||||
import io.onedev.server.web.avatar.DefaultAvatarService;
|
||||
import io.onedev.server.web.component.diff.DiffRenderer;
|
||||
import io.onedev.server.web.component.markdown.SourcePositionTrackExtension;
|
||||
import io.onedev.server.web.component.markdown.emoji.EmojiExtension;
|
||||
@ -409,24 +409,24 @@ import io.onedev.server.web.exceptionhandler.PageExpiredExceptionHandler;
|
||||
import io.onedev.server.web.page.layout.AdministrationSettingContribution;
|
||||
import io.onedev.server.web.page.project.blob.render.BlobRenderer;
|
||||
import io.onedev.server.web.page.project.setting.ProjectSettingContribution;
|
||||
import io.onedev.server.web.upload.DefaultUploadManager;
|
||||
import io.onedev.server.web.upload.UploadManager;
|
||||
import io.onedev.server.web.upload.DefaultUploadService;
|
||||
import io.onedev.server.web.upload.UploadService;
|
||||
import io.onedev.server.web.websocket.AlertEventBroadcaster;
|
||||
import io.onedev.server.web.websocket.BuildEventBroadcaster;
|
||||
import io.onedev.server.web.websocket.CodeCommentEventBroadcaster;
|
||||
import io.onedev.server.web.websocket.CommitIndexedBroadcaster;
|
||||
import io.onedev.server.web.websocket.DefaultWebSocketManager;
|
||||
import io.onedev.server.web.websocket.DefaultWebSocketService;
|
||||
import io.onedev.server.web.websocket.IssueEventBroadcaster;
|
||||
import io.onedev.server.web.websocket.PullRequestEventBroadcaster;
|
||||
import io.onedev.server.web.websocket.WebSocketManager;
|
||||
import io.onedev.server.xodus.CommitInfoManager;
|
||||
import io.onedev.server.xodus.DefaultCommitInfoManager;
|
||||
import io.onedev.server.xodus.DefaultIssueInfoManager;
|
||||
import io.onedev.server.xodus.DefaultPullRequestInfoManager;
|
||||
import io.onedev.server.xodus.DefaultVisitInfoManager;
|
||||
import io.onedev.server.xodus.IssueInfoManager;
|
||||
import io.onedev.server.xodus.PullRequestInfoManager;
|
||||
import io.onedev.server.xodus.VisitInfoManager;
|
||||
import io.onedev.server.web.websocket.WebSocketService;
|
||||
import io.onedev.server.xodus.CommitInfoService;
|
||||
import io.onedev.server.xodus.DefaultCommitInfoService;
|
||||
import io.onedev.server.xodus.DefaultIssueInfoService;
|
||||
import io.onedev.server.xodus.DefaultPullRequestInfoService;
|
||||
import io.onedev.server.xodus.DefaultVisitInfoService;
|
||||
import io.onedev.server.xodus.IssueInfoService;
|
||||
import io.onedev.server.xodus.PullRequestInfoService;
|
||||
import io.onedev.server.xodus.VisitInfoService;
|
||||
import nl.altindag.ssl.SSLFactory;
|
||||
|
||||
/**
|
||||
@ -440,8 +440,8 @@ public class CoreModule extends AbstractPluginModule {
|
||||
super.configure();
|
||||
|
||||
bind(ListenerRegistry.class).to(DefaultListenerRegistry.class);
|
||||
bind(JettyManager.class).to(DefaultJettyManager.class);
|
||||
bind(ServletContextHandler.class).toProvider(DefaultJettyManager.class);
|
||||
bind(JettyService.class).to(DefaultJettyService.class);
|
||||
bind(ServletContextHandler.class).toProvider(DefaultJettyService.class);
|
||||
|
||||
bind(ObjectMapper.class).toProvider(ObjectMapperProvider.class).in(Singleton.class);
|
||||
|
||||
@ -490,124 +490,124 @@ public class CoreModule extends AbstractPluginModule {
|
||||
* HK2 to guice bridge can only search in explicit bindings in Guice
|
||||
*/
|
||||
bind(SshAuthenticator.class).to(DefaultSshAuthenticator.class);
|
||||
bind(SshManager.class).to(DefaultSshManager.class);
|
||||
bind(MarkdownManager.class).to(DefaultMarkdownManager.class);
|
||||
bind(SettingManager.class).to(DefaultSettingManager.class);
|
||||
bind(DataManager.class).to(DefaultDataManager.class);
|
||||
bind(SshService.class).to(DefaultSshService.class);
|
||||
bind(MarkdownService.class).to(DefaultMarkdownService.class);
|
||||
bind(SettingService.class).to(DefaultSettingService.class);
|
||||
bind(DataService.class).to(DefaultDataService.class);
|
||||
bind(TaskScheduler.class).to(DefaultTaskScheduler.class);
|
||||
bind(PullRequestCommentManager.class).to(DefaultPullRequestCommentManager.class);
|
||||
bind(CodeCommentManager.class).to(DefaultCodeCommentManager.class);
|
||||
bind(PullRequestManager.class).to(DefaultPullRequestManager.class);
|
||||
bind(PullRequestUpdateManager.class).to(DefaultPullRequestUpdateManager.class);
|
||||
bind(ProjectManager.class).to(DefaultProjectManager.class);
|
||||
bind(ProjectLastEventDateManager.class).to(DefaultProjectLastEventDateManager.class);
|
||||
bind(UserInvitationManager.class).to(DefaultUserInvitationManager.class);
|
||||
bind(PullRequestReviewManager.class).to(DefaultPullRequestReviewManager.class);
|
||||
bind(BuildManager.class).to(DefaultBuildManager.class);
|
||||
bind(BuildDependenceManager.class).to(DefaultBuildDependenceManager.class);
|
||||
bind(JobManager.class).to(DefaultJobManager.class);
|
||||
bind(JobCacheManager.class).to(DefaultJobCacheManager.class);
|
||||
bind(LogManager.class).to(DefaultLogManager.class);
|
||||
bind(MailManager.class).to(DefaultMailManager.class);
|
||||
bind(IssueManager.class).to(DefaultIssueManager.class);
|
||||
bind(IssueFieldManager.class).to(DefaultIssueFieldManager.class);
|
||||
bind(BuildParamManager.class).to(DefaultBuildParamManager.class);
|
||||
bind(UserAuthorizationManager.class).to(DefaultUserAuthorizationManager.class);
|
||||
bind(GroupAuthorizationManager.class).to(DefaultGroupAuthorizationManager.class);
|
||||
bind(PullRequestWatchManager.class).to(DefaultPullRequestWatchManager.class);
|
||||
bind(RoleManager.class).to(DefaultRoleManager.class);
|
||||
bind(CommitInfoManager.class).to(DefaultCommitInfoManager.class);
|
||||
bind(IssueInfoManager.class).to(DefaultIssueInfoManager.class);
|
||||
bind(VisitInfoManager.class).to(DefaultVisitInfoManager.class);
|
||||
bind(BatchWorkManager.class).to(DefaultBatchWorkManager.class);
|
||||
bind(WorkExecutor.class).to(DefaultWorkExecutor.class);
|
||||
bind(GroupManager.class).to(DefaultGroupManager.class);
|
||||
bind(IssueMentionManager.class).to(DefaultIssueMentionManager.class);
|
||||
bind(PullRequestMentionManager.class).to(DefaultPullRequestMentionManager.class);
|
||||
bind(CodeCommentMentionManager.class).to(DefaultCodeCommentMentionManager.class);
|
||||
bind(MembershipManager.class).to(DefaultMembershipManager.class);
|
||||
bind(PullRequestChangeManager.class).to(DefaultPullRequestChangeManager.class);
|
||||
bind(CodeCommentReplyManager.class).to(DefaultCodeCommentReplyManager.class);
|
||||
bind(CodeCommentStatusChangeManager.class).to(DefaultCodeCommentStatusChangeManager.class);
|
||||
bind(AttachmentManager.class).to(DefaultAttachmentManager.class);
|
||||
bind(PullRequestInfoManager.class).to(DefaultPullRequestInfoManager.class);
|
||||
bind(PullRequestCommentService.class).to(DefaultPullRequestCommentService.class);
|
||||
bind(CodeCommentService.class).to(DefaultCodeCommentService.class);
|
||||
bind(PullRequestService.class).to(DefaultPullRequestService.class);
|
||||
bind(PullRequestUpdateService.class).to(DefaultPullRequestUpdateService.class);
|
||||
bind(ProjectService.class).to(DefaultProjectService.class);
|
||||
bind(ProjectLastEventDateService.class).to(DefaultProjectLastEventDateService.class);
|
||||
bind(UserInvitationService.class).to(DefaultUserInvitationService.class);
|
||||
bind(PullRequestReviewService.class).to(DefaultPullRequestReviewService.class);
|
||||
bind(BuildService.class).to(DefaultBuildService.class);
|
||||
bind(BuildDependenceService.class).to(DefaultBuildDependenceService.class);
|
||||
bind(JobService.class).to(DefaultJobService.class);
|
||||
bind(JobCacheService.class).to(DefaultJobCacheService.class);
|
||||
bind(LogService.class).to(DefaultLogService.class);
|
||||
bind(MailService.class).to(DefaultMailService.class);
|
||||
bind(IssueService.class).to(DefaultIssueService.class);
|
||||
bind(IssueFieldService.class).to(DefaultIssueFieldService.class);
|
||||
bind(BuildParamService.class).to(DefaultBuildParamService.class);
|
||||
bind(UserAuthorizationService.class).to(DefaultUserAuthorizationService.class);
|
||||
bind(GroupAuthorizationService.class).to(DefaultGroupAuthorizationService.class);
|
||||
bind(PullRequestWatchService.class).to(DefaultPullRequestWatchService.class);
|
||||
bind(RoleService.class).to(DefaultRoleService.class);
|
||||
bind(CommitInfoService.class).to(DefaultCommitInfoService.class);
|
||||
bind(IssueInfoService.class).to(DefaultIssueInfoService.class);
|
||||
bind(VisitInfoService.class).to(DefaultVisitInfoService.class);
|
||||
bind(BatchWorkExecutionService.class).to(DefaultBatchWorkExecutionService.class);
|
||||
bind(WorkExecutionService.class).to(DefaultWorkExecutionService.class);
|
||||
bind(GroupService.class).to(DefaultGroupService.class);
|
||||
bind(IssueMentionService.class).to(DefaultIssueMentionService.class);
|
||||
bind(PullRequestMentionService.class).to(DefaultPullRequestMentionService.class);
|
||||
bind(CodeCommentMentionService.class).to(DefaultCodeCommentMentionService.class);
|
||||
bind(MembershipService.class).to(DefaultMembershipService.class);
|
||||
bind(PullRequestChangeService.class).to(DefaultPullRequestChangeService.class);
|
||||
bind(CodeCommentReplyService.class).to(DefaultCodeCommentReplyService.class);
|
||||
bind(CodeCommentStatusChangeService.class).to(DefaultCodeCommentStatusChangeService.class);
|
||||
bind(AttachmentService.class).to(DefaultAttachmentService.class);
|
||||
bind(PullRequestInfoService.class).to(DefaultPullRequestInfoService.class);
|
||||
bind(PullRequestNotificationManager.class);
|
||||
bind(CommitNotificationManager.class);
|
||||
bind(BuildNotificationManager.class);
|
||||
bind(PackNotificationManager.class);
|
||||
bind(IssueNotificationManager.class);
|
||||
bind(CodeCommentNotificationManager.class);
|
||||
bind(CodeCommentManager.class).to(DefaultCodeCommentManager.class);
|
||||
bind(AccessTokenManager.class).to(DefaultAccessTokenManager.class);
|
||||
bind(UserManager.class).to(DefaultUserManager.class);
|
||||
bind(IssueWatchManager.class).to(DefaultIssueWatchManager.class);
|
||||
bind(IssueChangeManager.class).to(DefaultIssueChangeManager.class);
|
||||
bind(IssueVoteManager.class).to(DefaultIssueVoteManager.class);
|
||||
bind(IssueWorkManager.class).to(DefaultIssueWorkManager.class);
|
||||
bind(IterationManager.class).to(DefaultIterationManager.class);
|
||||
bind(IssueCommentManager.class).to(DefaultIssueCommentManager.class);
|
||||
bind(IssueQueryPersonalizationManager.class).to(DefaultIssueQueryPersonalizationManager.class);
|
||||
bind(PullRequestQueryPersonalizationManager.class).to(DefaultPullRequestQueryPersonalizationManager.class);
|
||||
bind(CodeCommentQueryPersonalizationManager.class).to(DefaultCodeCommentQueryPersonalizationManager.class);
|
||||
bind(CommitQueryPersonalizationManager.class).to(DefaultCommitQueryPersonalizationManager.class);
|
||||
bind(BuildQueryPersonalizationManager.class).to(DefaultBuildQueryPersonalizationManager.class);
|
||||
bind(PackQueryPersonalizationManager.class).to(DefaultPackQueryPersonalizationManager.class);
|
||||
bind(PullRequestAssignmentManager.class).to(DefaultPullRequestAssignmentManager.class);
|
||||
bind(SshKeyManager.class).to(DefaultSshKeyManager.class);
|
||||
bind(BuildMetricManager.class).to(DefaultBuildMetricManager.class);
|
||||
bind(ReferenceChangeManager.class).to(DefaultReferenceChangeManager.class);
|
||||
bind(GitLfsLockManager.class).to(DefaultGitLfsLockManager.class);
|
||||
bind(IssueScheduleManager.class).to(DefaultIssueScheduleManager.class);
|
||||
bind(LinkSpecManager.class).to(DefaultLinkSpecManager.class);
|
||||
bind(IssueLinkManager.class).to(DefaultIssueLinkManager.class);
|
||||
bind(IssueStateHistoryManager.class).to(DefaultIssueStateHistoryManager.class);
|
||||
bind(LinkAuthorizationManager.class).to(DefaultLinkAuthorizationManager.class);
|
||||
bind(EmailAddressManager.class).to(DefaultEmailAddressManager.class);
|
||||
bind(GpgKeyManager.class).to(DefaultGpgKeyManager.class);
|
||||
bind(IssueTextManager.class).to(DefaultIssueTextManager.class);
|
||||
bind(PullRequestTextManager.class).to(DefaultPullRequestTextManager.class);
|
||||
bind(CodeCommentTextManager.class).to(DefaultCodeCommentTextManager.class);
|
||||
bind(PendingSuggestionApplyManager.class).to(DefaultPendingSuggestionApplyManager.class);
|
||||
bind(IssueAuthorizationManager.class).to(DefaultIssueAuthorizationManager.class);
|
||||
bind(DashboardManager.class).to(DefaultDashboardManager.class);
|
||||
bind(DashboardUserShareManager.class).to(DefaultDashboardUserShareManager.class);
|
||||
bind(DashboardGroupShareManager.class).to(DefaultDashboardGroupShareManager.class);
|
||||
bind(DashboardVisitManager.class).to(DefaultDashboardVisitManager.class);
|
||||
bind(LabelSpecManager.class).to(DefaultLabelSpecManager.class);
|
||||
bind(ProjectLabelManager.class).to(DefaultProjectLabelManager.class);
|
||||
bind(BuildLabelManager.class).to(DefaultBuildLabelManager.class);
|
||||
bind(PackLabelManager.class).to(DefaultPackLabelManager.class);
|
||||
bind(PullRequestLabelManager.class).to(DefaultPullRequestLabelManager.class);
|
||||
bind(IssueTouchManager.class).to(DefaultIssueTouchManager.class);
|
||||
bind(PullRequestTouchManager.class).to(DefaultPullRequestTouchManager.class);
|
||||
bind(CodeCommentTouchManager.class).to(DefaultCodeCommentTouchManager.class);
|
||||
bind(AlertManager.class).to(DefaultAlertManager.class);
|
||||
bind(UpdateCheckManager.class).to(DefaultUpdateCheckManager.class);
|
||||
bind(StopwatchManager.class).to(DefaultStopwatchManager.class);
|
||||
bind(PackManager.class).to(DefaultPackManager.class);
|
||||
bind(PackBlobManager.class).to(DefaultPackBlobManager.class);
|
||||
bind(PackBlobReferenceManager.class).to(DefaultPackBlobReferenceManager.class);
|
||||
bind(AccessTokenAuthorizationManager.class).to(DefaultAccessTokenAuthorizationManager.class);
|
||||
bind(ReviewedDiffManager.class).to(DefaultReviewedDiffManager.class);
|
||||
bind(OAuthTokenManager.class).to(DefaultOAuthTokenManager.class);
|
||||
bind(IssueReactionManager.class).to(DefaultIssueReactionManager.class);
|
||||
bind(IssueCommentReactionManager.class).to(DefaultIssueCommentReactionManager.class);
|
||||
bind(PullRequestReactionManager.class).to(DefaultPullRequestReactionManager.class);
|
||||
bind(PullRequestCommentReactionManager.class).to(DefaultPullRequestCommentReactionManager.class);
|
||||
bind(IssueCommentRevisionManager.class).to(DefaultIssueCommentRevisionManager.class);
|
||||
bind(PullRequestCommentRevisionManager.class).to(DefaultPullRequestCommentRevisionManager.class);
|
||||
bind(IssueDescriptionRevisionManager.class).to(DefaultIssueDescriptionRevisionManager.class);
|
||||
bind(PullRequestDescriptionRevisionManager.class).to(DefaultPullRequestDescriptionRevisionManager.class);
|
||||
bind(SsoProviderManager.class).to(DefaultSsoProviderManager.class);
|
||||
bind(SsoAccountManager.class).to(DefaultSsoAccountManager.class);
|
||||
bind(BaseAuthorizationManager.class).to(DefaultBaseAuthorizationManager.class);
|
||||
bind(CodeCommentService.class).to(DefaultCodeCommentService.class);
|
||||
bind(AccessTokenService.class).to(DefaultAccessTokenService.class);
|
||||
bind(UserService.class).to(DefaultUserService.class);
|
||||
bind(IssueWatchService.class).to(DefaultIssueWatchService.class);
|
||||
bind(IssueChangeService.class).to(DefaultIssueChangeService.class);
|
||||
bind(IssueVoteService.class).to(DefaultIssueVoteService.class);
|
||||
bind(IssueWorkService.class).to(DefaultIssueWorkService.class);
|
||||
bind(IterationService.class).to(DefaultIterationService.class);
|
||||
bind(IssueCommentService.class).to(DefaultIssueCommentService.class);
|
||||
bind(IssueQueryPersonalizationService.class).to(DefaultIssueQueryPersonalizationService.class);
|
||||
bind(PullRequestQueryPersonalizationService.class).to(DefaultPullRequestQueryPersonalizationService.class);
|
||||
bind(CodeCommentQueryPersonalizationService.class).to(DefaultCodeCommentQueryPersonalizationService.class);
|
||||
bind(CommitQueryPersonalizationService.class).to(DefaultCommitQueryPersonalizationService.class);
|
||||
bind(BuildQueryPersonalizationService.class).to(DefaultBuildQueryPersonalizationService.class);
|
||||
bind(PackQueryPersonalizationService.class).to(DefaultPackQueryPersonalizationService.class);
|
||||
bind(PullRequestAssignmentService.class).to(DefaultPullRequestAssignmentService.class);
|
||||
bind(SshKeyService.class).to(DefaultSshKeyService.class);
|
||||
bind(BuildMetricService.class).to(DefaultBuildMetricService.class);
|
||||
bind(ReferenceChangeService.class).to(DefaultReferenceChangeService.class);
|
||||
bind(GitLfsLockService.class).to(DefaultGitLfsLockService.class);
|
||||
bind(IssueScheduleService.class).to(DefaultIssueScheduleService.class);
|
||||
bind(LinkSpecService.class).to(DefaultLinkSpecService.class);
|
||||
bind(IssueLinkService.class).to(DefaultIssueLinkService.class);
|
||||
bind(IssueStateHistoryService.class).to(DefaultIssueStateHistoryService.class);
|
||||
bind(LinkAuthorizationService.class).to(DefaultLinkAuthorizationService.class);
|
||||
bind(EmailAddressService.class).to(DefaultEmailAddressService.class);
|
||||
bind(GpgKeyService.class).to(DefaultGpgKeyService.class);
|
||||
bind(IssueTextService.class).to(DefaultIssueTextService.class);
|
||||
bind(PullRequestTextService.class).to(DefaultPullRequestTextService.class);
|
||||
bind(CodeCommentTextService.class).to(DefaultCodeCommentTextService.class);
|
||||
bind(PendingSuggestionApplyService.class).to(DefaultPendingSuggestionApplyService.class);
|
||||
bind(IssueAuthorizationService.class).to(DefaultIssueAuthorizationService.class);
|
||||
bind(DashboardService.class).to(DefaultDashboardService.class);
|
||||
bind(DashboardUserShareService.class).to(DefaultDashboardUserShareService.class);
|
||||
bind(DashboardGroupShareService.class).to(DefaultDashboardGroupShareService.class);
|
||||
bind(DashboardVisitService.class).to(DefaultDashboardVisitService.class);
|
||||
bind(LabelSpecService.class).to(DefaultLabelSpecService.class);
|
||||
bind(ProjectLabelService.class).to(DefaultProjectLabelService.class);
|
||||
bind(BuildLabelService.class).to(DefaultBuildLabelService.class);
|
||||
bind(PackLabelService.class).to(DefaultPackLabelService.class);
|
||||
bind(PullRequestLabelService.class).to(DefaultPullRequestLabelService.class);
|
||||
bind(IssueTouchService.class).to(DefaultIssueTouchService.class);
|
||||
bind(PullRequestTouchService.class).to(DefaultPullRequestTouchService.class);
|
||||
bind(CodeCommentTouchService.class).to(DefaultCodeCommentTouchService.class);
|
||||
bind(AlertService.class).to(DefaultAlertService.class);
|
||||
bind(UpdateCheckService.class).to(DefaultUpdateCheckService.class);
|
||||
bind(StopwatchService.class).to(DefaultStopwatchService.class);
|
||||
bind(PackService.class).to(DefaultPackService.class);
|
||||
bind(PackBlobService.class).to(DefaultPackBlobService.class);
|
||||
bind(PackBlobReferenceService.class).to(DefaultPackBlobReferenceService.class);
|
||||
bind(AccessTokenAuthorizationService.class).to(DefaultAccessTokenAuthorizationService.class);
|
||||
bind(ReviewedDiffService.class).to(DefaultReviewedDiffService.class);
|
||||
bind(OAuthTokenService.class).to(DefaultOAuthTokenService.class);
|
||||
bind(IssueReactionService.class).to(DefaultIssueReactionService.class);
|
||||
bind(IssueCommentReactionService.class).to(DefaultIssueCommentReactionService.class);
|
||||
bind(PullRequestReactionService.class).to(DefaultPullRequestReactionService.class);
|
||||
bind(PullRequestCommentReactionService.class).to(DefaultPullRequestCommentReactionService.class);
|
||||
bind(IssueCommentRevisionService.class).to(DefaultIssueCommentRevisionService.class);
|
||||
bind(PullRequestCommentRevisionService.class).to(DefaultPullRequestCommentRevisionService.class);
|
||||
bind(IssueDescriptionRevisionService.class).to(DefaultIssueDescriptionRevisionService.class);
|
||||
bind(PullRequestDescriptionRevisionService.class).to(DefaultPullRequestDescriptionRevisionService.class);
|
||||
bind(SsoProviderService.class).to(DefaultSsoProviderService.class);
|
||||
bind(SsoAccountService.class).to(DefaultSsoAccountService.class);
|
||||
bind(BaseAuthorizationService.class).to(DefaultBaseAuthorizationService.class);
|
||||
|
||||
bind(WebHookManager.class);
|
||||
|
||||
contribute(CodePullAuthorizationSource.class, DefaultJobManager.class);
|
||||
contribute(CodePullAuthorizationSource.class, DefaultJobService.class);
|
||||
|
||||
bind(CodeIndexManager.class).to(DefaultCodeIndexManager.class);
|
||||
bind(CodeSearchManager.class).to(DefaultCodeSearchManager.class);
|
||||
bind(CodeIndexService.class).to(DefaultCodeIndexService.class);
|
||||
bind(CodeSearchService.class).to(DefaultCodeSearchService.class);
|
||||
|
||||
Bootstrap.executorService = new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS,
|
||||
new SynchronousQueue<>()) {
|
||||
@ -672,7 +672,7 @@ public class CoreModule extends AbstractPluginModule {
|
||||
bind(GitLfsFilter.class);
|
||||
bind(GitPreReceiveCallback.class);
|
||||
bind(GitPostReceiveCallback.class);
|
||||
bind(SignatureVerificationManager.class).to(DefaultSignatureVerificationManager.class);
|
||||
bind(SignatureVerificationService.class).to(DefaultSignatureVerificationService.class);
|
||||
contribute(CommandCreator.class, SshCommandCreator.class);
|
||||
contributeFromPackage(SignatureVerifier.class, SignatureVerifier.class);
|
||||
}
|
||||
@ -692,15 +692,15 @@ public class CoreModule extends AbstractPluginModule {
|
||||
bind(WicketServlet.class).to(DefaultWicketServlet.class);
|
||||
bind(WicketFilter.class).to(DefaultWicketFilter.class);
|
||||
bind(EditSupportRegistry.class).to(DefaultEditSupportRegistry.class);
|
||||
bind(WebSocketManager.class).to(DefaultWebSocketManager.class);
|
||||
bind(WebSocketService.class).to(DefaultWebSocketService.class);
|
||||
bind(SessionDataStoreFactory.class).to(DefaultSessionDataStoreFactory.class);
|
||||
|
||||
contributeFromPackage(EditSupport.class, EditSupport.class);
|
||||
|
||||
bind(org.apache.wicket.protocol.http.WebApplication.class).to(WebApplication.class);
|
||||
bind(Application.class).to(WebApplication.class);
|
||||
bind(AvatarManager.class).to(DefaultAvatarManager.class);
|
||||
bind(WebSocketManager.class).to(DefaultWebSocketManager.class);
|
||||
bind(AvatarService.class).to(DefaultAvatarService.class);
|
||||
bind(WebSocketService.class).to(DefaultWebSocketService.class);
|
||||
|
||||
contributeFromPackage(EditSupport.class, EditSupportLocator.class);
|
||||
|
||||
@ -721,23 +721,23 @@ public class CoreModule extends AbstractPluginModule {
|
||||
contributeFromPackage(ExceptionHandler.class, PageExpiredExceptionHandler.class);
|
||||
contributeFromPackage(ExceptionHandler.class, WebApplicationExceptionHandler.class);
|
||||
|
||||
bind(UrlManager.class).to(DefaultUrlManager.class);
|
||||
bind(UrlService.class).to(DefaultUrlService.class);
|
||||
bind(CodeCommentEventBroadcaster.class);
|
||||
bind(PullRequestEventBroadcaster.class);
|
||||
bind(IssueEventBroadcaster.class);
|
||||
bind(BuildEventBroadcaster.class);
|
||||
bind(AlertEventBroadcaster.class);
|
||||
bind(UploadManager.class).to(DefaultUploadManager.class);
|
||||
bind(UploadService.class).to(DefaultUploadService.class);
|
||||
|
||||
bind(TaskButton.TaskFutureManager.class);
|
||||
}
|
||||
|
||||
private void configureBuild() {
|
||||
bind(ResourceAllocator.class).to(DefaultResourceAllocator.class);
|
||||
bind(AgentManager.class).to(DefaultAgentManager.class);
|
||||
bind(AgentTokenManager.class).to(DefaultAgentTokenManager.class);
|
||||
bind(AgentAttributeManager.class).to(DefaultAgentAttributeManager.class);
|
||||
bind(AgentLastUsedDateManager.class).to(DefaultAgentLastUsedDateManager.class);
|
||||
bind(AgentService.class).to(DefaultAgentService.class);
|
||||
bind(AgentTokenService.class).to(DefaultAgentTokenService.class);
|
||||
bind(AgentAttributeService.class).to(DefaultAgentAttributeService.class);
|
||||
bind(AgentLastUsedDateService.class).to(DefaultAgentLastUsedDateService.class);
|
||||
|
||||
contribute(ScriptContribution.class, new ScriptContribution() {
|
||||
|
||||
@ -775,22 +775,22 @@ public class CoreModule extends AbstractPluginModule {
|
||||
}
|
||||
|
||||
private void configurePersistence() {
|
||||
bind(DataManager.class).to(DefaultDataManager.class);
|
||||
bind(DataService.class).to(DefaultDataService.class);
|
||||
|
||||
bind(Session.class).toProvider(SessionProvider.class);
|
||||
bind(EntityManager.class).toProvider(SessionProvider.class);
|
||||
bind(SessionFactory.class).toProvider(SessionFactoryProvider.class);
|
||||
bind(EntityManagerFactory.class).toProvider(SessionFactoryProvider.class);
|
||||
bind(SessionFactoryManager.class).to(DefaultSessionFactoryManager.class);
|
||||
bind(SessionFactoryService.class).to(DefaultSessionFactoryService.class);
|
||||
|
||||
contribute(ObjectMapperConfigurator.class, HibernateObjectMapperConfigurator.class);
|
||||
|
||||
bind(Interceptor.class).to(HibernateInterceptor.class);
|
||||
bind(PhysicalNamingStrategy.class).toInstance(new PrefixedNamingStrategy("o_"));
|
||||
|
||||
bind(SessionManager.class).to(DefaultSessionManager.class);
|
||||
bind(TransactionManager.class).to(DefaultTransactionManager.class);
|
||||
bind(IdManager.class).to(DefaultIdManager.class);
|
||||
bind(SessionService.class).to(DefaultSessionService.class);
|
||||
bind(TransactionService.class).to(DefaultTransactionService.class);
|
||||
bind(IdService.class).to(DefaultIdService.class);
|
||||
bind(Dao.class).to(DefaultDao.class);
|
||||
|
||||
TransactionInterceptor transactionInterceptor = new TransactionInterceptor();
|
||||
|
||||
@ -44,20 +44,20 @@ import io.onedev.commons.loader.AppLoader;
|
||||
import io.onedev.commons.loader.ManagedSerializedForm;
|
||||
import io.onedev.commons.utils.FileUtils;
|
||||
import io.onedev.commons.utils.TarUtils;
|
||||
import io.onedev.server.cluster.ClusterManager;
|
||||
import io.onedev.server.data.DataManager;
|
||||
import io.onedev.server.entitymanager.SettingManager;
|
||||
import io.onedev.server.cluster.ClusterService;
|
||||
import io.onedev.server.data.DataService;
|
||||
import io.onedev.server.service.SettingService;
|
||||
import io.onedev.server.event.ListenerRegistry;
|
||||
import io.onedev.server.event.system.SystemStarted;
|
||||
import io.onedev.server.event.system.SystemStarting;
|
||||
import io.onedev.server.event.system.SystemStopped;
|
||||
import io.onedev.server.event.system.SystemStopping;
|
||||
import io.onedev.server.exception.ServerNotReadyException;
|
||||
import io.onedev.server.jetty.JettyManager;
|
||||
import io.onedev.server.jetty.JettyService;
|
||||
import io.onedev.server.model.support.administration.SystemSetting;
|
||||
import io.onedev.server.persistence.IdManager;
|
||||
import io.onedev.server.persistence.SessionFactoryManager;
|
||||
import io.onedev.server.persistence.SessionManager;
|
||||
import io.onedev.server.persistence.IdService;
|
||||
import io.onedev.server.persistence.SessionFactoryService;
|
||||
import io.onedev.server.persistence.SessionService;
|
||||
import io.onedev.server.persistence.annotation.Sessional;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
import io.onedev.server.taskschedule.TaskScheduler;
|
||||
@ -69,11 +69,11 @@ public class OneDev extends AbstractPlugin implements Serializable, Runnable {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(OneDev.class);
|
||||
|
||||
private final Provider<JettyManager> jettyLauncherProvider;
|
||||
private final Provider<JettyService> jettyLauncherProvider;
|
||||
|
||||
private final SessionManager sessionManager;
|
||||
private final SessionService sessionService;
|
||||
|
||||
private final DataManager dataManager;
|
||||
private final DataService dataService;
|
||||
|
||||
private final Provider<ServerConfig> serverConfigProvider;
|
||||
|
||||
@ -83,13 +83,13 @@ public class OneDev extends AbstractPlugin implements Serializable, Runnable {
|
||||
|
||||
private final ExecutorService executorService;
|
||||
|
||||
private final ClusterManager clusterManager;
|
||||
private final ClusterService clusterService;
|
||||
|
||||
private final SettingManager settingManager;
|
||||
private final SettingService settingService;
|
||||
|
||||
private final IdManager idManager;
|
||||
private final IdService idService;
|
||||
|
||||
private final SessionFactoryManager sessionFactoryManager;
|
||||
private final SessionFactoryService sessionFactoryService;
|
||||
|
||||
private final Date bootDate = new Date();
|
||||
|
||||
@ -101,23 +101,23 @@ public class OneDev extends AbstractPlugin implements Serializable, Runnable {
|
||||
|
||||
// Some are injected via provider as instantiation might encounter problem during upgrade
|
||||
@Inject
|
||||
public OneDev(Provider<JettyManager> jettyLauncherProvider, TaskScheduler taskScheduler,
|
||||
SessionManager sessionManager, Provider<ServerConfig> serverConfigProvider,
|
||||
DataManager dataManager, ExecutorService executorService,
|
||||
ListenerRegistry listenerRegistry, ClusterManager clusterManager,
|
||||
IdManager idManager, SessionFactoryManager sessionFactoryManager,
|
||||
SettingManager settingManager) {
|
||||
public OneDev(Provider<JettyService> jettyLauncherProvider, TaskScheduler taskScheduler,
|
||||
SessionService sessionService, Provider<ServerConfig> serverConfigProvider,
|
||||
DataService dataService, ExecutorService executorService,
|
||||
ListenerRegistry listenerRegistry, ClusterService clusterService,
|
||||
IdService idService, SessionFactoryService sessionFactoryService,
|
||||
SettingService settingService) {
|
||||
this.jettyLauncherProvider = jettyLauncherProvider;
|
||||
this.taskScheduler = taskScheduler;
|
||||
this.sessionManager = sessionManager;
|
||||
this.dataManager = dataManager;
|
||||
this.sessionService = sessionService;
|
||||
this.dataService = dataService;
|
||||
this.serverConfigProvider = serverConfigProvider;
|
||||
this.executorService = executorService;
|
||||
this.listenerRegistry = listenerRegistry;
|
||||
this.clusterManager = clusterManager;
|
||||
this.idManager = idManager;
|
||||
this.sessionFactoryManager = sessionFactoryManager;
|
||||
this.settingManager = settingManager;
|
||||
this.clusterService = clusterService;
|
||||
this.idService = idService;
|
||||
this.sessionFactoryService = sessionFactoryService;
|
||||
this.settingService = settingService;
|
||||
|
||||
try {
|
||||
wrapperManagerClass = Class.forName("org.tanukisoftware.wrapper.WrapperManager");
|
||||
@ -145,16 +145,16 @@ public class OneDev extends AbstractPlugin implements Serializable, Runnable {
|
||||
System.setProperty("hsqldb.reconfig_logging", "false");
|
||||
System.setProperty("hsqldb.method_class_names", "java.lang.Math");
|
||||
|
||||
clusterManager.start();
|
||||
sessionFactoryManager.start();
|
||||
clusterService.start();
|
||||
sessionFactoryService.start();
|
||||
|
||||
var databasePopulated = clusterManager.getHazelcastInstance().getCPSubsystem().getAtomicLong("databasePopulated");
|
||||
var databasePopulated = clusterService.getHazelcastInstance().getCPSubsystem().getAtomicLong("databasePopulated");
|
||||
// Do not use database lock as schema update will commit transaction immediately
|
||||
// in MySQL
|
||||
clusterManager.initWithLead(databasePopulated, () -> {
|
||||
try (var conn = dataManager.openConnection()) {
|
||||
clusterService.initWithLead(databasePopulated, () -> {
|
||||
try (var conn = dataService.openConnection()) {
|
||||
callWithTransaction(conn, () -> {
|
||||
dataManager.populateDatabase(conn);
|
||||
dataService.populateDatabase(conn);
|
||||
return null;
|
||||
});
|
||||
} catch (SQLException e) {
|
||||
@ -163,9 +163,9 @@ public class OneDev extends AbstractPlugin implements Serializable, Runnable {
|
||||
return 1L;
|
||||
});
|
||||
|
||||
idManager.init();
|
||||
idService.init();
|
||||
|
||||
sessionManager.run(() -> listenerRegistry.post(new SystemStarting()));
|
||||
sessionService.run(() -> listenerRegistry.post(new SystemStarting()));
|
||||
jettyLauncherProvider.get().start();
|
||||
|
||||
var manualConfigs = checkData();
|
||||
@ -175,16 +175,16 @@ public class OneDev extends AbstractPlugin implements Serializable, Runnable {
|
||||
else
|
||||
logger.warn("Please set up the server at " + guessServerUrl());
|
||||
initStage = new InitStage("Server Setup", manualConfigs);
|
||||
var localServer = clusterManager.getLocalServerAddress();
|
||||
var localServer = clusterService.getLocalServerAddress();
|
||||
while (true) {
|
||||
if (maintenanceFile.exists()) {
|
||||
logger.info("Maintenance requested, trying to stop all servers...");
|
||||
clusterManager.submitToAllServers(() -> {
|
||||
if (!localServer.equals(clusterManager.getLocalServerAddress()))
|
||||
clusterService.submitToAllServers(() -> {
|
||||
if (!localServer.equals(clusterService.getLocalServerAddress()))
|
||||
restart();
|
||||
return null;
|
||||
});
|
||||
while (thread != null && clusterManager.getServerAddresses().size() != 1) {
|
||||
while (thread != null && clusterService.getServerAddresses().size() != 1) {
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException ignored) {
|
||||
@ -211,16 +211,16 @@ public class OneDev extends AbstractPlugin implements Serializable, Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
var leadServer = clusterManager.getLeaderServerAddress();
|
||||
if (!leadServer.equals(clusterManager.getLocalServerAddress())) {
|
||||
var leadServer = clusterService.getLeaderServerAddress();
|
||||
if (!leadServer.equals(clusterService.getLocalServerAddress())) {
|
||||
logger.info("Syncing assets...");
|
||||
Client client = ClientBuilder.newClient();
|
||||
try {
|
||||
String fromServerUrl = clusterManager.getServerUrl(leadServer);
|
||||
String fromServerUrl = clusterService.getServerUrl(leadServer);
|
||||
WebTarget target = client.target(fromServerUrl).path("/~api/cluster/assets");
|
||||
Invocation.Builder builder = target.request();
|
||||
builder.header(AUTHORIZATION,
|
||||
BEARER + " " + clusterManager.getCredential());
|
||||
BEARER + " " + clusterService.getCredential());
|
||||
|
||||
try (Response response = builder.get()) {
|
||||
checkStatus(response);
|
||||
@ -248,30 +248,30 @@ public class OneDev extends AbstractPlugin implements Serializable, Runnable {
|
||||
SecurityUtils.bindAsSystem();
|
||||
initStage = null;
|
||||
listenerRegistry.post(new SystemStarted());
|
||||
clusterManager.postStart();
|
||||
clusterService.postStart();
|
||||
thread.start();
|
||||
|
||||
SystemSetting systemSetting = settingManager.getSystemSetting();
|
||||
SystemSetting systemSetting = settingService.getSystemSetting();
|
||||
logger.info("Server is ready at " + systemSetting.getServerUrl() + ".");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preStop() {
|
||||
thread = null;
|
||||
clusterManager.preStop();
|
||||
clusterService.preStop();
|
||||
SecurityUtils.bindAsSystem();
|
||||
try {
|
||||
sessionManager.run(() -> listenerRegistry.post(new SystemStopping()));
|
||||
sessionService.run(() -> listenerRegistry.post(new SystemStopping()));
|
||||
} catch (ServerNotReadyException ignore) {
|
||||
}
|
||||
}
|
||||
|
||||
private List<ManualConfig> checkData() {
|
||||
HazelcastInstance hazelcastInstance = clusterManager.getHazelcastInstance();
|
||||
HazelcastInstance hazelcastInstance = clusterService.getHazelcastInstance();
|
||||
var lock = hazelcastInstance.getCPSubsystem().getLock("checkData");
|
||||
lock.lock();
|
||||
try {
|
||||
return dataManager.checkData();
|
||||
return dataService.checkData();
|
||||
} finally {
|
||||
lock.unlock();
|
||||
}
|
||||
@ -285,10 +285,10 @@ public class OneDev extends AbstractPlugin implements Serializable, Runnable {
|
||||
taskScheduler.stop();
|
||||
|
||||
jettyLauncherProvider.get().stop();
|
||||
sessionManager.run(() -> listenerRegistry.post(new SystemStopped()));
|
||||
sessionService.run(() -> listenerRegistry.post(new SystemStopped()));
|
||||
|
||||
sessionFactoryManager.stop();
|
||||
clusterManager.stop();
|
||||
sessionFactoryService.stop();
|
||||
clusterService.stop();
|
||||
executorService.shutdown();
|
||||
} catch (ServerNotReadyException ignore) {
|
||||
}
|
||||
@ -423,17 +423,17 @@ public class OneDev extends AbstractPlugin implements Serializable, Runnable {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
var localServer = clusterManager.getLocalServerAddress();
|
||||
var localServer = clusterService.getLocalServerAddress();
|
||||
var maintenanceFile = getMaintenanceFile(Bootstrap.installDir);
|
||||
while (thread != null) {
|
||||
if (maintenanceFile.exists()) {
|
||||
logger.info("Maintenance requested, trying to stop all servers...");
|
||||
clusterManager.submitToAllServers(() -> {
|
||||
if (!localServer.equals(clusterManager.getLocalServerAddress()))
|
||||
clusterService.submitToAllServers(() -> {
|
||||
if (!localServer.equals(clusterService.getLocalServerAddress()))
|
||||
restart();
|
||||
return null;
|
||||
});
|
||||
while (thread != null && clusterManager.getServerAddresses().size() != 1) {
|
||||
while (thread != null && clusterService.getServerAddresses().size() != 1) {
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException ignored) {
|
||||
|
||||
@ -1,13 +1,16 @@
|
||||
package io.onedev.server;
|
||||
|
||||
import io.onedev.server.annotation.NoDBAccess;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public interface StorageManager {
|
||||
public interface StorageService {
|
||||
|
||||
File initLfsDir(Long projectId);
|
||||
|
||||
File initArtifactsDir(Long projectId, Long buildNumber);
|
||||
|
||||
|
||||
@NoDBAccess
|
||||
File initPacksDir(Long projectId);
|
||||
|
||||
}
|
||||
@ -1,11 +1,13 @@
|
||||
package io.onedev.server;
|
||||
|
||||
import io.onedev.server.annotation.NoDBAccess;
|
||||
import org.apache.wicket.Component;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public interface SubscriptionManager {
|
||||
|
||||
public interface SubscriptionService {
|
||||
|
||||
@NoDBAccess
|
||||
boolean isSubscriptionActive();
|
||||
|
||||
@Nullable
|
||||
@ -8,7 +8,7 @@ import java.util.concurrent.ExecutorService;
|
||||
import io.onedev.agent.*;
|
||||
import io.onedev.commons.utils.ExceptionUtils;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.AgentManager;
|
||||
import io.onedev.server.service.AgentService;
|
||||
import org.apache.commons.lang3.SerializationUtils;
|
||||
import org.eclipse.jetty.websocket.api.Session;
|
||||
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose;
|
||||
@ -24,9 +24,9 @@ import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.commons.utils.TaskLogger;
|
||||
import io.onedev.server.exception.ServerNotReadyException;
|
||||
import io.onedev.server.job.JobContext;
|
||||
import io.onedev.server.job.JobManager;
|
||||
import io.onedev.server.job.JobService;
|
||||
import io.onedev.server.job.ResourceAllocator;
|
||||
import io.onedev.server.job.log.LogManager;
|
||||
import io.onedev.server.job.log.LogService;
|
||||
import io.onedev.server.terminal.AgentShell;
|
||||
|
||||
@WebSocket
|
||||
@ -42,7 +42,7 @@ public class ServerSocket {
|
||||
public void onClose(int statusCode, String reason) {
|
||||
try {
|
||||
if (agentId != null)
|
||||
getAgentManager().agentDisconnected(agentId);
|
||||
getAgentService().agentDisconnected(agentId);
|
||||
|
||||
StringBuilder builder = new StringBuilder("Websocket closed (");
|
||||
if (session != null && session.getRemoteAddress() != null)
|
||||
@ -69,15 +69,15 @@ public class ServerSocket {
|
||||
}
|
||||
}
|
||||
|
||||
private AgentManager getAgentManager() {
|
||||
return OneDev.getInstance(AgentManager.class);
|
||||
private AgentService getAgentService() {
|
||||
return OneDev.getInstance(AgentService.class);
|
||||
}
|
||||
|
||||
@OnWebSocketConnect
|
||||
public void onConnect(Session session) {
|
||||
this.session = session;
|
||||
try {
|
||||
new Message(MessageTypes.UPDATE, getAgentManager().getAgentVersion()).sendBy(session);
|
||||
new Message(MessageTypes.UPDATE, getAgentService().getAgentVersion()).sendBy(session);
|
||||
} catch (Exception e) {
|
||||
logger.error("Error sending websocket message", e);
|
||||
try {
|
||||
@ -98,7 +98,7 @@ public class ServerSocket {
|
||||
// be assigned via Administrator
|
||||
AgentData data = SerializationUtils.deserialize(message.getData());
|
||||
try {
|
||||
agentId = getAgentManager().agentConnected(data, session);
|
||||
agentId = getAgentService().agentConnected(data, session);
|
||||
} catch (Exception e) {
|
||||
var explicitException = ExceptionUtils.find(e, ExplicitException.class);
|
||||
if (explicitException != null) {
|
||||
@ -132,7 +132,7 @@ public class ServerSocket {
|
||||
if (sessionId.length() == 0)
|
||||
sessionId = null;
|
||||
String logMessage = StringUtils.substringAfter(remaining, ":");
|
||||
TaskLogger logger = OneDev.getInstance(LogManager.class).getJobLogger(jobToken);
|
||||
TaskLogger logger = OneDev.getInstance(LogService.class).getJobLogger(jobToken);
|
||||
if (logger != null)
|
||||
logger.log(logMessage, sessionId);
|
||||
} catch (Exception e) {
|
||||
@ -143,15 +143,15 @@ public class ServerSocket {
|
||||
String dataString = new String(messageData, StandardCharsets.UTF_8);
|
||||
String jobToken = StringUtils.substringBefore(dataString, ":");
|
||||
String jobWorkspace = StringUtils.substringAfter(dataString, ":");
|
||||
JobContext jobContext = getJobManager().getJobContext(jobToken, false);
|
||||
JobContext jobContext = getJobService().getJobContext(jobToken, false);
|
||||
if (jobContext != null)
|
||||
getJobManager().reportJobWorkspace(jobContext, jobWorkspace);
|
||||
getJobService().reportJobWorkspace(jobContext, jobWorkspace);
|
||||
break;
|
||||
case SHELL_OUTPUT:
|
||||
dataString = new String(messageData, StandardCharsets.UTF_8);
|
||||
String sessionId = StringUtils.substringBefore(dataString, ":");
|
||||
String output = StringUtils.substringAfter(dataString, ":");
|
||||
AgentShell shell = (AgentShell) getJobManager().getShell(sessionId);
|
||||
AgentShell shell = (AgentShell) getJobService().getShell(sessionId);
|
||||
if (shell != null)
|
||||
shell.getTerminal().sendOutput(output);
|
||||
break;
|
||||
@ -159,13 +159,13 @@ public class ServerSocket {
|
||||
dataString = new String(messageData, StandardCharsets.UTF_8);
|
||||
sessionId = StringUtils.substringBefore(dataString, ":");
|
||||
String error = StringUtils.substringAfter(dataString, ":");
|
||||
shell = (AgentShell) getJobManager().getShell(sessionId);
|
||||
shell = (AgentShell) getJobService().getShell(sessionId);
|
||||
if (shell != null)
|
||||
shell.getTerminal().sendError(error);
|
||||
break;
|
||||
case SHELL_CLOSED:
|
||||
sessionId = new String(messageData, StandardCharsets.UTF_8);
|
||||
shell = (AgentShell) getJobManager().getShell(sessionId);
|
||||
shell = (AgentShell) getJobService().getShell(sessionId);
|
||||
if (shell != null)
|
||||
shell.getTerminal().close();
|
||||
break;
|
||||
@ -180,8 +180,8 @@ public class ServerSocket {
|
||||
}
|
||||
}
|
||||
|
||||
private JobManager getJobManager() {
|
||||
return OneDev.getInstance(JobManager.class);
|
||||
private JobService getJobService() {
|
||||
return OneDev.getInstance(JobService.class);
|
||||
}
|
||||
|
||||
private Serializable service(Serializable request) {
|
||||
|
||||
@ -3,7 +3,7 @@ package io.onedev.server.agent;
|
||||
import io.onedev.agent.Agent;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.exception.ServerNotReadyException;
|
||||
import io.onedev.server.entitymanager.AgentTokenManager;
|
||||
import io.onedev.server.service.AgentTokenService;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
import org.eclipse.jetty.websocket.servlet.WebSocketServlet;
|
||||
import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
|
||||
@ -22,11 +22,11 @@ public class ServerSocketServlet extends WebSocketServlet {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final AgentTokenManager tokenManager;
|
||||
private final AgentTokenService tokenService;
|
||||
|
||||
@Inject
|
||||
public ServerSocketServlet(AgentTokenManager tokenManager) {
|
||||
this.tokenManager = tokenManager;
|
||||
public ServerSocketServlet(AgentTokenService tokenService) {
|
||||
this.tokenService = tokenService;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -43,7 +43,7 @@ public class ServerSocketServlet extends WebSocketServlet {
|
||||
if (!OneDev.getInstance().isReady())
|
||||
throw new ServerNotReadyException();
|
||||
String tokenValue = SecurityUtils.getBearerToken(request);
|
||||
if (tokenValue != null && tokenManager.find(tokenValue) != null)
|
||||
if (tokenValue != null && tokenService.find(tokenValue) != null)
|
||||
super.service(request, response);
|
||||
else
|
||||
response.sendError(SC_FORBIDDEN, "A valid agent token is expected");
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
package io.onedev.server.annotation;
|
||||
|
||||
public @interface NoDBAccess {
|
||||
}
|
||||
@ -6,7 +6,7 @@ import java.util.List;
|
||||
|
||||
import io.onedev.server.util.artifact.FileInfo;
|
||||
|
||||
public interface AttachmentManager {
|
||||
public interface AttachmentService {
|
||||
|
||||
File getAttachmentGroupDir(Long projectId, String attachmentGroup);
|
||||
|
||||
@ -45,12 +45,12 @@ import io.onedev.commons.utils.FileUtils;
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.commons.utils.TarUtils;
|
||||
import io.onedev.k8shelper.KubernetesHelper;
|
||||
import io.onedev.server.cluster.ClusterManager;
|
||||
import io.onedev.server.cluster.ClusterService;
|
||||
import io.onedev.server.cluster.ClusterRunnable;
|
||||
import io.onedev.server.cluster.ClusterTask;
|
||||
import io.onedev.server.entitymanager.IssueManager;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.entitymanager.SettingManager;
|
||||
import io.onedev.server.service.IssueService;
|
||||
import io.onedev.server.service.ProjectService;
|
||||
import io.onedev.server.service.SettingService;
|
||||
import io.onedev.server.event.Listen;
|
||||
import io.onedev.server.event.entity.EntityRemoved;
|
||||
import io.onedev.server.event.project.build.BuildSubmitted;
|
||||
@ -74,7 +74,7 @@ import io.onedev.server.event.system.SystemStopping;
|
||||
import io.onedev.server.model.Issue;
|
||||
import io.onedev.server.model.support.issue.changedata.IssueDescriptionChangeData;
|
||||
import io.onedev.server.model.support.pullrequest.changedata.PullRequestDescriptionChangeData;
|
||||
import io.onedev.server.persistence.TransactionManager;
|
||||
import io.onedev.server.persistence.TransactionService;
|
||||
import io.onedev.server.persistence.annotation.Sessional;
|
||||
import io.onedev.server.persistence.annotation.Transactional;
|
||||
import io.onedev.server.persistence.dao.Dao;
|
||||
@ -82,14 +82,14 @@ import io.onedev.server.taskschedule.SchedulableTask;
|
||||
import io.onedev.server.taskschedule.TaskScheduler;
|
||||
import io.onedev.server.util.IOUtils;
|
||||
import io.onedev.server.util.artifact.FileInfo;
|
||||
import io.onedev.server.util.concurrent.BatchWorkManager;
|
||||
import io.onedev.server.util.concurrent.BatchWorkExecutionService;
|
||||
import io.onedev.server.util.concurrent.BatchWorker;
|
||||
import io.onedev.server.util.concurrent.Prioritized;
|
||||
|
||||
@Singleton
|
||||
public class DefaultAttachmentManager implements AttachmentManager, SchedulableTask, Serializable {
|
||||
public class DefaultAttachmentService implements AttachmentService, SchedulableTask, Serializable {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(DefaultAttachmentManager.class);
|
||||
private static final Logger logger = LoggerFactory.getLogger(DefaultAttachmentService.class);
|
||||
|
||||
private static final long TEMP_PRESERVE_PERIOD = 24*3600*1000L;
|
||||
|
||||
@ -98,47 +98,40 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
private static final String PERMANENT = "permanent";
|
||||
|
||||
private static final String TEMP = "temp";
|
||||
|
||||
private final Dao dao;
|
||||
|
||||
private final TransactionManager transactionManager;
|
||||
|
||||
private final TaskScheduler taskScheduler;
|
||||
|
||||
private final ProjectManager projectManager;
|
||||
|
||||
private final ClusterManager clusterManager;
|
||||
|
||||
private final SettingManager settingManager;
|
||||
|
||||
private final IssueManager issueManager;
|
||||
|
||||
private final BatchWorkManager batchWorkManager;
|
||||
@Inject
|
||||
private Dao dao;
|
||||
|
||||
@Inject
|
||||
private TransactionService transactionService;
|
||||
|
||||
@Inject
|
||||
private TaskScheduler taskScheduler;
|
||||
|
||||
@Inject
|
||||
private ProjectService projectService;
|
||||
|
||||
@Inject
|
||||
private ClusterService clusterService;
|
||||
|
||||
@Inject
|
||||
private SettingService settingService;
|
||||
|
||||
@Inject
|
||||
private IssueService issueService;
|
||||
|
||||
@Inject
|
||||
private BatchWorkExecutionService batchWorkExecutionService;
|
||||
|
||||
private String taskId;
|
||||
|
||||
@Inject
|
||||
public DefaultAttachmentManager(Dao dao, TransactionManager transactionManager,
|
||||
TaskScheduler taskScheduler, SettingManager settingManager,
|
||||
ProjectManager projectManager, ClusterManager clusterManager,
|
||||
IssueManager issueManager, BatchWorkManager batchWorkManager) {
|
||||
this.dao = dao;
|
||||
this.transactionManager = transactionManager;
|
||||
this.taskScheduler = taskScheduler;
|
||||
this.settingManager = settingManager;
|
||||
this.projectManager = projectManager;
|
||||
this.clusterManager = clusterManager;
|
||||
this.issueManager = issueManager;
|
||||
this.batchWorkManager = batchWorkManager;
|
||||
}
|
||||
|
||||
|
||||
public Object writeReplace() throws ObjectStreamException {
|
||||
return new ManagedSerializedForm(AttachmentManager.class);
|
||||
return new ManagedSerializedForm(AttachmentService.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public File getAttachmentGroupDir(Long projectId, String attachmentGroup) {
|
||||
File baseDir = projectManager.getAttachmentDir(projectId);
|
||||
File baseDir = projectService.getAttachmentDir(projectId);
|
||||
File groupDir = getPermanentAttachmentGroupDir(baseDir, attachmentGroup);
|
||||
if (groupDir.exists())
|
||||
return groupDir;
|
||||
@ -151,11 +144,11 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
public void on(IssuesMoved event) {
|
||||
Long sourceProjectId = event.getSourceProject().getId();
|
||||
Long targetProjectId = event.getProject().getId();
|
||||
File targetBaseDir = projectManager.getAttachmentDir(targetProjectId);
|
||||
File targetBaseDir = projectService.getAttachmentDir(targetProjectId);
|
||||
|
||||
String sourceActiveServer = projectManager.getActiveServer(sourceProjectId, true);
|
||||
if (sourceActiveServer.equals(clusterManager.getLocalServerAddress())) {
|
||||
File sourceBaseDir = projectManager.getAttachmentDir(sourceProjectId);
|
||||
String sourceActiveServer = projectService.getActiveServer(sourceProjectId, true);
|
||||
if (sourceActiveServer.equals(clusterService.getLocalServerAddress())) {
|
||||
File sourceBaseDir = projectService.getAttachmentDir(sourceProjectId);
|
||||
for (Long issueId: event.getIssueIds()) {
|
||||
Issue issue = dao.load(Issue.class, issueId);
|
||||
String attachmentGroup = issue.getAttachmentGroup();
|
||||
@ -184,8 +177,8 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
} finally {
|
||||
FileUtils.deleteDir(tempGroupDir);
|
||||
}
|
||||
projectManager.directoryModified(targetProjectId, sourceGroupDir.getParentFile());
|
||||
projectManager.directoryModified(targetProjectId, targetGroupDir.getParentFile());
|
||||
projectService.directoryModified(targetProjectId, sourceGroupDir.getParentFile());
|
||||
projectService.directoryModified(targetProjectId, targetGroupDir.getParentFile());
|
||||
}
|
||||
} else {
|
||||
Collection<String> attachmentGroups = new HashSet<>();
|
||||
@ -211,22 +204,22 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
} finally {
|
||||
FileUtils.deleteDir(tempGroupDir);
|
||||
}
|
||||
projectManager.directoryModified(targetProjectId, targetGroupDir.getParentFile());
|
||||
projectService.directoryModified(targetProjectId, targetGroupDir.getParentFile());
|
||||
}
|
||||
projectManager.runOnActiveServer(sourceProjectId, new ClusterTask<Void>() {
|
||||
projectService.runOnActiveServer(sourceProjectId, new ClusterTask<Void>() {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public Void call() {
|
||||
File sourceBaseDir = projectManager.getAttachmentDir(sourceProjectId);
|
||||
File sourceBaseDir = projectService.getAttachmentDir(sourceProjectId);
|
||||
for (var attachmentGroup: attachmentGroups) {
|
||||
var sourceGroupDir = getPermanentAttachmentGroupDir(sourceBaseDir, attachmentGroup);
|
||||
write(getAttachmentLockName(sourceProjectId, attachmentGroup), () -> {
|
||||
FileUtils.deleteDir(sourceGroupDir);
|
||||
return null;
|
||||
});
|
||||
projectManager.directoryModified(sourceProjectId, sourceGroupDir.getParentFile());
|
||||
projectService.directoryModified(sourceProjectId, sourceGroupDir.getParentFile());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -241,11 +234,11 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
Long sourceProjectId = event.getSourceProject().getId();
|
||||
Long targetProjectId = event.getProject().getId();
|
||||
|
||||
File targetBaseDir = projectManager.getAttachmentDir(targetProjectId);
|
||||
File targetBaseDir = projectService.getAttachmentDir(targetProjectId);
|
||||
|
||||
String sourceActiveServer = projectManager.getActiveServer(sourceProjectId, true);
|
||||
if (sourceActiveServer.equals(clusterManager.getLocalServerAddress())) {
|
||||
File sourceBaseDir = projectManager.getAttachmentDir(sourceProjectId);
|
||||
String sourceActiveServer = projectService.getActiveServer(sourceProjectId, true);
|
||||
if (sourceActiveServer.equals(clusterService.getLocalServerAddress())) {
|
||||
File sourceBaseDir = projectService.getAttachmentDir(sourceProjectId);
|
||||
for (var entry: event.getIssueIdMapping().entrySet()) {
|
||||
Issue sourceIssue = dao.load(Issue.class, entry.getKey());
|
||||
Issue targetIssue = dao.load(Issue.class, entry.getValue());
|
||||
@ -273,7 +266,7 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
} finally {
|
||||
FileUtils.deleteDir(tempGroupDir);
|
||||
}
|
||||
projectManager.directoryModified(targetProjectId, targetGroupDir.getParentFile());
|
||||
projectService.directoryModified(targetProjectId, targetGroupDir.getParentFile());
|
||||
}
|
||||
} else {
|
||||
for (var entry: event.getIssueIdMapping().entrySet()) {
|
||||
@ -296,7 +289,7 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
} finally {
|
||||
FileUtils.deleteDir(tempGroupDir);
|
||||
}
|
||||
projectManager.directoryModified(targetProjectId, targetGroupDir.getParentFile());
|
||||
projectService.directoryModified(targetProjectId, targetGroupDir.getParentFile());
|
||||
}
|
||||
}
|
||||
|
||||
@ -306,13 +299,13 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
Long sourceProjectId, String sourceAttachmentGroup) {
|
||||
Client client = ClientBuilder.newClient();
|
||||
try {
|
||||
String fromServerUrl = clusterManager.getServerUrl(sourceActiveServer);
|
||||
String fromServerUrl = clusterService.getServerUrl(sourceActiveServer);
|
||||
WebTarget target = client.target(fromServerUrl).path("/~api/cluster/attachments")
|
||||
.queryParam("projectId", sourceProjectId)
|
||||
.queryParam("attachmentGroup", sourceAttachmentGroup);
|
||||
Invocation.Builder builder = target.request();
|
||||
builder.header(AUTHORIZATION,
|
||||
BEARER + " " + clusterManager.getCredential());
|
||||
BEARER + " " + clusterService.getCredential());
|
||||
|
||||
try (Response response = builder.get()) {
|
||||
KubernetesHelper.checkStatus(response);
|
||||
@ -333,7 +326,7 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
}
|
||||
|
||||
private void permanentizeAttachmentGroup(Long projectId, String attachmentGroup) {
|
||||
var baseAttachmentDir = projectManager.getAttachmentDir(projectId);
|
||||
var baseAttachmentDir = projectService.getAttachmentDir(projectId);
|
||||
write(getAttachmentLockName(projectId, attachmentGroup), () -> {
|
||||
File permanentStorage = getPermanentAttachmentGroupDir(baseAttachmentDir, attachmentGroup);
|
||||
if (!permanentStorage.exists()) {
|
||||
@ -347,7 +340,7 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
} else {
|
||||
FileUtils.createDir(permanentStorage);
|
||||
}
|
||||
projectManager.directoryModified(projectId, permanentStorage);
|
||||
projectService.directoryModified(projectId, permanentStorage);
|
||||
}
|
||||
return null;
|
||||
});
|
||||
@ -366,13 +359,13 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
batchWorkManager.submit(new BatchWorker("attachment-manager-house-keeping") {
|
||||
batchWorkExecutionService.submit(new BatchWorker("attachment-manager-house-keeping") {
|
||||
|
||||
@Override
|
||||
public void doWorks(List<Prioritized> works) {
|
||||
for (var projectId: projectManager.getActiveIds()) {
|
||||
for (var projectId: projectService.getActiveIds()) {
|
||||
try {
|
||||
File tempAttachmentBase = new File(projectManager.getAttachmentDir(projectId), TEMP);
|
||||
File tempAttachmentBase = new File(projectService.getAttachmentDir(projectId), TEMP);
|
||||
if (tempAttachmentBase.exists()) {
|
||||
for (File attachmentGroupDir: tempAttachmentBase.listFiles()) {
|
||||
if (System.currentTimeMillis() - attachmentGroupDir.lastModified() > TEMP_PRESERVE_PERIOD) {
|
||||
@ -398,7 +391,7 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
@Sessional
|
||||
public void on(IssuesImported event) {
|
||||
for (var issueId: event.getIssueIds()) {
|
||||
var issue = issueManager.load(issueId);
|
||||
var issue = issueService.load(issueId);
|
||||
var attachmentGroup = issue.getAttachmentGroup();
|
||||
permanentizeAttachmentGroup(issue.getProject().getId(), attachmentGroup);
|
||||
}
|
||||
@ -505,15 +498,15 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
if (event.getEntity() instanceof AttachmentStorageSupport) {
|
||||
AttachmentStorageSupport storageSupport = (AttachmentStorageSupport) event.getEntity();
|
||||
Long projectId = storageSupport.getAttachmentProject().getId();
|
||||
String activeServer = projectManager.getActiveServer(projectId, false);
|
||||
String activeServer = projectService.getActiveServer(projectId, false);
|
||||
if (activeServer != null) {
|
||||
transactionManager.runAfterCommit(new ClusterRunnable() {
|
||||
transactionService.runAfterCommit(new ClusterRunnable() {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
clusterManager.runOnServer(activeServer, new ClusterTask<Void>() {
|
||||
clusterService.runOnServer(activeServer, new ClusterTask<Void>() {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ -522,10 +515,10 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
var attachmentGroup = storageSupport.getAttachmentGroup();
|
||||
return write(getAttachmentLockName(projectId, attachmentGroup), () -> {
|
||||
File attachmentDir = getPermanentAttachmentGroupDir(
|
||||
projectManager.getAttachmentDir(storageSupport.getAttachmentProject().getId()),
|
||||
projectService.getAttachmentDir(storageSupport.getAttachmentProject().getId()),
|
||||
attachmentGroup);
|
||||
FileUtils.deleteDir(attachmentDir);
|
||||
projectManager.directoryModified(projectId, attachmentDir.getParentFile());
|
||||
projectService.directoryModified(projectId, attachmentDir.getParentFile());
|
||||
return null;
|
||||
});
|
||||
}
|
||||
@ -541,21 +534,21 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
@Override
|
||||
public String saveAttachment(Long projectId, String attachmentGroup, String preferredAttachmentName,
|
||||
InputStream attachmentStream) {
|
||||
String activeServer = projectManager.getActiveServer(projectId, true);
|
||||
if (activeServer.equals(clusterManager.getLocalServerAddress())) {
|
||||
String activeServer = projectService.getActiveServer(projectId, true);
|
||||
if (activeServer.equals(clusterService.getLocalServerAddress())) {
|
||||
return saveAttachmentLocal(projectId, attachmentGroup, preferredAttachmentName, attachmentStream);
|
||||
} else {
|
||||
Client client = ClientBuilder.newClient();
|
||||
client.property(ClientProperties.REQUEST_ENTITY_PROCESSING, "CHUNKED");
|
||||
try {
|
||||
String serverUrl = clusterManager.getServerUrl(activeServer);
|
||||
String serverUrl = clusterService.getServerUrl(activeServer);
|
||||
WebTarget target = client.target(serverUrl)
|
||||
.path("~api/cluster/attachment")
|
||||
.queryParam("projectId", projectId)
|
||||
.queryParam("attachmentGroup", attachmentGroup)
|
||||
.queryParam("suggestedAttachmentName", preferredAttachmentName);
|
||||
var builder = target.request();
|
||||
builder.header(AUTHORIZATION, BEARER + " " + clusterManager.getCredential());
|
||||
builder.header(AUTHORIZATION, BEARER + " " + clusterService.getCredential());
|
||||
|
||||
StreamingOutput os = output -> {
|
||||
try {
|
||||
@ -598,7 +591,7 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
index++;
|
||||
}
|
||||
|
||||
long maxUploadFileSize = settingManager.getPerformanceSetting().getMaxUploadFileSize() * 1024L * 1024L;
|
||||
long maxUploadFileSize = settingService.getPerformanceSetting().getMaxUploadFileSize() * 1024L * 1024L;
|
||||
|
||||
Exception ex = null;
|
||||
File file = new File(attachmentDir, attachmentName);
|
||||
@ -623,7 +616,7 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
throw ExceptionUtils.unchecked(ex);
|
||||
} else {
|
||||
if (!attachmentDir.getParentFile().getName().equals(TEMP))
|
||||
projectManager.directoryModified(projectId, attachmentDir);
|
||||
projectService.directoryModified(projectId, attachmentDir);
|
||||
return file.getName();
|
||||
}
|
||||
});
|
||||
@ -636,7 +629,7 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
|
||||
@Override
|
||||
public FileInfo getAttachmentInfo(Long projectId, String attachmentGroup, String attachment) {
|
||||
return projectManager.runOnActiveServer(projectId, () -> read(getAttachmentLockName(projectId, attachmentGroup), () -> {
|
||||
return projectService.runOnActiveServer(projectId, () -> read(getAttachmentLockName(projectId, attachmentGroup), () -> {
|
||||
File attachmentFile = new File(getAttachmentGroupDir(projectId, attachmentGroup), attachment);
|
||||
if (!attachmentFile.exists())
|
||||
throw new FileNotFoundException("Attachment not found: " + attachment);
|
||||
@ -647,12 +640,12 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
|
||||
@Override
|
||||
public void deleteAttachment(Long projectId, String attachmentGroup, String attachment) {
|
||||
projectManager.runOnActiveServer(projectId, () -> write(getAttachmentLockName(projectId, attachmentGroup), () -> {
|
||||
projectService.runOnActiveServer(projectId, () -> write(getAttachmentLockName(projectId, attachmentGroup), () -> {
|
||||
var attachmentGroupDir = getAttachmentGroupDir(projectId, attachmentGroup);
|
||||
File attachmentFile = new File(attachmentGroupDir, attachment);
|
||||
if (attachmentFile.exists()) {
|
||||
FileUtils.deleteFile(attachmentFile);
|
||||
projectManager.directoryModified(projectId, attachmentGroupDir);
|
||||
projectService.directoryModified(projectId, attachmentGroupDir);
|
||||
}
|
||||
return null;
|
||||
}));
|
||||
@ -660,7 +653,7 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
|
||||
@Override
|
||||
public List<FileInfo> listAttachments(Long projectId, String attachmentGroup) {
|
||||
return projectManager.runOnActiveServer(projectId, () -> read(getAttachmentLockName(projectId, attachmentGroup), () -> {
|
||||
return projectService.runOnActiveServer(projectId, () -> read(getAttachmentLockName(projectId, attachmentGroup), () -> {
|
||||
List<FileInfo> attachments = new ArrayList<>();
|
||||
File attachmentGroupDir = getAttachmentGroupDir(projectId, attachmentGroup);
|
||||
if (attachmentGroupDir.exists()) {
|
||||
@ -676,12 +669,12 @@ public class DefaultAttachmentManager implements AttachmentManager, SchedulableT
|
||||
@Override
|
||||
public void syncAttachments(Long projectId, String activeServer) {
|
||||
var permanent = ATTACHMENT_DIR + "/" + PERMANENT;
|
||||
projectManager.syncDirectory(projectId, permanent, prefix -> {
|
||||
projectService.syncDirectory(projectId, permanent, prefix -> {
|
||||
var prefixPath = permanent + "/" + prefix;
|
||||
projectManager.syncDirectory(projectId, prefixPath, attachmentGroup -> {
|
||||
projectService.syncDirectory(projectId, prefixPath, attachmentGroup -> {
|
||||
var attachmentGroupPath = permanent + "/" + prefix + "/" + attachmentGroup;
|
||||
var lockName = getAttachmentLockName(projectId, attachmentGroup);
|
||||
projectManager.syncDirectory(projectId, attachmentGroupPath, lockName, activeServer);
|
||||
projectService.syncDirectory(projectId, attachmentGroupPath, lockName, activeServer);
|
||||
}, activeServer);
|
||||
}, activeServer);
|
||||
}
|
||||
@ -11,9 +11,9 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.service.ProjectService;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.persistence.SessionManager;
|
||||
import io.onedev.server.persistence.SessionService;
|
||||
import io.onedev.server.web.resource.AttachmentResource;
|
||||
import io.onedev.server.web.resource.AttachmentResourceReference;
|
||||
|
||||
@ -44,21 +44,21 @@ public class ProjectAttachmentSupport implements AttachmentSupport {
|
||||
|
||||
@Override
|
||||
public List<String> getAttachments() {
|
||||
return getAttachmentManager().listAttachments(projectId, attachmentGroup).stream()
|
||||
return getAttachmentService().listAttachments(projectId, attachmentGroup).stream()
|
||||
.map(it->it.getPath()).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private ProjectManager getProjectManager() {
|
||||
return OneDev.getInstance(ProjectManager.class);
|
||||
private ProjectService getProjectService() {
|
||||
return OneDev.getInstance(ProjectService.class);
|
||||
}
|
||||
|
||||
private AttachmentManager getAttachmentManager() {
|
||||
return OneDev.getInstance(AttachmentManager.class);
|
||||
private AttachmentService getAttachmentService() {
|
||||
return OneDev.getInstance(AttachmentService.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteAttachemnt(String attachment) {
|
||||
getAttachmentManager().deleteAttachment(projectId, attachmentGroup, attachment);
|
||||
getAttachmentService().deleteAttachment(projectId, attachmentGroup, attachment);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -67,18 +67,18 @@ public class ProjectAttachmentSupport implements AttachmentSupport {
|
||||
}
|
||||
|
||||
protected Project getProject() {
|
||||
SessionManager sessionManager = OneDev.getInstance(SessionManager.class);
|
||||
sessionManager.openSession();
|
||||
SessionService sessionService = OneDev.getInstance(SessionService.class);
|
||||
sessionService.openSession();
|
||||
try {
|
||||
return getProjectManager().load(projectId);
|
||||
return getProjectService().load(projectId);
|
||||
} finally {
|
||||
sessionManager.closeSession();
|
||||
sessionService.closeSession();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String saveAttachment(String suggestedAttachmentName, InputStream attachmentStream) {
|
||||
return getAttachmentManager().saveAttachment(
|
||||
return getAttachmentService().saveAttachment(
|
||||
projectId, attachmentGroup, suggestedAttachmentName, attachmentStream);
|
||||
}
|
||||
|
||||
|
||||
@ -59,7 +59,6 @@ import io.onedev.server.data.migration.XmlBuildSpecMigrator;
|
||||
import io.onedev.server.job.JobAuthorizationContext;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.model.support.build.JobProperty;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
import io.onedev.server.util.ComponentContext;
|
||||
import io.onedev.server.validation.Validatable;
|
||||
import io.onedev.server.web.page.project.blob.ProjectBlobPage;
|
||||
@ -186,8 +185,7 @@ public class BuildSpec implements Serializable, Validatable {
|
||||
Collection<String> newCommitChain = new HashSet<>(commitChain);
|
||||
newCommitChain.add(importCommit.name());
|
||||
BuildSpec importedBuildSpec = aImport.getBuildSpec();
|
||||
JobAuthorizationContext.push(new JobAuthorizationContext(
|
||||
aImport.getProject(), importCommit, SecurityUtils.getUser(), null));
|
||||
JobAuthorizationContext.push(new JobAuthorizationContext(aImport.getProject(), importCommit, null));
|
||||
try {
|
||||
importedBuildSpecs.addAll(importedBuildSpec.getImportedBuildSpecs(newCommitChain));
|
||||
} finally {
|
||||
|
||||
@ -30,7 +30,7 @@ import io.onedev.server.annotation.ChoiceProvider;
|
||||
import io.onedev.server.annotation.ClassValidating;
|
||||
import io.onedev.server.annotation.Editable;
|
||||
import io.onedev.server.annotation.Interpolative;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.service.ProjectService;
|
||||
import io.onedev.server.job.JobAuthorizationContext;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
@ -80,13 +80,13 @@ public class Import implements Serializable, Validatable {
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private static List<String> getProjectChoices() {
|
||||
ProjectManager projectManager = OneDev.getInstance(ProjectManager.class);
|
||||
ProjectService projectService = OneDev.getInstance(ProjectService.class);
|
||||
Project project = ((ProjectPage)WicketUtils.getPage()).getProject();
|
||||
|
||||
Collection<Project> projects = SecurityUtils.getAuthorizedProjects(new AccessProject());
|
||||
projects.remove(project);
|
||||
|
||||
ProjectCache cache = projectManager.cloneCache();
|
||||
ProjectCache cache = projectService.cloneCache();
|
||||
|
||||
List<String> choices = projects.stream().map(it->cache.get(it.getId()).getPath()).collect(Collectors.toList());
|
||||
Collections.sort(choices);
|
||||
@ -98,7 +98,7 @@ public class Import implements Serializable, Validatable {
|
||||
private static Project getInputProject() {
|
||||
String projectPath = (String) EditContext.get().getInputValue("projectPath");
|
||||
if (projectPath != null) {
|
||||
Project project = OneDev.getInstance(ProjectManager.class).findByPath(projectPath);
|
||||
Project project = OneDev.getInstance(ProjectService.class).findByPath(projectPath);
|
||||
if (project != null && SecurityUtils.canReadCode(project))
|
||||
return project;
|
||||
}
|
||||
@ -207,8 +207,7 @@ public class Import implements Serializable, Validatable {
|
||||
try {
|
||||
Validator validator = OneDev.getInstance(Validator.class);
|
||||
BuildSpec buildSpec = getBuildSpec();
|
||||
JobAuthorizationContext.push(new JobAuthorizationContext(
|
||||
getProject(), getCommit(), SecurityUtils.getUser(), null));
|
||||
JobAuthorizationContext.push(new JobAuthorizationContext(getProject(), getCommit(), null));
|
||||
try {
|
||||
for (int i = 0; i < buildSpec.getImports().size(); i++) {
|
||||
Import aImport = buildSpec.getImports().get(i);
|
||||
@ -243,7 +242,7 @@ public class Import implements Serializable, Validatable {
|
||||
|
||||
public Project getProject() {
|
||||
if (project == null) {
|
||||
project = OneDev.getInstance(ProjectManager.class).findByPath(projectPath);
|
||||
project = OneDev.getInstance(ProjectService.class).findByPath(projectPath);
|
||||
if (project == null)
|
||||
throw new ExplicitException(MessageFormat.format( _T("Unable to find project to import build spec: {0}"), projectPath));
|
||||
}
|
||||
|
||||
@ -46,14 +46,13 @@ import io.onedev.server.buildspec.job.trigger.JobTrigger;
|
||||
import io.onedev.server.buildspec.param.ParamUtils;
|
||||
import io.onedev.server.buildspec.param.spec.ParamSpec;
|
||||
import io.onedev.server.buildspec.step.Step;
|
||||
import io.onedev.server.entitymanager.SettingManager;
|
||||
import io.onedev.server.event.project.ProjectEvent;
|
||||
import io.onedev.server.git.GitUtils;
|
||||
import io.onedev.server.job.match.JobMatch;
|
||||
import io.onedev.server.job.match.JobMatchContext;
|
||||
import io.onedev.server.model.PullRequest;
|
||||
import io.onedev.server.model.support.administration.jobexecutor.JobExecutor;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
import io.onedev.server.service.SettingService;
|
||||
import io.onedev.server.util.ComponentContext;
|
||||
import io.onedev.server.util.EditContext;
|
||||
import io.onedev.server.util.criteria.Criteria;
|
||||
@ -151,7 +150,7 @@ public class Job implements NamedElement, Validatable {
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private static String getJobExecutorPlaceholder() {
|
||||
if (OneDev.getInstance(SettingManager.class).getJobExecutors().isEmpty())
|
||||
if (OneDev.getInstance(SettingService.class).getJobExecutors().isEmpty())
|
||||
return _T("Auto-discovered executor");
|
||||
else
|
||||
return _T("First applicable executor");
|
||||
@ -159,7 +158,7 @@ public class Job implements NamedElement, Validatable {
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private static String getJobExecutorDescription() {
|
||||
if (OneDev.getInstance(SettingManager.class).getJobExecutors().isEmpty())
|
||||
if (OneDev.getInstance(SettingService.class).getJobExecutors().isEmpty())
|
||||
return _T("Optionally specify executor for this job. Leave empty to use auto-discover executor");
|
||||
else
|
||||
return _T("Optionally specify executor for this job. Leave empty to use first applicable executor");
|
||||
@ -174,8 +173,8 @@ public class Job implements NamedElement, Validatable {
|
||||
String branch = page.getBlobIdent().revision;
|
||||
if (branch == null)
|
||||
branch = "main";
|
||||
JobMatchContext context = new JobMatchContext(page.getProject(), branch, null, SecurityUtils.getAuthUser(), jobName);
|
||||
for (JobExecutor executor: OneDev.getInstance(SettingManager.class).getJobExecutors()) {
|
||||
JobMatchContext context = new JobMatchContext(page.getProject(), branch, null, jobName);
|
||||
for (JobExecutor executor: OneDev.getInstance(SettingService.class).getJobExecutors()) {
|
||||
if (executor.isEnabled()) {
|
||||
if (executor.getJobMatch() == null) {
|
||||
applicableJobExecutors.add(executor.getName());
|
||||
@ -352,7 +351,7 @@ public class Job implements NamedElement, Validatable {
|
||||
public boolean isValid(ConstraintValidatorContext context) {
|
||||
boolean isValid = true;
|
||||
|
||||
var jobExecutors = OneDev.getInstance(SettingManager.class).getJobExecutors();
|
||||
var jobExecutors = OneDev.getInstance(SettingService.class).getJobExecutors();
|
||||
if (jobExecutor != null && !jobExecutor.contains("@")
|
||||
&& jobExecutors.stream().noneMatch(it->it.getName().equals(jobExecutor))) {
|
||||
isValid = false;
|
||||
|
||||
@ -2,7 +2,7 @@ package io.onedev.server.buildspec.job;
|
||||
|
||||
import io.onedev.k8shelper.KubernetesHelper;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.SettingManager;
|
||||
import io.onedev.server.service.SettingService;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.util.UrlUtils;
|
||||
|
||||
@ -118,14 +118,14 @@ public enum JobVariable {
|
||||
SERVER {
|
||||
@Override
|
||||
public String getValue(Build build) {
|
||||
var serverUrl = OneDev.getInstance(SettingManager.class).getSystemSetting().getServerUrl();
|
||||
var serverUrl = OneDev.getInstance(SettingService.class).getSystemSetting().getServerUrl();
|
||||
return UrlUtils.getServer(serverUrl);
|
||||
}
|
||||
},
|
||||
SERVER_HOST {
|
||||
@Override
|
||||
public String getValue(Build build) {
|
||||
var serverUrl = OneDev.getInstance(SettingManager.class).getSystemSetting().getServerUrl();
|
||||
var serverUrl = OneDev.getInstance(SettingService.class).getSystemSetting().getServerUrl();
|
||||
try {
|
||||
return new URL(serverUrl).getHost();
|
||||
} catch (MalformedURLException e) {
|
||||
@ -136,7 +136,7 @@ public enum JobVariable {
|
||||
SERVER_URL {
|
||||
@Override
|
||||
public String getValue(Build build) {
|
||||
return OneDev.getInstance(SettingManager.class).getSystemSetting().getServerUrl();
|
||||
return OneDev.getInstance(SettingService.class).getSystemSetting().getServerUrl();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -3,8 +3,8 @@ package io.onedev.server.buildspec.job;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.buildspec.param.instance.ParamInstances;
|
||||
import io.onedev.server.buildspec.param.instance.ParamMap;
|
||||
import io.onedev.server.entitymanager.IssueManager;
|
||||
import io.onedev.server.entitymanager.PullRequestManager;
|
||||
import io.onedev.server.service.IssueService;
|
||||
import io.onedev.server.service.PullRequestService;
|
||||
import io.onedev.server.model.Issue;
|
||||
import io.onedev.server.model.PullRequest;
|
||||
import org.apache.commons.lang3.builder.EqualsBuilder;
|
||||
@ -48,7 +48,7 @@ public class TriggerMatch implements Serializable {
|
||||
@Nullable
|
||||
public PullRequest getRequest() {
|
||||
if (requestId != null)
|
||||
return OneDev.getInstance(PullRequestManager.class).load(requestId);
|
||||
return OneDev.getInstance(PullRequestService.class).load(requestId);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
@ -56,7 +56,7 @@ public class TriggerMatch implements Serializable {
|
||||
@Nullable
|
||||
public Issue getIssue() {
|
||||
if (issueId != null)
|
||||
return OneDev.getInstance(IssueManager.class).load(issueId);
|
||||
return OneDev.getInstance(IssueService.class).load(issueId);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -26,9 +26,9 @@ import io.onedev.server.annotation.Multiline;
|
||||
import io.onedev.server.annotation.OmitName;
|
||||
import io.onedev.server.buildspec.BuildSpec;
|
||||
import io.onedev.server.buildspec.job.Job;
|
||||
import io.onedev.server.entitymanager.IssueManager;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.entitymanager.SettingManager;
|
||||
import io.onedev.server.service.IssueService;
|
||||
import io.onedev.server.service.ProjectService;
|
||||
import io.onedev.server.service.SettingService;
|
||||
import io.onedev.server.job.JobAuthorizationContext;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.model.Issue;
|
||||
@ -36,7 +36,7 @@ import io.onedev.server.model.Project;
|
||||
import io.onedev.server.model.support.administration.GlobalIssueSetting;
|
||||
import io.onedev.server.model.support.issue.field.FieldUtils;
|
||||
import io.onedev.server.model.support.issue.field.instance.FieldInstance;
|
||||
import io.onedev.server.persistence.TransactionManager;
|
||||
import io.onedev.server.persistence.TransactionService;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
import io.onedev.server.security.permission.AccessProject;
|
||||
import io.onedev.server.util.facade.ProjectCache;
|
||||
@ -73,13 +73,13 @@ public class CreateIssueAction extends PostBuildAction {
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private static List<String> getProjectChoices() {
|
||||
ProjectManager projectManager = OneDev.getInstance(ProjectManager.class);
|
||||
ProjectService projectService = OneDev.getInstance(ProjectService.class);
|
||||
Project project = ((ProjectPage) WicketUtils.getPage()).getProject();
|
||||
|
||||
Collection<Project> projects = SecurityUtils.getAuthorizedProjects(new AccessProject());
|
||||
projects.remove(project);
|
||||
|
||||
ProjectCache cache = projectManager.cloneCache();
|
||||
ProjectCache cache = projectService.cloneCache();
|
||||
|
||||
List<String> choices = projects.stream().map(it->cache.get(it.getId()).getPath()).collect(Collectors.toList());
|
||||
Collections.sort(choices);
|
||||
@ -155,15 +155,15 @@ public class CreateIssueAction extends PostBuildAction {
|
||||
}
|
||||
|
||||
private static Collection<String> getFieldNames() {
|
||||
return OneDev.getInstance(SettingManager.class).getIssueSetting().getFieldNames();
|
||||
return OneDev.getInstance(SettingService.class).getIssueSetting().getFieldNames();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Build build) {
|
||||
OneDev.getInstance(TransactionManager.class).run(() -> {
|
||||
OneDev.getInstance(TransactionService.class).run(() -> {
|
||||
Project project;
|
||||
if (getProjectPath() != null) {
|
||||
project = OneDev.getInstance(ProjectManager.class).findByPath(getProjectPath());
|
||||
project = OneDev.getInstance(ProjectService.class).findByPath(getProjectPath());
|
||||
if (project == null)
|
||||
throw new ExplicitException("Unable to find project: " + projectPath);
|
||||
Subject subject = JobAuthorizationContext.get().getSubject(getAccessTokenSecret());
|
||||
@ -177,8 +177,8 @@ public class CreateIssueAction extends PostBuildAction {
|
||||
issue.setTitle(getIssueTitle());
|
||||
issue.setSubmitter(SecurityUtils.getUser());
|
||||
issue.setSubmitDate(new Date());
|
||||
SettingManager settingManager = OneDev.getInstance(SettingManager.class);
|
||||
GlobalIssueSetting issueSetting = settingManager.getIssueSetting();
|
||||
SettingService settingService = OneDev.getInstance(SettingService.class);
|
||||
GlobalIssueSetting issueSetting = settingService.getIssueSetting();
|
||||
issue.setState(issueSetting.getInitialStateSpec().getName());
|
||||
|
||||
issue.setDescription(getIssueDescription());
|
||||
@ -188,7 +188,7 @@ public class CreateIssueAction extends PostBuildAction {
|
||||
.convertToObject(instance.getValueProvider().getValue());
|
||||
issue.setFieldValue(instance.getName(), fieldValue);
|
||||
}
|
||||
OneDev.getInstance(IssueManager.class).open(issue);
|
||||
OneDev.getInstance(IssueService.class).open(issue);
|
||||
});
|
||||
|
||||
}
|
||||
@ -202,7 +202,7 @@ public class CreateIssueAction extends PostBuildAction {
|
||||
public void validateWith(BuildSpec buildSpec, Job job) {
|
||||
super.validateWith(buildSpec, job);
|
||||
|
||||
GlobalIssueSetting issueSetting = OneDev.getInstance(SettingManager.class).getIssueSetting();
|
||||
GlobalIssueSetting issueSetting = OneDev.getInstance(SettingService.class).getIssueSetting();
|
||||
try {
|
||||
FieldUtils.validateFields(issueSetting.getFieldSpecMap(getFieldNames()), issueFields);
|
||||
} catch (ValidationException e) {
|
||||
|
||||
@ -1,7 +1,23 @@
|
||||
package io.onedev.server.buildspec.job.action;
|
||||
|
||||
import static io.onedev.server.buildspec.param.ParamUtils.resolveParams;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.ValidationException;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
|
||||
import org.apache.wicket.Component;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.annotation.*;
|
||||
import io.onedev.server.annotation.ChoiceProvider;
|
||||
import io.onedev.server.annotation.Editable;
|
||||
import io.onedev.server.annotation.OmitName;
|
||||
import io.onedev.server.annotation.ParamSpecProvider;
|
||||
import io.onedev.server.annotation.ShowCondition;
|
||||
import io.onedev.server.annotation.VariableOption;
|
||||
import io.onedev.server.buildspec.BuildSpec;
|
||||
import io.onedev.server.buildspec.BuildSpecAware;
|
||||
import io.onedev.server.buildspec.job.Job;
|
||||
@ -9,21 +25,13 @@ import io.onedev.server.buildspec.param.ParamUtils;
|
||||
import io.onedev.server.buildspec.param.instance.ParamInstances;
|
||||
import io.onedev.server.buildspec.param.instance.ParamMap;
|
||||
import io.onedev.server.buildspec.param.spec.ParamSpec;
|
||||
import io.onedev.server.job.JobManager;
|
||||
import io.onedev.server.job.JobService;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.service.UserService;
|
||||
import io.onedev.server.util.ComponentContext;
|
||||
import io.onedev.server.util.EditContext;
|
||||
import io.onedev.server.web.editable.BeanEditor;
|
||||
import io.onedev.server.web.util.WicketUtils;
|
||||
import org.apache.wicket.Component;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.ValidationException;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static io.onedev.server.buildspec.param.ParamUtils.resolveParams;
|
||||
|
||||
@Editable(name="Run job", order=100)
|
||||
public class RunJobAction extends PostBuildAction {
|
||||
@ -106,10 +114,10 @@ public class RunJobAction extends PostBuildAction {
|
||||
@Override
|
||||
public void execute(Build build) {
|
||||
for (var paramMap: resolveParams(build, build.getParamCombination(), getParamMatrix(), getExcludeParamMaps())) {
|
||||
JobManager jobManager = OneDev.getInstance(JobManager.class);
|
||||
jobManager.submit(build.getProject(), build.getCommitId(),
|
||||
getJobName(), paramMap, build.getRefName(),
|
||||
build.getSubmitter(), build.getRequest(), build.getIssue(),
|
||||
JobService jobService = OneDev.getInstance(JobService.class);
|
||||
var userService = OneDev.getInstance(UserService.class);
|
||||
jobService.submit(userService.getSystem(), build.getProject(), build.getCommitId(),
|
||||
getJobName(), paramMap, build.getRefName(), build.getRequest(), build.getIssue(),
|
||||
"Post build action of job '" + build.getJobName() + "'");
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,7 +9,7 @@ import javax.persistence.criteria.From;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.job.log.LogManager;
|
||||
import io.onedev.server.job.log.LogService;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.util.ProjectScope;
|
||||
import io.onedev.server.util.criteria.Criteria;
|
||||
@ -32,7 +32,7 @@ public class LogCriteria extends Criteria<Build> {
|
||||
@Override
|
||||
public boolean matches(Build build) {
|
||||
Pattern pattern = Pattern.compile(value);
|
||||
return OneDev.getInstance(LogManager.class).matches(build, pattern);
|
||||
return OneDev.getInstance(LogService.class).matches(build, pattern);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -22,8 +22,8 @@ import io.onedev.commons.utils.ExplicitException;
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.buildspec.job.action.notificationreceiver.NotificationReceiverParser.CriteriaContext;
|
||||
import io.onedev.server.entitymanager.GroupManager;
|
||||
import io.onedev.server.entitymanager.UserManager;
|
||||
import io.onedev.server.service.GroupService;
|
||||
import io.onedev.server.service.UserService;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.model.EmailAddress;
|
||||
import io.onedev.server.model.Group;
|
||||
@ -60,14 +60,14 @@ public class NotificationReceiver {
|
||||
for (CriteriaContext criteria: parser.receiver().criteria()) {
|
||||
if (criteria.userCriteria() != null) {
|
||||
String userName = getValue(criteria.userCriteria().Value());
|
||||
User user = OneDev.getInstance(UserManager.class).findByName(userName);
|
||||
User user = OneDev.getInstance(UserService.class).findByName(userName);
|
||||
if (user != null)
|
||||
addEmailAddress(emailAddresses, user);
|
||||
else
|
||||
throw new ExplicitException("Unable to find user '" + userName + "'");
|
||||
} else if (criteria.groupCriteria() != null) {
|
||||
String groupName = getValue(criteria.groupCriteria().Value());
|
||||
Group group = OneDev.getInstance(GroupManager.class).find(groupName);
|
||||
Group group = OneDev.getInstance(GroupService.class).find(groupName);
|
||||
if (group != null) {
|
||||
emailAddresses.addAll(group.getMembers().stream()
|
||||
.map(it->it.getPrimaryEmailAddress())
|
||||
|
||||
@ -3,7 +3,7 @@ package io.onedev.server.buildspec.job.gitcredential;
|
||||
import io.onedev.k8shelper.CloneInfo;
|
||||
import io.onedev.k8shelper.DefaultCloneInfo;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.web.UrlManager;
|
||||
import io.onedev.server.web.UrlService;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.annotation.Editable;
|
||||
|
||||
@ -14,7 +14,7 @@ public class DefaultCredential implements GitCredential {
|
||||
|
||||
@Override
|
||||
public CloneInfo newCloneInfo(Build build, String jobToken) {
|
||||
return new DefaultCloneInfo(OneDev.getInstance(UrlManager.class).cloneUrlFor(build.getProject(), false), jobToken);
|
||||
return new DefaultCloneInfo(OneDev.getInstance(UrlService.class).cloneUrlFor(build.getProject(), false), jobToken);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -10,7 +10,7 @@ import javax.validation.constraints.NotEmpty;
|
||||
import io.onedev.k8shelper.CloneInfo;
|
||||
import io.onedev.k8shelper.HttpCloneInfo;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.web.UrlManager;
|
||||
import io.onedev.server.web.UrlService;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.validation.Validatable;
|
||||
@ -45,7 +45,7 @@ public class HttpCredential implements GitCredential, Validatable {
|
||||
|
||||
@Override
|
||||
public CloneInfo newCloneInfo(Build build, String jobToken) {
|
||||
return new HttpCloneInfo(OneDev.getInstance(UrlManager.class).cloneUrlFor(build.getProject(), false),
|
||||
return new HttpCloneInfo(OneDev.getInstance(UrlService.class).cloneUrlFor(build.getProject(), false),
|
||||
build.getJobAuthorizationContext().getSecretValue(accessTokenSecret));
|
||||
}
|
||||
|
||||
|
||||
@ -14,8 +14,8 @@ import javax.validation.constraints.NotEmpty;
|
||||
import io.onedev.k8shelper.CloneInfo;
|
||||
import io.onedev.k8shelper.SshCloneInfo;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.SettingManager;
|
||||
import io.onedev.server.web.UrlManager;
|
||||
import io.onedev.server.service.SettingService;
|
||||
import io.onedev.server.web.UrlService;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.model.support.administration.SshSetting;
|
||||
@ -52,10 +52,10 @@ public class SshCredential implements GitCredential, Validatable {
|
||||
|
||||
@Override
|
||||
public CloneInfo newCloneInfo(Build build, String jobToken) {
|
||||
String cloneUrl = OneDev.getInstance(UrlManager.class).cloneUrlFor(build.getProject(), true);
|
||||
SettingManager settingManager = OneDev.getInstance(SettingManager.class);
|
||||
SystemSetting systemSetting = settingManager.getSystemSetting();
|
||||
SshSetting sshSetting = settingManager.getSshSetting();
|
||||
String cloneUrl = OneDev.getInstance(UrlService.class).cloneUrlFor(build.getProject(), true);
|
||||
SettingService settingService = OneDev.getInstance(SettingService.class);
|
||||
SystemSetting systemSetting = settingService.getSystemSetting();
|
||||
SshSetting sshSetting = settingService.getSshSetting();
|
||||
StringBuilder knownHosts = new StringBuilder(systemSetting.getSshServerName()).append(" ");
|
||||
try {
|
||||
PublicKeyEntry.appendPublicKeyEntry(knownHosts,
|
||||
|
||||
@ -7,13 +7,14 @@ import javax.validation.constraints.NotEmpty;
|
||||
|
||||
import edu.emory.mathcs.backport.java.util.Collections;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.BuildManager;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.util.EditContext;
|
||||
import io.onedev.server.annotation.ChoiceProvider;
|
||||
import io.onedev.server.annotation.Editable;
|
||||
import io.onedev.server.annotation.OmitName;
|
||||
import io.onedev.server.service.BuildService;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
import io.onedev.server.util.EditContext;
|
||||
|
||||
@Editable(order=100, name="Last Finished of Specified Job")
|
||||
public class LastFinishedBuild implements BuildProvider {
|
||||
@ -51,7 +52,7 @@ public class LastFinishedBuild implements BuildProvider {
|
||||
Project project = ProjectDependency.getInputProject(EditContext.get(1));
|
||||
List<String> jobNames = new ArrayList<>();
|
||||
if (project != null) {
|
||||
jobNames.addAll(OneDev.getInstance(BuildManager.class).getAccessibleJobNames(project));
|
||||
jobNames.addAll(OneDev.getInstance(BuildService.class).getAccessibleJobNames(SecurityUtils.getSubject(), project));
|
||||
Collections.sort(jobNames);
|
||||
}
|
||||
return jobNames;
|
||||
@ -59,7 +60,7 @@ public class LastFinishedBuild implements BuildProvider {
|
||||
|
||||
@Override
|
||||
public Build getBuild(Project project) {
|
||||
return OneDev.getInstance(BuildManager.class).findLastFinished(project, jobName, refName);
|
||||
return OneDev.getInstance(BuildService.class).findLastFinished(project, jobName, refName);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -8,7 +8,7 @@ import io.onedev.server.annotation.Editable;
|
||||
import io.onedev.server.annotation.Interpolative;
|
||||
import io.onedev.server.annotation.Patterns;
|
||||
import io.onedev.server.buildspec.BuildSpec;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.service.ProjectService;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
import io.onedev.server.security.permission.AccessProject;
|
||||
@ -57,8 +57,8 @@ public class ProjectDependency implements Serializable {
|
||||
List<String> choices = new ArrayList<>();
|
||||
Project currentProject = ((ProjectPage)WicketUtils.getPage()).getProject();
|
||||
|
||||
ProjectManager projectManager = OneDev.getInstance(ProjectManager.class);
|
||||
ProjectCache cache = projectManager.cloneCache();
|
||||
ProjectService projectService = OneDev.getInstance(ProjectService.class);
|
||||
ProjectCache cache = projectService.cloneCache();
|
||||
for (Project project: SecurityUtils.getAuthorizedProjects(new AccessProject())) {
|
||||
if (!project.equals(currentProject))
|
||||
choices.add(cache.get(project.getId()).getPath());
|
||||
@ -83,7 +83,7 @@ public class ProjectDependency implements Serializable {
|
||||
static Project getInputProject(EditContext editContext) {
|
||||
String projectPath = (String) editContext.getInputValue("projectPath");
|
||||
if (projectPath != null) {
|
||||
Project project = OneDev.getInstance(ProjectManager.class).findByPath(projectPath);
|
||||
Project project = OneDev.getInstance(ProjectService.class).findByPath(projectPath);
|
||||
if (project != null && SecurityUtils.canReadCode(project))
|
||||
return project;
|
||||
}
|
||||
|
||||
@ -8,7 +8,7 @@ import javax.validation.constraints.NotEmpty;
|
||||
import io.onedev.commons.codeassist.InputSuggestion;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.buildspec.BuildSpec;
|
||||
import io.onedev.server.entitymanager.BuildManager;
|
||||
import io.onedev.server.service.BuildService;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.util.EditContext;
|
||||
@ -59,7 +59,7 @@ public class SpecifiedBuild implements BuildProvider {
|
||||
else
|
||||
buildNumber = Long.parseLong(this.buildNumber);
|
||||
|
||||
return OneDev.getInstance(BuildManager.class).find(project, buildNumber);
|
||||
return OneDev.getInstance(BuildService.class).find(project, buildNumber);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -9,7 +9,7 @@ import javax.persistence.criteria.From;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.job.log.LogManager;
|
||||
import io.onedev.server.job.log.LogService;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.util.ProjectScope;
|
||||
import io.onedev.server.util.criteria.Criteria;
|
||||
@ -33,7 +33,7 @@ public class LogCriteria extends Criteria<RetryContext> {
|
||||
public boolean matches(RetryContext context) {
|
||||
Pattern pattern = Pattern.compile(value);
|
||||
return context.getErrorMessage() != null && pattern.matcher(context.getErrorMessage()).find()
|
||||
|| OneDev.getInstance(LogManager.class).matches(context.getBuild(), pattern);
|
||||
|| OneDev.getInstance(LogService.class).matches(context.getBuild(), pattern);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -17,7 +17,7 @@ import io.onedev.server.annotation.Patterns;
|
||||
import io.onedev.server.annotation.UserMatch;
|
||||
import io.onedev.server.buildspec.job.Job;
|
||||
import io.onedev.server.buildspec.job.TriggerMatch;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.service.ProjectService;
|
||||
import io.onedev.server.event.project.ProjectEvent;
|
||||
import io.onedev.server.event.project.RefUpdated;
|
||||
import io.onedev.server.git.GitUtils;
|
||||
@ -93,7 +93,7 @@ public class BranchUpdateTrigger extends JobTrigger {
|
||||
} else if (refUpdated.getNewCommitId().equals(ObjectId.zeroId())) {
|
||||
return false;
|
||||
} else {
|
||||
Repository repository = OneDev.getInstance(ProjectManager.class)
|
||||
Repository repository = OneDev.getInstance(ProjectService.class)
|
||||
.getRepository(refUpdated.getProject().getId());
|
||||
Collection<String> changedFiles = GitUtils.getChangedFiles(
|
||||
repository,
|
||||
|
||||
@ -5,7 +5,7 @@ import io.onedev.server.annotation.ChoiceProvider;
|
||||
import io.onedev.server.annotation.Editable;
|
||||
import io.onedev.server.buildspec.job.Job;
|
||||
import io.onedev.server.buildspec.job.TriggerMatch;
|
||||
import io.onedev.server.entitymanager.SettingManager;
|
||||
import io.onedev.server.service.SettingService;
|
||||
import io.onedev.server.event.project.ProjectEvent;
|
||||
import io.onedev.server.event.project.issue.IssueChanged;
|
||||
import io.onedev.server.event.project.issue.IssueOpened;
|
||||
@ -42,7 +42,7 @@ public class IssueInStateTrigger extends JobTrigger {
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private static List<String> getStateChoices() {
|
||||
return OneDev.getInstance(SettingManager.class).getIssueSetting()
|
||||
return OneDev.getInstance(SettingService.class).getIssueSetting()
|
||||
.getStateSpecs().stream().map(StateSpec::getName).collect(toList());
|
||||
}
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@ import io.onedev.server.OneDev;
|
||||
import io.onedev.server.annotation.Editable;
|
||||
import io.onedev.server.annotation.Patterns;
|
||||
import io.onedev.server.buildspec.job.TriggerMatch;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.service.ProjectService;
|
||||
import io.onedev.server.git.GitUtils;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.model.PullRequest;
|
||||
@ -65,7 +65,7 @@ public abstract class PullRequestTrigger extends JobTrigger {
|
||||
|
||||
private boolean touchedFile(PullRequest request) {
|
||||
if (getPaths() != null) {
|
||||
Repository repository = OneDev.getInstance(ProjectManager.class)
|
||||
Repository repository = OneDev.getInstance(ProjectService.class)
|
||||
.getRepository(request.getTargetProject().getId());
|
||||
Collection<String> changedFiles = GitUtils.getChangedFiles(repository,
|
||||
request.getBaseCommit(), request.getLatestUpdate().getHeadCommit());
|
||||
|
||||
@ -8,11 +8,11 @@ import io.onedev.server.annotation.ChoiceProvider;
|
||||
import io.onedev.server.annotation.Editable;
|
||||
import io.onedev.server.annotation.Interpolative;
|
||||
import io.onedev.server.buildspec.BuildSpec;
|
||||
import io.onedev.server.entitymanager.BuildManager;
|
||||
import io.onedev.server.entitymanager.IterationManager;
|
||||
import io.onedev.server.service.BuildService;
|
||||
import io.onedev.server.service.IterationService;
|
||||
import io.onedev.server.model.Iteration;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.persistence.TransactionManager;
|
||||
import io.onedev.server.persistence.TransactionService;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.io.File;
|
||||
@ -63,16 +63,16 @@ public class CloseIterationStep extends ServerSideStep {
|
||||
|
||||
@Override
|
||||
public ServerStepResult run(Long buildId, File inputDir, TaskLogger logger) {
|
||||
return OneDev.getInstance(TransactionManager.class).call(() -> {
|
||||
var build = OneDev.getInstance(BuildManager.class).load(buildId);
|
||||
return OneDev.getInstance(TransactionService.class).call(() -> {
|
||||
var build = OneDev.getInstance(BuildService.class).load(buildId);
|
||||
Project project = build.getProject();
|
||||
String iterationName = getIterationName();
|
||||
IterationManager iterationManager = OneDev.getInstance(IterationManager.class);
|
||||
Iteration iteration = iterationManager.findInHierarchy(project, iterationName);
|
||||
IterationService iterationService = OneDev.getInstance(IterationService.class);
|
||||
Iteration iteration = iterationService.findInHierarchy(project, iterationName);
|
||||
if (iteration != null) {
|
||||
if (build.canCloseIteration(getAccessTokenSecret())) {
|
||||
iteration.setClosed(true);
|
||||
iterationManager.createOrUpdate(iteration);
|
||||
iterationService.createOrUpdate(iteration);
|
||||
} else {
|
||||
logger.error("This build is not authorized to close iteration '" + iterationName + "'");
|
||||
return new ServerStepResult(false);
|
||||
|
||||
@ -10,12 +10,12 @@ import io.onedev.server.annotation.ChoiceProvider;
|
||||
import io.onedev.server.annotation.Editable;
|
||||
import io.onedev.server.annotation.Interpolative;
|
||||
import io.onedev.server.buildspec.BuildSpec;
|
||||
import io.onedev.server.entitymanager.BuildManager;
|
||||
import io.onedev.server.service.BuildService;
|
||||
import io.onedev.server.git.GitUtils;
|
||||
import io.onedev.server.git.service.GitService;
|
||||
import io.onedev.server.git.service.RefFacade;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.persistence.SessionManager;
|
||||
import io.onedev.server.persistence.SessionService;
|
||||
import io.onedev.server.web.util.SuggestionUtils;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
|
||||
@ -93,8 +93,8 @@ public class CreateBranchStep extends ServerSideStep {
|
||||
|
||||
@Override
|
||||
public ServerStepResult run(Long buildId, File inputDir, TaskLogger logger) {
|
||||
return OneDev.getInstance(SessionManager.class).call(() -> {
|
||||
var build = OneDev.getInstance(BuildManager.class).load(buildId);
|
||||
return OneDev.getInstance(SessionService.class).call(() -> {
|
||||
var build = OneDev.getInstance(BuildService.class).load(buildId);
|
||||
Project project = build.getProject();
|
||||
String branchName = getBranchName();
|
||||
|
||||
|
||||
@ -7,14 +7,14 @@ import io.onedev.k8shelper.ServerStepResult;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.annotation.*;
|
||||
import io.onedev.server.buildspec.BuildSpec;
|
||||
import io.onedev.server.entitymanager.BuildManager;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.entitymanager.UserManager;
|
||||
import io.onedev.server.service.BuildService;
|
||||
import io.onedev.server.service.ProjectService;
|
||||
import io.onedev.server.service.UserService;
|
||||
import io.onedev.server.git.GitUtils;
|
||||
import io.onedev.server.git.service.GitService;
|
||||
import io.onedev.server.git.service.RefFacade;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.persistence.SessionManager;
|
||||
import io.onedev.server.persistence.SessionService;
|
||||
import org.eclipse.jgit.lib.PersonIdent;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
|
||||
@ -81,9 +81,9 @@ public class CreateTagStep extends ServerSideStep {
|
||||
|
||||
@Override
|
||||
public ServerStepResult run(Long buildId, File inputDir, TaskLogger logger) {
|
||||
return OneDev.getInstance(SessionManager.class).call(() -> {
|
||||
var build = OneDev.getInstance(BuildManager.class).load(buildId);
|
||||
PersonIdent taggerIdent = OneDev.getInstance(UserManager.class).getSystem().asPerson();
|
||||
return OneDev.getInstance(SessionService.class).call(() -> {
|
||||
var build = OneDev.getInstance(BuildService.class).load(buildId);
|
||||
PersonIdent taggerIdent = OneDev.getInstance(UserService.class).getSystem().asPerson();
|
||||
Project project = build.getProject();
|
||||
String tagName = getTagName();
|
||||
|
||||
@ -95,7 +95,7 @@ public class CreateTagStep extends ServerSideStep {
|
||||
if (build.canCreateTag(getAccessTokenSecret(), tagName)) {
|
||||
RefFacade tagRef = project.getTagRef(tagName);
|
||||
if (tagRef != null)
|
||||
OneDev.getInstance(ProjectManager.class).deleteTag(project, tagName);
|
||||
OneDev.getInstance(ProjectService.class).deleteTag(project, tagName);
|
||||
OneDev.getInstance(GitService.class).createTag(project, tagName, build.getCommitHash(),
|
||||
taggerIdent, getTagMessage(), false);
|
||||
} else {
|
||||
|
||||
@ -6,15 +6,15 @@ import io.onedev.commons.utils.LockUtils;
|
||||
import io.onedev.commons.utils.TaskLogger;
|
||||
import io.onedev.k8shelper.ServerStepResult;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.StorageManager;
|
||||
import io.onedev.server.StorageService;
|
||||
import io.onedev.server.annotation.Editable;
|
||||
import io.onedev.server.annotation.Interpolative;
|
||||
import io.onedev.server.annotation.Patterns;
|
||||
import io.onedev.server.annotation.SubPath;
|
||||
import io.onedev.server.buildspec.BuildSpec;
|
||||
import io.onedev.server.entitymanager.BuildManager;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.persistence.SessionManager;
|
||||
import io.onedev.server.service.BuildService;
|
||||
import io.onedev.server.service.ProjectService;
|
||||
import io.onedev.server.persistence.SessionService;
|
||||
import io.onedev.server.util.patternset.PatternSet;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
@ -71,13 +71,13 @@ public class PublishArtifactStep extends ServerSideStep {
|
||||
|
||||
@Override
|
||||
public ServerStepResult run(Long buildId, File inputDir, TaskLogger jobLogger) {
|
||||
return OneDev.getInstance(SessionManager.class).call(() -> {
|
||||
var build = OneDev.getInstance(BuildManager.class).load(buildId);
|
||||
return OneDev.getInstance(SessionService.class).call(() -> {
|
||||
var build = OneDev.getInstance(BuildService.class).load(buildId);
|
||||
return LockUtils.write(build.getArtifactsLockName(), () -> {
|
||||
var projectId = build.getProject().getId();
|
||||
var artifactsDir = OneDev.getInstance(StorageManager.class).initArtifactsDir(projectId, build.getNumber());
|
||||
var artifactsDir = OneDev.getInstance(StorageService.class).initArtifactsDir(projectId, build.getNumber());
|
||||
FileUtils.copyDirectory(inputDir, artifactsDir);
|
||||
OneDev.getInstance(ProjectManager.class).directoryModified(projectId, artifactsDir);
|
||||
OneDev.getInstance(ProjectService.class).directoryModified(projectId, artifactsDir);
|
||||
return new ServerStepResult(true);
|
||||
});
|
||||
});
|
||||
|
||||
@ -20,13 +20,13 @@ import io.onedev.server.annotation.Patterns;
|
||||
import io.onedev.server.annotation.ProjectChoice;
|
||||
import io.onedev.server.annotation.SubPath;
|
||||
import io.onedev.server.buildspec.BuildSpec;
|
||||
import io.onedev.server.entitymanager.BuildManager;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.entitymanager.SettingManager;
|
||||
import io.onedev.server.service.BuildService;
|
||||
import io.onedev.server.service.ProjectService;
|
||||
import io.onedev.server.service.SettingService;
|
||||
import io.onedev.server.job.JobContext;
|
||||
import io.onedev.server.job.JobManager;
|
||||
import io.onedev.server.job.JobService;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.persistence.SessionManager;
|
||||
import io.onedev.server.persistence.SessionService;
|
||||
import io.onedev.server.util.patternset.PatternSet;
|
||||
|
||||
@Editable(order=1060, name="Site", group = PUBLISH, description="This step publishes specified files to be served as project web site. "
|
||||
@ -92,13 +92,13 @@ public class PublishSiteStep extends ServerSideStep {
|
||||
|
||||
@Override
|
||||
public ServerStepResult run(Long buildId, File inputDir, TaskLogger logger) {
|
||||
return OneDev.getInstance(SessionManager.class).call(() -> {
|
||||
var build = OneDev.getInstance(BuildManager.class).load(buildId);
|
||||
JobContext jobContext = OneDev.getInstance(JobManager.class).getJobContext(build.getId());
|
||||
return OneDev.getInstance(SessionService.class).call(() -> {
|
||||
var build = OneDev.getInstance(BuildService.class).load(buildId);
|
||||
JobContext jobContext = OneDev.getInstance(JobService.class).getJobContext(build.getId());
|
||||
if (jobContext.getJobExecutor().isSitePublishEnabled()) {
|
||||
Project project;
|
||||
if (projectPath != null) {
|
||||
project = OneDev.getInstance(ProjectManager.class).findByPath(projectPath);
|
||||
project = OneDev.getInstance(ProjectService.class).findByPath(projectPath);
|
||||
if (project == null) {
|
||||
logger.error("Unable to find project: " + projectPath);
|
||||
return new ServerStepResult(false);
|
||||
@ -108,13 +108,13 @@ public class PublishSiteStep extends ServerSideStep {
|
||||
}
|
||||
var projectId = project.getId();
|
||||
LockUtils.write(project.getSiteLockName(), () -> {
|
||||
File projectSiteDir = OneDev.getInstance(ProjectManager.class).getSiteDir(projectId);
|
||||
File projectSiteDir = OneDev.getInstance(ProjectService.class).getSiteDir(projectId);
|
||||
FileUtils.cleanDir(projectSiteDir);
|
||||
FileUtils.copyDirectory(inputDir, projectSiteDir);
|
||||
OneDev.getInstance(ProjectManager.class).directoryModified(projectId, projectSiteDir);
|
||||
OneDev.getInstance(ProjectService.class).directoryModified(projectId, projectSiteDir);
|
||||
return null;
|
||||
});
|
||||
String serverUrl = OneDev.getInstance(SettingManager.class).getSystemSetting().getServerUrl();
|
||||
String serverUrl = OneDev.getInstance(SettingService.class).getSystemSetting().getServerUrl();
|
||||
logger.log("Site published as "
|
||||
+ StringUtils.stripEnd(serverUrl, "/") + "/" + project.getPath() + "/~site");
|
||||
} else {
|
||||
|
||||
@ -45,9 +45,9 @@ import io.onedev.server.annotation.Interpolative;
|
||||
import io.onedev.server.annotation.ProjectChoice;
|
||||
import io.onedev.server.buildspec.BuildSpec;
|
||||
import io.onedev.server.cluster.ClusterTask;
|
||||
import io.onedev.server.entitymanager.BuildManager;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.entitymanager.UserManager;
|
||||
import io.onedev.server.service.BuildService;
|
||||
import io.onedev.server.service.ProjectService;
|
||||
import io.onedev.server.service.UserService;
|
||||
import io.onedev.server.event.ListenerRegistry;
|
||||
import io.onedev.server.event.project.RefUpdated;
|
||||
import io.onedev.server.git.CommandUtils;
|
||||
@ -57,7 +57,7 @@ import io.onedev.server.git.command.LfsFetchCommand;
|
||||
import io.onedev.server.git.service.RefFacade;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.model.User;
|
||||
import io.onedev.server.persistence.SessionManager;
|
||||
import io.onedev.server.persistence.SessionService;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
|
||||
@Editable(order=1070, name="Pull from Remote", group=StepGroup.REPOSITORY_SYNC, description=""
|
||||
@ -139,12 +139,12 @@ public class PullRepository extends SyncRepository {
|
||||
|
||||
@Override
|
||||
public ServerStepResult run(Long buildId, File inputDir, TaskLogger logger) {
|
||||
return OneDev.getInstance(SessionManager.class).call(() -> {
|
||||
var build = OneDev.getInstance(BuildManager.class).load(buildId);
|
||||
return OneDev.getInstance(SessionService.class).call(() -> {
|
||||
var build = OneDev.getInstance(BuildService.class).load(buildId);
|
||||
Project project = build.getProject();
|
||||
Project targetProject;
|
||||
if (getTargetProject() != null) {
|
||||
targetProject = getProjectManager().findByPath(getTargetProject());
|
||||
targetProject = getProjectService().findByPath(getTargetProject());
|
||||
if (targetProject == null)
|
||||
throw new ExplicitException("Target project not found: " + getTargetProject());
|
||||
} else {
|
||||
@ -171,17 +171,17 @@ public class PullRepository extends SyncRepository {
|
||||
String remoteUrl = getRemoteUrlWithCredential(build);
|
||||
Long targetProjectId = targetProject.getId();
|
||||
var task = new PullTask(targetProjectId, userId, remoteUrl, getCertificate(), getRefs(), isForce(), isWithLfs(), getProxy(), build.getSecretMasker());
|
||||
getProjectManager().runOnActiveServer(targetProjectId, task);
|
||||
getProjectService().runOnActiveServer(targetProjectId, task);
|
||||
return new ServerStepResult(true);
|
||||
});
|
||||
}
|
||||
|
||||
private static ProjectManager getProjectManager() {
|
||||
return OneDev.getInstance(ProjectManager.class);
|
||||
private static ProjectService getProjectService() {
|
||||
return OneDev.getInstance(ProjectService.class);
|
||||
}
|
||||
|
||||
private static UserManager getUserManager() {
|
||||
return OneDev.getInstance(UserManager.class);
|
||||
private static UserService getUserService() {
|
||||
return OneDev.getInstance(UserService.class);
|
||||
}
|
||||
|
||||
private static class PullTask implements ClusterTask<Void> {
|
||||
@ -242,7 +242,7 @@ public class PullRepository extends SyncRepository {
|
||||
var certificateFile = writeCertificate(certificate);
|
||||
SecretMasker.push(secretMasker);
|
||||
try {
|
||||
Repository repository = getProjectManager().getRepository(projectId);
|
||||
Repository repository = getProjectService().getRepository(projectId);
|
||||
|
||||
String defaultBranch = GitUtils.getDefaultBranch(repository);
|
||||
Map<String, ObjectId> oldCommitIds = getRefCommits(repository);
|
||||
@ -361,7 +361,7 @@ public class PullRepository extends SyncRepository {
|
||||
git.clearArgs();
|
||||
configureProxy(git, proxy);
|
||||
configureCertificate(git, certificateFile);
|
||||
var sinceCommitIds = getProjectManager().readLfsSinceCommits(projectId);
|
||||
var sinceCommitIds = getProjectService().readLfsSinceCommits(projectId);
|
||||
|
||||
if (sinceCommitIds.isEmpty()) {
|
||||
new LfsFetchAllCommand(git.workingDir(), remoteUrl) {
|
||||
@ -379,15 +379,15 @@ public class PullRepository extends SyncRepository {
|
||||
}
|
||||
}.run();
|
||||
}
|
||||
getProjectManager().writeLfsSinceCommits(projectId, newCommitIds.values());
|
||||
getProjectService().writeLfsSinceCommits(projectId, newCommitIds.values());
|
||||
}
|
||||
|
||||
OneDev.getInstance(SessionManager.class).runAsync(() -> {
|
||||
OneDev.getInstance(SessionService.class).runAsync(() -> {
|
||||
try {
|
||||
// Access db connection in a separate thread to avoid possible deadlock, as
|
||||
// the parent thread is blocking another thread holding database connections
|
||||
var project = getProjectManager().load(projectId);
|
||||
var user = getUserManager().load(userId);
|
||||
var project = getProjectService().load(projectId);
|
||||
var user = getUserService().load(userId);
|
||||
MapDifference<String, ObjectId> difference = difference(oldCommitIds, newCommitIds);
|
||||
ListenerRegistry registry = OneDev.getInstance(ListenerRegistry.class);
|
||||
for (Map.Entry<String, ObjectId> entry : difference.entriesOnlyOnLeft().entrySet()) {
|
||||
|
||||
@ -16,12 +16,12 @@ import io.onedev.commons.utils.command.LineConsumer;
|
||||
import io.onedev.k8shelper.ServerStepResult;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.annotation.Editable;
|
||||
import io.onedev.server.entitymanager.BuildManager;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.service.BuildService;
|
||||
import io.onedev.server.service.ProjectService;
|
||||
import io.onedev.server.git.CommandUtils;
|
||||
import io.onedev.server.git.GitUtils;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.persistence.SessionManager;
|
||||
import io.onedev.server.persistence.SessionService;
|
||||
|
||||
@Editable(order=1080, name="Push to Remote", group=StepGroup.REPOSITORY_SYNC,
|
||||
description="This step pushes current commit to same ref on remote")
|
||||
@ -31,15 +31,15 @@ public class PushRepository extends SyncRepository {
|
||||
|
||||
@Override
|
||||
public ServerStepResult run(Long buildId, File inputDir, TaskLogger logger) {
|
||||
return OneDev.getInstance(SessionManager.class).call(() -> {
|
||||
var build = OneDev.getInstance(BuildManager.class).load(buildId);
|
||||
return OneDev.getInstance(SessionService.class).call(() -> {
|
||||
var build = OneDev.getInstance(BuildService.class).load(buildId);
|
||||
var certificateFile = writeCertificate(getCertificate());
|
||||
SecretMasker.push(build.getSecretMasker());
|
||||
try {
|
||||
if (OneDev.getInstance(ProjectManager.class).hasLfsObjects(build.getProject().getId())) {
|
||||
if (OneDev.getInstance(ProjectService.class).hasLfsObjects(build.getProject().getId())) {
|
||||
Project project = build.getProject();
|
||||
Commandline git = CommandUtils.newGit();
|
||||
git.workingDir(OneDev.getInstance(ProjectManager.class).getGitDir(project.getId()));
|
||||
git.workingDir(OneDev.getInstance(ProjectService.class).getGitDir(project.getId()));
|
||||
configureProxy(git, getProxy());
|
||||
configureCertificate(git, certificateFile);
|
||||
|
||||
@ -89,7 +89,7 @@ public class PushRepository extends SyncRepository {
|
||||
|
||||
}).checkReturnCode();
|
||||
|
||||
Repository repository = OneDev.getInstance(ProjectManager.class)
|
||||
Repository repository = OneDev.getInstance(ProjectService.class)
|
||||
.getRepository(project.getId());
|
||||
String mergeBaseId = GitUtils.getMergeBase(repository,
|
||||
ObjectId.fromString(remoteCommitId.get()), build.getCommitId()).name();
|
||||
@ -143,7 +143,7 @@ public class PushRepository extends SyncRepository {
|
||||
Commandline git = CommandUtils.newGit();
|
||||
configureProxy(git, getProxy());
|
||||
configureCertificate(git, certificateFile);
|
||||
git.workingDir(OneDev.getInstance(ProjectManager.class).getGitDir(build.getProject().getId()));
|
||||
git.workingDir(OneDev.getInstance(ProjectService.class).getGitDir(build.getProject().getId()));
|
||||
git.addArgs("push");
|
||||
if (isForce())
|
||||
git.addArgs("--force");
|
||||
|
||||
@ -8,10 +8,10 @@ import io.onedev.server.annotation.Editable;
|
||||
import io.onedev.server.annotation.Interpolative;
|
||||
import io.onedev.server.annotation.Markdown;
|
||||
import io.onedev.server.buildspec.BuildSpec;
|
||||
import io.onedev.server.entitymanager.BuildManager;
|
||||
import io.onedev.server.service.BuildService;
|
||||
import io.onedev.server.event.ListenerRegistry;
|
||||
import io.onedev.server.event.project.build.BuildUpdated;
|
||||
import io.onedev.server.persistence.TransactionManager;
|
||||
import io.onedev.server.persistence.TransactionService;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.io.File;
|
||||
@ -43,8 +43,8 @@ public class SetBuildDescriptionStep extends ServerSideStep {
|
||||
|
||||
@Override
|
||||
public ServerStepResult run(Long buildId, File inputDir, TaskLogger jobLogger) {
|
||||
return OneDev.getInstance(TransactionManager.class).call(() -> {
|
||||
var build = OneDev.getInstance(BuildManager.class).load(buildId);
|
||||
return OneDev.getInstance(TransactionService.class).call(() -> {
|
||||
var build = OneDev.getInstance(BuildService.class).load(buildId);
|
||||
build.setDescription(buildDescription);
|
||||
OneDev.getInstance(ListenerRegistry.class).post(new BuildUpdated(build));
|
||||
return new ServerStepResult(true);
|
||||
|
||||
@ -7,10 +7,10 @@ import io.onedev.server.OneDev;
|
||||
import io.onedev.server.annotation.Editable;
|
||||
import io.onedev.server.annotation.Interpolative;
|
||||
import io.onedev.server.buildspec.BuildSpec;
|
||||
import io.onedev.server.entitymanager.BuildManager;
|
||||
import io.onedev.server.service.BuildService;
|
||||
import io.onedev.server.event.ListenerRegistry;
|
||||
import io.onedev.server.event.project.build.BuildUpdated;
|
||||
import io.onedev.server.persistence.TransactionManager;
|
||||
import io.onedev.server.persistence.TransactionService;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.io.File;
|
||||
@ -46,8 +46,8 @@ public class SetBuildVersionStep extends ServerSideStep {
|
||||
|
||||
@Override
|
||||
public ServerStepResult run(Long buildId, File inputDir, TaskLogger logger) {
|
||||
return OneDev.getInstance(TransactionManager.class).call(() -> {
|
||||
var build = OneDev.getInstance(BuildManager.class).load(buildId);
|
||||
return OneDev.getInstance(TransactionService.class).call(() -> {
|
||||
var build = OneDev.getInstance(BuildService.class).load(buildId);
|
||||
build.setVersion(buildVersion);
|
||||
OneDev.getInstance(ListenerRegistry.class).post(new BuildUpdated(build));
|
||||
Map<String, byte[]> outputFiles = new HashMap<>();
|
||||
|
||||
@ -5,7 +5,7 @@ import java.util.List;
|
||||
|
||||
import edu.emory.mathcs.backport.java.util.Collections;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.GroupManager;
|
||||
import io.onedev.server.service.GroupService;
|
||||
import io.onedev.server.model.Group;
|
||||
import io.onedev.server.annotation.Editable;
|
||||
|
||||
@ -16,7 +16,7 @@ public class AllGroups implements ChoiceProvider {
|
||||
|
||||
@Override
|
||||
public List<Group> getChoices(boolean allPossible) {
|
||||
List<Group> groups = OneDev.getInstance(GroupManager.class).query();
|
||||
List<Group> groups = OneDev.getInstance(GroupService.class).query();
|
||||
Collections.sort(groups, new Comparator<Group>() {
|
||||
|
||||
@Override
|
||||
|
||||
@ -9,13 +9,13 @@ import com.google.common.collect.Lists;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.buildspecmodel.inputspec.userchoiceinput.choiceprovider.ChoiceProvider;
|
||||
import io.onedev.server.entitymanager.UserManager;
|
||||
import io.onedev.server.service.UserService;
|
||||
import io.onedev.server.buildspecmodel.inputspec.InputSpec;
|
||||
|
||||
public class UserChoiceInput {
|
||||
|
||||
public static List<String> getPossibleValues() {
|
||||
return OneDev.getInstance(UserManager.class).cloneCache().values().stream()
|
||||
return OneDev.getInstance(UserService.class).cloneCache().values().stream()
|
||||
.map(it->it.getName())
|
||||
.sorted()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
@ -6,7 +6,7 @@ import java.util.List;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.UserManager;
|
||||
import io.onedev.server.service.UserService;
|
||||
import io.onedev.server.model.User;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
import io.onedev.server.util.facade.UserCache;
|
||||
@ -21,7 +21,7 @@ public class AllUsers implements ChoiceProvider {
|
||||
|
||||
@Override
|
||||
public List<User> getChoices(boolean allPossible) {
|
||||
UserCache cache = OneDev.getInstance(UserManager.class).cloneCache();
|
||||
UserCache cache = OneDev.getInstance(UserService.class).cloneCache();
|
||||
|
||||
if (WicketUtils.getPage() instanceof IssueDetailPage) {
|
||||
IssueDetailPage issueDetailPage = (IssueDetailPage) WicketUtils.getPage();
|
||||
|
||||
@ -12,7 +12,7 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import io.onedev.server.util.GroovyUtils;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.UserManager;
|
||||
import io.onedev.server.service.UserService;
|
||||
import io.onedev.server.model.User;
|
||||
import io.onedev.server.annotation.Editable;
|
||||
import io.onedev.server.annotation.OmitName;
|
||||
@ -48,7 +48,7 @@ public class ScriptingChoices implements ChoiceProvider {
|
||||
try {
|
||||
return ((List<String>) GroovyUtils.evalScriptByName(scriptName, variables))
|
||||
.stream()
|
||||
.map(it->OneDev.getInstance(UserManager.class).findByName(it))
|
||||
.map(it->OneDev.getInstance(UserService.class).findByName(it))
|
||||
.filter(it->it!=null)
|
||||
.collect(Collectors.toList());
|
||||
} catch (RuntimeException e) {
|
||||
|
||||
@ -32,6 +32,7 @@ import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import javax.ws.rs.core.StreamingOutput;
|
||||
|
||||
import io.onedev.server.annotation.NoDBAccess;
|
||||
import org.apache.shiro.authz.UnauthorizedException;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
|
||||
@ -41,12 +42,12 @@ import com.google.common.collect.Sets;
|
||||
import io.onedev.commons.utils.FileUtils;
|
||||
import io.onedev.commons.utils.TarUtils;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.StorageManager;
|
||||
import io.onedev.server.attachment.AttachmentManager;
|
||||
import io.onedev.server.entitymanager.BuildManager;
|
||||
import io.onedev.server.entitymanager.JobCacheManager;
|
||||
import io.onedev.server.entitymanager.PackBlobManager;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.StorageService;
|
||||
import io.onedev.server.attachment.AttachmentService;
|
||||
import io.onedev.server.service.BuildService;
|
||||
import io.onedev.server.service.JobCacheService;
|
||||
import io.onedev.server.service.PackBlobService;
|
||||
import io.onedev.server.service.ProjectService;
|
||||
import io.onedev.server.git.CommandUtils;
|
||||
import io.onedev.server.git.GitFilter;
|
||||
import io.onedev.server.git.GitUtils;
|
||||
@ -59,10 +60,10 @@ import io.onedev.server.model.Project;
|
||||
import io.onedev.server.rest.annotation.Api;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
import io.onedev.server.util.IOUtils;
|
||||
import io.onedev.server.util.concurrent.WorkExecutor;
|
||||
import io.onedev.server.util.concurrent.WorkExecutionService;
|
||||
import io.onedev.server.util.patternset.PatternSet;
|
||||
import io.onedev.server.xodus.CommitInfoManager;
|
||||
import io.onedev.server.xodus.VisitInfoManager;
|
||||
import io.onedev.server.xodus.CommitInfoService;
|
||||
import io.onedev.server.xodus.VisitInfoService;
|
||||
|
||||
@Api(internal=true)
|
||||
@Path("/cluster")
|
||||
@ -70,39 +71,39 @@ import io.onedev.server.xodus.VisitInfoManager;
|
||||
@Singleton
|
||||
public class ClusterResource {
|
||||
|
||||
private final ProjectManager projectManager;
|
||||
private final ProjectService projectService;
|
||||
|
||||
private final AttachmentManager attachmentManager;
|
||||
private final AttachmentService attachmentService;
|
||||
|
||||
private final CommitInfoManager commitInfoManager;
|
||||
private final CommitInfoService commitInfoService;
|
||||
|
||||
private final VisitInfoManager visitInfoManager;
|
||||
private final VisitInfoService visitInfoService;
|
||||
|
||||
private final StorageManager storageManager;
|
||||
private final StorageService storageService;
|
||||
|
||||
private final PackBlobManager packBlobManager;
|
||||
private final PackBlobService packBlobService;
|
||||
|
||||
private final BuildManager buildManager;
|
||||
private final BuildService buildService;
|
||||
|
||||
private final JobCacheManager jobCacheManager;
|
||||
private final JobCacheService jobCacheService;
|
||||
|
||||
private final WorkExecutor workExecutor;
|
||||
private final WorkExecutionService workExecutionService;
|
||||
|
||||
@Inject
|
||||
public ClusterResource(ProjectManager projectManager, CommitInfoManager commitInfoManager,
|
||||
AttachmentManager attachmentManager, VisitInfoManager visitInfoManager,
|
||||
WorkExecutor workExecutor, StorageManager storageManager,
|
||||
PackBlobManager packBlobManager, BuildManager buildManager,
|
||||
JobCacheManager jobCacheManager) {
|
||||
this.commitInfoManager = commitInfoManager;
|
||||
this.projectManager = projectManager;
|
||||
this.workExecutor = workExecutor;
|
||||
this.attachmentManager = attachmentManager;
|
||||
this.visitInfoManager = visitInfoManager;
|
||||
this.storageManager = storageManager;
|
||||
this.packBlobManager = packBlobManager;
|
||||
this.buildManager = buildManager;
|
||||
this.jobCacheManager = jobCacheManager;
|
||||
public ClusterResource(ProjectService projectService, CommitInfoService commitInfoService,
|
||||
AttachmentService attachmentService, VisitInfoService visitInfoService,
|
||||
WorkExecutionService workExecutionService, StorageService storageService,
|
||||
PackBlobService packBlobService, BuildService buildService,
|
||||
JobCacheService jobCacheService) {
|
||||
this.commitInfoService = commitInfoService;
|
||||
this.projectService = projectService;
|
||||
this.workExecutionService = workExecutionService;
|
||||
this.attachmentService = attachmentService;
|
||||
this.visitInfoService = visitInfoService;
|
||||
this.storageService = storageService;
|
||||
this.packBlobService = packBlobService;
|
||||
this.buildService = buildService;
|
||||
this.jobCacheService = jobCacheService;
|
||||
}
|
||||
|
||||
@Path("/project-files")
|
||||
@ -116,7 +117,7 @@ public class ClusterResource {
|
||||
throw new UnauthorizedException("This api can only be accessed via cluster credential");
|
||||
|
||||
StreamingOutput output = os -> read(readLock, () -> {
|
||||
File directory = new File(projectManager.getProjectDir(projectId), path);
|
||||
File directory = new File(projectService.getProjectDir(projectId), path);
|
||||
PatternSet patternSet = PatternSet.parse(patterns);
|
||||
patternSet.getExcludes().add(SHARE_TEST_DIR + "/**");
|
||||
TarUtils.tar(directory, patternSet.getIncludes(), patternSet.getExcludes(), os, false);
|
||||
@ -144,7 +145,7 @@ public class ClusterResource {
|
||||
if (!SecurityUtils.isSystem())
|
||||
throw new UnauthorizedException("This api can only be accessed via cluster credential");
|
||||
|
||||
File file = new File(projectManager.getProjectDir(projectId), path);
|
||||
File file = new File(projectService.getProjectDir(projectId), path);
|
||||
if (read(readLock, file::exists)) {
|
||||
StreamingOutput os = output -> read(readLock, () -> {
|
||||
try (output; InputStream is = new FileInputStream(file)) {
|
||||
@ -168,7 +169,7 @@ public class ClusterResource {
|
||||
throw new UnauthorizedException("This api can only be accessed via cluster credential");
|
||||
|
||||
StreamingOutput output = os -> read(getArtifactsLockName(projectId, buildNumber), () -> {
|
||||
File artifactsDir = buildManager.getArtifactsDir(projectId, buildNumber);
|
||||
File artifactsDir = buildService.getArtifactsDir(projectId, buildNumber);
|
||||
PatternSet patternSet = PatternSet.parse(artifacts);
|
||||
patternSet.getExcludes().add(SHARE_TEST_DIR + "/**");
|
||||
TarUtils.tar(artifactsDir, patternSet.getIncludes(), patternSet.getExcludes(), os, false);
|
||||
@ -187,7 +188,7 @@ public class ClusterResource {
|
||||
throw new UnauthorizedException("This api can only be accessed via cluster credential");
|
||||
|
||||
StreamingOutput os = output -> read(getArtifactsLockName(projectId, buildNumber), () -> {
|
||||
File artifactsDir = buildManager.getArtifactsDir(projectId, buildNumber);
|
||||
File artifactsDir = buildService.getArtifactsDir(projectId, buildNumber);
|
||||
File artifactFile = new File(artifactsDir, artifactPath);
|
||||
try (output; InputStream is = new FileInputStream(artifactFile)) {
|
||||
IOUtils.copy(is, output, BUFFER_SIZE);
|
||||
@ -206,7 +207,7 @@ public class ClusterResource {
|
||||
throw new UnauthorizedException("This api can only be accessed via cluster credential");
|
||||
|
||||
StreamingOutput os = output -> {
|
||||
Repository repository = projectManager.getRepository(projectId);
|
||||
Repository repository = projectService.getRepository(projectId);
|
||||
try (output; InputStream is = GitUtils.getInputStream(repository, fromString(revId), path)) {
|
||||
IOUtils.copy(is, output, BUFFER_SIZE);
|
||||
}
|
||||
@ -214,6 +215,7 @@ public class ClusterResource {
|
||||
return ok(os).build();
|
||||
}
|
||||
|
||||
@NoDBAccess
|
||||
@Path("/pack-blob")
|
||||
@Produces(MediaType.APPLICATION_OCTET_STREAM)
|
||||
@GET
|
||||
@ -224,7 +226,7 @@ public class ClusterResource {
|
||||
|
||||
StreamingOutput out = os -> {
|
||||
read(PackBlob.getFileLockName(projectId, hash), () -> {
|
||||
try (os; var is = new FileInputStream(packBlobManager.getPackBlobFile(projectId, hash))) {
|
||||
try (os; var is = new FileInputStream(packBlobService.getPackBlobFile(projectId, hash))) {
|
||||
IOUtils.copy(is, os, BUFFER_SIZE);
|
||||
}
|
||||
return null;
|
||||
@ -243,7 +245,7 @@ public class ClusterResource {
|
||||
if (!SecurityUtils.isSystem())
|
||||
throw new UnauthorizedException("This api can only be accessed via cluster credential");
|
||||
var cachePaths = Splitter.on('\n').splitToList(joinedCachePaths);
|
||||
StreamingOutput out = os -> jobCacheManager.downloadCache(projectId, cacheId, cachePaths, os);
|
||||
StreamingOutput out = os -> jobCacheService.downloadCache(projectId, cacheId, cachePaths, os);
|
||||
return ok(out).build();
|
||||
}
|
||||
|
||||
@ -255,7 +257,7 @@ public class ClusterResource {
|
||||
throw new UnauthorizedException("This api can only be accessed via cluster credential");
|
||||
|
||||
StreamingOutput os = output -> read(Project.getSiteLockName(projectId), () -> {
|
||||
File file = new File(projectManager.getSiteDir(projectId), filePath);
|
||||
File file = new File(projectService.getSiteDir(projectId), filePath);
|
||||
try (output; InputStream is = new FileInputStream(file)) {
|
||||
IOUtils.copy(is, output, BUFFER_SIZE);
|
||||
}
|
||||
@ -273,7 +275,7 @@ public class ClusterResource {
|
||||
throw new UnauthorizedException("This api can only be accessed via cluster credential");
|
||||
|
||||
StreamingOutput os = output -> {
|
||||
File gitDir = projectManager.getGitDir(projectId);
|
||||
File gitDir = projectService.getGitDir(projectId);
|
||||
if (upload)
|
||||
new AdvertiseUploadRefsCommand(gitDir, output).protocol(protocol).run();
|
||||
else
|
||||
@ -295,9 +297,9 @@ public class ClusterResource {
|
||||
Map<String, String> hookEnvs = HookUtils.getHookEnvs(projectId, principal);
|
||||
|
||||
try {
|
||||
File gitDir = projectManager.getGitDir(projectId);
|
||||
File gitDir = projectService.getGitDir(projectId);
|
||||
if (upload) {
|
||||
workExecutor.submit(GitFilter.PACK_PRIORITY, new Runnable() {
|
||||
workExecutionService.submit(GitFilter.PACK_PRIORITY, new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
@ -306,7 +308,7 @@ public class ClusterResource {
|
||||
|
||||
}).get();
|
||||
} else {
|
||||
workExecutor.submit(GitFilter.PACK_PRIORITY, new Runnable() {
|
||||
workExecutionService.submit(GitFilter.PACK_PRIORITY, new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
@ -332,7 +334,7 @@ public class ClusterResource {
|
||||
StreamingOutput output = os -> {
|
||||
File tempDir = FileUtils.createTempDir("commit-info");
|
||||
try {
|
||||
commitInfoManager.export(projectId, tempDir);
|
||||
commitInfoService.export(projectId, tempDir);
|
||||
TarUtils.tar(tempDir, os, false);
|
||||
} finally {
|
||||
FileUtils.deleteDir(tempDir);
|
||||
@ -351,7 +353,7 @@ public class ClusterResource {
|
||||
StreamingOutput output = os -> {
|
||||
File tempDir = FileUtils.createTempDir("visit-info");
|
||||
try {
|
||||
visitInfoManager.export(projectId, tempDir);
|
||||
visitInfoService.export(projectId, tempDir);
|
||||
TarUtils.tar(tempDir, os, false);
|
||||
} finally {
|
||||
FileUtils.deleteDir(tempDir);
|
||||
@ -400,7 +402,7 @@ public class ClusterResource {
|
||||
if (!SecurityUtils.isSystem())
|
||||
throw new UnauthorizedException("This api can only be accessed via cluster credential");
|
||||
|
||||
String attachmentName = attachmentManager.saveAttachmentLocal(
|
||||
String attachmentName = attachmentService.saveAttachmentLocal(
|
||||
projectId, attachmentGroup, suggestedAttachmentName, input);
|
||||
return ok(attachmentName).build();
|
||||
}
|
||||
@ -413,8 +415,8 @@ public class ClusterResource {
|
||||
if (!SecurityUtils.isSystem())
|
||||
throw new UnauthorizedException("This api can only be accessed via cluster credential");
|
||||
|
||||
StreamingOutput output = os -> read(attachmentManager.getAttachmentLockName(projectId, attachmentGroup), () -> {
|
||||
TarUtils.tar(attachmentManager.getAttachmentGroupDir(projectId, attachmentGroup),
|
||||
StreamingOutput output = os -> read(attachmentService.getAttachmentLockName(projectId, attachmentGroup), () -> {
|
||||
TarUtils.tar(attachmentService.getAttachmentGroupDir(projectId, attachmentGroup),
|
||||
Sets.newHashSet("**"), Sets.newHashSet(), os, false);
|
||||
return null;
|
||||
});
|
||||
@ -430,7 +432,7 @@ public class ClusterResource {
|
||||
throw new UnauthorizedException("This api can only be accessed via cluster credential");
|
||||
|
||||
write(getArtifactsLockName(projectId, buildNumber), () -> {
|
||||
var artifactsDir = storageManager.initArtifactsDir(projectId, buildNumber);
|
||||
var artifactsDir = storageService.initArtifactsDir(projectId, buildNumber);
|
||||
File artifactFile = new File(artifactsDir, artifactPath);
|
||||
FileUtils.createDir(artifactFile.getParentFile());
|
||||
try (input; var os = new BufferedOutputStream(new FileOutputStream(artifactFile), BUFFER_SIZE)) {
|
||||
@ -438,7 +440,7 @@ public class ClusterResource {
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
projectManager.directoryModified(projectId, artifactsDir);
|
||||
projectService.directoryModified(projectId, artifactsDir);
|
||||
return null;
|
||||
});
|
||||
|
||||
@ -452,7 +454,7 @@ public class ClusterResource {
|
||||
@QueryParam("uuid") String uuid) {
|
||||
if (!SecurityUtils.isSystem())
|
||||
throw new UnauthorizedException("This api can only be accessed via cluster credential");
|
||||
var uploadFile = packBlobManager.getUploadFile(projectId, uuid);
|
||||
var uploadFile = packBlobService.getUploadFile(projectId, uuid);
|
||||
try (input; var os = new BufferedOutputStream(new FileOutputStream(uploadFile, true), BUFFER_SIZE)) {
|
||||
return IOUtils.copy(input, os, BUFFER_SIZE);
|
||||
} catch (IOException e) {
|
||||
@ -470,7 +472,7 @@ public class ClusterResource {
|
||||
InputStream cacheStream) {
|
||||
if (!SecurityUtils.isSystem())
|
||||
throw new UnauthorizedException("This api can only be accessed via cluster credential");
|
||||
jobCacheManager.uploadCache(projectId, cacheId, Splitter.on('\n').splitToList(cachePaths), cacheStream);
|
||||
jobCacheService.uploadCache(projectId, cacheId, Splitter.on('\n').splitToList(cachePaths), cacheStream);
|
||||
return ok().build();
|
||||
}
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@ package io.onedev.server.cluster;
|
||||
import com.hazelcast.cluster.Member;
|
||||
import com.hazelcast.core.HazelcastInstance;
|
||||
import com.hazelcast.cp.IAtomicLong;
|
||||
import io.onedev.server.annotation.NoDBAccess;
|
||||
import io.onedev.server.replica.ProjectReplica;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
@ -13,7 +14,7 @@ import java.util.Map;
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
public interface ClusterManager {
|
||||
public interface ClusterService {
|
||||
|
||||
void start();
|
||||
|
||||
@ -61,7 +62,8 @@ public interface ClusterManager {
|
||||
String getServerAddress(Member server);
|
||||
|
||||
String getLeaderServerAddress();
|
||||
|
||||
|
||||
@NoDBAccess
|
||||
String getLocalServerAddress();
|
||||
|
||||
String getCredential();
|
||||
@ -2,8 +2,8 @@ package io.onedev.server.commandhandler;
|
||||
|
||||
import io.onedev.commons.utils.ExplicitException;
|
||||
import io.onedev.server.persistence.HibernateConfig;
|
||||
import io.onedev.server.data.DataManager;
|
||||
import io.onedev.server.persistence.SessionFactoryManager;
|
||||
import io.onedev.server.data.DataService;
|
||||
import io.onedev.server.persistence.SessionFactoryService;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@ -23,18 +23,18 @@ public class ApplyDatabaseConstraints extends CommandHandler {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(ApplyDatabaseConstraints.class);
|
||||
|
||||
private final SessionFactoryManager sessionFactoryManager;
|
||||
private final SessionFactoryService sessionFactoryService;
|
||||
|
||||
private final DataManager dataManager;
|
||||
private final DataService dataService;
|
||||
|
||||
private final HibernateConfig hibernateConfig;
|
||||
|
||||
@Inject
|
||||
public ApplyDatabaseConstraints(SessionFactoryManager sessionFactoryManager, DataManager dataManager,
|
||||
HibernateConfig hibernateConfig) {
|
||||
public ApplyDatabaseConstraints(SessionFactoryService sessionFactoryService, DataService dataService,
|
||||
HibernateConfig hibernateConfig) {
|
||||
super(hibernateConfig);
|
||||
this.sessionFactoryManager = sessionFactoryManager;
|
||||
this.dataManager = dataManager;
|
||||
this.sessionFactoryService = sessionFactoryService;
|
||||
this.dataService = dataService;
|
||||
this.hibernateConfig = hibernateConfig;
|
||||
}
|
||||
|
||||
@ -44,10 +44,10 @@ public class ApplyDatabaseConstraints extends CommandHandler {
|
||||
|
||||
try {
|
||||
if (doMaintenance(() -> {
|
||||
sessionFactoryManager.start();
|
||||
try (var conn = dataManager.openConnection()) {
|
||||
sessionFactoryService.start();
|
||||
try (var conn = dataService.openConnection()) {
|
||||
return callWithTransaction(conn, () -> {
|
||||
dataManager.checkDataVersion(conn, false);
|
||||
dataService.checkDataVersion(conn, false);
|
||||
|
||||
logger.warn("This script is mainly used to apply database constraints after fixing database integrity issues (may happen during restore/upgrade)");
|
||||
|
||||
@ -66,8 +66,8 @@ public class ApplyDatabaseConstraints extends CommandHandler {
|
||||
return false;
|
||||
}
|
||||
|
||||
dataManager.dropConstraints(conn);
|
||||
dataManager.applyConstraints(conn);
|
||||
dataService.dropConstraints(conn);
|
||||
dataService.applyConstraints(conn);
|
||||
return true;
|
||||
});
|
||||
}
|
||||
@ -90,7 +90,7 @@ public class ApplyDatabaseConstraints extends CommandHandler {
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
sessionFactoryManager.stop();
|
||||
sessionFactoryService.stop();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -6,8 +6,8 @@ import io.onedev.commons.utils.ExplicitException;
|
||||
import io.onedev.commons.utils.FileUtils;
|
||||
import io.onedev.commons.utils.ZipUtils;
|
||||
import io.onedev.server.persistence.HibernateConfig;
|
||||
import io.onedev.server.data.DataManager;
|
||||
import io.onedev.server.persistence.SessionFactoryManager;
|
||||
import io.onedev.server.data.DataService;
|
||||
import io.onedev.server.persistence.SessionFactoryService;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@ -26,18 +26,18 @@ public class BackupDatabase extends CommandHandler {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(BackupDatabase.class);
|
||||
|
||||
private final DataManager dataManager;
|
||||
private final DataService dataService;
|
||||
|
||||
private final SessionFactoryManager sessionFactoryManager;
|
||||
private final SessionFactoryService sessionFactoryService;
|
||||
|
||||
private File backupFile;
|
||||
|
||||
@Inject
|
||||
public BackupDatabase(DataManager dataManager, SessionFactoryManager sessionFactoryManager,
|
||||
public BackupDatabase(DataService dataService, SessionFactoryService sessionFactoryService,
|
||||
HibernateConfig hibernateConfig) {
|
||||
super(hibernateConfig);
|
||||
this.dataManager = dataManager;
|
||||
this.sessionFactoryManager = sessionFactoryManager;
|
||||
this.dataService = dataService;
|
||||
this.sessionFactoryService = sessionFactoryService;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -60,11 +60,11 @@ public class BackupDatabase extends CommandHandler {
|
||||
|
||||
try {
|
||||
doMaintenance(() -> {
|
||||
sessionFactoryManager.start();
|
||||
sessionFactoryService.start();
|
||||
|
||||
try (var conn = dataManager.openConnection()) {
|
||||
try (var conn = dataService.openConnection()) {
|
||||
callWithTransaction(conn, () -> {
|
||||
dataManager.checkDataVersion(conn, false);
|
||||
dataService.checkDataVersion(conn, false);
|
||||
return null;
|
||||
});
|
||||
} catch (SQLException e) {
|
||||
@ -75,7 +75,7 @@ public class BackupDatabase extends CommandHandler {
|
||||
|
||||
File tempDir = FileUtils.createTempDir("backup");
|
||||
try {
|
||||
dataManager.exportData(tempDir);
|
||||
dataService.exportData(tempDir);
|
||||
ZipUtils.zip(tempDir, backupFile, null);
|
||||
} catch (Exception e) {
|
||||
throw ExceptionUtils.unchecked(e);
|
||||
@ -95,7 +95,7 @@ public class BackupDatabase extends CommandHandler {
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
sessionFactoryManager.stop();
|
||||
sessionFactoryService.stop();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -11,9 +11,9 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import io.onedev.commons.utils.ExplicitException;
|
||||
import io.onedev.server.data.DataManager;
|
||||
import io.onedev.server.data.DataService;
|
||||
import io.onedev.server.persistence.HibernateConfig;
|
||||
import io.onedev.server.persistence.SessionFactoryManager;
|
||||
import io.onedev.server.persistence.SessionFactoryService;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
|
||||
@Singleton
|
||||
@ -23,16 +23,16 @@ public class CheckDataVersion extends CommandHandler {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(CheckDataVersion.class);
|
||||
|
||||
private final SessionFactoryManager sessionFactoryManager;
|
||||
private final SessionFactoryService sessionFactoryService;
|
||||
|
||||
private final DataManager dataManager;
|
||||
private final DataService dataService;
|
||||
|
||||
@Inject
|
||||
public CheckDataVersion(SessionFactoryManager sessionFactoryManager, DataManager dataManager,
|
||||
HibernateConfig hibernateConfig) {
|
||||
public CheckDataVersion(SessionFactoryService sessionFactoryService, DataService dataService,
|
||||
HibernateConfig hibernateConfig) {
|
||||
super(hibernateConfig);
|
||||
this.sessionFactoryManager = sessionFactoryManager;
|
||||
this.dataManager = dataManager;
|
||||
this.sessionFactoryService = sessionFactoryService;
|
||||
this.dataService = dataService;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -41,13 +41,13 @@ public class CheckDataVersion extends CommandHandler {
|
||||
|
||||
try {
|
||||
doMaintenance(() -> {
|
||||
sessionFactoryManager.start();
|
||||
sessionFactoryService.start();
|
||||
|
||||
// Use system.out in case logger is suppressed by user as this output is important to
|
||||
// upgrade procedure
|
||||
String dataVersion;
|
||||
try (var conn = dataManager.openConnection()) {
|
||||
dataVersion = callWithTransaction(conn, () -> dataManager.checkDataVersion(conn, false));
|
||||
try (var conn = dataService.openConnection()) {
|
||||
dataVersion = callWithTransaction(conn, () -> dataService.checkDataVersion(conn, false));
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
@ -63,7 +63,7 @@ public class CheckDataVersion extends CommandHandler {
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
sessionFactoryManager.stop();
|
||||
sessionFactoryService.stop();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -2,8 +2,8 @@ package io.onedev.server.commandhandler;
|
||||
|
||||
import io.onedev.commons.utils.ExplicitException;
|
||||
import io.onedev.server.persistence.HibernateConfig;
|
||||
import io.onedev.server.data.DataManager;
|
||||
import io.onedev.server.persistence.SessionFactoryManager;
|
||||
import io.onedev.server.data.DataService;
|
||||
import io.onedev.server.persistence.SessionFactoryService;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@ -19,18 +19,18 @@ public class CleanDatabase extends CommandHandler {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(CleanDatabase.class);
|
||||
|
||||
private final SessionFactoryManager sessionFactoryManager;
|
||||
private final SessionFactoryService sessionFactoryService;
|
||||
|
||||
private final DataManager dataManager;
|
||||
private final DataService dataService;
|
||||
|
||||
private final HibernateConfig hibernateConfig;
|
||||
|
||||
@Inject
|
||||
public CleanDatabase(SessionFactoryManager sessionFactoryManager, DataManager dataManager,
|
||||
HibernateConfig hibernateConfig) {
|
||||
public CleanDatabase(SessionFactoryService sessionFactoryService, DataService dataService,
|
||||
HibernateConfig hibernateConfig) {
|
||||
super(hibernateConfig);
|
||||
this.sessionFactoryManager = sessionFactoryManager;
|
||||
this.dataManager = dataManager;
|
||||
this.sessionFactoryService = sessionFactoryService;
|
||||
this.dataService = dataService;
|
||||
this.hibernateConfig = hibernateConfig;
|
||||
}
|
||||
|
||||
@ -40,16 +40,16 @@ public class CleanDatabase extends CommandHandler {
|
||||
|
||||
try {
|
||||
doMaintenance(() -> {
|
||||
sessionFactoryManager.start();
|
||||
sessionFactoryService.start();
|
||||
|
||||
// Run this in autocommit mode as some sqls in the clean script may fail
|
||||
// when drop non-existent constraints, and we want to ignore them and
|
||||
// continue to execute other sql statements without rolling back whole
|
||||
// transaction
|
||||
try (var conn = dataManager.openConnection()) {
|
||||
try (var conn = dataService.openConnection()) {
|
||||
conn.setAutoCommit(true);
|
||||
dataManager.checkDataVersion(conn, false);
|
||||
dataManager.cleanDatabase(conn);
|
||||
dataService.checkDataVersion(conn, false);
|
||||
dataService.cleanDatabase(conn);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
@ -73,7 +73,7 @@ public class CleanDatabase extends CommandHandler {
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
sessionFactoryManager.stop();
|
||||
sessionFactoryService.stop();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -2,11 +2,11 @@ package io.onedev.server.commandhandler;
|
||||
|
||||
import io.onedev.commons.bootstrap.Bootstrap;
|
||||
import io.onedev.commons.utils.ExplicitException;
|
||||
import io.onedev.server.entitymanager.UserManager;
|
||||
import io.onedev.server.service.UserService;
|
||||
import io.onedev.server.model.User;
|
||||
import io.onedev.server.persistence.HibernateConfig;
|
||||
import io.onedev.server.data.DataManager;
|
||||
import io.onedev.server.persistence.SessionFactoryManager;
|
||||
import io.onedev.server.data.DataService;
|
||||
import io.onedev.server.persistence.SessionFactoryService;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
import org.apache.shiro.authc.credential.PasswordService;
|
||||
import org.slf4j.Logger;
|
||||
@ -25,22 +25,22 @@ public class ResetAdminPassword extends CommandHandler {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(ResetAdminPassword.class);
|
||||
|
||||
private final DataManager dataManager;
|
||||
private final DataService dataService;
|
||||
|
||||
private final SessionFactoryManager sessionFactoryManager;
|
||||
private final SessionFactoryService sessionFactoryService;
|
||||
|
||||
private final UserManager userManager;
|
||||
private final UserService userService;
|
||||
|
||||
private final PasswordService passwordService;
|
||||
|
||||
@Inject
|
||||
public ResetAdminPassword(HibernateConfig hibernateConfig, DataManager dataManager,
|
||||
SessionFactoryManager sessionFactoryManager, UserManager userManager,
|
||||
PasswordService passwordService) {
|
||||
public ResetAdminPassword(HibernateConfig hibernateConfig, DataService dataService,
|
||||
SessionFactoryService sessionFactoryService, UserService userService,
|
||||
PasswordService passwordService) {
|
||||
super(hibernateConfig);
|
||||
this.dataManager = dataManager;
|
||||
this.sessionFactoryManager = sessionFactoryManager;
|
||||
this.userManager = userManager;
|
||||
this.dataService = dataService;
|
||||
this.sessionFactoryService = sessionFactoryService;
|
||||
this.userService = userService;
|
||||
this.passwordService = passwordService;
|
||||
}
|
||||
|
||||
@ -55,24 +55,24 @@ public class ResetAdminPassword extends CommandHandler {
|
||||
|
||||
try {
|
||||
doMaintenance(() -> {
|
||||
sessionFactoryManager.start();
|
||||
sessionFactoryService.start();
|
||||
|
||||
try (var conn = dataManager.openConnection()) {
|
||||
try (var conn = dataService.openConnection()) {
|
||||
callWithTransaction(conn, () -> {
|
||||
dataManager.checkDataVersion(conn, false);
|
||||
dataService.checkDataVersion(conn, false);
|
||||
return null;
|
||||
});
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
User root = userManager.get(User.ROOT_ID);
|
||||
User root = userService.get(User.ROOT_ID);
|
||||
if (root == null)
|
||||
throw new ExplicitException("Server not set up yet");
|
||||
String password = Bootstrap.command.getArgs()[0];
|
||||
root.setTwoFactorAuthentication(null);
|
||||
root.setPassword(passwordService.encryptPassword(password));
|
||||
userManager.update(root, null);
|
||||
userService.update(root, null);
|
||||
|
||||
// wait for a short period to have embedded db flushing data
|
||||
try {
|
||||
@ -93,7 +93,7 @@ public class ResetAdminPassword extends CommandHandler {
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
sessionFactoryManager.stop();
|
||||
sessionFactoryService.stop();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -5,9 +5,9 @@ import io.onedev.commons.bootstrap.Command;
|
||||
import io.onedev.commons.utils.ExplicitException;
|
||||
import io.onedev.commons.utils.FileUtils;
|
||||
import io.onedev.commons.utils.ZipUtils;
|
||||
import io.onedev.server.data.DataManager;
|
||||
import io.onedev.server.data.DataService;
|
||||
import io.onedev.server.persistence.HibernateConfig;
|
||||
import io.onedev.server.persistence.SessionFactoryManager;
|
||||
import io.onedev.server.persistence.SessionFactoryService;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@ -26,20 +26,20 @@ public class RestoreDatabase extends CommandHandler {
|
||||
|
||||
public static final String COMMAND = "restore-db";
|
||||
|
||||
private final DataManager dataManager;
|
||||
private final DataService dataService;
|
||||
|
||||
private final SessionFactoryManager sessionFactoryManager;
|
||||
private final SessionFactoryService sessionFactoryService;
|
||||
|
||||
private final HibernateConfig hibernateConfig;
|
||||
|
||||
private File backupFile;
|
||||
|
||||
@Inject
|
||||
public RestoreDatabase(DataManager dataManager, SessionFactoryManager sessionFactoryManager,
|
||||
public RestoreDatabase(DataService dataService, SessionFactoryService sessionFactoryService,
|
||||
HibernateConfig hibernateConfig) {
|
||||
super(hibernateConfig);
|
||||
this.dataManager = dataManager;
|
||||
this.sessionFactoryManager = sessionFactoryManager;
|
||||
this.dataService = dataService;
|
||||
this.sessionFactoryService = sessionFactoryService;
|
||||
this.hibernateConfig = hibernateConfig;
|
||||
}
|
||||
|
||||
@ -65,7 +65,7 @@ public class RestoreDatabase extends CommandHandler {
|
||||
|
||||
try {
|
||||
doMaintenance(() -> {
|
||||
sessionFactoryManager.start();
|
||||
sessionFactoryService.start();
|
||||
|
||||
if (backupFile.isFile()) {
|
||||
File dataDir = FileUtils.createTempDir("restore");
|
||||
@ -97,19 +97,19 @@ public class RestoreDatabase extends CommandHandler {
|
||||
}
|
||||
|
||||
private void doRestore(File dataDir) {
|
||||
dataManager.migrateData(dataDir);
|
||||
dataService.migrateData(dataDir);
|
||||
|
||||
try (var conn = dataManager.openConnection()) {
|
||||
try (var conn = dataService.openConnection()) {
|
||||
callWithTransaction(conn, () -> {
|
||||
String dbDataVersion = dataManager.checkDataVersion(conn, true);
|
||||
String dbDataVersion = dataService.checkDataVersion(conn, true);
|
||||
|
||||
if (dbDataVersion != null) {
|
||||
logger.info("Cleaning database...");
|
||||
dataManager.cleanDatabase(conn);
|
||||
dataService.cleanDatabase(conn);
|
||||
}
|
||||
|
||||
logger.info("Creating tables...");
|
||||
dataManager.createTables(conn);
|
||||
dataService.createTables(conn);
|
||||
|
||||
return null;
|
||||
});
|
||||
@ -118,13 +118,13 @@ public class RestoreDatabase extends CommandHandler {
|
||||
}
|
||||
|
||||
logger.info("Importing data into database...");
|
||||
dataManager.importData(dataDir);
|
||||
dataService.importData(dataDir);
|
||||
|
||||
try (var conn = dataManager.openConnection()) {
|
||||
try (var conn = dataService.openConnection()) {
|
||||
callWithTransaction(conn, () -> {
|
||||
logger.info("Applying foreign key constraints...");
|
||||
try {
|
||||
dataManager.applyConstraints(conn);
|
||||
dataService.applyConstraints(conn);
|
||||
} catch (Exception e) {
|
||||
var message = String.format("Failed to apply database constraints. If this error is caused by " +
|
||||
"foreign key constraint violations, you may fix it via your database sql tool, and " +
|
||||
@ -141,7 +141,7 @@ public class RestoreDatabase extends CommandHandler {
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
sessionFactoryManager.stop();
|
||||
sessionFactoryService.stop();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -9,7 +9,7 @@ import java.io.File;
|
||||
import java.sql.Connection;
|
||||
import java.util.List;
|
||||
|
||||
public interface DataManager {
|
||||
public interface DataService {
|
||||
|
||||
String checkDataVersion(Connection conn, boolean allowEmptyDB);
|
||||
|
||||
@ -73,19 +73,19 @@ import io.onedev.commons.utils.FileUtils;
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.commons.utils.ZipUtils;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.cluster.ClusterManager;
|
||||
import io.onedev.server.cluster.ClusterService;
|
||||
import io.onedev.server.cluster.ClusterRunnable;
|
||||
import io.onedev.server.cluster.ClusterTask;
|
||||
import io.onedev.server.commandhandler.Upgrade;
|
||||
import io.onedev.server.data.migration.DataMigrator;
|
||||
import io.onedev.server.data.migration.MigrationHelper;
|
||||
import io.onedev.server.data.migration.VersionedXmlDoc;
|
||||
import io.onedev.server.entitymanager.AlertManager;
|
||||
import io.onedev.server.entitymanager.EmailAddressManager;
|
||||
import io.onedev.server.entitymanager.LinkSpecManager;
|
||||
import io.onedev.server.entitymanager.RoleManager;
|
||||
import io.onedev.server.entitymanager.SettingManager;
|
||||
import io.onedev.server.entitymanager.UserManager;
|
||||
import io.onedev.server.service.AlertService;
|
||||
import io.onedev.server.service.EmailAddressService;
|
||||
import io.onedev.server.service.LinkSpecService;
|
||||
import io.onedev.server.service.RoleService;
|
||||
import io.onedev.server.service.SettingService;
|
||||
import io.onedev.server.service.UserService;
|
||||
import io.onedev.server.event.Listen;
|
||||
import io.onedev.server.event.entity.EntityPersisted;
|
||||
import io.onedev.server.event.system.SystemStarted;
|
||||
@ -118,8 +118,8 @@ import io.onedev.server.model.support.administration.emailtemplates.EmailTemplat
|
||||
import io.onedev.server.model.support.issue.LinkSpecOpposite;
|
||||
import io.onedev.server.persistence.HibernateConfig;
|
||||
import io.onedev.server.persistence.PersistenceUtils;
|
||||
import io.onedev.server.persistence.SessionFactoryManager;
|
||||
import io.onedev.server.persistence.TransactionManager;
|
||||
import io.onedev.server.persistence.SessionFactoryService;
|
||||
import io.onedev.server.persistence.TransactionService;
|
||||
import io.onedev.server.persistence.annotation.Sessional;
|
||||
import io.onedev.server.persistence.annotation.Transactional;
|
||||
import io.onedev.server.persistence.dao.Dao;
|
||||
@ -131,9 +131,9 @@ import io.onedev.server.util.init.ManualConfig;
|
||||
import io.onedev.server.web.util.editbean.NewUserBean;
|
||||
|
||||
@Singleton
|
||||
public class DefaultDataManager implements DataManager, Serializable {
|
||||
public class DefaultDataService implements DataService, Serializable {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(DefaultDataManager.class);
|
||||
private static final Logger logger = LoggerFactory.getLogger(DefaultDataService.class);
|
||||
|
||||
private static final String ENV_INITIAL_USER = "initial_user";
|
||||
|
||||
@ -148,66 +148,56 @@ public class DefaultDataManager implements DataManager, Serializable {
|
||||
private static final String ENV_INITIAL_SSH_ROOT_URL = "initial_ssh_root_url";
|
||||
|
||||
private static final int BACKUP_BATCH_SIZE = 1000;
|
||||
|
||||
private final PhysicalNamingStrategy physicalNamingStrategy;
|
||||
|
||||
private final HibernateConfig hibernateConfig;
|
||||
|
||||
private final Validator validator;
|
||||
|
||||
private final SessionFactoryManager sessionFactoryManager;
|
||||
|
||||
private final Dao dao;
|
||||
|
||||
private final UserManager userManager;
|
||||
|
||||
private final SettingManager settingManager;
|
||||
|
||||
private final PasswordService passwordService;
|
||||
|
||||
private final TaskScheduler taskScheduler;
|
||||
|
||||
private final RoleManager roleManager;
|
||||
|
||||
private final LinkSpecManager linkSpecManager;
|
||||
|
||||
private final EmailAddressManager emailAddressManager;
|
||||
|
||||
private final ClusterManager clusterManager;
|
||||
|
||||
private final TransactionManager transactionManager;
|
||||
|
||||
private final AlertManager alertManager;
|
||||
@Inject
|
||||
private PhysicalNamingStrategy physicalNamingStrategy;
|
||||
|
||||
@Inject
|
||||
private HibernateConfig hibernateConfig;
|
||||
|
||||
@Inject
|
||||
private Validator validator;
|
||||
|
||||
@Inject
|
||||
private SessionFactoryService sessionFactoryService;
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
|
||||
@Inject
|
||||
private UserService userService;
|
||||
|
||||
@Inject
|
||||
private SettingService settingService;
|
||||
|
||||
@Inject
|
||||
private PasswordService passwordService;
|
||||
|
||||
@Inject
|
||||
private TaskScheduler taskScheduler;
|
||||
|
||||
@Inject
|
||||
private RoleService roleService;
|
||||
|
||||
@Inject
|
||||
private LinkSpecService linkSpecService;
|
||||
|
||||
@Inject
|
||||
private EmailAddressService emailAddressService;
|
||||
|
||||
@Inject
|
||||
private ClusterService clusterService;
|
||||
|
||||
@Inject
|
||||
private TransactionService transactionService;
|
||||
|
||||
@Inject
|
||||
private AlertService alertService;
|
||||
|
||||
private String backupTaskId;
|
||||
|
||||
@Inject
|
||||
public DefaultDataManager(PhysicalNamingStrategy physicalNamingStrategy, HibernateConfig hibernateConfig,
|
||||
Validator validator, Dao dao, SessionFactoryManager sessionFactoryManager,
|
||||
SettingManager settingManager, TaskScheduler taskScheduler,
|
||||
PasswordService passwordService, RoleManager roleManager, LinkSpecManager linkSpecManager,
|
||||
EmailAddressManager emailAddressManager, UserManager userManager, ClusterManager clusterManager,
|
||||
TransactionManager transactionManager, AlertManager alertManager) {
|
||||
this.physicalNamingStrategy = physicalNamingStrategy;
|
||||
this.hibernateConfig = hibernateConfig;
|
||||
this.validator = validator;
|
||||
this.sessionFactoryManager = sessionFactoryManager;
|
||||
this.dao = dao;
|
||||
|
||||
this.userManager = userManager;
|
||||
this.settingManager = settingManager;
|
||||
this.taskScheduler = taskScheduler;
|
||||
this.passwordService = passwordService;
|
||||
this.roleManager = roleManager;
|
||||
this.linkSpecManager = linkSpecManager;
|
||||
this.emailAddressManager = emailAddressManager;
|
||||
this.clusterManager = clusterManager;
|
||||
this.transactionManager = transactionManager;
|
||||
this.alertManager = alertManager;
|
||||
}
|
||||
|
||||
private Metadata getMetadata() {
|
||||
return sessionFactoryManager.getMetadata();
|
||||
return sessionFactoryService.getMetadata();
|
||||
}
|
||||
|
||||
private void execute(Connection conn, List<String> sqls, boolean failOnError) {
|
||||
@ -616,10 +606,10 @@ public class DefaultDataManager implements DataManager, Serializable {
|
||||
user.setName(bean.getName());
|
||||
user.setFullName(bean.getFullName());
|
||||
user.setPassword(passwordService.encryptPassword(bean.getPassword()));
|
||||
userManager.replicate(user);
|
||||
userService.replicate(user);
|
||||
|
||||
EmailAddress primaryEmailAddress = null;
|
||||
for (EmailAddress emailAddress: emailAddressManager.query()) {
|
||||
for (EmailAddress emailAddress: emailAddressService.query()) {
|
||||
if (emailAddress.getOwner().equals(user) && emailAddress.isPrimary()) {
|
||||
primaryEmailAddress = emailAddress;
|
||||
break;
|
||||
@ -635,35 +625,35 @@ public class DefaultDataManager implements DataManager, Serializable {
|
||||
}
|
||||
primaryEmailAddress.setValue(bean.getEmailAddress());
|
||||
if (primaryEmailAddress.isNew())
|
||||
emailAddressManager.create(primaryEmailAddress);
|
||||
emailAddressService.create(primaryEmailAddress);
|
||||
else
|
||||
emailAddressManager.update(primaryEmailAddress);
|
||||
emailAddressService.update(primaryEmailAddress);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public List<ManualConfig> checkData() {
|
||||
List<ManualConfig> manualConfigs = new ArrayList<ManualConfig>();
|
||||
User system = userManager.get(User.SYSTEM_ID);
|
||||
User system = userService.get(User.SYSTEM_ID);
|
||||
if (system == null) {
|
||||
system = new User();
|
||||
system.setId(User.SYSTEM_ID);
|
||||
system.setName(User.SYSTEM_NAME.toLowerCase());
|
||||
system.setFullName(User.SYSTEM_NAME);
|
||||
system.setPassword("no password");
|
||||
userManager.replicate(system);
|
||||
userService.replicate(system);
|
||||
}
|
||||
User unknown = userManager.get(User.UNKNOWN_ID);
|
||||
User unknown = userService.get(User.UNKNOWN_ID);
|
||||
if (unknown == null) {
|
||||
unknown = new User();
|
||||
unknown.setId(User.UNKNOWN_ID);
|
||||
unknown.setName(User.UNKNOWN_NAME.toLowerCase());
|
||||
unknown.setFullName(User.UNKNOWN_NAME);
|
||||
unknown.setPassword("no password");
|
||||
userManager.replicate(unknown);
|
||||
userService.replicate(unknown);
|
||||
}
|
||||
|
||||
if (userManager.get(User.ROOT_ID) == null) {
|
||||
if (userService.get(User.ROOT_ID) == null) {
|
||||
NewUserBean bean = new NewUserBean();
|
||||
bean.setName(System.getenv(ENV_INITIAL_USER));
|
||||
var passwordPath = System.getenv(ENV_INITIAL_PASSWORD_FILE);
|
||||
@ -693,7 +683,7 @@ public class DefaultDataManager implements DataManager, Serializable {
|
||||
}
|
||||
}
|
||||
|
||||
Setting setting = settingManager.findSetting(Key.SYSTEM);
|
||||
Setting setting = settingService.findSetting(Key.SYSTEM);
|
||||
SystemSetting systemSetting;
|
||||
|
||||
String ingressUrl = OneDev.getInstance().getIngressUrl();
|
||||
@ -704,12 +694,12 @@ public class DefaultDataManager implements DataManager, Serializable {
|
||||
String serverUrl = System.getenv(ENV_INITIAL_SERVER_URL);
|
||||
if (ingressUrl != null) {
|
||||
systemSetting.setServerUrl(ingressUrl);
|
||||
settingManager.saveSystemSetting(systemSetting);
|
||||
settingService.saveSystemSetting(systemSetting);
|
||||
systemSetting = null;
|
||||
} else if (serverUrl != null) {
|
||||
systemSetting.setServerUrl(StringUtils.stripEnd(serverUrl, "/\\"));
|
||||
if (validator.validate(systemSetting).isEmpty()) {
|
||||
settingManager.saveSystemSetting(systemSetting);
|
||||
settingService.saveSystemSetting(systemSetting);
|
||||
systemSetting = null;
|
||||
}
|
||||
} else {
|
||||
@ -737,35 +727,35 @@ public class DefaultDataManager implements DataManager, Serializable {
|
||||
|
||||
@Override
|
||||
public void complete() {
|
||||
settingManager.saveSystemSetting((SystemSetting) getSetting());
|
||||
settingService.saveSystemSetting((SystemSetting) getSetting());
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
setting = settingManager.findSetting(Key.SYSTEM_UUID);
|
||||
setting = settingService.findSetting(Key.SYSTEM_UUID);
|
||||
if (setting == null || setting.getValue() == null)
|
||||
settingManager.saveSystemUUID(UUID.randomUUID().toString());
|
||||
settingService.saveSystemUUID(UUID.randomUUID().toString());
|
||||
|
||||
setting = settingManager.findSetting(Key.SSH);
|
||||
setting = settingService.findSetting(Key.SSH);
|
||||
if (setting == null || setting.getValue() == null) {
|
||||
SshSetting sshSetting = new SshSetting();
|
||||
sshSetting.setPemPrivateKey(SshKeyUtils.generatePEMPrivateKey());
|
||||
|
||||
settingManager.saveSshSetting(sshSetting);
|
||||
settingService.saveSshSetting(sshSetting);
|
||||
}
|
||||
|
||||
setting = settingManager.findSetting(Key.GPG);
|
||||
setting = settingService.findSetting(Key.GPG);
|
||||
if (setting == null || setting.getValue() == null) {
|
||||
GpgSetting gpgSetting = new GpgSetting();
|
||||
settingManager.saveGpgSetting(gpgSetting);
|
||||
settingService.saveGpgSetting(gpgSetting);
|
||||
}
|
||||
|
||||
setting = settingManager.findSetting(Key.SECURITY);
|
||||
setting = settingService.findSetting(Key.SECURITY);
|
||||
if (setting == null) {
|
||||
settingManager.saveSecuritySetting(new SecuritySetting());
|
||||
settingService.saveSecuritySetting(new SecuritySetting());
|
||||
}
|
||||
setting = settingManager.findSetting(Key.ISSUE);
|
||||
setting = settingService.findSetting(Key.ISSUE);
|
||||
if (setting == null) {
|
||||
LinkSpec link = new LinkSpec();
|
||||
link.setName("Sub Issues");
|
||||
@ -773,132 +763,132 @@ public class DefaultDataManager implements DataManager, Serializable {
|
||||
link.setOpposite(new LinkSpecOpposite());
|
||||
link.getOpposite().setName("Parent Issue");
|
||||
link.setOrder(1);
|
||||
linkSpecManager.create(link);
|
||||
linkSpecService.create(link);
|
||||
|
||||
link = new LinkSpec();
|
||||
link.setName("Related");
|
||||
link.setMultiple(true);
|
||||
link.setOrder(3);
|
||||
linkSpecManager.create(link);
|
||||
linkSpecService.create(link);
|
||||
|
||||
settingManager.saveIssueSetting(new GlobalIssueSetting());
|
||||
settingService.saveIssueSetting(new GlobalIssueSetting());
|
||||
}
|
||||
setting = settingManager.findSetting(Key.PERFORMANCE);
|
||||
setting = settingService.findSetting(Key.PERFORMANCE);
|
||||
if (setting == null) {
|
||||
settingManager.savePerformanceSetting(new PerformanceSetting());
|
||||
settingService.savePerformanceSetting(new PerformanceSetting());
|
||||
}
|
||||
setting = settingManager.findSetting(Key.AUTHENTICATOR);
|
||||
setting = settingService.findSetting(Key.AUTHENTICATOR);
|
||||
if (setting == null) {
|
||||
settingManager.saveAuthenticator(null);
|
||||
settingService.saveAuthenticator(null);
|
||||
}
|
||||
setting = settingManager.findSetting(Key.JOB_EXECUTORS);
|
||||
setting = settingService.findSetting(Key.JOB_EXECUTORS);
|
||||
if (setting == null)
|
||||
settingManager.saveJobExecutors(new ArrayList<>());
|
||||
setting = settingManager.findSetting(Key.GROOVY_SCRIPTS);
|
||||
settingService.saveJobExecutors(new ArrayList<>());
|
||||
setting = settingService.findSetting(Key.GROOVY_SCRIPTS);
|
||||
if (setting == null) {
|
||||
settingManager.saveGroovyScripts(Lists.newArrayList());
|
||||
settingService.saveGroovyScripts(Lists.newArrayList());
|
||||
}
|
||||
setting = settingManager.findSetting(Key.PULL_REQUEST);
|
||||
setting = settingService.findSetting(Key.PULL_REQUEST);
|
||||
if (setting == null) {
|
||||
settingManager.savePullRequestSetting(new GlobalPullRequestSetting());
|
||||
settingService.savePullRequestSetting(new GlobalPullRequestSetting());
|
||||
}
|
||||
setting = settingManager.findSetting(Key.BUILD);
|
||||
setting = settingService.findSetting(Key.BUILD);
|
||||
if (setting == null) {
|
||||
settingManager.saveBuildSetting(new GlobalBuildSetting());
|
||||
settingService.saveBuildSetting(new GlobalBuildSetting());
|
||||
}
|
||||
setting = settingManager.findSetting(Key.PACK);
|
||||
setting = settingService.findSetting(Key.PACK);
|
||||
if (setting == null) {
|
||||
settingManager.savePackSetting(new GlobalPackSetting());
|
||||
settingService.savePackSetting(new GlobalPackSetting());
|
||||
}
|
||||
setting = settingManager.findSetting(Key.PROJECT);
|
||||
setting = settingService.findSetting(Key.PROJECT);
|
||||
if (setting == null) {
|
||||
settingManager.saveProjectSetting(new GlobalProjectSetting());
|
||||
settingService.saveProjectSetting(new GlobalProjectSetting());
|
||||
}
|
||||
setting = settingManager.findSetting(Key.SUBSCRIPTION_DATA);
|
||||
setting = settingService.findSetting(Key.SUBSCRIPTION_DATA);
|
||||
if (setting == null) {
|
||||
settingManager.saveSubscriptionData(null);
|
||||
settingService.saveSubscriptionData(null);
|
||||
}
|
||||
setting = settingManager.findSetting(Key.ALERT);
|
||||
setting = settingService.findSetting(Key.ALERT);
|
||||
if (setting == null) {
|
||||
settingManager.saveAlertSetting(new AlertSetting());
|
||||
settingService.saveAlertSetting(new AlertSetting());
|
||||
}
|
||||
setting = settingManager.findSetting(Key.AGENT);
|
||||
setting = settingService.findSetting(Key.AGENT);
|
||||
if (setting == null) {
|
||||
settingManager.saveAgentSetting(new AgentSetting());
|
||||
settingService.saveAgentSetting(new AgentSetting());
|
||||
}
|
||||
setting = settingManager.findSetting(Key.SERVICE_DESK_SETTING);
|
||||
setting = settingService.findSetting(Key.SERVICE_DESK_SETTING);
|
||||
if (setting == null) {
|
||||
settingManager.saveServiceDeskSetting(null);
|
||||
settingService.saveServiceDeskSetting(null);
|
||||
} else if (setting.getValue() != null && !validator.validate(setting.getValue()).isEmpty()) {
|
||||
manualConfigs.add(new ManualConfig("Specify Service Desk Setting", null,
|
||||
setting.getValue(), new HashSet<>(), true) {
|
||||
|
||||
@Override
|
||||
public void complete() {
|
||||
settingManager.saveServiceDeskSetting((ServiceDeskSetting) getSetting());
|
||||
settingService.saveServiceDeskSetting((ServiceDeskSetting) getSetting());
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
setting = settingManager.findSetting(Key.EMAIL_TEMPLATES);
|
||||
setting = settingService.findSetting(Key.EMAIL_TEMPLATES);
|
||||
if (setting == null) {
|
||||
settingManager.saveEmailTemplates(new EmailTemplates());
|
||||
settingService.saveEmailTemplates(new EmailTemplates());
|
||||
} else {
|
||||
var emailTemplates = (EmailTemplates) setting.getValue();
|
||||
if (emailTemplates.getStopwatchOverdue() == null)
|
||||
emailTemplates.setStopwatchOverdue(EmailTemplates.DEFAULT_STOPWATCH_OVERDUE);
|
||||
if (emailTemplates.getPasswordReset() == null)
|
||||
emailTemplates.setPasswordReset(EmailTemplates.DEFAULT_PASSWORD_RESET);
|
||||
settingManager.saveEmailTemplates(emailTemplates);
|
||||
settingService.saveEmailTemplates(emailTemplates);
|
||||
}
|
||||
|
||||
setting = settingManager.findSetting(Key.CONTRIBUTED_SETTINGS);
|
||||
setting = settingService.findSetting(Key.CONTRIBUTED_SETTINGS);
|
||||
if (setting == null)
|
||||
settingManager.saveContributedSettings(new LinkedHashMap<>());
|
||||
settingService.saveContributedSettings(new LinkedHashMap<>());
|
||||
|
||||
setting = settingManager.findSetting(Key.MAIL_SERVICE);
|
||||
setting = settingService.findSetting(Key.MAIL);
|
||||
if (setting == null)
|
||||
settingManager.saveMailService(null);
|
||||
settingService.saveMailConnector(null);
|
||||
|
||||
setting = settingManager.findSetting(Key.BACKUP);
|
||||
setting = settingService.findSetting(Key.BACKUP);
|
||||
if (setting == null) {
|
||||
settingManager.saveBackupSetting(null);
|
||||
settingService.saveBackupSetting(null);
|
||||
} else if (setting.getValue() != null && !validator.validate(setting.getValue()).isEmpty()) {
|
||||
Serializable backupSetting = setting.getValue();
|
||||
manualConfigs.add(new ManualConfig("Specify Backup Setting", null, backupSetting) {
|
||||
|
||||
@Override
|
||||
public void complete() {
|
||||
settingManager.saveBackupSetting((BackupSetting) getSetting());
|
||||
settingService.saveBackupSetting((BackupSetting) getSetting());
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
setting = settingManager.findSetting(Key.BRANDING);
|
||||
setting = settingService.findSetting(Key.BRANDING);
|
||||
if (setting == null)
|
||||
settingManager.saveBrandingSetting(new BrandingSetting());
|
||||
settingService.saveBrandingSetting(new BrandingSetting());
|
||||
|
||||
setting = settingManager.findSetting(Key.CLUSTER_SETTING);
|
||||
setting = settingService.findSetting(Key.CLUSTER_SETTING);
|
||||
if (setting == null) {
|
||||
ClusterSetting clusterSetting = new ClusterSetting();
|
||||
clusterSetting.setReplicaCount(1);
|
||||
settingManager.saveClusterSetting(clusterSetting);
|
||||
settingService.saveClusterSetting(clusterSetting);
|
||||
}
|
||||
|
||||
setting = settingManager.findSetting(Key.AUDIT);
|
||||
setting = settingService.findSetting(Key.AUDIT);
|
||||
if (setting == null) {
|
||||
AuditSetting auditSetting = new AuditSetting();
|
||||
settingManager.saveAuditSetting(auditSetting);
|
||||
settingService.saveAuditSetting(auditSetting);
|
||||
}
|
||||
|
||||
if (roleManager.get(Role.OWNER_ID) == null) {
|
||||
if (roleService.get(Role.OWNER_ID) == null) {
|
||||
Role owner = new Role();
|
||||
owner.setName("Project Owner");
|
||||
owner.setId(Role.OWNER_ID);
|
||||
owner.setManageProject(true);
|
||||
roleManager.replicate(owner);
|
||||
roleManager.setupDefaults();
|
||||
roleService.replicate(owner);
|
||||
roleService.setupDefaults();
|
||||
}
|
||||
|
||||
return manualConfigs;
|
||||
@ -913,7 +903,7 @@ public class DefaultDataManager implements DataManager, Serializable {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
if (clusterManager.isLeaderServer()) {
|
||||
if (clusterService.isLeaderServer()) {
|
||||
File tempDir = FileUtils.createTempDir("backup");
|
||||
try {
|
||||
File backupDir = new File(Bootstrap.getSiteDir(), Upgrade.DB_BACKUP_DIR);
|
||||
@ -942,7 +932,7 @@ public class DefaultDataManager implements DataManager, Serializable {
|
||||
|
||||
@Listen
|
||||
public void on(SystemStarted event) {
|
||||
scheduleBackup(settingManager.getBackupSetting());
|
||||
scheduleBackup(settingService.getBackupSetting());
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@ -952,13 +942,13 @@ public class DefaultDataManager implements DataManager, Serializable {
|
||||
Setting setting = (Setting) event.getEntity();
|
||||
if (setting.getKey() == Setting.Key.BACKUP) {
|
||||
BackupSetting backupSetting = (BackupSetting) setting.getValue();
|
||||
transactionManager.runAfterCommit(new ClusterRunnable() {
|
||||
transactionService.runAfterCommit(new ClusterRunnable() {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
clusterManager.submitToAllServers(new ClusterTask<Void>() {
|
||||
clusterService.submitToAllServers(new ClusterTask<Void>() {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ -978,11 +968,11 @@ public class DefaultDataManager implements DataManager, Serializable {
|
||||
|
||||
@Sessional
|
||||
protected void notifyBackupError(Throwable e) {
|
||||
alertManager.alert("Database auto-backup failed", escapeHtml5(getStackTraceAsString(e)), false);
|
||||
alertService.alert("Database auto-backup failed", escapeHtml5(getStackTraceAsString(e)), false);
|
||||
}
|
||||
|
||||
public Object writeReplace() throws ObjectStreamException {
|
||||
return new ManagedSerializedForm(DataManager.class);
|
||||
return new ManagedSerializedForm(DataService.class);
|
||||
}
|
||||
|
||||
}
|
||||
@ -38,10 +38,8 @@ import java.util.regex.Pattern;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.commons.lang3.tuple.Triple;
|
||||
import org.apache.shiro.crypto.AesCipherService;
|
||||
import org.apache.sshd.common.config.keys.KeyUtils;
|
||||
import org.apache.sshd.common.digest.BuiltinDigests;
|
||||
import org.dom4j.Element;
|
||||
@ -58,8 +56,8 @@ import io.onedev.commons.utils.FileUtils;
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.buildspecmodel.inputspec.InputSpec;
|
||||
import io.onedev.server.entitymanager.SettingManager;
|
||||
import io.onedev.server.markdown.MarkdownManager;
|
||||
import io.onedev.server.service.SettingService;
|
||||
import io.onedev.server.markdown.MarkdownService;
|
||||
import io.onedev.server.markdown.MentionParser;
|
||||
import io.onedev.server.model.Issue;
|
||||
import io.onedev.server.model.IssueComment;
|
||||
@ -4610,8 +4608,8 @@ public class DataMigrator {
|
||||
|
||||
private Set<String> getMentioned108(Map<String, String> userIds, String content) {
|
||||
Set<String> mentioned = new HashSet<>();
|
||||
MarkdownManager markdownManager = OneDev.getInstance(MarkdownManager.class);
|
||||
for (String userName : new MentionParser().parseMentions(markdownManager.render(content))) {
|
||||
MarkdownService markdownService = OneDev.getInstance(MarkdownService.class);
|
||||
for (String userName : new MentionParser().parseMentions(markdownService.render(content))) {
|
||||
String userId = userIds.get(userName);
|
||||
if (userId != null)
|
||||
mentioned.add(userId);
|
||||
@ -8144,7 +8142,7 @@ public class DataMigrator {
|
||||
if (key.equals("SYSTEM_UUID")) {
|
||||
Element valueElement = element.element("value");
|
||||
if (valueElement != null) {
|
||||
valueElement.setText(OneDev.getInstance(SettingManager.class).encryptUUID(valueElement.getText().trim()));
|
||||
valueElement.setText(OneDev.getInstance(SettingService.class).encryptUUID(valueElement.getText().trim()));
|
||||
}
|
||||
} else if (key.equals("ALERT")) {
|
||||
Element valueElement = element.element("value");
|
||||
@ -8327,4 +8325,28 @@ public class DataMigrator {
|
||||
}
|
||||
}
|
||||
|
||||
private void migrate212(File dataDir, Stack<Integer> versions) {
|
||||
for (File file : dataDir.listFiles()) {
|
||||
if (file.getName().startsWith("Settings.xml")) {
|
||||
VersionedXmlDoc dom = VersionedXmlDoc.fromFile(file);
|
||||
for (Element element : dom.getRootElement().elements()) {
|
||||
var keyElement = element.element("key");
|
||||
if (keyElement.getTextTrim().equals("MAIL_SERVICE")) {
|
||||
keyElement.setText("MAIL");
|
||||
Element valueElement = element.element("value");
|
||||
if (valueElement != null) {
|
||||
var className = valueElement.attributeValue("class");
|
||||
className = className.replace(".mailservice.", ".mail.");
|
||||
className = className.replace("Office365MailService", "Office365Connector");
|
||||
className = className.replace("GmailMailService", "GmailConnector");
|
||||
className = className.replace("SmtpImapMailService", "SmtpImapConnector");
|
||||
className = className.replace("SendgridMailService", "SendgridConnector");
|
||||
valueElement.addAttribute("class", className);
|
||||
}
|
||||
}
|
||||
}
|
||||
dom.writeToFile(file, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,10 +0,0 @@
|
||||
package io.onedev.server.entitymanager;
|
||||
|
||||
import io.onedev.server.model.AgentLastUsedDate;
|
||||
import io.onedev.server.persistence.dao.EntityManager;
|
||||
|
||||
public interface AgentLastUsedDateManager extends EntityManager<AgentLastUsedDate> {
|
||||
|
||||
void create(AgentLastUsedDate lastUsedDate);
|
||||
|
||||
}
|
||||
@ -1,10 +0,0 @@
|
||||
package io.onedev.server.entitymanager;
|
||||
|
||||
import io.onedev.server.model.BuildDependence;
|
||||
import io.onedev.server.persistence.dao.EntityManager;
|
||||
|
||||
public interface BuildDependenceManager extends EntityManager<BuildDependence> {
|
||||
|
||||
void create(BuildDependence dependence);
|
||||
|
||||
}
|
||||
@ -1,10 +0,0 @@
|
||||
package io.onedev.server.entitymanager;
|
||||
|
||||
import io.onedev.server.model.DashboardVisit;
|
||||
import io.onedev.server.persistence.dao.EntityManager;
|
||||
|
||||
public interface DashboardVisitManager extends EntityManager<DashboardVisit> {
|
||||
|
||||
void createOrUpdate(DashboardVisit visit);
|
||||
|
||||
}
|
||||
@ -1,12 +0,0 @@
|
||||
package io.onedev.server.entitymanager;
|
||||
|
||||
import io.onedev.server.model.GitLfsLock;
|
||||
import io.onedev.server.persistence.dao.EntityManager;
|
||||
|
||||
public interface GitLfsLockManager extends EntityManager<GitLfsLock> {
|
||||
|
||||
GitLfsLock find(String path);
|
||||
|
||||
void create(GitLfsLock lock);
|
||||
|
||||
}
|
||||
@ -1,63 +0,0 @@
|
||||
package io.onedev.server.entitymanager;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import io.onedev.server.model.Issue;
|
||||
import io.onedev.server.model.IssueChange;
|
||||
import io.onedev.server.model.Iteration;
|
||||
import io.onedev.server.model.LinkSpec;
|
||||
import io.onedev.server.model.User;
|
||||
import io.onedev.server.persistence.dao.EntityManager;
|
||||
|
||||
public interface IssueChangeManager extends EntityManager<IssueChange> {
|
||||
|
||||
void addLink(LinkSpec spec, Issue issue, Issue linkedIssue, boolean opposite);
|
||||
|
||||
void removeLink(LinkSpec spec, Issue issue, Issue linkedIssue, boolean opposite);
|
||||
|
||||
void changeLink(LinkSpec spec, Issue issue, @Nullable Issue prevLinkedIssue, @Nullable Issue linkedIssue, boolean opposite);
|
||||
|
||||
void changeTitle(Issue issue, String title);
|
||||
|
||||
void changeOwnEstimatedTime(Issue issue, int ownEstimatedTime);
|
||||
|
||||
void changeOwnSpentTime(Issue issue, int ownSpentTime);
|
||||
|
||||
void changeTotalEstimatedTime(Issue issue, int totalEstimatedTime);
|
||||
|
||||
void changeTotalSpentTime(Issue issue, int totalSpentTime);
|
||||
|
||||
void changeDescription(Issue issue, String description);
|
||||
|
||||
void changeConfidential(Issue issue, boolean confidential);
|
||||
|
||||
void changeFields(Issue issue, Map<String, Object> fieldValues);
|
||||
|
||||
void changeIterations(Issue issue, Collection<Iteration> iterations);
|
||||
|
||||
void create(IssueChange change, @Nullable String note);
|
||||
|
||||
void addSchedule(Issue issue, Iteration iteration);
|
||||
|
||||
void changeSchedule(List<Issue> issues, @Nullable Iteration addIteration,
|
||||
@Nullable Iteration removeIteration, boolean sendNotifications);
|
||||
|
||||
void removeSchedule(Issue issue, Iteration iteration);
|
||||
|
||||
void changeState(Issue issue, String state, Map<String, Object> fieldValues,
|
||||
Collection<String> promptFields, Collection<String> removeFields, @Nullable String comment);
|
||||
|
||||
void batchUpdate(Iterator<? extends Issue> issues, @Nullable String state, @Nullable Boolean confidential,
|
||||
@Nullable Collection<Iteration> iterations, Map<String, Object> fieldValues,
|
||||
@Nullable String comment, boolean sendNotifications);
|
||||
|
||||
List<IssueChange> queryAfter(Long projectId, Long afterChangeId, int count);
|
||||
|
||||
List<IssueChange> query(User submitter, Date fromDate, Date toDate);
|
||||
}
|
||||
@ -1,10 +0,0 @@
|
||||
package io.onedev.server.entitymanager;
|
||||
|
||||
import io.onedev.server.model.IssueCommentRevision;
|
||||
import io.onedev.server.persistence.dao.EntityManager;
|
||||
|
||||
public interface IssueCommentRevisionManager extends EntityManager<IssueCommentRevision> {
|
||||
|
||||
void create(IssueCommentRevision revision);
|
||||
|
||||
}
|
||||
@ -1,10 +0,0 @@
|
||||
package io.onedev.server.entitymanager;
|
||||
|
||||
import io.onedev.server.model.IssueDescriptionRevision;
|
||||
import io.onedev.server.persistence.dao.EntityManager;
|
||||
|
||||
public interface IssueDescriptionRevisionManager extends EntityManager<IssueDescriptionRevision> {
|
||||
|
||||
void create(IssueDescriptionRevision revision);
|
||||
|
||||
}
|
||||
@ -1,10 +0,0 @@
|
||||
package io.onedev.server.entitymanager;
|
||||
|
||||
import io.onedev.server.model.IssueVote;
|
||||
import io.onedev.server.persistence.dao.EntityManager;
|
||||
|
||||
public interface IssueVoteManager extends EntityManager<IssueVote> {
|
||||
|
||||
void create(IssueVote vote);
|
||||
|
||||
}
|
||||
@ -1,10 +0,0 @@
|
||||
package io.onedev.server.entitymanager;
|
||||
|
||||
import io.onedev.server.model.ProjectLastActivityDate;
|
||||
import io.onedev.server.persistence.dao.EntityManager;
|
||||
|
||||
public interface ProjectLastEventDateManager extends EntityManager<ProjectLastActivityDate> {
|
||||
|
||||
void create(ProjectLastActivityDate lastEventDate);
|
||||
|
||||
}
|
||||
@ -1,9 +0,0 @@
|
||||
package io.onedev.server.entitymanager;
|
||||
|
||||
import io.onedev.server.model.PullRequestAssignment;
|
||||
import io.onedev.server.persistence.dao.EntityManager;
|
||||
|
||||
public interface PullRequestAssignmentManager extends EntityManager<PullRequestAssignment> {
|
||||
|
||||
void create(PullRequestAssignment assignment);
|
||||
}
|
||||
@ -1,10 +0,0 @@
|
||||
package io.onedev.server.entitymanager;
|
||||
|
||||
import io.onedev.server.model.PullRequestCommentRevision;
|
||||
import io.onedev.server.persistence.dao.EntityManager;
|
||||
|
||||
public interface PullRequestCommentRevisionManager extends EntityManager<PullRequestCommentRevision> {
|
||||
|
||||
void create(PullRequestCommentRevision revision);
|
||||
|
||||
}
|
||||
@ -1,10 +0,0 @@
|
||||
package io.onedev.server.entitymanager;
|
||||
|
||||
import io.onedev.server.model.PullRequestDescriptionRevision;
|
||||
import io.onedev.server.persistence.dao.EntityManager;
|
||||
|
||||
public interface PullRequestDescriptionRevisionManager extends EntityManager<PullRequestDescriptionRevision> {
|
||||
|
||||
void create(PullRequestDescriptionRevision revision);
|
||||
|
||||
}
|
||||
@ -1,18 +0,0 @@
|
||||
package io.onedev.server.entitymanager;
|
||||
|
||||
import io.onedev.server.model.PullRequest;
|
||||
import io.onedev.server.model.PullRequestReview;
|
||||
import io.onedev.server.persistence.dao.EntityManager;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Collection;
|
||||
|
||||
public interface PullRequestReviewManager extends EntityManager<PullRequestReview> {
|
||||
|
||||
void review(PullRequest request, boolean approved, @Nullable String note);
|
||||
|
||||
void populateReviews(Collection<PullRequest> requests);
|
||||
|
||||
void createOrUpdate(PullRequestReview review);
|
||||
|
||||
}
|
||||
@ -1,28 +0,0 @@
|
||||
package io.onedev.server.entitymanager.impl;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import io.onedev.server.entitymanager.AgentLastUsedDateManager;
|
||||
import io.onedev.server.model.AgentLastUsedDate;
|
||||
import io.onedev.server.persistence.annotation.Transactional;
|
||||
import io.onedev.server.persistence.dao.BaseEntityManager;
|
||||
import io.onedev.server.persistence.dao.Dao;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
@Singleton
|
||||
public class DefaultAgentLastUsedDateManager extends BaseEntityManager<AgentLastUsedDate> implements AgentLastUsedDateManager {
|
||||
|
||||
@Inject
|
||||
public DefaultAgentLastUsedDateManager(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void create(AgentLastUsedDate lastUsedDate) {
|
||||
Preconditions.checkState(lastUsedDate.isNew());
|
||||
dao.persist(lastUsedDate);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,28 +0,0 @@
|
||||
package io.onedev.server.entitymanager.impl;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import io.onedev.server.entitymanager.BuildDependenceManager;
|
||||
import io.onedev.server.model.BuildDependence;
|
||||
import io.onedev.server.persistence.annotation.Transactional;
|
||||
import io.onedev.server.persistence.dao.BaseEntityManager;
|
||||
import io.onedev.server.persistence.dao.Dao;
|
||||
|
||||
@Singleton
|
||||
public class DefaultBuildDependenceManager extends BaseEntityManager<BuildDependence> implements BuildDependenceManager {
|
||||
|
||||
@Inject
|
||||
public DefaultBuildDependenceManager(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void create(BuildDependence dependence) {
|
||||
Preconditions.checkState(dependence.isNew());
|
||||
dao.persist(dependence);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,38 +0,0 @@
|
||||
package io.onedev.server.entitymanager.impl;
|
||||
|
||||
import io.onedev.server.entitymanager.DashboardVisitManager;
|
||||
import io.onedev.server.model.DashboardVisit;
|
||||
import io.onedev.server.persistence.annotation.Transactional;
|
||||
import io.onedev.server.persistence.dao.BaseEntityManager;
|
||||
import io.onedev.server.persistence.dao.Dao;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import java.util.List;
|
||||
|
||||
@Singleton
|
||||
public class DefaultDashboardVisitManager extends BaseEntityManager<DashboardVisit>
|
||||
implements DashboardVisitManager {
|
||||
|
||||
@Inject
|
||||
public DefaultDashboardVisitManager(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DashboardVisit> query() {
|
||||
return query(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int count() {
|
||||
return count(true);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void createOrUpdate(DashboardVisit visit) {
|
||||
dao.persist(visit);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,29 +0,0 @@
|
||||
package io.onedev.server.entitymanager.impl;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
|
||||
import io.onedev.server.entitymanager.IssueCommentRevisionManager;
|
||||
import io.onedev.server.model.IssueCommentRevision;
|
||||
import io.onedev.server.persistence.annotation.Transactional;
|
||||
import io.onedev.server.persistence.dao.BaseEntityManager;
|
||||
import io.onedev.server.persistence.dao.Dao;
|
||||
|
||||
@Singleton
|
||||
public class DefaultIssueCommentRevisionManager extends BaseEntityManager<IssueCommentRevision>
|
||||
implements IssueCommentRevisionManager {
|
||||
|
||||
@Inject
|
||||
public DefaultIssueCommentRevisionManager(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void create(IssueCommentRevision revision) {
|
||||
Preconditions.checkArgument(revision.isNew());
|
||||
dao.persist(revision);
|
||||
}
|
||||
}
|
||||
@ -1,30 +0,0 @@
|
||||
package io.onedev.server.entitymanager.impl;
|
||||
|
||||
import io.onedev.server.entitymanager.IssueDescriptionRevisionManager;
|
||||
import io.onedev.server.model.IssueDescriptionRevision;
|
||||
import io.onedev.server.persistence.annotation.Transactional;
|
||||
import io.onedev.server.persistence.dao.BaseEntityManager;
|
||||
import io.onedev.server.persistence.dao.Dao;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
|
||||
@Singleton
|
||||
public class DefaultIssueDescriptionRevisionManager extends BaseEntityManager<IssueDescriptionRevision>
|
||||
implements IssueDescriptionRevisionManager {
|
||||
|
||||
@Inject
|
||||
public DefaultIssueDescriptionRevisionManager(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void create(IssueDescriptionRevision revision) {
|
||||
Preconditions.checkArgument(revision.isNew());
|
||||
dao.persist(revision);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,30 +0,0 @@
|
||||
package io.onedev.server.entitymanager.impl;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
|
||||
import io.onedev.server.entitymanager.PullRequestCommentRevisionManager;
|
||||
import io.onedev.server.model.PullRequestCommentRevision;
|
||||
import io.onedev.server.persistence.annotation.Transactional;
|
||||
import io.onedev.server.persistence.dao.BaseEntityManager;
|
||||
import io.onedev.server.persistence.dao.Dao;
|
||||
|
||||
@Singleton
|
||||
public class DefaultPullRequestCommentRevisionManager extends BaseEntityManager<PullRequestCommentRevision>
|
||||
implements PullRequestCommentRevisionManager {
|
||||
|
||||
@Inject
|
||||
public DefaultPullRequestCommentRevisionManager(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void create(PullRequestCommentRevision revision) {
|
||||
Preconditions.checkArgument(revision.isNew());
|
||||
dao.persist(revision);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,30 +0,0 @@
|
||||
package io.onedev.server.entitymanager.impl;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
|
||||
import io.onedev.server.entitymanager.PullRequestDescriptionRevisionManager;
|
||||
import io.onedev.server.model.PullRequestDescriptionRevision;
|
||||
import io.onedev.server.persistence.annotation.Transactional;
|
||||
import io.onedev.server.persistence.dao.BaseEntityManager;
|
||||
import io.onedev.server.persistence.dao.Dao;
|
||||
|
||||
@Singleton
|
||||
public class DefaultPullRequestDescriptionRevisionManager extends BaseEntityManager<PullRequestDescriptionRevision>
|
||||
implements PullRequestDescriptionRevisionManager {
|
||||
|
||||
@Inject
|
||||
public DefaultPullRequestDescriptionRevisionManager(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void create(PullRequestDescriptionRevision revision) {
|
||||
Preconditions.checkArgument(revision.isNew());
|
||||
dao.persist(revision);
|
||||
}
|
||||
|
||||
}
|
||||
@ -10,10 +10,10 @@ import javax.inject.Singleton;
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
|
||||
import io.onedev.server.entitymanager.IssueChangeManager;
|
||||
import io.onedev.server.entitymanager.IssueManager;
|
||||
import io.onedev.server.entitymanager.PullRequestChangeManager;
|
||||
import io.onedev.server.entitymanager.PullRequestManager;
|
||||
import io.onedev.server.service.IssueChangeService;
|
||||
import io.onedev.server.service.IssueService;
|
||||
import io.onedev.server.service.PullRequestChangeService;
|
||||
import io.onedev.server.service.PullRequestService;
|
||||
import io.onedev.server.event.Listen;
|
||||
import io.onedev.server.event.project.codecomment.CodeCommentCreated;
|
||||
import io.onedev.server.event.project.codecomment.CodeCommentEdited;
|
||||
@ -28,7 +28,7 @@ import io.onedev.server.event.project.pullrequest.PullRequestChanged;
|
||||
import io.onedev.server.event.project.pullrequest.PullRequestCommentCreated;
|
||||
import io.onedev.server.event.project.pullrequest.PullRequestCommentEdited;
|
||||
import io.onedev.server.event.project.pullrequest.PullRequestOpened;
|
||||
import io.onedev.server.markdown.MarkdownManager;
|
||||
import io.onedev.server.markdown.MarkdownService;
|
||||
import io.onedev.server.model.CodeComment;
|
||||
import io.onedev.server.model.Issue;
|
||||
import io.onedev.server.model.IssueChange;
|
||||
@ -44,36 +44,30 @@ import io.onedev.server.model.support.pullrequest.changedata.PullRequestReferenc
|
||||
import io.onedev.server.persistence.annotation.Transactional;
|
||||
|
||||
@Singleton
|
||||
public class DefaultReferenceChangeManager implements ReferenceChangeManager {
|
||||
|
||||
private final IssueManager issueManager;
|
||||
|
||||
private final PullRequestManager pullRequestManager;
|
||||
|
||||
private final IssueChangeManager issueChangeManager;
|
||||
|
||||
private final PullRequestChangeManager pullRequestChangeManager;
|
||||
|
||||
private final MarkdownManager markdownManager;
|
||||
|
||||
public class DefaultReferenceChangeService implements ReferenceChangeService {
|
||||
|
||||
@Inject
|
||||
public DefaultReferenceChangeManager(IssueManager issueManager,
|
||||
PullRequestManager pullRequestManager, IssueChangeManager issueChangeManager,
|
||||
PullRequestChangeManager pullRequestChangeManager, MarkdownManager markdownManager) {
|
||||
this.issueManager = issueManager;
|
||||
this.pullRequestManager = pullRequestManager;
|
||||
this.issueChangeManager = issueChangeManager;
|
||||
this.pullRequestChangeManager = pullRequestChangeManager;
|
||||
this.markdownManager = markdownManager;
|
||||
}
|
||||
|
||||
private IssueService issueService;
|
||||
|
||||
@Inject
|
||||
private PullRequestService pullRequestService;
|
||||
|
||||
@Inject
|
||||
private IssueChangeService issueChangeService;
|
||||
|
||||
@Inject
|
||||
private PullRequestChangeService pullRequestChangeService;
|
||||
|
||||
@Inject
|
||||
private MarkdownService markdownService;
|
||||
|
||||
@Override
|
||||
public void addReferenceChange(User user, Issue issue, String markdown) {
|
||||
if (markdown != null) {
|
||||
Document document = Jsoup.parseBodyFragment(markdownManager.render(markdown));
|
||||
Document document = Jsoup.parseBodyFragment(markdownService.render(markdown));
|
||||
for (var reference: extractReferences(document, issue.getProject())) {
|
||||
if (reference instanceof IssueReference) {
|
||||
var referencedIssue = issueManager.find(reference.getProject(), reference.getNumber());
|
||||
var referencedIssue = issueService.find(reference.getProject(), reference.getNumber());
|
||||
if (referencedIssue != null && !referencedIssue.equals(issue)) {
|
||||
boolean found = false;
|
||||
for (var change : referencedIssue.getChanges()) {
|
||||
@ -93,11 +87,11 @@ public class DefaultReferenceChangeManager implements ReferenceChangeManager {
|
||||
change.setUser(user);
|
||||
change.setIssue(referencedIssue);
|
||||
referencedIssue.getChanges().add(change);
|
||||
issueChangeManager.create(change, null);
|
||||
issueChangeService.create(change, null);
|
||||
}
|
||||
}
|
||||
} else if (reference instanceof PullRequestReference) {
|
||||
var referencedPullRequest = pullRequestManager.find(reference.getProject(), reference.getNumber());
|
||||
var referencedPullRequest = pullRequestService.find(reference.getProject(), reference.getNumber());
|
||||
if (referencedPullRequest != null) {
|
||||
boolean found = false;
|
||||
for (var change: referencedPullRequest.getChanges()) {
|
||||
@ -117,7 +111,7 @@ public class DefaultReferenceChangeManager implements ReferenceChangeManager {
|
||||
change.setUser(user);
|
||||
change.setRequest(referencedPullRequest);
|
||||
referencedPullRequest.getChanges().add(change);
|
||||
pullRequestChangeManager.create(change, null);
|
||||
pullRequestChangeService.create(change, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -129,10 +123,10 @@ public class DefaultReferenceChangeManager implements ReferenceChangeManager {
|
||||
@Override
|
||||
public void addReferenceChange(User user, PullRequest request, String markdown) {
|
||||
if (markdown != null) {
|
||||
Document document = Jsoup.parseBodyFragment(markdownManager.render(markdown));
|
||||
Document document = Jsoup.parseBodyFragment(markdownService.render(markdown));
|
||||
for (var reference: extractReferences(document, request.getTargetProject())) {
|
||||
if (reference instanceof IssueReference) {
|
||||
var referencedIssue = issueManager.find(reference.getProject(), reference.getNumber());
|
||||
var referencedIssue = issueService.find(reference.getProject(), reference.getNumber());
|
||||
if (referencedIssue != null) {
|
||||
boolean found = false;
|
||||
for (var change : referencedIssue.getChanges()) {
|
||||
@ -152,11 +146,11 @@ public class DefaultReferenceChangeManager implements ReferenceChangeManager {
|
||||
change.setUser(user);
|
||||
change.setIssue(referencedIssue);
|
||||
referencedIssue.getChanges().add(change);
|
||||
issueChangeManager.create(change, null);
|
||||
issueChangeService.create(change, null);
|
||||
}
|
||||
}
|
||||
} else if (reference instanceof PullRequestReference) {
|
||||
var referencedPullRequest = pullRequestManager.find(reference.getProject(), reference.getNumber());
|
||||
var referencedPullRequest = pullRequestService.find(reference.getProject(), reference.getNumber());
|
||||
if (referencedPullRequest != null && !referencedPullRequest.equals(request)) {
|
||||
boolean found = false;
|
||||
for (var change: referencedPullRequest.getChanges()) {
|
||||
@ -176,7 +170,7 @@ public class DefaultReferenceChangeManager implements ReferenceChangeManager {
|
||||
change.setUser(user);
|
||||
change.setRequest(referencedPullRequest);
|
||||
referencedPullRequest.getChanges().add(change);
|
||||
pullRequestChangeManager.create(change, null);
|
||||
pullRequestChangeService.create(change, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -187,10 +181,10 @@ public class DefaultReferenceChangeManager implements ReferenceChangeManager {
|
||||
@Override
|
||||
public void addReferenceChange(User user, CodeComment comment, String markdown) {
|
||||
if (markdown != null) {
|
||||
Document document = Jsoup.parseBodyFragment(markdownManager.render(markdown));
|
||||
Document document = Jsoup.parseBodyFragment(markdownService.render(markdown));
|
||||
for (var reference: extractReferences(document, comment.getProject())) {
|
||||
if (reference instanceof IssueReference) {
|
||||
var referencedIssue = issueManager.find(reference.getProject(), reference.getNumber());
|
||||
var referencedIssue = issueService.find(reference.getProject(), reference.getNumber());
|
||||
if (referencedIssue != null) {
|
||||
boolean found = false;
|
||||
for (var change : referencedIssue.getChanges()) {
|
||||
@ -210,11 +204,11 @@ public class DefaultReferenceChangeManager implements ReferenceChangeManager {
|
||||
change.setUser(user);
|
||||
change.setIssue(referencedIssue);
|
||||
referencedIssue.getChanges().add(change);
|
||||
issueChangeManager.create(change, null);
|
||||
issueChangeService.create(change, null);
|
||||
}
|
||||
}
|
||||
} else if (reference instanceof PullRequestReference) {
|
||||
var referencedPullRequest = pullRequestManager.find(reference.getProject(), reference.getNumber());
|
||||
var referencedPullRequest = pullRequestService.find(reference.getProject(), reference.getNumber());
|
||||
if (referencedPullRequest != null) {
|
||||
boolean found = false;
|
||||
for (var change: referencedPullRequest.getChanges()) {
|
||||
@ -234,7 +228,7 @@ public class DefaultReferenceChangeManager implements ReferenceChangeManager {
|
||||
change.setUser(user);
|
||||
change.setRequest(referencedPullRequest);
|
||||
referencedPullRequest.getChanges().add(change);
|
||||
pullRequestChangeManager.create(change, null);
|
||||
pullRequestChangeService.create(change, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -9,7 +9,7 @@ import org.apache.commons.lang3.builder.EqualsBuilder;
|
||||
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.service.ProjectService;
|
||||
import io.onedev.server.model.Project;
|
||||
|
||||
public abstract class EntityReference implements Serializable {
|
||||
@ -30,7 +30,7 @@ public abstract class EntityReference implements Serializable {
|
||||
}
|
||||
|
||||
public Project getProject() {
|
||||
return OneDev.getInstance(ProjectManager.class).load(projectId);
|
||||
return OneDev.getInstance(ProjectService.class).load(projectId);
|
||||
}
|
||||
|
||||
public Long getProjectId() {
|
||||
@ -59,7 +59,7 @@ public abstract class EntityReference implements Serializable {
|
||||
}
|
||||
|
||||
public static EntityReference of(String type, String referenceString, @Nullable Project currentProject) {
|
||||
var projectManager = OneDev.getInstance(ProjectManager.class);
|
||||
var projectService = OneDev.getInstance(ProjectService.class);
|
||||
var index = referenceString.indexOf('#');
|
||||
if (index != -1) {
|
||||
var projectPath = referenceString.substring(0, index);
|
||||
@ -70,7 +70,7 @@ public abstract class EntityReference implements Serializable {
|
||||
else
|
||||
throw new ValidationException("Reference project not specified: " + referenceString);
|
||||
} else {
|
||||
var project = projectManager.findByPath(projectPath);
|
||||
var project = projectService.findByPath(projectPath);
|
||||
if (project != null)
|
||||
return EntityReference.of(type, project, number);
|
||||
else
|
||||
@ -81,7 +81,7 @@ public abstract class EntityReference implements Serializable {
|
||||
if (index != -1) {
|
||||
var projectKey = referenceString.substring(0, index);
|
||||
var number = parseReferenceNumber(referenceString.substring(index + 1));
|
||||
var project = projectManager.findByKey(projectKey);
|
||||
var project = projectService.findByKey(projectKey);
|
||||
if (project != null)
|
||||
return EntityReference.of(type, project, number);
|
||||
else
|
||||
|
||||
@ -7,7 +7,7 @@ import io.onedev.server.model.Issue;
|
||||
import io.onedev.server.model.PullRequest;
|
||||
import io.onedev.server.model.User;
|
||||
|
||||
public interface ReferenceChangeManager {
|
||||
public interface ReferenceChangeService {
|
||||
|
||||
void addReferenceChange(User user, Issue issue, @Nullable String markdown);
|
||||
|
||||
@ -21,8 +21,8 @@ import com.google.common.collect.ImmutableSet;
|
||||
|
||||
import io.onedev.commons.utils.StringUtils;
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.entitymanager.SettingManager;
|
||||
import io.onedev.server.service.ProjectService;
|
||||
import io.onedev.server.service.SettingService;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.util.HtmlUtils;
|
||||
import io.onedev.server.util.TextNodeVisitor;
|
||||
@ -48,7 +48,7 @@ public class ReferenceUtils {
|
||||
public static String transformReferences(String text, @Nullable Project currentProject,
|
||||
BiFunction<EntityReference, String, String> transformer) {
|
||||
if (mayContainReferences(text)) {
|
||||
var projectManager = OneDev.getInstance(ProjectManager.class);
|
||||
var projectService = OneDev.getInstance(ProjectService.class);
|
||||
var builder = new StringBuilder();
|
||||
var index = 0;
|
||||
var matcher = PATTERN.matcher(text);
|
||||
@ -56,11 +56,11 @@ public class ReferenceUtils {
|
||||
Project project;
|
||||
var projectKey = matcher.group("projectKey");
|
||||
if (projectKey != null) {
|
||||
project = projectManager.findByKey(projectKey);
|
||||
project = projectService.findByKey(projectKey);
|
||||
} else {
|
||||
var projectPath = matcher.group("projectPath");
|
||||
if (projectPath != null)
|
||||
project = projectManager.findByPath(projectPath);
|
||||
project = projectService.findByPath(projectPath);
|
||||
else
|
||||
project = currentProject;
|
||||
}
|
||||
@ -78,7 +78,7 @@ public class ReferenceUtils {
|
||||
} else {
|
||||
text = transformer.apply(null, text);
|
||||
}
|
||||
var issueSetting = OneDev.getInstance(SettingManager.class).getIssueSetting();
|
||||
var issueSetting = OneDev.getInstance(SettingService.class).getIssueSetting();
|
||||
for (var entry: issueSetting.getExternalIssueTransformers().getEntries()) {
|
||||
text = text.replaceAll(entry.getPattern(), entry.getReplaceWith());
|
||||
}
|
||||
|
||||
@ -3,13 +3,13 @@ package io.onedev.server.event;
|
||||
import io.onedev.commons.loader.AppLoader;
|
||||
import io.onedev.commons.loader.ManagedSerializedForm;
|
||||
import io.onedev.commons.utils.LockUtils;
|
||||
import io.onedev.server.cluster.ClusterManager;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.cluster.ClusterService;
|
||||
import io.onedev.server.service.ProjectService;
|
||||
import io.onedev.server.event.project.ProjectDeleted;
|
||||
import io.onedev.server.event.project.ProjectEvent;
|
||||
import io.onedev.server.event.project.ActiveServerChanged;
|
||||
import io.onedev.server.persistence.SessionManager;
|
||||
import io.onedev.server.persistence.TransactionManager;
|
||||
import io.onedev.server.persistence.SessionService;
|
||||
import io.onedev.server.persistence.TransactionService;
|
||||
import io.onedev.server.persistence.annotation.Transactional;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
import org.slf4j.Logger;
|
||||
@ -28,25 +28,25 @@ public class DefaultListenerRegistry implements ListenerRegistry, Serializable {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(DefaultListenerRegistry.class);
|
||||
|
||||
private final ProjectManager projectManager;
|
||||
private final ProjectService projectService;
|
||||
|
||||
private final TransactionManager transactionManager;
|
||||
private final TransactionService transactionService;
|
||||
|
||||
private final SessionManager sessionManager;
|
||||
private final SessionService sessionService;
|
||||
|
||||
private final ClusterManager clusterManager;
|
||||
private final ClusterService clusterService;
|
||||
|
||||
private volatile Map<Object, Collection<Method>> listenerMethods;
|
||||
|
||||
private final Map<Class<?>, Collection<Listener>> listeners = new ConcurrentHashMap<>();
|
||||
|
||||
@Inject
|
||||
public DefaultListenerRegistry(ProjectManager projectManager, ClusterManager clusterManager,
|
||||
TransactionManager transactionManager, SessionManager sessionManager) {
|
||||
this.projectManager = projectManager;
|
||||
this.transactionManager = transactionManager;
|
||||
this.clusterManager = clusterManager;
|
||||
this.sessionManager = sessionManager;
|
||||
public DefaultListenerRegistry(ProjectService projectService, ClusterService clusterService,
|
||||
TransactionService transactionService, SessionService sessionService) {
|
||||
this.projectService = projectService;
|
||||
this.transactionService = transactionService;
|
||||
this.clusterService = clusterService;
|
||||
this.sessionService = sessionService;
|
||||
}
|
||||
|
||||
public Object writeReplace() throws ObjectStreamException {
|
||||
@ -110,17 +110,17 @@ public class DefaultListenerRegistry implements ListenerRegistry, Serializable {
|
||||
if (event instanceof ProjectEvent) {
|
||||
ProjectEvent projectEvent = (ProjectEvent) event;
|
||||
Long projectId = projectEvent.getProject().getId();
|
||||
transactionManager.runAfterCommit(() -> projectManager.submitToActiveServer(projectId, () -> {
|
||||
transactionService.runAfterCommit(() -> projectService.submitToActiveServer(projectId, () -> {
|
||||
SecurityUtils.bindAsSystem();
|
||||
try {
|
||||
String lockName = projectEvent.getLockName();
|
||||
if (lockName != null) {
|
||||
LockUtils.call(lockName, true, () -> {
|
||||
sessionManager.run(() -> invokeListeners(event));
|
||||
sessionService.run(() -> invokeListeners(event));
|
||||
return null;
|
||||
});
|
||||
} else {
|
||||
sessionManager.run(() -> invokeListeners(event));
|
||||
sessionService.run(() -> invokeListeners(event));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("Error invoking listeners", e);
|
||||
@ -130,11 +130,11 @@ public class DefaultListenerRegistry implements ListenerRegistry, Serializable {
|
||||
} else if (event instanceof ProjectDeleted) {
|
||||
ProjectDeleted projectDeleted = (ProjectDeleted) event;
|
||||
Long projectId = projectDeleted.getProjectId();
|
||||
String activeServer = projectManager.getActiveServer(projectId, false);
|
||||
String activeServer = projectService.getActiveServer(projectId, false);
|
||||
if (activeServer != null) {
|
||||
transactionManager.runAfterCommit(() -> clusterManager.submitToServer(activeServer, () -> {
|
||||
transactionService.runAfterCommit(() -> clusterService.submitToServer(activeServer, () -> {
|
||||
try {
|
||||
sessionManager.run(() -> invokeListeners(event));
|
||||
sessionService.run(() -> invokeListeners(event));
|
||||
} catch (Exception e) {
|
||||
logger.error("Error invoking listeners", e);
|
||||
}
|
||||
@ -143,9 +143,9 @@ public class DefaultListenerRegistry implements ListenerRegistry, Serializable {
|
||||
}
|
||||
} else if (event instanceof ActiveServerChanged) {
|
||||
ActiveServerChanged activeServerChanged = (ActiveServerChanged) event;
|
||||
transactionManager.runAfterCommit(() -> clusterManager.submitToServer(activeServerChanged.getActiveServer(), () -> {
|
||||
transactionService.runAfterCommit(() -> clusterService.submitToServer(activeServerChanged.getActiveServer(), () -> {
|
||||
try {
|
||||
sessionManager.run(() -> invokeListeners(event));
|
||||
sessionService.run(() -> invokeListeners(event));
|
||||
} catch (Exception e) {
|
||||
logger.error("Error invoking listeners", e);
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package io.onedev.server.event.agent;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.AgentManager;
|
||||
import io.onedev.server.service.AgentService;
|
||||
import io.onedev.server.event.Event;
|
||||
import io.onedev.server.model.Agent;
|
||||
|
||||
@ -14,7 +14,7 @@ public abstract class AgentEvent extends Event {
|
||||
}
|
||||
|
||||
public Agent getAgent() {
|
||||
return OneDev.getInstance(AgentManager.class).load(agentId);
|
||||
return OneDev.getInstance(AgentService.class).load(agentId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
package io.onedev.server.event.project;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.ProjectManager;
|
||||
import io.onedev.server.entitymanager.UserManager;
|
||||
import io.onedev.server.service.ProjectService;
|
||||
import io.onedev.server.service.UserService;
|
||||
import io.onedev.server.event.Event;
|
||||
import io.onedev.server.model.Project;
|
||||
import io.onedev.server.model.User;
|
||||
import io.onedev.server.model.support.LastActivity;
|
||||
import io.onedev.server.notification.ActivityDetail;
|
||||
import io.onedev.server.util.commenttext.CommentText;
|
||||
import io.onedev.server.web.UrlManager;
|
||||
import io.onedev.server.web.UrlService;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.Serializable;
|
||||
@ -35,12 +35,12 @@ public abstract class ProjectEvent extends Event implements Serializable {
|
||||
}
|
||||
|
||||
public Project getProject() {
|
||||
return OneDev.getInstance(ProjectManager.class).load(projectId);
|
||||
return OneDev.getInstance(ProjectService.class).load(projectId);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public User getUser() {
|
||||
return userId != null? OneDev.getInstance(UserManager.class).load(userId): null;
|
||||
return userId != null? OneDev.getInstance(UserService.class).load(userId): null;
|
||||
}
|
||||
|
||||
public Date getDate() {
|
||||
@ -105,7 +105,7 @@ public abstract class ProjectEvent extends Event implements Serializable {
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return OneDev.getInstance(UrlManager.class).urlFor(getProject(), true);
|
||||
return OneDev.getInstance(UrlService.class).urlFor(getProject(), true);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@ -16,7 +16,7 @@ import io.onedev.server.util.CommitAware;
|
||||
import io.onedev.server.util.ProjectScopedCommit;
|
||||
import io.onedev.server.util.commenttext.CommentText;
|
||||
import io.onedev.server.util.commenttext.PlainText;
|
||||
import io.onedev.server.web.UrlManager;
|
||||
import io.onedev.server.web.UrlService;
|
||||
|
||||
public class RefUpdated extends ProjectEvent implements CommitAware {
|
||||
|
||||
@ -105,7 +105,7 @@ public class RefUpdated extends ProjectEvent implements CommitAware {
|
||||
@Override
|
||||
public String getUrl() {
|
||||
if (newCommitId != null)
|
||||
return OneDev.getInstance(UrlManager.class).urlFor(getProject(), newCommitId, true);
|
||||
return OneDev.getInstance(UrlService.class).urlFor(getProject(), newCommitId, true);
|
||||
else
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@ -5,8 +5,8 @@ import java.util.Date;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.BuildManager;
|
||||
import io.onedev.server.web.UrlManager;
|
||||
import io.onedev.server.service.BuildService;
|
||||
import io.onedev.server.web.UrlService;
|
||||
import io.onedev.server.event.project.ProjectEvent;
|
||||
import io.onedev.server.model.Build;
|
||||
import io.onedev.server.model.User;
|
||||
@ -27,7 +27,7 @@ public abstract class BuildEvent extends ProjectEvent implements CommitAware {
|
||||
}
|
||||
|
||||
public Build getBuild() {
|
||||
return OneDev.getInstance(BuildManager.class).load(buildId);
|
||||
return OneDev.getInstance(BuildService.class).load(buildId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -48,7 +48,7 @@ public abstract class BuildEvent extends ProjectEvent implements CommitAware {
|
||||
|
||||
@Override
|
||||
public String getUrl() {
|
||||
return OneDev.getInstance(UrlManager.class).urlFor(getBuild(), true);
|
||||
return OneDev.getInstance(UrlService.class).urlFor(getBuild(), true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -3,8 +3,8 @@ package io.onedev.server.event.project.codecomment;
|
||||
import java.util.Date;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.CodeCommentManager;
|
||||
import io.onedev.server.web.UrlManager;
|
||||
import io.onedev.server.service.CodeCommentService;
|
||||
import io.onedev.server.web.UrlService;
|
||||
import io.onedev.server.event.project.ProjectEvent;
|
||||
import io.onedev.server.model.CodeComment;
|
||||
import io.onedev.server.model.User;
|
||||
@ -26,12 +26,12 @@ public abstract class CodeCommentEvent extends ProjectEvent {
|
||||
}
|
||||
|
||||
public CodeComment getComment() {
|
||||
return OneDev.getInstance(CodeCommentManager.class).load(commentId);
|
||||
return OneDev.getInstance(CodeCommentService.class).load(commentId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUrl() {
|
||||
return OneDev.getInstance(UrlManager.class).urlFor(getComment(), true);
|
||||
return OneDev.getInstance(UrlService.class).urlFor(getComment(), true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package io.onedev.server.event.project.codecomment;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.CodeCommentReplyManager;
|
||||
import io.onedev.server.web.UrlManager;
|
||||
import io.onedev.server.service.CodeCommentReplyService;
|
||||
import io.onedev.server.web.UrlService;
|
||||
import io.onedev.server.model.CodeCommentReply;
|
||||
import io.onedev.server.util.commenttext.CommentText;
|
||||
import io.onedev.server.util.commenttext.MarkdownText;
|
||||
@ -19,7 +19,7 @@ public class CodeCommentReplyCreated extends CodeCommentEvent {
|
||||
}
|
||||
|
||||
public CodeCommentReply getReply() {
|
||||
return OneDev.getInstance(CodeCommentReplyManager.class).load(replyId);
|
||||
return OneDev.getInstance(CodeCommentReplyService.class).load(replyId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -34,7 +34,7 @@ public class CodeCommentReplyCreated extends CodeCommentEvent {
|
||||
|
||||
@Override
|
||||
public String getUrl() {
|
||||
return OneDev.getInstance(UrlManager.class).urlFor(getReply(), true);
|
||||
return OneDev.getInstance(UrlService.class).urlFor(getReply(), true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package io.onedev.server.event.project.codecomment;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.CodeCommentReplyManager;
|
||||
import io.onedev.server.service.CodeCommentReplyService;
|
||||
import io.onedev.server.model.CodeCommentReply;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
|
||||
@ -19,7 +19,7 @@ public class CodeCommentReplyEdited extends CodeCommentEvent {
|
||||
}
|
||||
|
||||
public CodeCommentReply getReply() {
|
||||
return OneDev.getInstance(CodeCommentReplyManager.class).load(replyId);
|
||||
return OneDev.getInstance(CodeCommentReplyService.class).load(replyId);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -3,8 +3,8 @@ package io.onedev.server.event.project.codecomment;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.CodeCommentStatusChangeManager;
|
||||
import io.onedev.server.web.UrlManager;
|
||||
import io.onedev.server.service.CodeCommentStatusChangeService;
|
||||
import io.onedev.server.web.UrlService;
|
||||
import io.onedev.server.model.CodeCommentStatusChange;
|
||||
import io.onedev.server.util.commenttext.CommentText;
|
||||
import io.onedev.server.util.commenttext.MarkdownText;
|
||||
@ -24,7 +24,7 @@ public class CodeCommentStatusChanged extends CodeCommentEvent {
|
||||
}
|
||||
|
||||
public CodeCommentStatusChange getChange() {
|
||||
return OneDev.getInstance(CodeCommentStatusChangeManager.class).load(changeId);
|
||||
return OneDev.getInstance(CodeCommentStatusChangeService.class).load(changeId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -47,7 +47,7 @@ public class CodeCommentStatusChanged extends CodeCommentEvent {
|
||||
|
||||
@Override
|
||||
public String getUrl() {
|
||||
return OneDev.getInstance(UrlManager.class).urlFor(getChange(), true);
|
||||
return OneDev.getInstance(UrlService.class).urlFor(getChange(), true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package io.onedev.server.event.project.issue;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.IssueChangeManager;
|
||||
import io.onedev.server.service.IssueChangeService;
|
||||
import io.onedev.server.model.Group;
|
||||
import io.onedev.server.model.IssueChange;
|
||||
import io.onedev.server.model.User;
|
||||
@ -11,7 +11,7 @@ import io.onedev.server.util.CommitAware;
|
||||
import io.onedev.server.util.ProjectScopedCommit;
|
||||
import io.onedev.server.util.commenttext.CommentText;
|
||||
import io.onedev.server.util.commenttext.MarkdownText;
|
||||
import io.onedev.server.web.UrlManager;
|
||||
import io.onedev.server.web.UrlService;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Collection;
|
||||
@ -36,7 +36,7 @@ public class IssueChanged extends IssueEvent implements CommitAware {
|
||||
}
|
||||
|
||||
public IssueChange getChange() {
|
||||
return OneDev.getInstance(IssueChangeManager.class).load(changeId);
|
||||
return OneDev.getInstance(IssueChangeService.class).load(changeId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -76,7 +76,7 @@ public class IssueChanged extends IssueEvent implements CommitAware {
|
||||
|
||||
@Override
|
||||
public String getUrl() {
|
||||
return OneDev.getInstance(UrlManager.class).urlFor(getChange(), true);
|
||||
return OneDev.getInstance(UrlService.class).urlFor(getChange(), true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package io.onedev.server.event.project.issue;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.IssueCommentManager;
|
||||
import io.onedev.server.web.UrlManager;
|
||||
import io.onedev.server.service.IssueCommentService;
|
||||
import io.onedev.server.web.UrlService;
|
||||
import io.onedev.server.model.IssueComment;
|
||||
import io.onedev.server.util.commenttext.CommentText;
|
||||
import io.onedev.server.util.commenttext.MarkdownText;
|
||||
@ -24,7 +24,7 @@ public class IssueCommentCreated extends IssueEvent {
|
||||
}
|
||||
|
||||
public IssueComment getComment() {
|
||||
return OneDev.getInstance(IssueCommentManager.class).load(commentId);
|
||||
return OneDev.getInstance(IssueCommentService.class).load(commentId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -48,7 +48,7 @@ public class IssueCommentCreated extends IssueEvent {
|
||||
|
||||
@Override
|
||||
public String getUrl() {
|
||||
return OneDev.getInstance(UrlManager.class).urlFor(getComment(), true);
|
||||
return OneDev.getInstance(UrlService.class).urlFor(getComment(), true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package io.onedev.server.event.project.issue;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.IssueCommentManager;
|
||||
import io.onedev.server.service.IssueCommentService;
|
||||
import io.onedev.server.model.IssueComment;
|
||||
import io.onedev.server.security.SecurityUtils;
|
||||
|
||||
@ -19,7 +19,7 @@ public class IssueCommentEdited extends IssueEvent {
|
||||
}
|
||||
|
||||
public IssueComment getComment() {
|
||||
return OneDev.getInstance(IssueCommentManager.class).load(commentId);
|
||||
return OneDev.getInstance(IssueCommentService.class).load(commentId);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -3,7 +3,7 @@ package io.onedev.server.event.project.issue;
|
||||
import java.util.Date;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.UserManager;
|
||||
import io.onedev.server.service.UserService;
|
||||
import io.onedev.server.model.Issue;
|
||||
|
||||
public class IssueCommitsAttached extends IssueEvent {
|
||||
@ -11,7 +11,7 @@ public class IssueCommitsAttached extends IssueEvent {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public IssueCommitsAttached(Issue issue) {
|
||||
super(OneDev.getInstance(UserManager.class).getSystem(), new Date(), issue);
|
||||
super(OneDev.getInstance(UserService.class).getSystem(), new Date(), issue);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -6,12 +6,12 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.IssueManager;
|
||||
import io.onedev.server.service.IssueService;
|
||||
import io.onedev.server.event.project.ProjectEvent;
|
||||
import io.onedev.server.model.Group;
|
||||
import io.onedev.server.model.Issue;
|
||||
import io.onedev.server.model.User;
|
||||
import io.onedev.server.web.UrlManager;
|
||||
import io.onedev.server.web.UrlService;
|
||||
|
||||
public abstract class IssueEvent extends ProjectEvent {
|
||||
|
||||
@ -32,7 +32,7 @@ public abstract class IssueEvent extends ProjectEvent {
|
||||
}
|
||||
|
||||
public Issue getIssue() {
|
||||
return OneDev.getInstance(IssueManager.class).load(issueId);
|
||||
return OneDev.getInstance(IssueService.class).load(issueId);
|
||||
}
|
||||
|
||||
public abstract boolean affectsListing();
|
||||
@ -52,7 +52,7 @@ public abstract class IssueEvent extends ProjectEvent {
|
||||
|
||||
@Override
|
||||
public String getUrl() {
|
||||
return OneDev.getInstance(UrlManager.class).urlFor(getIssue(), true);
|
||||
return OneDev.getInstance(UrlService.class).urlFor(getIssue(), true);
|
||||
}
|
||||
|
||||
public boolean isSendNotifications() {
|
||||
|
||||
@ -8,8 +8,8 @@ import java.util.stream.Collectors;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.buildspecmodel.inputspec.Input;
|
||||
import io.onedev.server.entitymanager.GroupManager;
|
||||
import io.onedev.server.entitymanager.UserManager;
|
||||
import io.onedev.server.service.GroupService;
|
||||
import io.onedev.server.service.UserService;
|
||||
import io.onedev.server.model.Group;
|
||||
import io.onedev.server.model.Issue;
|
||||
import io.onedev.server.model.User;
|
||||
@ -47,12 +47,12 @@ public class IssueOpened extends IssueEvent implements CommitAware {
|
||||
@Override
|
||||
public Map<String, Collection<User>> getNewUsers() {
|
||||
Map<String, Collection<User>> newUsers = new HashMap<>();
|
||||
UserManager userManager = OneDev.getInstance(UserManager.class);
|
||||
UserService userService = OneDev.getInstance(UserService.class);
|
||||
for (Input field: getIssue().getFieldInputs().values()) {
|
||||
if (field.getType().equals(FieldSpec.USER)) {
|
||||
Set<User> usersOfField = field.getValues()
|
||||
.stream()
|
||||
.map(it->userManager.findByName(it))
|
||||
.map(it->userService.findByName(it))
|
||||
.filter(it->it!=null)
|
||||
.collect(Collectors.toSet());
|
||||
if (!usersOfField.isEmpty())
|
||||
@ -65,11 +65,11 @@ public class IssueOpened extends IssueEvent implements CommitAware {
|
||||
@Override
|
||||
public Map<String, Group> getNewGroups() {
|
||||
Map<String, Group> newGroups = new HashMap<>();
|
||||
GroupManager groupManager = OneDev.getInstance(GroupManager.class);
|
||||
GroupService groupService = OneDev.getInstance(GroupService.class);
|
||||
for (Input field: getIssue().getFieldInputs().values()) {
|
||||
if (field.getType().equals(FieldSpec.GROUP)) {
|
||||
if (!field.getValues().isEmpty()) {
|
||||
Group newGroup = groupManager.find(field.getValues().iterator().next());
|
||||
Group newGroup = groupService.find(field.getValues().iterator().next());
|
||||
if (newGroup != null)
|
||||
newGroups.put(field.getName(), newGroup);
|
||||
}
|
||||
|
||||
@ -3,11 +3,11 @@ package io.onedev.server.event.project.pack;
|
||||
import java.util.Date;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.PackManager;
|
||||
import io.onedev.server.service.PackService;
|
||||
import io.onedev.server.event.project.ProjectEvent;
|
||||
import io.onedev.server.model.Pack;
|
||||
import io.onedev.server.model.User;
|
||||
import io.onedev.server.web.UrlManager;
|
||||
import io.onedev.server.web.UrlService;
|
||||
|
||||
public abstract class PackEvent extends ProjectEvent {
|
||||
|
||||
@ -21,12 +21,12 @@ public abstract class PackEvent extends ProjectEvent {
|
||||
}
|
||||
|
||||
public Pack getPack() {
|
||||
return OneDev.getInstance(PackManager.class).load(packId);
|
||||
return OneDev.getInstance(PackService.class).load(packId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUrl() {
|
||||
return OneDev.getInstance(UrlManager.class).urlFor(getPack(), true);
|
||||
return OneDev.getInstance(UrlService.class).urlFor(getPack(), true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -4,7 +4,7 @@ import java.text.MessageFormat;
|
||||
import java.util.Date;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.UserManager;
|
||||
import io.onedev.server.service.UserService;
|
||||
import io.onedev.server.model.PullRequest;
|
||||
import io.onedev.server.model.User;
|
||||
|
||||
@ -30,7 +30,7 @@ public class PullRequestAssigned extends PullRequestEvent {
|
||||
}
|
||||
|
||||
public User getAssignee() {
|
||||
return OneDev.getInstance(UserManager.class).load(assigneeId);
|
||||
return OneDev.getInstance(UserService.class).load(assigneeId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@ package io.onedev.server.event.project.pullrequest;
|
||||
import java.util.Date;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.BuildManager;
|
||||
import io.onedev.server.service.BuildService;
|
||||
import io.onedev.server.model.Build;
|
||||
|
||||
public class PullRequestBuildEvent extends PullRequestEvent {
|
||||
@ -23,7 +23,7 @@ public class PullRequestBuildEvent extends PullRequestEvent {
|
||||
}
|
||||
|
||||
public Build getBuild() {
|
||||
return OneDev.getInstance(BuildManager.class).load(buildId);
|
||||
return OneDev.getInstance(BuildService.class).load(buildId);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -5,8 +5,8 @@ import javax.annotation.Nullable;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
|
||||
import io.onedev.server.OneDev;
|
||||
import io.onedev.server.entitymanager.PullRequestChangeManager;
|
||||
import io.onedev.server.web.UrlManager;
|
||||
import io.onedev.server.service.PullRequestChangeService;
|
||||
import io.onedev.server.web.UrlService;
|
||||
import io.onedev.server.model.PullRequestChange;
|
||||
import io.onedev.server.model.support.pullrequest.MergePreview;
|
||||
import io.onedev.server.model.support.pullrequest.changedata.PullRequestDiscardData;
|
||||
@ -31,7 +31,7 @@ public class PullRequestChanged extends PullRequestEvent implements CommitAware
|
||||
}
|
||||
|
||||
public PullRequestChange getChange() {
|
||||
return OneDev.getInstance(PullRequestChangeManager.class).load(changeId);
|
||||
return OneDev.getInstance(PullRequestChangeService.class).load(changeId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -68,7 +68,7 @@ public class PullRequestChanged extends PullRequestEvent implements CommitAware
|
||||
|
||||
@Override
|
||||
public String getUrl() {
|
||||
return OneDev.getInstance(UrlManager.class).urlFor(getChange(), true);
|
||||
return OneDev.getInstance(UrlService.class).urlFor(getChange(), true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -5,7 +5,7 @@ import io.onedev.server.model.CodeComment;
|
||||
import io.onedev.server.model.PullRequest;
|
||||
import io.onedev.server.util.commenttext.CommentText;
|
||||
import io.onedev.server.util.commenttext.MarkdownText;
|
||||
import io.onedev.server.web.UrlManager;
|
||||
import io.onedev.server.web.UrlService;
|
||||
|
||||
public class PullRequestCodeCommentCreated extends PullRequestCodeCommentEvent {
|
||||
|
||||
@ -27,7 +27,7 @@ public class PullRequestCodeCommentCreated extends PullRequestCodeCommentEvent {
|
||||
|
||||
@Override
|
||||
public String getUrl() {
|
||||
return OneDev.getInstance(UrlManager.class).urlFor(getComment(), true);
|
||||
return OneDev.getInstance(UrlService.class).urlFor(getComment(), true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user