You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PlatformLevel4.java 22KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599
  1. /*
  2. * SonarQube
  3. * Copyright (C) 2009-2018 SonarSource SA
  4. * mailto:info AT sonarsource DOT com
  5. *
  6. * This program is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU Lesser General Public
  8. * License as published by the Free Software Foundation; either
  9. * version 3 of the License, or (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * Lesser General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Lesser General Public License
  17. * along with this program; if not, write to the Free Software Foundation,
  18. * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  19. */
  20. package org.sonar.server.platform.platformlevel;
  21. import java.util.List;
  22. import org.sonar.api.profiles.AnnotationProfileParser;
  23. import org.sonar.api.profiles.XMLProfileParser;
  24. import org.sonar.api.profiles.XMLProfileSerializer;
  25. import org.sonar.api.resources.Languages;
  26. import org.sonar.api.resources.ResourceTypes;
  27. import org.sonar.api.rules.AnnotationRuleParser;
  28. import org.sonar.api.rules.XMLRuleParser;
  29. import org.sonar.api.server.rule.RulesDefinitionXmlLoader;
  30. import org.sonar.ce.CeModule;
  31. import org.sonar.ce.notification.ReportAnalysisFailureNotificationModule;
  32. import org.sonar.ce.settings.ProjectConfigurationFactory;
  33. import org.sonar.core.component.DefaultResourceTypes;
  34. import org.sonar.core.timemachine.Periods;
  35. import org.sonar.server.authentication.AuthenticationModule;
  36. import org.sonar.server.authentication.LogOAuthWarning;
  37. import org.sonar.server.badge.ws.ProjectBadgesWsModule;
  38. import org.sonar.server.batch.BatchWsModule;
  39. import org.sonar.server.branch.BranchFeatureProxyImpl;
  40. import org.sonar.server.branch.pr.ws.PullRequestWsModule;
  41. import org.sonar.server.branch.ws.BranchWsModule;
  42. import org.sonar.server.ce.ws.CeWsModule;
  43. import org.sonar.server.component.ComponentCleanerService;
  44. import org.sonar.server.component.ComponentFinder;
  45. import org.sonar.server.component.ComponentService;
  46. import org.sonar.server.component.ComponentUpdater;
  47. import org.sonar.server.component.index.ComponentIndex;
  48. import org.sonar.server.component.index.ComponentIndexDefinition;
  49. import org.sonar.server.component.index.ComponentIndexer;
  50. import org.sonar.server.component.ws.ComponentsWsModule;
  51. import org.sonar.server.debt.DebtModelPluginRepository;
  52. import org.sonar.server.debt.DebtModelXMLExporter;
  53. import org.sonar.server.debt.DebtRulesXMLImporter;
  54. import org.sonar.server.duplication.ws.DuplicationsParser;
  55. import org.sonar.server.duplication.ws.DuplicationsWs;
  56. import org.sonar.server.duplication.ws.ShowResponseBuilder;
  57. import org.sonar.server.edition.EditionsWsModule;
  58. import org.sonar.server.edition.FinalizeEditionChange;
  59. import org.sonar.server.email.ws.EmailsWsModule;
  60. import org.sonar.server.es.IndexCreator;
  61. import org.sonar.server.es.IndexDefinitions;
  62. import org.sonar.server.es.ProjectIndexersImpl;
  63. import org.sonar.server.es.RecoveryIndexer;
  64. import org.sonar.server.es.metadata.EsDbCompatibilityImpl;
  65. import org.sonar.server.es.metadata.MetadataIndex;
  66. import org.sonar.server.es.metadata.MetadataIndexDefinition;
  67. import org.sonar.server.event.NewAlerts;
  68. import org.sonar.server.favorite.FavoriteModule;
  69. import org.sonar.server.health.NodeHealthModule;
  70. import org.sonar.server.issue.AddTagsAction;
  71. import org.sonar.server.issue.AssignAction;
  72. import org.sonar.server.issue.CommentAction;
  73. import org.sonar.server.issue.IssueChangePostProcessorImpl;
  74. import org.sonar.server.issue.RemoveTagsAction;
  75. import org.sonar.server.issue.SetSeverityAction;
  76. import org.sonar.server.issue.SetTypeAction;
  77. import org.sonar.server.issue.TransitionAction;
  78. import org.sonar.server.issue.index.IssueIndexDefinition;
  79. import org.sonar.server.issue.index.IssueIndexer;
  80. import org.sonar.server.issue.index.IssueIteratorFactory;
  81. import org.sonar.server.issue.notification.ChangesOnMyIssueNotificationDispatcher;
  82. import org.sonar.server.issue.notification.DoNotFixNotificationDispatcher;
  83. import org.sonar.server.issue.notification.IssueChangesEmailTemplate;
  84. import org.sonar.server.issue.notification.MyNewIssuesEmailTemplate;
  85. import org.sonar.server.issue.notification.MyNewIssuesNotificationDispatcher;
  86. import org.sonar.server.issue.notification.NewIssuesEmailTemplate;
  87. import org.sonar.server.issue.notification.NewIssuesNotificationDispatcher;
  88. import org.sonar.server.issue.notification.NewIssuesNotificationFactory;
  89. import org.sonar.server.issue.ws.IssueWsModule;
  90. import org.sonar.server.language.ws.LanguageWs;
  91. import org.sonar.server.measure.custom.ws.CustomMeasuresWsModule;
  92. import org.sonar.server.measure.index.ProjectsEsModule;
  93. import org.sonar.server.measure.live.LiveMeasureModule;
  94. import org.sonar.server.measure.ws.MeasuresWsModule;
  95. import org.sonar.server.measure.ws.TimeMachineWs;
  96. import org.sonar.server.metric.CoreCustomMetrics;
  97. import org.sonar.server.metric.DefaultMetricFinder;
  98. import org.sonar.server.metric.ws.MetricsWsModule;
  99. import org.sonar.server.notification.NotificationModule;
  100. import org.sonar.server.notification.ws.NotificationWsModule;
  101. import org.sonar.server.organization.BillingValidationsProxyImpl;
  102. import org.sonar.server.organization.OrganizationCreationImpl;
  103. import org.sonar.server.organization.OrganizationValidationImpl;
  104. import org.sonar.server.organization.ws.OrganizationsWsModule;
  105. import org.sonar.server.permission.GroupPermissionChanger;
  106. import org.sonar.server.permission.PermissionTemplateService;
  107. import org.sonar.server.permission.PermissionUpdater;
  108. import org.sonar.server.permission.UserPermissionChanger;
  109. import org.sonar.server.permission.index.PermissionIndexer;
  110. import org.sonar.server.permission.ws.PermissionsWsModule;
  111. import org.sonar.server.permission.ws.template.DefaultTemplatesResolverImpl;
  112. import org.sonar.server.platform.BackendCleanup;
  113. import org.sonar.server.platform.ClusterVerification;
  114. import org.sonar.server.platform.PersistentSettings;
  115. import org.sonar.server.platform.ServerLogging;
  116. import org.sonar.server.platform.SettingsChangeNotifier;
  117. import org.sonar.server.platform.monitoring.WebSystemInfoModule;
  118. import org.sonar.server.platform.web.WebPagesFilter;
  119. import org.sonar.server.platform.web.requestid.HttpRequestIdModule;
  120. import org.sonar.server.platform.ws.ChangeLogLevelAction;
  121. import org.sonar.server.platform.ws.ChangeLogLevelClusterService;
  122. import org.sonar.server.platform.ws.ChangeLogLevelStandaloneService;
  123. import org.sonar.server.platform.ws.DbMigrationStatusAction;
  124. import org.sonar.server.platform.ws.HealthActionModule;
  125. import org.sonar.server.platform.ws.L10nWs;
  126. import org.sonar.server.platform.ws.LogsAction;
  127. import org.sonar.server.platform.ws.MigrateDbAction;
  128. import org.sonar.server.platform.ws.PingAction;
  129. import org.sonar.server.platform.ws.RestartAction;
  130. import org.sonar.server.platform.ws.ServerWs;
  131. import org.sonar.server.platform.ws.StatusAction;
  132. import org.sonar.server.platform.ws.SystemWs;
  133. import org.sonar.server.platform.ws.UpgradesAction;
  134. import org.sonar.server.plugins.PluginDownloader;
  135. import org.sonar.server.plugins.PluginUninstaller;
  136. import org.sonar.server.plugins.ServerExtensionInstaller;
  137. import org.sonar.server.plugins.edition.EditionInstaller;
  138. import org.sonar.server.plugins.edition.EditionInstallerExecutor;
  139. import org.sonar.server.plugins.edition.EditionPluginDownloader;
  140. import org.sonar.server.plugins.edition.EditionPluginUninstaller;
  141. import org.sonar.server.plugins.privileged.PrivilegedPluginsBootstraper;
  142. import org.sonar.server.plugins.privileged.PrivilegedPluginsStopper;
  143. import org.sonar.server.plugins.ws.AvailableAction;
  144. import org.sonar.server.plugins.ws.CancelAllAction;
  145. import org.sonar.server.plugins.ws.InstallAction;
  146. import org.sonar.server.plugins.ws.InstalledAction;
  147. import org.sonar.server.plugins.ws.PendingAction;
  148. import org.sonar.server.plugins.ws.PluginUpdateAggregator;
  149. import org.sonar.server.plugins.ws.PluginWSCommons;
  150. import org.sonar.server.plugins.ws.PluginsWs;
  151. import org.sonar.server.plugins.ws.UninstallAction;
  152. import org.sonar.server.plugins.ws.UpdatesAction;
  153. import org.sonar.server.project.ws.ProjectsWsModule;
  154. import org.sonar.server.projectanalysis.ProjectAnalysisModule;
  155. import org.sonar.server.projectlink.ws.ProjectLinksModule;
  156. import org.sonar.server.projecttag.ws.ProjectTagsWsModule;
  157. import org.sonar.server.property.InternalPropertiesImpl;
  158. import org.sonar.server.property.ws.PropertiesWs;
  159. import org.sonar.server.qualitygate.QualityGateModule;
  160. import org.sonar.server.qualityprofile.BuiltInQProfileDefinitionsBridge;
  161. import org.sonar.server.qualityprofile.BuiltInQProfileRepositoryImpl;
  162. import org.sonar.server.qualityprofile.BuiltInQualityProfilesNotificationDispatcher;
  163. import org.sonar.server.qualityprofile.BuiltInQualityProfilesNotificationTemplate;
  164. import org.sonar.server.qualityprofile.QProfileBackuperImpl;
  165. import org.sonar.server.qualityprofile.QProfileComparison;
  166. import org.sonar.server.qualityprofile.QProfileCopier;
  167. import org.sonar.server.qualityprofile.QProfileExporters;
  168. import org.sonar.server.qualityprofile.QProfileFactoryImpl;
  169. import org.sonar.server.qualityprofile.QProfileResetImpl;
  170. import org.sonar.server.qualityprofile.QProfileRulesImpl;
  171. import org.sonar.server.qualityprofile.QProfileTreeImpl;
  172. import org.sonar.server.qualityprofile.RuleActivator;
  173. import org.sonar.server.qualityprofile.index.ActiveRuleIndexer;
  174. import org.sonar.server.qualityprofile.ws.ProfilesWs;
  175. import org.sonar.server.qualityprofile.ws.QProfilesWsModule;
  176. import org.sonar.server.root.ws.RootWsModule;
  177. import org.sonar.server.rule.CommonRuleDefinitionsImpl;
  178. import org.sonar.server.rule.DeprecatedRulesDefinitionLoader;
  179. import org.sonar.server.rule.RuleCreator;
  180. import org.sonar.server.rule.RuleDefinitionsLoader;
  181. import org.sonar.server.rule.RuleUpdater;
  182. import org.sonar.server.rule.WebServerRuleFinderImpl;
  183. import org.sonar.server.rule.index.RuleIndexDefinition;
  184. import org.sonar.server.rule.index.RuleIndexer;
  185. import org.sonar.server.rule.ws.ActiveRuleCompleter;
  186. import org.sonar.server.rule.ws.RepositoriesAction;
  187. import org.sonar.server.rule.ws.RuleMapper;
  188. import org.sonar.server.rule.ws.RuleQueryFactory;
  189. import org.sonar.server.rule.ws.RuleWsSupport;
  190. import org.sonar.server.rule.ws.RulesWs;
  191. import org.sonar.server.rule.ws.TagsAction;
  192. import org.sonar.server.setting.ws.SettingsWsModule;
  193. import org.sonar.server.source.HtmlSourceDecorator;
  194. import org.sonar.server.source.SourceService;
  195. import org.sonar.server.source.ws.HashAction;
  196. import org.sonar.server.source.ws.IndexAction;
  197. import org.sonar.server.source.ws.LinesAction;
  198. import org.sonar.server.source.ws.RawAction;
  199. import org.sonar.server.source.ws.ScmAction;
  200. import org.sonar.server.source.ws.SourcesWs;
  201. import org.sonar.server.startup.LogServerId;
  202. import org.sonar.server.telemetry.TelemetryClient;
  203. import org.sonar.server.telemetry.TelemetryDaemon;
  204. import org.sonar.server.telemetry.TelemetryDataLoader;
  205. import org.sonar.server.test.index.TestIndex;
  206. import org.sonar.server.test.index.TestIndexDefinition;
  207. import org.sonar.server.test.index.TestIndexer;
  208. import org.sonar.server.test.ws.CoveredFilesAction;
  209. import org.sonar.server.test.ws.TestsWs;
  210. import org.sonar.server.text.MacroInterpreter;
  211. import org.sonar.server.ui.DeprecatedViews;
  212. import org.sonar.server.ui.PageDecorations;
  213. import org.sonar.server.ui.PageRepository;
  214. import org.sonar.server.ui.ws.NavigationWsModule;
  215. import org.sonar.server.updatecenter.UpdateCenterModule;
  216. import org.sonar.server.user.DefaultUserFinder;
  217. import org.sonar.server.user.DeprecatedUserFinder;
  218. import org.sonar.server.user.NewUserNotifier;
  219. import org.sonar.server.user.SecurityRealmFactory;
  220. import org.sonar.server.user.UserSessionFactoryImpl;
  221. import org.sonar.server.user.UserUpdater;
  222. import org.sonar.server.user.index.UserIndex;
  223. import org.sonar.server.user.index.UserIndexDefinition;
  224. import org.sonar.server.user.index.UserIndexer;
  225. import org.sonar.server.user.ws.UsersWsModule;
  226. import org.sonar.server.usergroups.DefaultGroupCreatorImpl;
  227. import org.sonar.server.usergroups.DefaultGroupFinder;
  228. import org.sonar.server.usergroups.ws.UserGroupsModule;
  229. import org.sonar.server.usertoken.UserTokenModule;
  230. import org.sonar.server.util.TypeValidationModule;
  231. import org.sonar.server.view.index.ViewIndex;
  232. import org.sonar.server.view.index.ViewIndexDefinition;
  233. import org.sonar.server.view.index.ViewIndexer;
  234. import org.sonar.server.webhook.WebhookModule;
  235. import org.sonar.server.webhook.ws.WebhooksWsModule;
  236. import org.sonar.server.ws.DeprecatedPropertiesWsFilter;
  237. import org.sonar.server.ws.WebServiceEngine;
  238. import org.sonar.server.ws.WebServiceFilter;
  239. import org.sonar.server.ws.WebServiceReroutingFilter;
  240. import org.sonar.server.ws.ws.WebServicesWsModule;
  241. public class PlatformLevel4 extends PlatformLevel {
  242. private final List<Object> level4AddedComponents;
  243. public PlatformLevel4(PlatformLevel parent, List<Object> level4AddedComponents) {
  244. super("level4", parent);
  245. this.level4AddedComponents = level4AddedComponents;
  246. }
  247. @Override
  248. protected void configureLevel() {
  249. addIfStartupLeader(
  250. IndexCreator.class,
  251. MetadataIndexDefinition.class,
  252. MetadataIndex.class,
  253. EsDbCompatibilityImpl.class);
  254. addIfCluster(
  255. NodeHealthModule.class,
  256. ChangeLogLevelClusterService.class);
  257. addIfStandalone(
  258. ChangeLogLevelStandaloneService.class);
  259. add(
  260. ClusterVerification.class,
  261. LogServerId.class,
  262. LogOAuthWarning.class,
  263. PluginDownloader.class,
  264. PluginUninstaller.class,
  265. DeprecatedViews.class,
  266. PageRepository.class,
  267. ResourceTypes.class,
  268. DefaultResourceTypes.get(),
  269. SettingsChangeNotifier.class,
  270. PageDecorations.class,
  271. Periods.class,
  272. ServerWs.class,
  273. BackendCleanup.class,
  274. IndexDefinitions.class,
  275. WebPagesFilter.class,
  276. // edition
  277. EditionInstaller.class,
  278. EditionPluginDownloader.class,
  279. EditionInstallerExecutor.class,
  280. EditionPluginUninstaller.class,
  281. // batch
  282. BatchWsModule.class,
  283. // update center
  284. UpdateCenterModule.class,
  285. // organizations
  286. OrganizationValidationImpl.class,
  287. OrganizationCreationImpl.class,
  288. OrganizationsWsModule.class,
  289. BillingValidationsProxyImpl.class,
  290. // quality profile
  291. BuiltInQProfileDefinitionsBridge.class,
  292. BuiltInQProfileRepositoryImpl.class,
  293. ActiveRuleIndexer.class,
  294. XMLProfileParser.class,
  295. XMLProfileSerializer.class,
  296. AnnotationProfileParser.class,
  297. QProfileComparison.class,
  298. ProfilesWs.class,
  299. QProfileTreeImpl.class,
  300. QProfileRulesImpl.class,
  301. RuleActivator.class,
  302. QProfileExporters.class,
  303. QProfileFactoryImpl.class,
  304. QProfileCopier.class,
  305. QProfileBackuperImpl.class,
  306. QProfileResetImpl.class,
  307. QProfilesWsModule.class,
  308. // rule
  309. RuleIndexDefinition.class,
  310. RuleIndexer.class,
  311. AnnotationRuleParser.class,
  312. XMLRuleParser.class,
  313. WebServerRuleFinderImpl.class,
  314. DeprecatedRulesDefinitionLoader.class,
  315. RuleDefinitionsLoader.class,
  316. CommonRuleDefinitionsImpl.class,
  317. RulesDefinitionXmlLoader.class,
  318. RuleUpdater.class,
  319. RuleCreator.class,
  320. org.sonar.server.rule.ws.UpdateAction.class,
  321. RulesWs.class,
  322. RuleWsSupport.class,
  323. org.sonar.server.rule.ws.SearchAction.class,
  324. org.sonar.server.rule.ws.ShowAction.class,
  325. org.sonar.server.rule.ws.CreateAction.class,
  326. org.sonar.server.rule.ws.DeleteAction.class,
  327. org.sonar.server.rule.ws.ListAction.class,
  328. TagsAction.class,
  329. RuleMapper.class,
  330. ActiveRuleCompleter.class,
  331. RepositoriesAction.class,
  332. RuleQueryFactory.class,
  333. org.sonar.server.rule.ws.AppAction.class,
  334. // languages
  335. Languages.class,
  336. LanguageWs.class,
  337. org.sonar.server.language.ws.ListAction.class,
  338. // measure
  339. MetricsWsModule.class,
  340. MeasuresWsModule.class,
  341. CustomMeasuresWsModule.class,
  342. CoreCustomMetrics.class,
  343. DefaultMetricFinder.class,
  344. TimeMachineWs.class,
  345. QualityGateModule.class,
  346. // web services
  347. WebServiceEngine.class,
  348. WebServicesWsModule.class,
  349. WebServiceFilter.class,
  350. DeprecatedPropertiesWsFilter.class,
  351. WebServiceReroutingFilter.class,
  352. // localization
  353. L10nWs.class,
  354. org.sonar.server.platform.ws.IndexAction.class,
  355. // authentication
  356. AuthenticationModule.class,
  357. // users
  358. UserSessionFactoryImpl.class,
  359. SecurityRealmFactory.class,
  360. DeprecatedUserFinder.class,
  361. NewUserNotifier.class,
  362. DefaultUserFinder.class,
  363. UserIndexDefinition.class,
  364. UserIndexer.class,
  365. UserIndex.class,
  366. UserUpdater.class,
  367. UsersWsModule.class,
  368. UserTokenModule.class,
  369. // groups
  370. UserGroupsModule.class,
  371. DefaultGroupCreatorImpl.class,
  372. DefaultGroupFinder.class,
  373. // permissions
  374. DefaultTemplatesResolverImpl.class,
  375. PermissionsWsModule.class,
  376. PermissionTemplateService.class,
  377. PermissionUpdater.class,
  378. UserPermissionChanger.class,
  379. GroupPermissionChanger.class,
  380. // components
  381. BranchWsModule.class,
  382. PullRequestWsModule.class,
  383. ProjectsWsModule.class,
  384. ProjectsEsModule.class,
  385. ProjectTagsWsModule.class,
  386. ComponentsWsModule.class,
  387. ComponentService.class,
  388. ComponentUpdater.class,
  389. ComponentFinder.class,
  390. NewAlerts.class,
  391. NewAlerts.newMetadata(),
  392. ComponentCleanerService.class,
  393. ComponentIndexDefinition.class,
  394. ComponentIndex.class,
  395. ComponentIndexer.class,
  396. LiveMeasureModule.class,
  397. FavoriteModule.class,
  398. // views
  399. ViewIndexDefinition.class,
  400. ViewIndexer.class,
  401. ViewIndex.class,
  402. // issues
  403. IssueIndexDefinition.class,
  404. IssueIndexer.class,
  405. IssueIteratorFactory.class,
  406. PermissionIndexer.class,
  407. IssueWsModule.class,
  408. NewIssuesEmailTemplate.class,
  409. MyNewIssuesEmailTemplate.class,
  410. IssueChangesEmailTemplate.class,
  411. ChangesOnMyIssueNotificationDispatcher.class,
  412. ChangesOnMyIssueNotificationDispatcher.newMetadata(),
  413. NewIssuesNotificationDispatcher.class,
  414. NewIssuesNotificationDispatcher.newMetadata(),
  415. MyNewIssuesNotificationDispatcher.class,
  416. MyNewIssuesNotificationDispatcher.newMetadata(),
  417. DoNotFixNotificationDispatcher.class,
  418. DoNotFixNotificationDispatcher.newMetadata(),
  419. NewIssuesNotificationFactory.class,
  420. // issues actions
  421. AssignAction.class,
  422. SetTypeAction.class,
  423. SetSeverityAction.class,
  424. CommentAction.class,
  425. TransitionAction.class,
  426. AddTagsAction.class,
  427. RemoveTagsAction.class,
  428. IssueChangePostProcessorImpl.class,
  429. // technical debt
  430. DebtModelPluginRepository.class,
  431. DebtModelXMLExporter.class,
  432. DebtRulesXMLImporter.class,
  433. // source
  434. HtmlSourceDecorator.class,
  435. SourceService.class,
  436. SourcesWs.class,
  437. org.sonar.server.source.ws.ShowAction.class,
  438. LinesAction.class,
  439. HashAction.class,
  440. RawAction.class,
  441. IndexAction.class,
  442. ScmAction.class,
  443. // Duplications
  444. DuplicationsParser.class,
  445. DuplicationsWs.class,
  446. ShowResponseBuilder.class,
  447. org.sonar.server.duplication.ws.ShowAction.class,
  448. // text
  449. MacroInterpreter.class,
  450. // Notifications
  451. // Those class are required in order to be able to send emails during startup
  452. // Without having two NotificationModule (one in StartupLevel and one in Level4)
  453. BuiltInQualityProfilesNotificationTemplate.class,
  454. BuiltInQualityProfilesNotificationDispatcher.class,
  455. NotificationModule.class,
  456. NotificationWsModule.class,
  457. EmailsWsModule.class,
  458. // Tests
  459. TestsWs.class,
  460. CoveredFilesAction.class,
  461. org.sonar.server.test.ws.ListAction.class,
  462. TestIndexDefinition.class,
  463. TestIndex.class,
  464. TestIndexer.class,
  465. // Settings
  466. PersistentSettings.class,
  467. PropertiesWs.class,
  468. org.sonar.server.property.ws.IndexAction.class,
  469. SettingsWsModule.class,
  470. TypeValidationModule.class,
  471. // Project Links
  472. ProjectLinksModule.class,
  473. // Project Analyses
  474. ProjectAnalysisModule.class,
  475. // System
  476. ServerLogging.class,
  477. RestartAction.class,
  478. PingAction.class,
  479. UpgradesAction.class,
  480. StatusAction.class,
  481. MigrateDbAction.class,
  482. LogsAction.class,
  483. ChangeLogLevelAction.class,
  484. DbMigrationStatusAction.class,
  485. HealthActionModule.class,
  486. SystemWs.class,
  487. // Plugins WS
  488. PluginWSCommons.class,
  489. PluginUpdateAggregator.class,
  490. InstalledAction.class,
  491. AvailableAction.class,
  492. UpdatesAction.class,
  493. PendingAction.class,
  494. InstallAction.class,
  495. org.sonar.server.plugins.ws.UpdateAction.class,
  496. UninstallAction.class,
  497. CancelAllAction.class,
  498. PluginsWs.class,
  499. // Branch
  500. BranchFeatureProxyImpl.class,
  501. // Project badges
  502. ProjectBadgesWsModule.class,
  503. // privileged plugins
  504. PrivilegedPluginsBootstraper.class,
  505. PrivilegedPluginsStopper.class,
  506. // Compute engine (must be after Views and Developer Cockpit)
  507. ReportAnalysisFailureNotificationModule.class,
  508. CeModule.class,
  509. CeWsModule.class,
  510. // SonarSource editions
  511. EditionsWsModule.class,
  512. InternalPropertiesImpl.class,
  513. ProjectConfigurationFactory.class,
  514. // UI
  515. NavigationWsModule.class,
  516. // root
  517. RootWsModule.class,
  518. // webhooks
  519. WebhookModule.class,
  520. WebhooksWsModule.class,
  521. // Http Request ID
  522. HttpRequestIdModule.class,
  523. RecoveryIndexer.class,
  524. ProjectIndexersImpl.class);
  525. // telemetry
  526. add(TelemetryDataLoader.class);
  527. addIfStartupLeader(TelemetryDaemon.class, TelemetryClient.class);
  528. // edition
  529. addIfStartupLeader(FinalizeEditionChange.class);
  530. // system info
  531. addIfCluster(WebSystemInfoModule.forClusterMode()).otherwiseAdd(WebSystemInfoModule.forStandaloneMode());
  532. addAll(level4AddedComponents);
  533. }
  534. @Override
  535. public PlatformLevel start() {
  536. ServerExtensionInstaller extensionInstaller = get(ServerExtensionInstaller.class);
  537. extensionInstaller.installExtensions(getContainer());
  538. super.start();
  539. return this;
  540. }
  541. }