This indexer will also be used to feed the authorization type of projectmeasures indextags/6.2-RC1
@@ -75,7 +75,6 @@ import org.sonar.server.debt.DebtModelPluginRepository; | |||
import org.sonar.server.debt.DebtRulesXMLImporter; | |||
import org.sonar.server.event.NewAlerts; | |||
import org.sonar.server.issue.IssueUpdater; | |||
import org.sonar.server.issue.index.IssueAuthorizationIndexer; | |||
import org.sonar.server.issue.index.IssueIndex; | |||
import org.sonar.server.issue.index.IssueIndexer; | |||
import org.sonar.server.issue.notification.ChangesOnMyIssueNotificationDispatcher; | |||
@@ -100,6 +99,7 @@ import org.sonar.server.permission.GroupPermissionChanger; | |||
import org.sonar.server.permission.PermissionService; | |||
import org.sonar.server.permission.PermissionUpdater; | |||
import org.sonar.server.permission.UserPermissionChanger; | |||
import org.sonar.server.permission.index.AuthorizationIndexer; | |||
import org.sonar.server.platform.DatabaseServerCompatibility; | |||
import org.sonar.server.platform.DefaultServerUpgradeStatus; | |||
import org.sonar.server.platform.ServerFileSystemImpl; | |||
@@ -340,7 +340,7 @@ public class ComputeEngineContainerImpl implements ComputeEngineContainer { | |||
// issues | |||
IssueIndexer.class, | |||
IssueAuthorizationIndexer.class, | |||
AuthorizationIndexer.class, | |||
IssueUpdater.class, // used in Web Services and CE's DebtCalculator | |||
FunctionExecutor.class, // used by IssueWorkflow | |||
IssueWorkflow.class, // used in Web Services and CE's DebtCalculator |
@@ -29,8 +29,8 @@ import org.sonar.db.DbClient; | |||
import org.sonar.db.DbSession; | |||
import org.sonar.db.MyBatis; | |||
import org.sonar.db.component.ComponentDto; | |||
import org.sonar.server.issue.index.IssueAuthorizationIndexer; | |||
import org.sonar.server.issue.index.IssueIndexer; | |||
import org.sonar.server.permission.index.AuthorizationIndexer; | |||
import org.sonar.server.component.es.ProjectMeasuresIndexer; | |||
import org.sonar.server.test.index.TestIndexer; | |||
@@ -39,14 +39,14 @@ import org.sonar.server.test.index.TestIndexer; | |||
public class ComponentCleanerService { | |||
private final DbClient dbClient; | |||
private final IssueAuthorizationIndexer issueAuthorizationIndexer; | |||
private final AuthorizationIndexer issueAuthorizationIndexer; | |||
private final IssueIndexer issueIndexer; | |||
private final TestIndexer testIndexer; | |||
private final ProjectMeasuresIndexer projectMeasuresIndexer; | |||
private final ResourceTypes resourceTypes; | |||
private final ComponentFinder componentFinder; | |||
public ComponentCleanerService(DbClient dbClient, IssueAuthorizationIndexer issueAuthorizationIndexer, IssueIndexer issueIndexer, | |||
public ComponentCleanerService(DbClient dbClient, AuthorizationIndexer issueAuthorizationIndexer, IssueIndexer issueIndexer, | |||
TestIndexer testIndexer, ProjectMeasuresIndexer projectMeasuresIndexer, ResourceTypes resourceTypes, ComponentFinder componentFinder) { | |||
this.dbClient = dbClient; | |||
this.issueAuthorizationIndexer = issueAuthorizationIndexer; |
@@ -29,7 +29,7 @@ import org.sonar.server.computation.task.projectanalysis.component.DepthTraversa | |||
import org.sonar.server.computation.task.projectanalysis.component.TreeRootHolder; | |||
import org.sonar.server.computation.task.projectanalysis.component.TypeAwareVisitorAdapter; | |||
import org.sonar.server.computation.task.step.ComputationStep; | |||
import org.sonar.server.issue.index.IssueAuthorizationIndexer; | |||
import org.sonar.server.permission.index.AuthorizationIndexer; | |||
import static org.sonar.server.computation.task.projectanalysis.component.Component.Type.PROJECT; | |||
import static org.sonar.server.computation.task.projectanalysis.component.Component.Type.VIEW; | |||
@@ -42,12 +42,12 @@ public class ApplyPermissionsStep implements ComputationStep { | |||
private final DbClient dbClient; | |||
private final DbIdsRepository dbIdsRepository; | |||
private final IssueAuthorizationIndexer indexer; | |||
private final AuthorizationIndexer indexer; | |||
private final PermissionRepository permissionRepository; | |||
private final TreeRootHolder treeRootHolder; | |||
public ApplyPermissionsStep(DbClient dbClient, DbIdsRepository dbIdsRepository, IssueAuthorizationIndexer indexer, PermissionRepository permissionRepository, | |||
TreeRootHolder treeRootHolder) { | |||
public ApplyPermissionsStep(DbClient dbClient, DbIdsRepository dbIdsRepository, AuthorizationIndexer indexer, PermissionRepository permissionRepository, | |||
TreeRootHolder treeRootHolder) { | |||
this.dbClient = dbClient; | |||
this.dbIdsRepository = dbIdsRepository; | |||
this.indexer = indexer; |
@@ -22,8 +22,8 @@ package org.sonar.server.es; | |||
import org.sonar.api.config.Settings; | |||
import org.sonar.api.utils.log.Logger; | |||
import org.sonar.api.utils.log.Loggers; | |||
import org.sonar.server.issue.index.IssueAuthorizationIndexer; | |||
import org.sonar.server.issue.index.IssueIndexer; | |||
import org.sonar.server.permission.index.AuthorizationIndexer; | |||
import org.sonar.server.component.es.ProjectMeasuresIndexer; | |||
import org.sonar.server.test.index.TestIndexer; | |||
import org.sonar.server.user.index.UserIndexer; | |||
@@ -34,7 +34,7 @@ public class IndexerStartupTask { | |||
private static final Logger LOG = Loggers.get(IndexerStartupTask.class); | |||
private final TestIndexer testIndexer; | |||
private final IssueAuthorizationIndexer issueAuthorizationIndexer; | |||
private final AuthorizationIndexer issueAuthorizationIndexer; | |||
private final IssueIndexer issueIndexer; | |||
private final UserIndexer userIndexer; | |||
private final ViewIndexer viewIndexer; | |||
@@ -43,12 +43,12 @@ public class IndexerStartupTask { | |||
/** | |||
* Limitation - {@link org.sonar.server.es.BaseIndexer} are not injected through an array or a collection | |||
* because we need {@link org.sonar.server.issue.index.IssueAuthorizationIndexer} to be executed before | |||
* because we need {@link AuthorizationIndexer} to be executed before | |||
* {@link org.sonar.server.issue.index.IssueIndexer} | |||
*/ | |||
public IndexerStartupTask(TestIndexer testIndexer, IssueAuthorizationIndexer issueAuthorizationIndexer, IssueIndexer issueIndexer, | |||
UserIndexer userIndexer, ViewIndexer viewIndexer, ProjectMeasuresIndexer projectMeasuresIndexer, | |||
Settings settings) { | |||
public IndexerStartupTask(TestIndexer testIndexer, AuthorizationIndexer issueAuthorizationIndexer, IssueIndexer issueIndexer, | |||
UserIndexer userIndexer, ViewIndexer viewIndexer, ProjectMeasuresIndexer projectMeasuresIndexer, | |||
Settings settings) { | |||
this.testIndexer = testIndexer; | |||
this.issueAuthorizationIndexer = issueAuthorizationIndexer; | |||
this.issueIndexer = issueIndexer; |
@@ -33,7 +33,7 @@ import org.sonar.db.component.ResourceDto; | |||
import org.sonar.db.permission.PermissionRepository; | |||
import org.sonar.db.permission.template.PermissionTemplateDto; | |||
import org.sonar.server.component.ComponentFinder; | |||
import org.sonar.server.issue.index.IssueAuthorizationIndexer; | |||
import org.sonar.server.permission.index.AuthorizationIndexer; | |||
import org.sonar.server.user.UserSession; | |||
import static org.sonar.server.permission.PermissionPrivilegeChecker.checkProjectAdminUserByComponentKey; | |||
@@ -43,12 +43,12 @@ public class PermissionService { | |||
private final DbClient dbClient; | |||
private final PermissionRepository permissionRepository; | |||
private final IssueAuthorizationIndexer issueAuthorizationIndexer; | |||
private final AuthorizationIndexer issueAuthorizationIndexer; | |||
private final UserSession userSession; | |||
private final ComponentFinder componentFinder; | |||
public PermissionService(DbClient dbClient, PermissionRepository permissionRepository, IssueAuthorizationIndexer issueAuthorizationIndexer, UserSession userSession, | |||
ComponentFinder componentFinder) { | |||
public PermissionService(DbClient dbClient, PermissionRepository permissionRepository, AuthorizationIndexer issueAuthorizationIndexer, UserSession userSession, | |||
ComponentFinder componentFinder) { | |||
this.dbClient = dbClient; | |||
this.permissionRepository = permissionRepository; | |||
this.issueAuthorizationIndexer = issueAuthorizationIndexer; |
@@ -25,7 +25,7 @@ import java.util.Optional; | |||
import java.util.Set; | |||
import org.sonar.db.DbClient; | |||
import org.sonar.db.DbSession; | |||
import org.sonar.server.issue.index.IssueAuthorizationIndexer; | |||
import org.sonar.server.permission.index.AuthorizationIndexer; | |||
/** | |||
* Add or remove global/project permissions to a group. This class | |||
@@ -35,11 +35,11 @@ import org.sonar.server.issue.index.IssueAuthorizationIndexer; | |||
public class PermissionUpdater { | |||
private final DbClient dbClient; | |||
private final IssueAuthorizationIndexer issueAuthorizationIndexer; | |||
private final AuthorizationIndexer issueAuthorizationIndexer; | |||
private final UserPermissionChanger userPermissionChanger; | |||
private final GroupPermissionChanger groupPermissionChanger; | |||
public PermissionUpdater(DbClient dbClient, IssueAuthorizationIndexer issueAuthorizationIndexer, | |||
public PermissionUpdater(DbClient dbClient, AuthorizationIndexer issueAuthorizationIndexer, | |||
UserPermissionChanger userPermissionChanger, GroupPermissionChanger groupPermissionChanger) { | |||
this.dbClient = dbClient; | |||
this.issueAuthorizationIndexer = issueAuthorizationIndexer; |
@@ -17,7 +17,7 @@ | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonar.server.issue.index; | |||
package org.sonar.server.permission.index; | |||
import com.google.common.collect.Lists; | |||
import com.google.common.collect.Maps; | |||
@@ -35,7 +35,7 @@ import org.sonar.db.DbSession; | |||
/** | |||
* No streaming because of union of joins -> no need to use ResultSetIterator | |||
*/ | |||
public class IssueAuthorizationDao { | |||
public class AuthorizationDao { | |||
public static final class Dto { | |||
private final String projectUuid; | |||
@@ -162,7 +162,7 @@ public class IssueAuthorizationDao { | |||
DbUtils.closeQuietly(stmt); | |||
} | |||
} catch (SQLException e) { | |||
throw new IllegalStateException("Fail to select issue authorizations after date: " + afterDate, e); | |||
throw new IllegalStateException("Fail to select authorizations after date: " + afterDate, e); | |||
} | |||
} | |||
@@ -17,21 +17,21 @@ | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonar.server.issue.index; | |||
package org.sonar.server.permission.index; | |||
import com.google.common.annotations.VisibleForTesting; | |||
import com.google.common.collect.ImmutableMap; | |||
import java.util.Collection; | |||
import java.util.Date; | |||
import java.util.Map; | |||
import org.elasticsearch.action.ActionRequest; | |||
import org.elasticsearch.action.update.UpdateRequest; | |||
import org.sonar.db.DbSession; | |||
import org.sonar.db.DbClient; | |||
import org.sonar.db.DbSession; | |||
import org.sonar.server.es.BaseIndexer; | |||
import org.sonar.server.es.BulkIndexer; | |||
import org.sonar.server.es.EsClient; | |||
import java.util.Collection; | |||
import java.util.Date; | |||
import java.util.Map; | |||
import org.sonar.server.issue.index.IssueIndexDefinition; | |||
/** | |||
* Manages the synchronization of index issues/authorization with authorization settings defined in database : | |||
@@ -40,11 +40,11 @@ import java.util.Map; | |||
* <li>delete project orphans from index</li> | |||
* </ul> | |||
*/ | |||
public class IssueAuthorizationIndexer extends BaseIndexer { | |||
public class AuthorizationIndexer extends BaseIndexer { | |||
private final DbClient dbClient; | |||
public IssueAuthorizationIndexer(DbClient dbClient, EsClient esClient) { | |||
public AuthorizationIndexer(DbClient dbClient, EsClient esClient) { | |||
super(esClient, 0L, IssueIndexDefinition.INDEX, IssueIndexDefinition.TYPE_AUTHORIZATION, IssueIndexDefinition.FIELD_ISSUE_TECHNICAL_UPDATED_AT); | |||
this.dbClient = dbClient; | |||
} | |||
@@ -56,23 +56,23 @@ public class IssueAuthorizationIndexer extends BaseIndexer { | |||
// will impact the type "issue" which is much bigger than issueAuthorization | |||
BulkIndexer bulk = new BulkIndexer(esClient, IssueIndexDefinition.INDEX); | |||
IssueAuthorizationDao dao = new IssueAuthorizationDao(); | |||
Collection<IssueAuthorizationDao.Dto> authorizations = dao.selectAfterDate(dbClient, dbSession, lastUpdatedAt); | |||
AuthorizationDao dao = new AuthorizationDao(); | |||
Collection<AuthorizationDao.Dto> authorizations = dao.selectAfterDate(dbClient, dbSession, lastUpdatedAt); | |||
return doIndex(bulk, authorizations); | |||
} | |||
} | |||
@VisibleForTesting | |||
public void index(Collection<IssueAuthorizationDao.Dto> authorizations) { | |||
public void index(Collection<AuthorizationDao.Dto> authorizations) { | |||
final BulkIndexer bulk = new BulkIndexer(esClient, IssueIndexDefinition.INDEX); | |||
doIndex(bulk, authorizations); | |||
} | |||
private long doIndex(BulkIndexer bulk, Collection<IssueAuthorizationDao.Dto> authorizations) { | |||
private long doIndex(BulkIndexer bulk, Collection<AuthorizationDao.Dto> authorizations) { | |||
long maxDate = 0L; | |||
bulk.start(); | |||
for (IssueAuthorizationDao.Dto authorization : authorizations) { | |||
bulk.add(newUpdateRequest(authorization)); | |||
for (AuthorizationDao.Dto authorization : authorizations) { | |||
bulk.add(newIssueUpdateRequest(authorization)); | |||
maxDate = Math.max(maxDate, authorization.getUpdatedAt()); | |||
} | |||
bulk.stop(); | |||
@@ -87,7 +87,7 @@ public class IssueAuthorizationIndexer extends BaseIndexer { | |||
.get(); | |||
} | |||
private static ActionRequest newUpdateRequest(IssueAuthorizationDao.Dto dto) { | |||
private static ActionRequest newIssueUpdateRequest(AuthorizationDao.Dto dto) { | |||
Map<String, Object> doc = ImmutableMap.of( | |||
IssueIndexDefinition.FIELD_AUTHORIZATION_PROJECT_UUID, dto.getProjectUuid(), | |||
IssueIndexDefinition.FIELD_AUTHORIZATION_GROUPS, dto.getGroups(), |
@@ -102,7 +102,6 @@ import org.sonar.server.issue.SetSeverityAction; | |||
import org.sonar.server.issue.SetTypeAction; | |||
import org.sonar.server.issue.TransitionAction; | |||
import org.sonar.server.issue.filter.IssueFilterWsModule; | |||
import org.sonar.server.issue.index.IssueAuthorizationIndexer; | |||
import org.sonar.server.issue.index.IssueIndexDefinition; | |||
import org.sonar.server.issue.index.IssueIndexer; | |||
import org.sonar.server.issue.notification.ChangesOnMyIssueNotificationDispatcher; | |||
@@ -140,6 +139,7 @@ import org.sonar.server.permission.GroupPermissionChanger; | |||
import org.sonar.server.permission.PermissionService; | |||
import org.sonar.server.permission.PermissionUpdater; | |||
import org.sonar.server.permission.UserPermissionChanger; | |||
import org.sonar.server.permission.index.AuthorizationIndexer; | |||
import org.sonar.server.permission.ws.PermissionsWsModule; | |||
import org.sonar.server.platform.BackendCleanup; | |||
import org.sonar.server.platform.PersistentSettings; | |||
@@ -457,7 +457,7 @@ public class PlatformLevel4 extends PlatformLevel { | |||
// issues | |||
IssueIndexDefinition.class, | |||
IssueIndexer.class, | |||
IssueAuthorizationIndexer.class, | |||
AuthorizationIndexer.class, | |||
ServerIssueStorage.class, | |||
IssueUpdater.class, | |||
FunctionExecutor.class, |
@@ -39,12 +39,12 @@ import org.sonar.server.component.ComponentFinder; | |||
import org.sonar.server.es.EsTester; | |||
import org.sonar.server.exceptions.ForbiddenException; | |||
import org.sonar.server.issue.IssueTesting; | |||
import org.sonar.server.issue.index.IssueAuthorizationDao; | |||
import org.sonar.server.issue.index.IssueAuthorizationIndexer; | |||
import org.sonar.server.issue.index.IssueDoc; | |||
import org.sonar.server.issue.index.IssueIndex; | |||
import org.sonar.server.issue.index.IssueIndexDefinition; | |||
import org.sonar.server.issue.index.IssueIndexer; | |||
import org.sonar.server.permission.index.AuthorizationDao; | |||
import org.sonar.server.permission.index.AuthorizationIndexer; | |||
import org.sonar.server.platform.ServerFileSystem; | |||
import org.sonar.server.tester.UserSessionRule; | |||
import org.sonar.server.ws.WsTester; | |||
@@ -78,7 +78,7 @@ public class IssuesActionTest { | |||
private IssueIndex issueIndex; | |||
private IssueIndexer issueIndexer; | |||
private IssueAuthorizationIndexer issueAuthorizationIndexer; | |||
private AuthorizationIndexer issueAuthorizationIndexer; | |||
private ServerFileSystem fs = mock(ServerFileSystem.class); | |||
WsTester tester; | |||
@@ -89,7 +89,7 @@ public class IssuesActionTest { | |||
public void before() { | |||
issueIndex = new IssueIndex(es.client(), System2.INSTANCE, userSessionRule); | |||
issueIndexer = new IssueIndexer(null, es.client()); | |||
issueAuthorizationIndexer = new IssueAuthorizationIndexer(null, es.client()); | |||
issueAuthorizationIndexer = new AuthorizationIndexer(null, es.client()); | |||
issuesAction = new IssuesAction(db.getDbClient(), issueIndex, userSessionRule, new ComponentFinder(db.getDbClient())); | |||
tester = new WsTester(new BatchWs(new BatchIndex(fs), issuesAction)); | |||
@@ -329,7 +329,7 @@ public class IssuesActionTest { | |||
} | |||
private void addIssueAuthorization(String projectUuid, @Nullable String group, @Nullable String user) { | |||
issueAuthorizationIndexer.index(newArrayList(new IssueAuthorizationDao.Dto(projectUuid, 1).addGroup(group).addUser(user))); | |||
issueAuthorizationIndexer.index(newArrayList(new AuthorizationDao.Dto(projectUuid, 1).addGroup(group).addUser(user))); | |||
} | |||
private void addBrowsePermissionOnComponent(String componentKey) { |
@@ -42,9 +42,9 @@ import org.sonar.server.es.EsTester; | |||
import org.sonar.server.exceptions.NotFoundException; | |||
import org.sonar.server.issue.IssueTesting; | |||
import org.sonar.server.issue.index.IssueAuthorizationDoc; | |||
import org.sonar.server.issue.index.IssueAuthorizationIndexer; | |||
import org.sonar.server.issue.index.IssueIndexDefinition; | |||
import org.sonar.server.issue.index.IssueIndexer; | |||
import org.sonar.server.permission.index.AuthorizationIndexer; | |||
import org.sonar.server.component.es.ProjectMeasuresIndexDefinition; | |||
import org.sonar.server.component.es.ProjectMeasuresIndexer; | |||
import org.sonar.server.test.index.TestDoc; | |||
@@ -78,7 +78,7 @@ public class ComponentCleanerServiceTest { | |||
DbClient dbClient = db.getDbClient(); | |||
DbSession dbSession = db.getSession(); | |||
IssueAuthorizationIndexer issueAuthorizationIndexer = new IssueAuthorizationIndexer(dbClient, es.client()); | |||
AuthorizationIndexer issueAuthorizationIndexer = new AuthorizationIndexer(dbClient, es.client()); | |||
IssueIndexer issueIndexer = new IssueIndexer(dbClient, es.client()); | |||
TestIndexer testIndexer = new TestIndexer(dbClient, es.client()); | |||
ProjectMeasuresIndexer projectMeasuresIndexer = new ProjectMeasuresIndexer(dbClient, es.client()); |
@@ -45,8 +45,8 @@ import org.sonar.server.computation.task.projectanalysis.component.TreeRootHolde | |||
import org.sonar.server.computation.task.projectanalysis.component.ViewsComponent; | |||
import org.sonar.server.computation.task.step.ComputationStep; | |||
import org.sonar.server.es.EsTester; | |||
import org.sonar.server.issue.index.IssueAuthorizationIndexer; | |||
import org.sonar.server.issue.index.IssueIndexDefinition; | |||
import org.sonar.server.permission.index.AuthorizationIndexer; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
import static org.sonar.db.component.ComponentTesting.newView; | |||
@@ -76,14 +76,14 @@ public class ApplyPermissionsStepTest extends BaseStepTest { | |||
private DbSession dbSession; | |||
private DbClient dbClient = dbTester.getDbClient(); | |||
private Settings settings = new MapSettings(); | |||
private IssueAuthorizationIndexer issueAuthorizationIndexer; | |||
private AuthorizationIndexer issueAuthorizationIndexer; | |||
private ApplyPermissionsStep step; | |||
@Before | |||
public void setUp() { | |||
dbSession = dbClient.openSession(false); | |||
issueAuthorizationIndexer = new IssueAuthorizationIndexer(dbClient, esTester.client()); | |||
issueAuthorizationIndexer = new AuthorizationIndexer(dbClient, esTester.client()); | |||
step = new ApplyPermissionsStep(dbClient, dbIdsRepository, issueAuthorizationIndexer, new PermissionRepository(dbClient, settings), treeRootHolder); | |||
} |
@@ -41,6 +41,8 @@ import org.sonar.server.es.SearchResult; | |||
import org.sonar.server.issue.IssueQuery; | |||
import org.sonar.server.issue.IssueQuery.Builder; | |||
import org.sonar.server.issue.IssueTesting; | |||
import org.sonar.server.permission.index.AuthorizationDao; | |||
import org.sonar.server.permission.index.AuthorizationIndexer; | |||
import org.sonar.server.tester.UserSessionRule; | |||
import org.sonar.server.view.index.ViewIndexDefinition; | |||
import org.sonar.server.view.index.ViewIndexer; | |||
@@ -64,13 +66,13 @@ public class IssueIndexDebtTest { | |||
IssueIndex index; | |||
IssueIndexer issueIndexer; | |||
IssueAuthorizationIndexer issueAuthorizationIndexer; | |||
AuthorizationIndexer issueAuthorizationIndexer; | |||
ViewIndexer viewIndexer; | |||
@Before | |||
public void setUp() { | |||
issueIndexer = new IssueIndexer(null, tester.client()); | |||
issueAuthorizationIndexer = new IssueAuthorizationIndexer(null, tester.client()); | |||
issueAuthorizationIndexer = new AuthorizationIndexer(null, tester.client()); | |||
viewIndexer = new ViewIndexer(null, tester.client()); | |||
System2 system = mock(System2.class); | |||
when(system.getDefaultTimeZone()).thenReturn(TimeZone.getTimeZone("+01:00")); | |||
@@ -285,7 +287,7 @@ public class IssueIndexDebtTest { | |||
} | |||
private void addIssueAuthorization(String projectUuid, @Nullable String group, @Nullable String user) { | |||
issueAuthorizationIndexer.index(newArrayList(new IssueAuthorizationDao.Dto(projectUuid, 1).addGroup(group).addUser(user))); | |||
issueAuthorizationIndexer.index(newArrayList(new AuthorizationDao.Dto(projectUuid, 1).addGroup(group).addUser(user))); | |||
} | |||
private Builder newQueryBuilder() { |
@@ -50,6 +50,8 @@ import org.sonar.server.es.SearchResult; | |||
import org.sonar.server.exceptions.NotFoundException; | |||
import org.sonar.server.issue.IssueQuery; | |||
import org.sonar.server.issue.IssueTesting; | |||
import org.sonar.server.permission.index.AuthorizationDao; | |||
import org.sonar.server.permission.index.AuthorizationIndexer; | |||
import org.sonar.server.tester.UserSessionRule; | |||
import org.sonar.server.view.index.ViewDoc; | |||
import org.sonar.server.view.index.ViewIndexDefinition; | |||
@@ -77,13 +79,13 @@ public class IssueIndexTest { | |||
IssueIndex underTest; | |||
IssueIndexer issueIndexer; | |||
IssueAuthorizationIndexer issueAuthorizationIndexer; | |||
AuthorizationIndexer issueAuthorizationIndexer; | |||
ViewIndexer viewIndexer; | |||
@Before | |||
public void setUp() { | |||
issueIndexer = new IssueIndexer(null, tester.client()); | |||
issueAuthorizationIndexer = new IssueAuthorizationIndexer(null, tester.client()); | |||
issueAuthorizationIndexer = new AuthorizationIndexer(null, tester.client()); | |||
viewIndexer = new ViewIndexer(null, tester.client()); | |||
System2 system = mock(System2.class); | |||
when(system.getDefaultTimeZone()).thenReturn(TimeZone.getTimeZone("GMT-1:00")); | |||
@@ -1288,7 +1290,7 @@ public class IssueIndexTest { | |||
} | |||
private void addIssueAuthorization(String projectUuid, @Nullable String group, @Nullable String user) { | |||
issueAuthorizationIndexer.index(newArrayList(new IssueAuthorizationDao.Dto(projectUuid, 1).addGroup(group).addUser(user))); | |||
issueAuthorizationIndexer.index(newArrayList(new AuthorizationDao.Dto(projectUuid, 1).addGroup(group).addUser(user))); | |||
} | |||
private void indexView(String viewUuid, List<String> projects) { |
@@ -17,7 +17,7 @@ | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonar.server.issue.index; | |||
package org.sonar.server.permission.index; | |||
import com.google.common.base.Predicate; | |||
import com.google.common.collect.Iterables; | |||
@@ -29,26 +29,26 @@ import org.sonar.db.DbTester; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
public class IssueAuthorizationDaoTest { | |||
public class AuthorizationDaoTest { | |||
@Rule | |||
public DbTester dbTester = DbTester.create(System2.INSTANCE); | |||
private IssueAuthorizationDao dao = new IssueAuthorizationDao(); | |||
private AuthorizationDao dao = new AuthorizationDao(); | |||
@Test | |||
public void select_all() { | |||
dbTester.prepareDbUnit(getClass(), "shared.xml"); | |||
Collection<IssueAuthorizationDao.Dto> dtos = dao.selectAfterDate(dbTester.getDbClient(), dbTester.getSession(), 0L); | |||
Collection<AuthorizationDao.Dto> dtos = dao.selectAfterDate(dbTester.getDbClient(), dbTester.getSession(), 0L); | |||
assertThat(dtos).hasSize(2); | |||
IssueAuthorizationDao.Dto abc = Iterables.find(dtos, new ProjectPredicate("ABC")); | |||
AuthorizationDao.Dto abc = Iterables.find(dtos, new ProjectPredicate("ABC")); | |||
assertThat(abc.getGroups()).containsOnly("Anyone", "devs"); | |||
assertThat(abc.getUsers()).containsOnly("user1"); | |||
assertThat(abc.getUpdatedAt()).isNotNull(); | |||
IssueAuthorizationDao.Dto def = Iterables.find(dtos, new ProjectPredicate("DEF")); | |||
AuthorizationDao.Dto def = Iterables.find(dtos, new ProjectPredicate("DEF")); | |||
assertThat(def.getGroups()).containsOnly("Anyone"); | |||
assertThat(def.getUsers()).containsOnly("user1", "user2"); | |||
assertThat(def.getUpdatedAt()).isNotNull(); | |||
@@ -58,11 +58,11 @@ public class IssueAuthorizationDaoTest { | |||
public void select_after_date() { | |||
dbTester.prepareDbUnit(getClass(), "shared.xml"); | |||
Collection<IssueAuthorizationDao.Dto> dtos = dao.selectAfterDate(dbTester.getDbClient(), dbTester.getSession(), 1500000000L); | |||
Collection<AuthorizationDao.Dto> dtos = dao.selectAfterDate(dbTester.getDbClient(), dbTester.getSession(), 1500000000L); | |||
// only project DEF was updated in this period | |||
assertThat(dtos).hasSize(1); | |||
IssueAuthorizationDao.Dto def = Iterables.find(dtos, new ProjectPredicate("DEF")); | |||
AuthorizationDao.Dto def = Iterables.find(dtos, new ProjectPredicate("DEF")); | |||
assertThat(def).isNotNull(); | |||
assertThat(def.getGroups()).containsOnly("Anyone"); | |||
assertThat(def.getUsers()).containsOnly("user1", "user2"); | |||
@@ -72,16 +72,16 @@ public class IssueAuthorizationDaoTest { | |||
public void no_authorization() { | |||
dbTester.prepareDbUnit(getClass(), "no_authorization.xml"); | |||
Collection<IssueAuthorizationDao.Dto> dtos = dao.selectAfterDate(dbTester.getDbClient(), dbTester.getSession(), 0L); | |||
Collection<AuthorizationDao.Dto> dtos = dao.selectAfterDate(dbTester.getDbClient(), dbTester.getSession(), 0L); | |||
assertThat(dtos).hasSize(1); | |||
IssueAuthorizationDao.Dto abc = Iterables.find(dtos, new ProjectPredicate("ABC")); | |||
AuthorizationDao.Dto abc = Iterables.find(dtos, new ProjectPredicate("ABC")); | |||
assertThat(abc.getGroups()).isEmpty(); | |||
assertThat(abc.getUsers()).isEmpty(); | |||
assertThat(abc.getUpdatedAt()).isNotNull(); | |||
} | |||
private static class ProjectPredicate implements Predicate<IssueAuthorizationDao.Dto> { | |||
private static class ProjectPredicate implements Predicate<AuthorizationDao.Dto> { | |||
private final String projectUuid; | |||
@@ -90,7 +90,7 @@ public class IssueAuthorizationDaoTest { | |||
} | |||
@Override | |||
public boolean apply(IssueAuthorizationDao.Dto input) { | |||
public boolean apply(AuthorizationDao.Dto input) { | |||
return input.getProjectUuid().equals(projectUuid); | |||
} | |||
@@ -17,7 +17,7 @@ | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonar.server.issue.index; | |||
package org.sonar.server.permission.index; | |||
import java.util.Arrays; | |||
import java.util.Collection; | |||
@@ -30,11 +30,12 @@ import org.sonar.api.utils.System2; | |||
import org.sonar.db.DbClient; | |||
import org.sonar.db.DbTester; | |||
import org.sonar.server.es.EsTester; | |||
import org.sonar.server.issue.index.IssueIndexDefinition; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
public class IssueAuthorizationIndexerTest { | |||
public class AuthorizationIndexerTest { | |||
@Rule | |||
public DbTester dbTester = DbTester.create(System2.INSTANCE); | |||
@@ -44,7 +45,7 @@ public class IssueAuthorizationIndexerTest { | |||
@Test | |||
public void index_nothing() { | |||
IssueAuthorizationIndexer indexer = createIndexer(); | |||
AuthorizationIndexer indexer = createIndexer(); | |||
indexer.index(); | |||
assertThat(esTester.countDocuments("issues", "authorization")).isZero(); | |||
@@ -54,7 +55,7 @@ public class IssueAuthorizationIndexerTest { | |||
public void index() { | |||
dbTester.prepareDbUnit(getClass(), "index.xml"); | |||
IssueAuthorizationIndexer indexer = createIndexer(); | |||
AuthorizationIndexer indexer = createIndexer(); | |||
indexer.doIndex(0L); | |||
List<SearchHit> docs = esTester.getDocuments("issues", "authorization"); | |||
@@ -72,15 +73,15 @@ public class IssueAuthorizationIndexerTest { | |||
@Test | |||
public void do_not_fail_when_deleting_unindexed_project() { | |||
IssueAuthorizationIndexer indexer = createIndexer(); | |||
AuthorizationIndexer indexer = createIndexer(); | |||
indexer.deleteProject("UNKNOWN", true); | |||
assertThat(esTester.countDocuments("issues", "authorization")).isZero(); | |||
} | |||
@Test | |||
public void delete_permissions() { | |||
IssueAuthorizationIndexer indexer = createIndexer(); | |||
IssueAuthorizationDao.Dto authorization = new IssueAuthorizationDao.Dto("ABC", System.currentTimeMillis()); | |||
AuthorizationIndexer indexer = createIndexer(); | |||
AuthorizationDao.Dto authorization = new AuthorizationDao.Dto("ABC", System.currentTimeMillis()); | |||
authorization.addUser("guy"); | |||
authorization.addGroup("dev"); | |||
indexer.index(Arrays.asList(authorization)); | |||
@@ -89,7 +90,7 @@ public class IssueAuthorizationIndexerTest { | |||
assertThat(esTester.countDocuments("issues", "authorization")).isEqualTo(1); | |||
// remove permissions -> dto has no users nor groups | |||
authorization = new IssueAuthorizationDao.Dto("ABC", System.currentTimeMillis()); | |||
authorization = new AuthorizationDao.Dto("ABC", System.currentTimeMillis()); | |||
indexer.index(Arrays.asList(authorization)); | |||
List<SearchHit> docs = esTester.getDocuments("issues", "authorization"); | |||
@@ -98,7 +99,7 @@ public class IssueAuthorizationIndexerTest { | |||
assertThat((Collection)docs.get(0).sourceAsMap().get(IssueIndexDefinition.FIELD_AUTHORIZATION_GROUPS)).hasSize(0); | |||
} | |||
private IssueAuthorizationIndexer createIndexer() { | |||
return new IssueAuthorizationIndexer(new DbClient(dbTester.database(), dbTester.myBatis()), esTester.client()); | |||
private AuthorizationIndexer createIndexer() { | |||
return new AuthorizationIndexer(new DbClient(dbTester.database(), dbTester.myBatis()), esTester.client()); | |||
} | |||
} |
@@ -31,11 +31,11 @@ import org.sonar.db.organization.OrganizationDto; | |||
import org.sonar.db.permission.template.PermissionTemplateDto; | |||
import org.sonar.db.permission.template.PermissionTemplateTesting; | |||
import org.sonar.server.component.ComponentFinder; | |||
import org.sonar.server.issue.index.IssueAuthorizationIndexer; | |||
import org.sonar.server.organization.TestDefaultOrganizationProvider; | |||
import org.sonar.server.permission.GroupPermissionChanger; | |||
import org.sonar.server.permission.PermissionUpdater; | |||
import org.sonar.server.permission.UserPermissionChanger; | |||
import org.sonar.server.permission.index.AuthorizationIndexer; | |||
import org.sonar.server.tester.UserSessionRule; | |||
import org.sonar.server.usergroups.ws.GroupWsSupport; | |||
import org.sonar.server.ws.WsTester; | |||
@@ -77,7 +77,7 @@ public abstract class BasePermissionWsTest<A extends PermissionsWsAction> { | |||
protected PermissionUpdater newPermissionUpdater() { | |||
return new PermissionUpdater(db.getDbClient(), | |||
mock(IssueAuthorizationIndexer.class), | |||
mock(AuthorizationIndexer.class), | |||
new UserPermissionChanger(db.getDbClient(), defaultOrganizationProvider), | |||
new GroupPermissionChanger(db.getDbClient(), defaultOrganizationProvider)); | |||
} |
@@ -37,8 +37,8 @@ import org.sonar.server.component.ComponentFinder; | |||
import org.sonar.server.exceptions.BadRequestException; | |||
import org.sonar.server.exceptions.ForbiddenException; | |||
import org.sonar.server.exceptions.NotFoundException; | |||
import org.sonar.server.issue.index.IssueAuthorizationIndexer; | |||
import org.sonar.server.permission.PermissionService; | |||
import org.sonar.server.permission.index.AuthorizationIndexer; | |||
import org.sonar.server.permission.ws.BasePermissionWsTest; | |||
import org.sonar.server.ws.WsTester; | |||
@@ -64,7 +64,7 @@ public class ApplyTemplateActionTest extends BasePermissionWsTest<ApplyTemplateA | |||
private ComponentDto project; | |||
private PermissionTemplateDto template1; | |||
private PermissionTemplateDto template2; | |||
private IssueAuthorizationIndexer issueAuthorizationIndexer = mock(IssueAuthorizationIndexer.class); | |||
private AuthorizationIndexer issueAuthorizationIndexer = mock(AuthorizationIndexer.class); | |||
@Override | |||
protected ApplyTemplateAction buildWsAction() { |
@@ -36,8 +36,8 @@ import org.sonar.server.component.ComponentFinder; | |||
import org.sonar.server.exceptions.BadRequestException; | |||
import org.sonar.server.exceptions.NotFoundException; | |||
import org.sonar.server.i18n.I18nRule; | |||
import org.sonar.server.issue.index.IssueAuthorizationIndexer; | |||
import org.sonar.server.permission.PermissionService; | |||
import org.sonar.server.permission.index.AuthorizationIndexer; | |||
import org.sonar.server.permission.ws.BasePermissionWsTest; | |||
import org.sonar.server.ws.WsTester; | |||
@@ -61,7 +61,7 @@ public class BulkApplyTemplateActionTest extends BasePermissionWsTest<BulkApplyT | |||
private GroupDto group2; | |||
private PermissionTemplateDto template1; | |||
private PermissionTemplateDto template2; | |||
private IssueAuthorizationIndexer issueAuthorizationIndexer = mock(IssueAuthorizationIndexer.class); | |||
private AuthorizationIndexer issueAuthorizationIndexer = mock(AuthorizationIndexer.class); | |||
@Override | |||
protected BulkApplyTemplateAction buildWsAction() { |
@@ -48,9 +48,9 @@ import org.sonar.server.es.EsTester; | |||
import org.sonar.server.exceptions.ForbiddenException; | |||
import org.sonar.server.issue.IssueTesting; | |||
import org.sonar.server.issue.index.IssueAuthorizationDoc; | |||
import org.sonar.server.issue.index.IssueAuthorizationIndexer; | |||
import org.sonar.server.issue.index.IssueIndexDefinition; | |||
import org.sonar.server.issue.index.IssueIndexer; | |||
import org.sonar.server.permission.index.AuthorizationIndexer; | |||
import org.sonar.server.component.es.ProjectMeasuresIndexer; | |||
import org.sonar.server.test.index.TestDoc; | |||
import org.sonar.server.test.index.TestIndexDefinition; | |||
@@ -99,7 +99,7 @@ public class BulkDeleteActionTest { | |||
ws = new WsTester(new ProjectsWs( | |||
new BulkDeleteAction( | |||
new ComponentCleanerService(dbClient, | |||
new IssueAuthorizationIndexer(dbClient, es.client()), | |||
new AuthorizationIndexer(dbClient, es.client()), | |||
new IssueIndexer(dbClient, es.client()), | |||
new TestIndexer(dbClient, es.client()), | |||
new ProjectMeasuresIndexer(dbClient, es.client()), |
@@ -46,9 +46,9 @@ import org.sonar.server.es.EsTester; | |||
import org.sonar.server.exceptions.ForbiddenException; | |||
import org.sonar.server.issue.IssueTesting; | |||
import org.sonar.server.issue.index.IssueAuthorizationDoc; | |||
import org.sonar.server.issue.index.IssueAuthorizationIndexer; | |||
import org.sonar.server.issue.index.IssueIndexDefinition; | |||
import org.sonar.server.issue.index.IssueIndexer; | |||
import org.sonar.server.permission.index.AuthorizationIndexer; | |||
import org.sonar.server.component.es.ProjectMeasuresIndexer; | |||
import org.sonar.server.test.index.TestDoc; | |||
import org.sonar.server.test.index.TestIndexDefinition; | |||
@@ -100,7 +100,7 @@ public class DeleteActionTest { | |||
new DeleteAction( | |||
new ComponentCleanerService( | |||
dbClient, | |||
new IssueAuthorizationIndexer(dbClient, es.client()), | |||
new AuthorizationIndexer(dbClient, es.client()), | |||
new IssueIndexer(dbClient, es.client()), | |||
new TestIndexer(dbClient, es.client()), | |||
new ProjectMeasuresIndexer(dbClient, es.client()), |
@@ -41,11 +41,11 @@ import org.sonar.server.es.SearchOptions; | |||
import org.sonar.server.es.SearchResult; | |||
import org.sonar.server.issue.IssueQuery; | |||
import org.sonar.server.issue.IssueTesting; | |||
import org.sonar.server.issue.index.IssueAuthorizationIndexer; | |||
import org.sonar.server.issue.index.IssueDoc; | |||
import org.sonar.server.issue.index.IssueIndex; | |||
import org.sonar.server.issue.index.IssueIndexDefinition; | |||
import org.sonar.server.issue.index.IssueIndexer; | |||
import org.sonar.server.permission.index.AuthorizationIndexer; | |||
import org.sonar.server.tester.UserSessionRule; | |||
import static com.google.common.collect.Lists.newArrayList; | |||
@@ -144,7 +144,7 @@ public class ViewIndexerTest { | |||
public void clear_views_lookup_cache_on_index_view_uuid() { | |||
IssueIndex issueIndex = new IssueIndex(esTester.client(), System2.INSTANCE, userSessionRule); | |||
IssueIndexer issueIndexer = new IssueIndexer(dbClient, esTester.client()); | |||
IssueAuthorizationIndexer issueAuthorizationIndexer = new IssueAuthorizationIndexer(dbClient, esTester.client()); | |||
AuthorizationIndexer issueAuthorizationIndexer = new AuthorizationIndexer(dbClient, esTester.client()); | |||
String viewUuid = "ABCD"; | |||