Browse Source

SONAR-15805 Add new endpoints for addition and removal of application branches

tags/9.3.0.51899
Klaudio Sinani 2 years ago
parent
commit
c92c331f65

+ 5
- 2
server/sonar-db-dao/src/main/java/org/sonar/db/portfolio/PortfolioDao.java View File

@@ -23,7 +23,6 @@ import java.util.List;
import java.util.Optional;
import java.util.Set;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
import org.sonar.api.resources.Qualifiers;
import org.sonar.api.utils.System2;
import org.sonar.core.util.UuidFactory;
@@ -125,7 +124,7 @@ public class PortfolioDao implements Dao {
/*
* Portfolio references
*/
public void addReference(DbSession dbSession, String portfolioUuid, String referenceUuid, @Nullable String branchUuid) {
public void addReferenceBranch(DbSession dbSession, String portfolioUuid, String referenceUuid, String branchUuid) {
mapper(dbSession).insertReference(uuidFactory.create(), portfolioUuid, referenceUuid, branchUuid, system2.now());
}

@@ -169,6 +168,10 @@ public class PortfolioDao implements Dao {
mapper(dbSession).deleteAllReferences();
}

public int deleteReferenceBranch(DbSession dbSession, String portfolioUuid, String referenceUuid, String branchUuid) {
return mapper(dbSession).deleteReferenceBranch(portfolioUuid, referenceUuid, branchUuid);
}

public int deleteReference(DbSession dbSession, String portfolioUuid, String referenceUuid) {
return mapper(dbSession).deleteReference(portfolioUuid, referenceUuid);
}

+ 3
- 1
server/sonar-db-dao/src/main/java/org/sonar/db/portfolio/PortfolioMapper.java View File

@@ -44,7 +44,7 @@ public interface PortfolioMapper {
void deleteReferencesByPortfolioOrReferenceUuids(@Param("uuids") Set<String> uuids);

void insertReference(@Param("uuid") String uuid, @Param("portfolioUuid") String portfolioUuid, @Param("referenceUuid") String referenceUuid,
@Nullable @Param("branchUuid") String branchUuid, @Param("createdAt") long createdAt);
@Nullable @Param("branchUuid") String branchUuid, @Param("createdAt") long createdAt);

void insertProject(@Param("uuid") String uuid, @Param("portfolioUuid") String portfolioUuid, @Param("projectUuid") String projectUuid, @Param("createdAt") long createdAt);

@@ -104,4 +104,6 @@ public interface PortfolioMapper {
@Param("createdAt") long createdAt);

List<ProjectDto> selectAllDirectChildApplications(@Param("portfolioUuid") String portfolioUuid);

int deleteReferenceBranch(@Param("portfolioUuid") String portfolioUuid, @Param("referenceUuid") String referenceUuid, @Param("branchUuid") String branchUuid);
}

+ 7
- 0
server/sonar-db-dao/src/main/resources/org/sonar/db/portfolio/PortfolioMapper.xml View File

@@ -233,6 +233,13 @@
AND reference_uuid = #{referenceUuid,jdbcType=VARCHAR}
</delete>

<delete id="deleteReferenceBranch">
DELETE FROM portfolio_references
WHERE portfolio_uuid = #{portfolioUuid,jdbcType=VARCHAR}
AND reference_uuid = #{referenceUuid,jdbcType=VARCHAR}
AND branch_uuid = #{branchUuid,jdbcType=VARCHAR}
</delete>

<select id="selectReferenceToApplication" resultMap="referenceResult">
SELECT
<include refid="appReferenceColumns"/>

+ 26
- 1
server/sonar-db-dao/src/test/java/org/sonar/db/portfolio/PortfolioDaoTest.java View File

@@ -244,7 +244,7 @@ public class PortfolioDaoTest {

portfolioDao.addReference(session, "portfolio1", "portfolio2");
portfolioDao.addReference(session, "portfolio2", "portfolio3");
portfolioDao.addReference(session, "portfolio3", app1.getUuid(), "branch1");
portfolioDao.addReferenceBranch(session, "portfolio3", app1.getUuid(), "branch1");
portfolioDao.addReference(session, "portfolio2", app1.getUuid());

assertThat(portfolioDao.selectAllReferencesToApplications(session))
@@ -481,6 +481,31 @@ public class PortfolioDaoTest {
.containsOnly(tuple("portfolio2", "portfolio3"));
}

@Test
public void deleteReferenceBranch() {
PortfolioDto portfolio = db.components().insertPrivatePortfolioDto("portfolio1");
ProjectDto app = db.components().insertPrivateApplicationDto(p -> p.setDbKey("app").setName("app"));
BranchDto branch1 = db.components().insertProjectBranch(app, b -> b.setExcludeFromPurge(true));
BranchDto branch2 = db.components().insertProjectBranch(app, b -> b.setExcludeFromPurge(true));

db.components().addPortfolioReference(portfolio, app.getUuid());
db.components().addPortfolioApplicationBranch(portfolio.getUuid(), app.getUuid(), branch1.getUuid());
db.components().addPortfolioApplicationBranch(portfolio.getUuid(), app.getUuid(), branch2.getUuid());

assertThat(portfolioDao.selectReferenceToApp(db.getSession(), portfolio.getUuid(), app.getKey()))
.isPresent()
.map(ReferenceDto::getBranchUuids)
.contains(Set.of(branch1.getUuid(), branch2.getUuid()));

portfolioDao.deleteReferenceBranch(db.getSession(), portfolio.getUuid(), app.getUuid(), branch1.getUuid());

assertThat(portfolioDao.selectReferenceToApp(db.getSession(), portfolio.getUuid(), app.getKey()))
.isPresent()
.map(ReferenceDto::getBranchUuids)
.contains(Set.of(branch2.getUuid()));

}

@Test
public void insert_and_select_projects() {
PortfolioDto portfolio1 = db.components().insertPublicPortfolioDto();

+ 1
- 1
server/sonar-db-dao/src/testFixtures/java/org/sonar/db/component/ComponentDbTester.java View File

@@ -365,7 +365,7 @@ public class ComponentDbTester {
}

public void addPortfolioApplicationBranch(String portfolioUuid, String applicationUuid, String branchUuid) {
dbClient.portfolioDao().addReference(db.getSession(), portfolioUuid, applicationUuid, branchUuid);
dbClient.portfolioDao().addReferenceBranch(db.getSession(), portfolioUuid, applicationUuid, branchUuid);
db.commit();
}


+ 2
- 0
server/sonar-webserver-ws/src/main/java/org/sonar/server/ws/KeyExamples.java View File

@@ -20,6 +20,8 @@
package org.sonar.server.ws;

public class KeyExamples {
public static final String KEY_APPLICATION_EXAMPLE_001 = "my_app";

public static final String KEY_FILE_EXAMPLE_001 = "my_project:/src/foo/Bar.php";
public static final String KEY_FILE_EXAMPLE_002 = "another_project:/src/foo/Foo.php";
public static final String KEY_PROJECT_EXAMPLE_001 = "my_project";

Loading…
Cancel
Save