"MODULE_UUID_PATH" VARCHAR(1500),
"NAME" VARCHAR(2000),
"DESCRIPTION" VARCHAR(2000),
+ "PRIVATE" BOOLEAN NOT NULL,
"TAGS" VARCHAR(500),
"ENABLED" BOOLEAN NOT NULL DEFAULT TRUE,
"SCOPE" VARCHAR(3),
private String description;
private String tags;
private boolean enabled = true;
+ private boolean isPrivate = false;
private Date createdAt;
private Long authorizationUpdatedAt;
return this;
}
+ public boolean isPrivate() {
+ return isPrivate;
+ }
+
+ public ComponentDto setPrivate(boolean flag) {
+ this.isPrivate = flag;
+ return this;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) {
.append("language", language)
.append("enabled", enabled)
.append("authorizationUpdatedAt", authorizationUpdatedAt)
+ .append("private", isPrivate)
.toString();
}
}
p.enabled as enabled,
p.copy_component_uuid as copyComponentUuid,
p.developer_uuid as developerUuid,
+ p.private as isPrivate,
p.authorization_updated_at as authorizationUpdatedAt,
p.created_at as createdAt
</sql>
scope,
language,
description,
+ private,
tags,
root_uuid,
path,
#{scope,jdbcType=VARCHAR},
#{language,jdbcType=VARCHAR},
#{description,jdbcType=VARCHAR},
+ #{isPrivate,jdbcType=BOOLEAN},
#{tagsString, jdbcType=VARCHAR},
#{rootUuid,jdbcType=VARCHAR},
#{path,jdbcType=VARCHAR},
assertThat(result.language()).isEqualTo("java");
assertThat(result.getCopyResourceUuid()).isNull();
assertThat(result.getDeveloperUuid()).isNull();
+ assertThat(result.isPrivate()).isTrue();
assertThat(underTest.selectByUuid(dbSession, "UNKNOWN")).isAbsent();
}
assertThat(result.language()).isNull();
assertThat(result.getCopyResourceUuid()).isEqualTo("U1");
assertThat(result.getDeveloperUuid()).isEqualTo("developer_uuid_of_U7");
+ assertThat(result.isPrivate()).isFalse();
}
@Test
assertThat(componentDto.getCopyResourceUuid()).isEqualTo("uuid_5");
assertThat(componentDto.getDeveloperUuid()).isEqualTo("uuid_6");
assertThat(componentDto.getAuthorizationUpdatedAt()).isEqualTo(123456789L);
+ assertThat(componentDto.isPrivate()).isFalse();
}
@Test
qualifier="BRC"
long_name="Struts Core"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_resource_id="[null]"
name="src/org/struts"
root_id="2"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_resource_id="[null]"
name="RequestContext.java"
root_id="2"
description="[null]"
+ private="[false]"
enabled="[true]"
language="java"
copy_resource_id="[null]"
module_uuid="[null]"
module_uuid_path=".ABCD."
description="the description"
+ private="[false]"
long_name="Apache Struts"
enabled="[true]"
language="[null]"
qualifier="BRC"
long_name="Struts Core"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_resource_id="[null]"
name="src/org/struts"
root_id="2"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_resource_id="[null]"
name="RequestContext.java"
root_id="2"
description="[null]"
+ private="[false]"
enabled="[true]"
language="java"
copy_resource_id="[null]"
path="src/org/struts/RequestContext.java"
root_uuid="uuid_3"
description="description"
+ private="[false]"
tags="platform,analyzers"
enabled="[true]"
copy_component_uuid="uuid_5"
path="src/org/struts/RequestContext.java"
root_uuid="uuid_3"
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[false]"
copy_component_uuid="[null]"
qualifier="TRK"
long_name="Apache Struts"
description="the description"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
qualifier="BRC"
long_name="Struts Core"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
qualifier="BRC"
long_name="Struts Data"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
name="src/org/struts"
long_name="org.struts"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
name="RequestContext.java"
long_name="org.struts.RequestContext"
description="[null]"
+ private="[false]"
enabled="[true]"
language="java"
copy_component_uuid="[null]"
qualifier="BRC"
long_name="Struts Data"
description="[null]"
+ private="[false]"
enabled="[false]"
language="[null]"
copy_component_uuid="[null]"
name="src/org/struts"
long_name="org.struts"
description="[null]"
+ private="[false]"
enabled="[false]"
language="[null]"
copy_component_uuid="[null]"
name="RequestContext.java"
long_name="org.struts.RequestContext"
description="[null]"
+ private="[false]"
enabled="[false]"
language="java"
copy_component_uuid="[null]"
module_uuid="module_uuid_of_U1"
module_uuid_path="module_uuid_path_of_U1"
description="the description"
+ private="[false]"
long_name="Apache Struts"
enabled="[true]"
language="java"
qualifier="BRC"
long_name="Struts Core"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
module_uuid_path="module_uuid_path_of_U3"
name="src/org/struts"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
module_uuid_path="module_uuid_path_of_U4"
name="RequestContext.java"
description="[null]"
+ private="[false]"
enabled="[true]"
language="java"
copy_component_uuid="[null]"
module_uuid="module_uuid_of_U5"
module_uuid_path="module_uuid_path_of_U5"
description="the description"
+ private="[false]"
long_name="Some Paper"
enabled="[true]"
language="java"
qualifier="BRC"
long_name="Paper Core"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
module_uuid="[null]"
module_uuid_path="module_uuid_path_of_DIS7"
description="the description"
+ private="[false]"
long_name="Disabled project"
enabled="[false]"
language="[null]"
module_uuid="[null]"
module_uuid_path="module_uuid_path_of_COPY8"
description="the description"
+ private="[false]"
long_name="Copy project"
enabled="[true]"
language="[null]"
module_uuid="[null]"
module_uuid_path=".ABCD."
description="the description"
+ private="[false]"
long_name="Apache Struts"
enabled="[true]"
language="[null]"
qualifier="BRC"
long_name="Struts Core"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
long_name="pom.xml"
root_uuid="EFGHI"
description="[null]"
+ private="[false]"
enabled="[true]"
language="java"
copy_component_uuid="[null]"
qualifier="BRC"
long_name="Struts Data"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
long_name="org.struts"
root_uuid="EFGHI"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
long_name="org.struts.RequestContext"
root_uuid="EFGHI"
description="[null]"
+ private="[false]"
enabled="[true]"
language="java"
copy_component_uuid="[null]"
module_uuid="[null]"
module_uuid_path="."
description="the description"
+ private="[false]"
long_name="Provisioned Project"
enabled="[true]"
language="[null]"
module_uuid="[null]"
module_uuid_path=".ABCD."
description="the description"
+ private="[false]"
long_name="Apache Struts"
enabled="[true]"
language="[null]"
qualifier="BRC"
long_name="Struts Core"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
name="src/org/struts"
root_uuid="EFGH"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
name="RequestContext.java"
root_uuid="EFGH"
description="[null]"
+ private="[false]"
enabled="[true]"
language="java"
copy_component_uuid="[null]"
module_uuid="[null]"
module_uuid_path="."
description="the description"
+ private="[false]"
long_name="Disabled project"
enabled="[false]"
language="[null]"
module_uuid="[null]"
module_uuid_path=".OPQR."
description="the description"
+ private="[false]"
long_name="Anakin Skywalker"
enabled="[true]"
language="[null]"
module_uuid="OPQR"
module_uuid_path=".OPQR."
description="the description"
+ private="[false]"
long_name="Apache Struts"
enabled="[true]"
language="[null]"
module_uuid="module_uuid_of_U1"
module_uuid_path="module_uuid_path_of_U1"
description="the description"
+ private="[true]"
long_name="Apache Struts"
enabled="[true]"
language="java"
qualifier="BRC"
long_name="Struts Core"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
module_uuid_path="module_uuid_path_of_U3"
name="src/org/struts"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
module_uuid_path="module_uuid_path_of_U4"
name="RequestContext.java"
description="[null]"
+ private="[false]"
enabled="[true]"
language="java"
copy_component_uuid="[null]"
module_uuid="[null]"
module_uuid_path="module_uuid_path_of_U5"
description="the description"
+ private="[false]"
long_name="Disabled project"
enabled="[false]"
language="[null]"
module_uuid="[null]"
module_uuid_path="module_uuid_path_of_U6"
description="the description"
+ private="[false]"
long_name="Anakin Skywalker"
enabled="[true]"
language="[null]"
module_uuid="module_uuid_of_U7"
module_uuid_path="module_uuid_path_of_U7"
description="the description"
+ private="[false]"
long_name="Apache Struts"
enabled="[true]"
language="[null]"
module_uuid_path=".ABCD."
copy_component_uuid="[null]"
enabled="[true]"
+ private="[false]"
kee="MASTER_PROJECT"
scope="PRJ"
qualifier="VW"
module_uuid_path=".ABCD."
copy_component_uuid="JKLM"
enabled="[true]"
+ private="[false]"
kee="MASTER_PROJECTorg.struts:struts"
scope="FIL"
qualifier="TRK"
module_uuid_path=".EFGH."
copy_component_uuid="[null]"
enabled="[true]"
+ private="[false]"
kee="LANGUAGE_VIEW"
scope="PRJ"
qualifier="VW"
module_uuid_path=".EFGH."
copy_component_uuid="KLMN"
enabled="[true]"
+ private="[false]"
kee="VIEW2org.elasticsearch:elasticsearch"
scope="FIL"
qualifier="TRK"
module_uuid_path=".EFGH.FGHI."
copy_component_uuid="[null]"
enabled="[true]"
+ private="[false]"
kee="JAVA_PROJECTS"
scope="PRJ"
qualifier="SVW"
module_uuid_path=".EFGH.FGHI."
copy_component_uuid="JKLM"
enabled="[true]"
+ private="[false]"
kee="VIEW2org.struts:struts"
scope="FIL"
qualifier="TRK"
module_uuid_path=".IJKL."
copy_component_uuid="[null]"
enabled="[true]"
+ private="[false]"
kee="OTHER"
scope="PRJ"
qualifier="VW"
module_uuid="[null]"
module_uuid_path=".JKLM."
enabled="[true]"
+ private="[false]"
copy_component_uuid="[null]"
path="[null]"/>
<projects organization_uuid="org1"
module_uuid="[null]"
module_uuid_path=".KLMN."
enabled="[true]"
+ private="[false]"
copy_component_uuid="[null]"
path="[null]"/>
path="src/org/struts/RequestContext2.java"
root_uuid="uuid_4"
description="description2"
+ private="[false]"
enabled="[false]"
copy_component_uuid="uuid_6"
developer_uuid="uuid_9"
path="src/org/struts/RequestContext.java"
root_uuid="uuid_3"
description="description"
+ private="[false]"
enabled="[true]"
copy_component_uuid="uuid_5"
developer_uuid="[null]"
"MODULE_UUID_PATH" VARCHAR(1500),
"NAME" VARCHAR(2000),
"DESCRIPTION" VARCHAR(2000),
+ "PRIVATE" BOOLEAN NOT NULL,
"TAGS" VARCHAR(4000),
"ENABLED" BOOLEAN NOT NULL DEFAULT TRUE,
"SCOPE" VARCHAR(3),
module_uuid="[null]"
module_uuid_path="."
description="[null]"
+ private="[false]"
tags="[null]"
long_name="Apache Struts"
enabled="[true]"
qualifier="BRC"
long_name="Struts Core"
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="B"
module_uuid_path=".A.B."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="B"
module_uuid_path=".A.B."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
qualifier="BRC"
long_name="Struts UI"
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="[null]"
module_uuid_path=".E."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="[null]"
module_uuid_path=".E."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
qualifier="BRC"
long_name="Foo Struts Core"
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="[null]"
module_uuid_path="."
description="[null]"
+ private="[false]"
tags="[null]"
long_name="Apache Struts"
enabled="[true]"
qualifier="BRC"
long_name="Struts Core"
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="B"
module_uuid_path=".A.B."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="B"
module_uuid_path=".A.B."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
qualifier="BRC"
long_name="Struts UI"
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="[null]"
module_uuid_path=".E."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="[null]"
module_uuid_path=".E."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
qualifier="BRC"
long_name="Foo Struts Core"
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="[null]"
module_uuid_path="."
description="[null]"
+ private="[false]"
tags="[null]"
long_name="Apache Struts"
enabled="[true]"
qualifier="BRC"
long_name="Struts Core"
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="B"
module_uuid_path=".A.B."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="B"
module_uuid_path=".A.B."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
qualifier="BRC"
long_name="Struts UI"
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="[null]"
module_uuid_path=".E."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="[null]"
module_uuid_path=".E."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
qualifier="BRC"
long_name="Foo Struts Core"
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="[null]"
module_uuid_path="."
description="[null]"
+ private="[false]"
tags="[null]"
long_name="Apache Struts"
enabled="[true]"
qualifier="BRC"
long_name="Struts Core"
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="B"
module_uuid_path=".A.B."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="B"
module_uuid_path=".A.B."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
qualifier="BRC"
long_name="Struts UI"
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="[null]"
module_uuid_path=".E."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="[null]"
module_uuid_path=".E."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="[null]"
module_uuid_path="."
description="[null]"
+ private="[false]"
tags="[null]"
long_name="Apache Struts"
enabled="[true]"
qualifier="BRC"
long_name="Struts Core"
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="B"
module_uuid_path=".A.B."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="B"
module_uuid_path=".A.B."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
qualifier="BRC"
long_name="Struts UI"
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="[null]"
module_uuid_path=".E."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="[null]"
module_uuid_path=".E."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="[null]"
module_uuid_path="."
description="[null]"
+ private="[false]"
tags="[null]"
long_name="Apache Struts"
enabled="[true]"
qualifier="BRC"
long_name="Struts Core"
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="B"
module_uuid_path=".A.B."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="B"
module_uuid_path=".A.B."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
qualifier="BRC"
long_name="Struts UI"
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="[null]"
module_uuid_path=".E."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
module_uuid="[null]"
module_uuid_path=".E."
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
qualifier="BRC"
long_name="Foo Struts Core"
description="[null]"
+ private="[false]"
tags="[null]"
enabled="[true]"
language="java"
kee="old key"
name="old name"
description="old name"
+ private="[false]"
tags="[null]"
long_name="old long name"
enabled="[false]"
kee="old key"
name="old name"
description="old name"
+ private="[false]"
tags="[null]"
long_name="old long name"
enabled="[false]"
uuid="ABCD"
uuid_path="NOT_USED"
description="[null]"
+ private="[false]"
enabled="[true]"
language="java"
copy_component_uuid="[null]"
module_uuid="[null]"
module_uuid_path="."
description="the description"
+ private="[false]"
long_name="Apache Struts"
enabled="[true]"
language="[null]"
qualifier="BRC"
long_name="Struts Core"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
qualifier="BRC"
long_name="Struts Data"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
qualifier="BRC"
long_name="Struts Deprecated"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
enabled="1"
scope="FIL"
qualifier="CLA"
- id="1"/>
+ id="1"
+ private="[false]"/>
<duplications_index id="1"
analysis_uuid="u1"
enabled="1"
scope="FIL"
qualifier="CLA"
- id="1"/>
+ id="1"
+ private="[false]"/>
</dataset>
enabled="[true]"
scope="FIL"
qualifier="CLA"
- language="java"/>
+ language="java"
+ private="[false]"/>
<snapshots id="3"
uuid="u3"
enabled="[true]"
scope="FIL"
qualifier="CLA"
- language="java"/>
+ language="java"
+ private="[false]"/>
<snapshots id="5"
uuid="u5"
enabled="[true]"
scope="FIL"
qualifier="CLA"
- language="java"/>
+ language="java"
+ private="[false]"/>
<snapshots id="7"
uuid="u7"
enabled="[true]"
scope="FIL"
qualifier="CLA"
- language="java"/>
+ language="java"
+ private="[false]"/>
<snapshots id="9"
uuid="u9"
enabled="[true]"
scope="FIL"
qualifier="CLA"
- language="java"/>
+ language="java"
+ private="[false]"/>
<snapshots id="11"
uuid="u11"
enabled="[true]"
scope="FIL"
qualifier="CLA"
- language="grvy"/>
+ language="grvy"
+ private="[false]"/>
<!-- Old snapshot of another project -->
<!-- bar-old -->
project_uuid="EDFG"
uuid="ABCD"
uuid_path="NOT_USED"
- module_uuid="EDFG"/>
+ module_uuid="EDFG"
+ private="[false]"/>
<projects organization_uuid="org1"
id="302"
kee="pj-w-snapshot:file"
project_uuid="EDFG"
uuid="BCDE"
uuid_path="NOT_USED"
- module_uuid="EDFG"/>
+ module_uuid="EDFG"
+ private="[false]"/>
<projects organization_uuid="org1"
id="303"
kee="pj-w-snapshot:other"
project_uuid="EDFG"
uuid="CDEF"
uuid_path="NOT_USED"
- module_uuid="EDFG"/>
+ module_uuid="EDFG"
+ private="[false]"/>
<projects organization_uuid="org1"
id="300"
kee="pj-w-snapshot"
uuid_path="NOT_USED"
root_uuid="EDFG"
project_uuid="EDFG"
- module_uuid="[null]"/>
+ module_uuid="[null]"
+ private="[false]"/>
<projects organization_uuid="org1"
id="400"
kee="pj-wo-snapshot"
uuid="FGHI"
uuid_path="NOT_USED"
root_uuid="FGHI"
- project_uuid="FGHI"/>
+ project_uuid="FGHI"
+ private="[false]"/>
</dataset>
project_uuid="DEFG"
uuid="ABCD"
uuid_path="NOT_USED"
- module_uuid="DEFG"/>
+ module_uuid="DEFG"
+ private="[false]"/>
<projects organization_uuid="org1"
id="302"
kee="pj-w-snapshot:file"
project_uuid="DEFG"
uuid="BCDE"
uuid_path="NOT_USED"
- module_uuid="DEFG"/>
+ module_uuid="DEFG"
+ private="[false]"/>
<projects organization_uuid="org1"
id="303"
kee="pj-w-snapshot:other"
project_uuid="DEFG"
uuid="CDEF"
uuid_path="NOT_USED"
- module_uuid="DEFG"/>
+ module_uuid="DEFG"
+ private="[false]"/>
<projects organization_uuid="org1"
id="300"
kee="pj-w-snapshot"
uuid_path="NOT_USED"
root_uuid="DEFG"
project_uuid="DEFG"
- module_uuid="[null]"/>
+ module_uuid="[null]"
+ private="[false]"/>
<projects organization_uuid="org1"
id="400"
kee="pj-wo-snapshot"
uuid_path="NOT_USED"
root_uuid="EFGH"
project_uuid="EFGH"
- module_uuid="[null]"/>
+ module_uuid="[null]"
+ private="[false]"/>
</dataset>
root_uuid="DEFG"
project_uuid="DEFG"
module_uuid="[null]"
- enabled="[true]"/>
+ enabled="[true]"
+ private="[false]"/>
<projects organization_uuid="org1"
id="400"
kee="pj-wo-snapshot"
root_uuid="EFGH"
project_uuid="EFGH"
module_uuid="[null]"
- enabled="[true]"/>
+ enabled="[true]"
+ private="[false]"/>
</dataset>
root_uuid="DEFG"
project_uuid="DEFG"
module_uuid="[null]"
- enabled="[true]"/>
+ enabled="[true]"
+ private="[false]"/>
<projects organization_uuid="org1"
id="400"
kee="pj-wo-snapshot"
root_uuid="EFGH"
project_uuid="EFGH"
module_uuid="[null]"
- enabled="[true]"/>
+ enabled="[true]"
+ private="[false]"/>
</dataset>
root_uuid="DEFG"
project_uuid="DEFG"
module_uuid="[null]"
- enabled="[true]"/>
+ enabled="[true]"
+ private="[false]"/>
<projects organization_uuid="org1"
id="400"
kee="pj-wo-snapshot"
root_uuid="EFGH"
project_uuid="EFGH"
module_uuid="[null]"
- enabled="[true]"/>
+ enabled="[true]"
+ private="[false]"/>
</dataset>
uuid_path="NOT_USED"
root_uuid="DEFG"
project_uuid="DEFG"
- module_uuid="[null]"/>
+ module_uuid="[null]"
+ private="[false]"/>
<projects organization_uuid="org1"
id="400"
kee="pj-wo-snapshot"
uuid_path="NOT_USED"
root_uuid="EFGH"
project_uuid="EFGH"
- module_uuid="[null]"/>
+ module_uuid="[null]"
+ private="[false]"/>
</dataset>
uuid_path="NOT_USED"
root_uuid="DEFG"
project_uuid="DEFG"
- module_uuid="[null]"/>
+ module_uuid="[null]"
+ private="[false]"/>
<projects organization_uuid="org1"
id="400"
kee="pj-wo-snapshot"
uuid_path="NOT_USED"
root_uuid="EFGH"
project_uuid="EFGH"
- module_uuid="[null]"/>
+ module_uuid="[null]"
+ private="[false]"/>
</dataset>
uuid_path="NOT_USED"
root_uuid="DEFG"
project_uuid="DEFG"
- module_uuid="[null]"/>
+ module_uuid="[null]"
+ private="[false]"/>
<projects organization_uuid="org1"
id="400"
kee="pj-wo-snapshot"
uuid_path="NOT_USED"
root_uuid="EFGH"
project_uuid="EFGH"
- module_uuid="[null]"/>
+ module_uuid="[null]"
+ private="[false]"/>
</dataset>
kee="pj-w-snapshot"
scope="PRJ"
qualifier="TRK"
- enabled="[true]"/>
+ enabled="[true]"
+ private="[false]"/>
<projects organization_uuid="org1"
id="301"
uuid="BCDE"
kee="pj-w-snapshot1"
scope="PRJ"
qualifier="TRK"
- enabled="[true]"/>
+ enabled="[true]"
+ private="[false]"/>
<projects organization_uuid="org1"
id="302"
uuid="CDEF"
kee="pj-w-snapshot2"
scope="PRJ"
qualifier="TRK"
- enabled="[true]"/>
+ enabled="[true]"
+ private="[false]"/>
<projects organization_uuid="org1"
id="303"
kee="pj-w-snapshot3"
scope="PRJ"
qualifier="TRK"
- enabled="[true]"/>
+ enabled="[true]"
+ private="[false]"/>
</dataset>
kee="pj-w-snapshot"
scope="PRJ"
qualifier="TRK"
- enabled="[true]"/>
+ enabled="[true]"
+ private="[false]"/>
<projects organization_uuid="org1"
id="301"
uuid="BCDE"
kee="pj-w-snapshot1"
scope="PRJ"
qualifier="TRK"
- enabled="[true]"/>
+ enabled="[true]"
+ private="[false]"/>
<projects organization_uuid="org1"
id="302"
uuid="CDEF"
kee="pj-w-snapshot2"
scope="PRJ"
qualifier="TRK"
- enabled="[true]"/>
+ enabled="[true]"
+ private="[false]"/>
<projects organization_uuid="org1"
id="303"
kee="pj-w-snapshot3"
scope="PRJ"
qualifier="TRK"
- enabled="[true]"/>
+ enabled="[true]"
+ private="[false]"/>
</dataset>
kee="pj-w-snapshot"
scope="PRJ"
qualifier="TRK"
- enabled="[true]"/>
+ enabled="[true]"
+ private="[false]"/>
<projects organization_uuid="org1"
id="301"
uuid="BCDE"
kee="pj-w-snapshot1"
scope="PRJ"
qualifier="TRK"
- enabled="[true]"/>
+ enabled="[true]"
+ private="[false]"/>
<projects organization_uuid="org1"
id="302"
uuid="CDEF"
kee="pj-w-snapshot2"
scope="PRJ"
qualifier="TRK"
- enabled="[true]"/>
+ enabled="[true]"
+ private="[false]"/>
<projects organization_uuid="org1"
id="303"
kee="pj-w-snapshot3"
scope="PRJ"
qualifier="TRK"
- enabled="[true]"/>
+ enabled="[true]"
+ private="[false]"/>
</dataset>
uuid_path="NOT_USED"
root_uuid="DEFG"
project_uuid="DEFG"
- module_uuid="[null]"/>
+ module_uuid="[null]"
+ private="[false]"/>
<projects organization_uuid="org1"
id="400"
kee="pj-wo-snapshot"
uuid_path="NOT_USED"
root_uuid="EFGH"
project_uuid="EFGH"
- module_uuid="[null]"/>
+ module_uuid="[null]"
+ private="[false]"/>
</dataset>
module_uuid="[null]"
module_uuid_path="."
description="the description"
+ private="[false]"
long_name="Apache Struts"
enabled="[true]"
language="[null]"
qualifier="BRC"
long_name="Struts Core"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
qualifier="BRC"
long_name="Struts Data"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
name="src/org/struts"
root_uuid="FGHI"
description="[null]"
+ private="[false]"
enabled="[true]"
language="[null]"
copy_component_uuid="[null]"
name="RequestContext.java"
root_uuid="FGHI"
description="[null]"
+ private="[false]"
enabled="[true]"
language="java"
copy_component_uuid="[null]"
kee="project"
name="project"
description="[null]"
+ private="[false]"
language="java"
copy_component_uuid="[null]"
developer_uuid="[null]"/>
kee="project"
name="project"
description="[null]"
+ private="[false]"
tags="[null]"
language="java"
copy_component_uuid="[null]"
kee="project:my/dir"
name="my/dir"
description="[null]"
+ private="[false]"
tags="[null]"
language="java"
copy_component_uuid="[null]"
kee="project:my/dir/File.java"
name="my/dir/File.java"
description="[null]"
+ private="[false]"
tags="[null]"
language="java"
copy_component_uuid="[null]"
kee="project"
name="project"
description="[null]"
+ private="[false]"
language="java"
copy_component_uuid="[null]"
developer_uuid="[null]"
kee="project:my/dir"
name="my/dir"
description="[null]"
+ private="[false]"
language="java"
copy_component_uuid="[null]"
developer_uuid="[null]"
kee="project:my/dir/File.java"
name="my/dir/File.java"
description="[null]"
+ private="[false]"
language="java"
copy_component_uuid="[null]"
developer_uuid="[null]"
<dataset>
- <!-- project -->
- <projects organization_uuid="org1"
- uuid="A"
- uuid_path="NOT_USED"
- project_uuid="A"
- module_uuid="[null]"
- module_uuid_path=".A."
- long_name="[null]"
- scope="PRJ"
- qualifier="TRK"
- kee="project"
- name="project"
- description="[null]"
- language="java"
- copy_component_uuid="[null]"
- developer_uuid="[null]"
- authorization_updated_at="[null]"
- id="1"
- enabled="[true]"
- root_id="[null]"/>
+ <!-- project -->
+ <projects organization_uuid="org1"
+ uuid="A"
+ uuid_path="NOT_USED"
+ project_uuid="A"
+ module_uuid="[null]"
+ module_uuid_path=".A."
+ long_name="[null]"
+ scope="PRJ"
+ qualifier="TRK"
+ kee="project"
+ name="project"
+ description="[null]"
+ private="[false]"
+ language="java"
+ copy_component_uuid="[null]"
+ developer_uuid="[null]"
+ authorization_updated_at="[null]"
+ id="1"
+ enabled="[true]"
+ root_id="[null]"/>
</dataset>
kee="project"
name="project"
description="[null]"
+ private="[false]"
language="java"
copy_component_uuid="[null]"
developer_uuid="[null]"
kee="project"
name="project"
description="[null]"
+ private="[false]"
language="java"
copy_component_uuid="[null]"
developer_uuid="[null]"
kee="project"
name="project"
description="[null]"
+ private="[false]"
tags="[null]"
language="java"
copy_component_uuid="[null]"
kee="project:my/dir"
name="my/dir"
description="[null]"
+ private="[false]"
tags="[null]"
language="java"
copy_component_uuid="[null]"
kee="project:my/dir/File.java"
name="my/dir/File.java"
description="[null]"
+ private="[false]"
tags="[null]"
language="java"
copy_component_uuid="[null]"
kee="project"
name="project"
description="[null]"
+ private="[false]"
language="java"
copy_component_uuid="[null]"
developer_uuid="[null]"
kee="project:my/dir"
name="my/dir"
description="[null]"
+ private="[false]"
language="java"
copy_component_uuid="[null]"
developer_uuid="[null]"
kee="project:my/dir/File.java"
name="my/dir/File.java"
description="[null]"
+ private="[false]"
language="java"
copy_component_uuid="[null]"
developer_uuid="[null]"
kee="project"
name="project"
description="[null]"
+ private="[false]"
language="java"
copy_component_uuid="[null]"
developer_uuid="[null]"
kee="module1"
name="module1"
description="[null]"
+ private="[false]"
language="java"
copy_component_uuid="[null]"
developer_uuid="[null]"
kee="module2"
name="module2"
description="[null]"
+ private="[false]"
language="java"
copy_component_uuid="[null]"
developer_uuid="[null]"
kee="module2:File.java"
name="File"
description="[null]"
+ private="[false]"
language="java"
copy_component_uuid="[null]"
developer_uuid="[null]"
name="project"
root_uuid="P1"
description="[null]"
+ private="[false]"
tags="[null]"
language="java"
copy_component_uuid="[null]"
name="project"
root_uuid="P1"
description="[null]"
+ private="[false]"
language="java"
copy_component_uuid="[null]"
developer_uuid="[null]"
kee="project"
name="project"
description="[null]"
+ private="[false]"
language="java"
copy_component_uuid="[null]"
developer_uuid="[null]"
kee="project"
name="project"
description="[null]"
+ private="[false]"
language="java"
copy_component_uuid="[null]"
developer_uuid="[null]"
kee="project"
name="project"
description="[null]"
+ private="[false]"
language="java"
copy_component_uuid="[null]"
developer_uuid="[null]"
kee="project"
name="project"
description="[null]"
+ private="[false]"
language="java"
copy_component_uuid="[null]"
developer_uuid="[null]"
kee="view"
name="view"
description="[null]"
+ private="[false]"
language="[null]"
copy_component_uuid="[null]"
developer_uuid="[null]"
kee="subview1"
name="subview2"
description="[null]"
+ private="[false]"
language="[null]"
copy_component_uuid="[null]"
developer_uuid="[null]"
kee="subview2"
name="subview2"
description="[null]"
+ private="[false]"
language="[null]"
copy_component_uuid="[null]"
developer_uuid="[null]"
kee="TechProject"
name="TechProject"
description="[null]"
+ private="[false]"
language="[null]"
copy_component_uuid="[null]"
developer_uuid="[null]"
scope="PRJ"
enabled="[true]"
copy_component_uuid="[null]"
- id="1"/>
+ id="1"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="B"
uuid_path="NOT_USED"
scope="PRJ"
enabled="[true]"
copy_component_uuid="[null]"
- id="2"/>
+ id="2"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="C"
uuid_path="NOT_USED"
scope="PRJ"
enabled="[true]"
copy_component_uuid="[null]"
- id="3"/>
+ id="3"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="D"
uuid_path="NOT_USED"
scope="PRJ"
enabled="[true]"
copy_component_uuid="[null]"
- id="4"/>
+ id="4"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="E"
uuid_path="NOT_USED"
scope="PRJ"
enabled="[true]"
copy_component_uuid="[null]"
- id="5"/>
+ id="5"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="F"
uuid_path="NOT_USED"
scope="PRJ"
enabled="[true]"
copy_component_uuid="[null]"
- id="6"/>
+ id="6"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="G"
uuid_path="NOT_USED"
scope="FIL"
enabled="[true]"
copy_component_uuid="C"
- id="7"/>
+ id="7"
+ private="[false]"/>
<properties id="1"
prop_key="sonar.qualitygate"
kee="org.codehaus.sonar:sonar"
name="SonarQube"
enabled="[true]"
- id="1"/>
+ id="1"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="B"
uuid_path="NOT_USED"
kee="org.codehaus.sonar-plugins.java:java"
name="SonarQube Java"
enabled="[true]"
- id="2"/>
+ id="2"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="C"
uuid_path="NOT_USED"
kee="disabled:project"
name="Disabled Project"
enabled="[false]"
- id="3"/>
+ id="3"
+ private="[false]"/>
<project_qprofiles id="1"
project_uuid="A"
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2017 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * 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.platform.db.migration.version.v64;
+
+import java.sql.SQLException;
+import org.sonar.db.Database;
+import org.sonar.server.platform.db.migration.sql.AddColumnsBuilder;
+import org.sonar.server.platform.db.migration.step.DdlChange;
+
+import static org.sonar.server.platform.db.migration.def.BooleanColumnDef.newBooleanColumnDefBuilder;
+
+public class AddColumnProjectsPrivate extends DdlChange {
+ public AddColumnProjectsPrivate(Database db) {
+ super(db);
+ }
+
+ @Override
+ public void execute(Context context) throws SQLException {
+ context.execute(new AddColumnsBuilder(getDialect(), "projects")
+ .addColumn(newBooleanColumnDefBuilder()
+ .setColumnName("private")
+ .setIsNullable(true)
+ .build())
+ .build());
+ }
+}
.add(1629, "Make CE_QUEUE.EXECUTION_COUNT not nullable", MakeCeQueueExecutionCountNotNullable.class)
.add(1630, "Add columns CE_ACTIVITY.WORKER_UUID and EXECUTION_COUNT", AddCeActivityWorkerUuidAndExecutionCount.class)
.add(1631, "Make columns CE_ACTIVITY.EXECUTION_COUNT not nullable", MakeCeActivityExecutionCountNotNullable.class)
- .add(1632, "Make PROJECTS.PROJECT_UUID not nullable", MakeProjectUuidNotNullable.class);
+ .add(1632, "Make PROJECTS.PROJECT_UUID not nullable", MakeProjectUuidNotNullable.class)
+ .add(1633, "Purge rows with null PROJECTS.PROJECT_UUID", PurgeComponentsWithoutProjectUuid.class)
+ .add(1634, "Make PROJECTS.PROJECT_UUID not nullable", MakeProjectUuidNotNullable.class)
+ .add(1635, "Add column PROJECTS.PRIVATE", AddColumnProjectsPrivate.class)
+ .add(1636, "Populate column PROJECTS.PRIVATE", PopulateColumnProjectsPrivate.class)
+ .add(1637, "Make column PROJECTS.PRIVATE not nullable", MakeColumnProjectsPrivateNotNullable.class);
}
}
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2017 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * 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.platform.db.migration.version.v64;
+
+import java.sql.SQLException;
+import org.sonar.db.Database;
+import org.sonar.server.platform.db.migration.sql.AlterColumnsBuilder;
+import org.sonar.server.platform.db.migration.step.DdlChange;
+
+import static org.sonar.server.platform.db.migration.def.BooleanColumnDef.newBooleanColumnDefBuilder;
+
+public class MakeColumnProjectsPrivateNotNullable extends DdlChange {
+ public MakeColumnProjectsPrivateNotNullable(Database db) {
+ super(db);
+ }
+
+ @Override
+ public void execute(Context context) throws SQLException {
+ context.execute(new AlterColumnsBuilder(getDialect(), "projects")
+ .updateColumn(newBooleanColumnDefBuilder()
+ .setColumnName("private")
+ .setIsNullable(false)
+ .build())
+ .build());
+ }
+}
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2017 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * 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.platform.db.migration.version.v64;
+
+import java.sql.SQLException;
+import org.sonar.db.Database;
+import org.sonar.server.platform.db.migration.step.DataChange;
+import org.sonar.server.platform.db.migration.step.MassUpdate;
+import org.sonar.server.platform.db.migration.step.Select;
+import org.sonar.server.platform.db.migration.step.SqlStatement;
+
+public class PopulateColumnProjectsPrivate extends DataChange {
+ public PopulateColumnProjectsPrivate(Database db) {
+ super(db);
+ }
+
+ @Override
+ protected void execute(Context context) throws SQLException {
+ MassUpdate massUpdate = context.prepareMassUpdate();
+ massUpdate.select("select distinct root_uuid from projects where private is null");
+ massUpdate.update("update projects set private = ? where root_uuid = ?");
+ massUpdate.rowPluralName("component tree without private flag");
+ massUpdate.execute(PopulateColumnProjectsPrivate::handle);
+ }
+
+ private static boolean handle(Select.Row row, SqlStatement update) throws SQLException {
+ String rootUuid = row.getString(1);
+
+ update.setBoolean(1, false);
+ update.setString(2, rootUuid);
+
+ return true;
+ }
+}
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2017 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * 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.platform.db.migration.version.v64;
+
+import java.sql.SQLException;
+import java.sql.Types;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.sonar.db.CoreDbTester;
+
+public class AddColumnProjectsPrivateTest {
+ @Rule
+ public CoreDbTester db = CoreDbTester.createForSchema(AddColumnProjectsPrivateTest.class, "projects_without_private_column.sql");
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ private AddColumnProjectsPrivate underTest = new AddColumnProjectsPrivate(db.database());
+
+ @Test
+ public void execute_adds_nullable_boolean_column_private_to_table_PROJECTS() throws SQLException {
+ underTest.execute();
+
+ db.assertColumnDefinition("projects", "private", Types.BOOLEAN, null, true);
+ }
+
+ @Test
+ public void execute_is_not_reentrant() throws SQLException {
+ underTest.execute();
+
+ expectedException.expect(IllegalStateException.class);
+
+ underTest.execute();
+ }
+}
@Test
public void verify_migration_count() {
- verifyMigrationCount(underTest, 33);
+ verifyMigrationCount(underTest, 38);
}
}
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2017 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * 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.platform.db.migration.version.v64;
+
+import java.sql.SQLException;
+import java.sql.Types;
+import org.junit.Rule;
+import org.junit.Test;
+import org.sonar.db.CoreDbTester;
+
+public class MakeColumnProjectsPrivateNotNullableTest {
+ @Rule
+ public CoreDbTester db = CoreDbTester.createForSchema(MakeColumnProjectsPrivateNotNullableTest.class, "projects_with_nullable_private_column.sql");
+
+ private MakeColumnProjectsPrivateNotNullable underTest = new MakeColumnProjectsPrivateNotNullable(db.database());
+
+ @Test
+ public void execute_makes_column_private_not_nullable() throws SQLException {
+ db.assertColumnDefinition("projects", "private", Types.BOOLEAN, null, true);
+
+ underTest.execute();
+
+ db.assertColumnDefinition("projects", "private", Types.BOOLEAN, null, false);
+ }
+}
--- /dev/null
+/*
+ * SonarQube
+ * Copyright (C) 2009-2017 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * 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.platform.db.migration.version.v64;
+
+import java.sql.SQLException;
+import javax.annotation.Nullable;
+import org.junit.Rule;
+import org.junit.Test;
+import org.sonar.db.CoreDbTester;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class PopulateColumnProjectsPrivateTest {
+ private static final Boolean NO_PRIVATE_FLAG = null;
+
+ @Rule
+ public CoreDbTester db = CoreDbTester.createForSchema(PopulateColumnProjectsPrivateTest.class, "projects_with_nullable_private_column.sql");
+
+ private PopulateColumnProjectsPrivate underTest = new PopulateColumnProjectsPrivate(db.database());
+
+ @Test
+ public void execute_has_no_effect_if_table_PROJECTS_is_empty() throws SQLException {
+ underTest.execute();
+
+ assertThat(db.countRowsOfTable("PROJECTS")).isEqualTo(0);
+ }
+
+ @Test
+ public void execute_updates_rows_with_null_private_column_to_false() throws SQLException {
+ insertRow(1, NO_PRIVATE_FLAG);
+ insertRow(2, NO_PRIVATE_FLAG);
+ insertRow(3, NO_PRIVATE_FLAG);
+
+ assertThat(countRowsWithPrivateFlag(null)).isEqualTo(3);
+ assertThat(countRowsWithPrivateFlag(true)).isEqualTo(0);
+ assertThat(countRowsWithPrivateFlag(false)).isEqualTo(0);
+
+ underTest.execute();
+
+ assertThat(countRowsWithPrivateFlag(null)).isEqualTo(0);
+ assertThat(countRowsWithPrivateFlag(true)).isEqualTo(0);
+ assertThat(countRowsWithPrivateFlag(false)).isEqualTo(3);
+ }
+
+ @Test
+ public void execute_does_not_change_rows_with_non_null_private_column() throws SQLException {
+ insertRow(2, true);
+ insertRow(3, false);
+
+ underTest.execute();
+
+ assertThat(countRowsWithPrivateFlag(null)).isEqualTo(0);
+ assertThat(countRowsWithPrivateFlag(true)).isEqualTo(1);
+ assertThat(countRowsWithPrivateFlag(false)).isEqualTo(1);
+ }
+
+ @Test
+ public void execute_is_reentreant() throws SQLException {
+ insertRow(1, true);
+ insertRow(2, false);
+ insertRow(3, NO_PRIVATE_FLAG);
+
+ underTest.execute();
+
+ underTest.execute();
+ }
+
+ private int countRowsWithPrivateFlag(@Nullable Boolean privateFlag) {
+ if (privateFlag == null) {
+ return db.countSql("select count(1) from projects where private is null");
+ }
+ return db.countSql("select count(1) from projects where private=" + privateFlag);
+ }
+
+ private void insertRow(int id, @Nullable Boolean privateFlag) {
+ db.executeInsert(
+ "PROJECTS",
+ "ORGANIZATION_UUID", "org_" + id,
+ "UUID", "uuid_" + id,
+ "UUID_PATH", "uuid_path_" + id,
+ "ROOT_UUID", "root_uuid_" + id,
+ "PRIVATE", privateFlag == null ? null : privateFlag.toString());
+ }
+}
--- /dev/null
+CREATE TABLE "PROJECTS" (
+ "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
+ "ORGANIZATION_UUID" VARCHAR(40) NOT NULL,
+ "KEE" VARCHAR(400),
+ "UUID" VARCHAR(50) NOT NULL,
+ "UUID_PATH" VARCHAR(1500) NOT NULL,
+ "ROOT_UUID" VARCHAR(50) NOT NULL,
+ "PROJECT_UUID" VARCHAR(50),
+ "MODULE_UUID" VARCHAR(50),
+ "MODULE_UUID_PATH" VARCHAR(1500),
+ "NAME" VARCHAR(2000),
+ "DESCRIPTION" VARCHAR(2000),
+ "TAGS" VARCHAR(500),
+ "ENABLED" BOOLEAN NOT NULL DEFAULT TRUE,
+ "SCOPE" VARCHAR(3),
+ "QUALIFIER" VARCHAR(10),
+ "DEPRECATED_KEE" VARCHAR(400),
+ "PATH" VARCHAR(2000),
+ "LANGUAGE" VARCHAR(20),
+ "COPY_COMPONENT_UUID" VARCHAR(50),
+ "LONG_NAME" VARCHAR(2000),
+ "DEVELOPER_UUID" VARCHAR(50),
+ "CREATED_AT" TIMESTAMP,
+ "AUTHORIZATION_UPDATED_AT" BIGINT,
+ "B_CHANGED" BOOLEAN,
+ "B_COPY_COMPONENT_UUID" VARCHAR(50),
+ "B_DESCRIPTION" VARCHAR(2000),
+ "B_ENABLED" BOOLEAN,
+ "B_UUID_PATH" VARCHAR(1500),
+ "B_LANGUAGE" VARCHAR(20),
+ "B_LONG_NAME" VARCHAR(500),
+ "B_MODULE_UUID" VARCHAR(50),
+ "B_MODULE_UUID_PATH" VARCHAR(1500),
+ "B_NAME" VARCHAR(500),
+ "B_PATH" VARCHAR(2000),
+ "B_QUALIFIER" VARCHAR(10)
+);
+CREATE INDEX "PROJECTS_ORGANIZATION" ON "PROJECTS" ("ORGANIZATION_UUID");
+CREATE UNIQUE INDEX "PROJECTS_KEE" ON "PROJECTS" ("KEE");
+CREATE INDEX "PROJECTS_ROOT_UUID" ON "PROJECTS" ("ROOT_UUID");
+CREATE UNIQUE INDEX "PROJECTS_UUID" ON "PROJECTS" ("UUID");
+CREATE INDEX "PROJECTS_PROJECT_UUID" ON "PROJECTS" ("PROJECT_UUID");
+CREATE INDEX "PROJECTS_MODULE_UUID" ON "PROJECTS" ("MODULE_UUID");
+CREATE INDEX "PROJECTS_QUALIFIER" ON "PROJECTS" ("QUALIFIER");
--- /dev/null
+CREATE TABLE "PROJECTS" (
+ "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
+ "ORGANIZATION_UUID" VARCHAR(40) NOT NULL,
+ "KEE" VARCHAR(400),
+ "UUID" VARCHAR(50) NOT NULL,
+ "UUID_PATH" VARCHAR(1500) NOT NULL,
+ "ROOT_UUID" VARCHAR(50) NOT NULL,
+ "PROJECT_UUID" VARCHAR(50),
+ "MODULE_UUID" VARCHAR(50),
+ "MODULE_UUID_PATH" VARCHAR(1500),
+ "NAME" VARCHAR(2000),
+ "DESCRIPTION" VARCHAR(2000),
+ "PRIVATE" BOOLEAN,
+ "TAGS" VARCHAR(500),
+ "ENABLED" BOOLEAN NOT NULL DEFAULT TRUE,
+ "SCOPE" VARCHAR(3),
+ "QUALIFIER" VARCHAR(10),
+ "DEPRECATED_KEE" VARCHAR(400),
+ "PATH" VARCHAR(2000),
+ "LANGUAGE" VARCHAR(20),
+ "COPY_COMPONENT_UUID" VARCHAR(50),
+ "LONG_NAME" VARCHAR(2000),
+ "DEVELOPER_UUID" VARCHAR(50),
+ "CREATED_AT" TIMESTAMP,
+ "AUTHORIZATION_UPDATED_AT" BIGINT,
+ "B_CHANGED" BOOLEAN,
+ "B_COPY_COMPONENT_UUID" VARCHAR(50),
+ "B_DESCRIPTION" VARCHAR(2000),
+ "B_ENABLED" BOOLEAN,
+ "B_UUID_PATH" VARCHAR(1500),
+ "B_LANGUAGE" VARCHAR(20),
+ "B_LONG_NAME" VARCHAR(500),
+ "B_MODULE_UUID" VARCHAR(50),
+ "B_MODULE_UUID_PATH" VARCHAR(1500),
+ "B_NAME" VARCHAR(500),
+ "B_PATH" VARCHAR(2000),
+ "B_QUALIFIER" VARCHAR(10)
+);
+CREATE INDEX "PROJECTS_ORGANIZATION" ON "PROJECTS" ("ORGANIZATION_UUID");
+CREATE UNIQUE INDEX "PROJECTS_KEE" ON "PROJECTS" ("KEE");
+CREATE INDEX "PROJECTS_ROOT_UUID" ON "PROJECTS" ("ROOT_UUID");
+CREATE UNIQUE INDEX "PROJECTS_UUID" ON "PROJECTS" ("UUID");
+CREATE INDEX "PROJECTS_PROJECT_UUID" ON "PROJECTS" ("PROJECT_UUID");
+CREATE INDEX "PROJECTS_MODULE_UUID" ON "PROJECTS" ("MODULE_UUID");
+CREATE INDEX "PROJECTS_QUALIFIER" ON "PROJECTS" ("QUALIFIER");
--- /dev/null
+CREATE TABLE "PROJECTS" (
+ "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
+ "ORGANIZATION_UUID" VARCHAR(40) NOT NULL,
+ "KEE" VARCHAR(400),
+ "UUID" VARCHAR(50) NOT NULL,
+ "UUID_PATH" VARCHAR(1500) NOT NULL,
+ "ROOT_UUID" VARCHAR(50) NOT NULL,
+ "PROJECT_UUID" VARCHAR(50),
+ "MODULE_UUID" VARCHAR(50),
+ "MODULE_UUID_PATH" VARCHAR(1500),
+ "NAME" VARCHAR(2000),
+ "DESCRIPTION" VARCHAR(2000),
+ "PRIVATE" BOOLEAN,
+ "TAGS" VARCHAR(500),
+ "ENABLED" BOOLEAN NOT NULL DEFAULT TRUE,
+ "SCOPE" VARCHAR(3),
+ "QUALIFIER" VARCHAR(10),
+ "DEPRECATED_KEE" VARCHAR(400),
+ "PATH" VARCHAR(2000),
+ "LANGUAGE" VARCHAR(20),
+ "COPY_COMPONENT_UUID" VARCHAR(50),
+ "LONG_NAME" VARCHAR(2000),
+ "DEVELOPER_UUID" VARCHAR(50),
+ "CREATED_AT" TIMESTAMP,
+ "AUTHORIZATION_UPDATED_AT" BIGINT,
+ "B_CHANGED" BOOLEAN,
+ "B_COPY_COMPONENT_UUID" VARCHAR(50),
+ "B_DESCRIPTION" VARCHAR(2000),
+ "B_ENABLED" BOOLEAN,
+ "B_UUID_PATH" VARCHAR(1500),
+ "B_LANGUAGE" VARCHAR(20),
+ "B_LONG_NAME" VARCHAR(500),
+ "B_MODULE_UUID" VARCHAR(50),
+ "B_MODULE_UUID_PATH" VARCHAR(1500),
+ "B_NAME" VARCHAR(500),
+ "B_PATH" VARCHAR(2000),
+ "B_QUALIFIER" VARCHAR(10)
+);
+CREATE INDEX "PROJECTS_ORGANIZATION" ON "PROJECTS" ("ORGANIZATION_UUID");
+CREATE UNIQUE INDEX "PROJECTS_KEE" ON "PROJECTS" ("KEE");
+CREATE INDEX "PROJECTS_ROOT_UUID" ON "PROJECTS" ("ROOT_UUID");
+CREATE UNIQUE INDEX "PROJECTS_UUID" ON "PROJECTS" ("UUID");
+CREATE INDEX "PROJECTS_PROJECT_UUID" ON "PROJECTS" ("PROJECT_UUID");
+CREATE INDEX "PROJECTS_MODULE_UUID" ON "PROJECTS" ("MODULE_UUID");
+CREATE INDEX "PROJECTS_QUALIFIER" ON "PROJECTS" ("QUALIFIER");
project_uuid="uuid_1"
kee="file cpt key"
enabled="[true]"
- id="567"/>
+ id="567"
+ private="[false]"/>
<snapshots id="123"
uuid="u123"
component_uuid="uuid_1"
id="1"
root_uuid="ABCD"
project_uuid="ABCD"
- kee="ROOT_KEY"/>
+ kee="ROOT_KEY"
+ private="[false]"/>
</dataset>
project_uuid="ABCD"
id="1"
kee="ROOT_KEY"
- name="project"/>
+ name="project"
+ private="[false]"/>
<!-- 2008-11-11 -->
<!-- Version 0.9 -->
uuid="ABCD"
uuid_path="NOT_USED"
root_uuid="ABCD"
- project_uuid="ABCD"/>
+ project_uuid="ABCD"
+ private="[false]"/>
<!-- 2008-11-11 -->
<!-- Version 0.9 -->
project_uuid="ABCD"
id="1"
kee="ROOT_KEY"
- name="project"/>
+ name="project"
+ private="[false]"/>
<!-- 2008-11-11 -->
<!-- Version 0.9 -->
uuid="ABCD"
uuid_path="NOT_USED"
root_uuid="ABCD"
- project_uuid="ABCD"/>
+ project_uuid="ABCD"
+ private="[false]"/>
<!-- 2008-11-11 -->
<!-- Version 0.9 -->
kee="PROJECT_KEY"
name="project"
long_name="[null]"
- description="[null]"/>
+ description="[null]"
+ private="[false]"/>
<!-- Unprocessed snapshot -->
<snapshots id="1000"
scope="PRJ"
qualifier="TRK"
kee="struts"
- name="Struts"/>
+ name="Struts"
+ private="[false]"/>
<snapshots id="10"
uuid="u10"
component_uuid="ABCD"
scope="FIL"
qualifier="CLA"
kee="struts:Action"
- name="Action"/>
+ name="Action"
+ private="[false]"/>
<snapshots id="100"
uuid="u100"
component_uuid="BCDE"
id="1"
kee="struts"
root_uuid="ABCD"
- project_uuid="ABCD"/>
+ project_uuid="ABCD"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="BCDE"
uuid_path="NOT_USED"
id="2"
kee="struts:Action.java"
root_uuid="ABCD"
- project_uuid="ABCD"/>
+ project_uuid="ABCD"
+ private="[false]"/>
<snapshots id="1"
uuid="u1"
scope="PRJ"
qualifier="TRK"
kee="struts"
- name="Struts"/>
+ name="Struts"
+ private="[false]"/>
<snapshots id="10"
uuid="u10"
component_uuid="ABCD"
scope="FIL"
qualifier="CLA"
kee="struts:Action"
- name="Action"/>
+ name="Action"
+ private="[false]"/>
<snapshots id="100"
uuid="u100"
component_uuid="BCDE"
scope="PRJ"
qualifier="TRK"
kee="struts"
- name="Struts"/>
+ name="Struts"
+ private="[false]"/>
<snapshots id="10"
uuid="u10"
component_uuid="ABCD"
scope="FIL"
qualifier="CLA"
kee="struts:Action"
- name="Action"/>
+ name="Action"
+ private="[false]"/>
<snapshots id="100"
uuid="u100"
component_uuid="BCDE"
scope="PRJ"
qualifier="TRK"
kee="the_project"
- name="TheProject"/>
+ name="TheProject"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="THE_FILE"
uuid_path="NOT_USED"
scope="FIL"
qualifier="FIL"
kee="abcde"
- name="TheFile"/>
+ name="TheFile"
+ private="[false]"/>
<issues id="1"
kee="ABCDE"
scope="PRJ"
qualifier="TRK"
kee="the_project_1"
- name="TheProject1"/>
+ name="TheProject1"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="THE_FILE_1"
uuid_path="NOT_USED"
scope="FIL"
qualifier="FIL"
kee="the_file_1"
- name="TheFile1"/>
+ name="TheFile1"
+ private="[false]"/>
<issues id="1"
kee="ABCDE"
scope="PRJ"
qualifier="TRK"
kee="the_project_2"
- name="TheProject2"/>
+ name="TheProject2"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="THE_FILE_2"
uuid_path="NOT_USED"
scope="FIL"
qualifier="FIL"
kee="the_file_2"
- name="TheFile2"/>
+ name="TheFile2"
+ private="[false]"/>
<issues id="10"
kee="EDCBA"
scope="PRJ"
qualifier="TRK"
kee="struts"
- name="Struts"/>
+ name="Struts"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="MODULE"
uuid_path="NOT_USED"
scope="PRJ"
qualifier="BRC"
kee="struts-core"
- name="Struts Core"/>
+ name="Struts Core"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="FILE"
uuid_path="NOT_USED"
scope="FIL"
qualifier="FIL"
kee="struts:Action"
- name="Action"/>
+ name="Action"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="ROOT_FILE"
uuid_path="NOT_USED"
scope="FIL"
qualifier="FIL"
kee="pom"
- name="pom.xml"/>
+ name="pom.xml"
+ private="[false]"/>
<issues id="1"
kee="ABC"
scope="PRJ"
qualifier="TRK"
kee="struts"
- name="Struts"/>
+ name="Struts"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="MODULE"
uuid_path="NOT_USED"
scope="PRJ"
qualifier="BRC"
kee="struts-core"
- name="Struts Core"/>
+ name="Struts Core"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="FILE"
uuid_path="NOT_USED"
scope="FIL"
qualifier="FIL"
kee="struts:Action"
- name="Action"/>
+ name="Action"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="ROOT_FILE"
uuid_path="NOT_USED"
scope="FIL"
qualifier="FIL"
kee="pom"
- name="pom.xml"/>
+ name="pom.xml"
+ private="[false]"/>
<issues
id="1"
scope="PRJ"
qualifier="TRK"
kee="the_project_1"
- name="TheProject1"/>
+ name="TheProject1"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="THE_FILE_1"
uuid_path="NOT_USED"
scope="FIL"
qualifier="FIL"
kee="the_file_1"
- name="TheFile1"/>
+ name="TheFile1"
+ private="[false]"/>
<issues
id="1"
scope="PRJ"
qualifier="TRK"
kee="the_project_2"
- name="TheProject2"/>
+ name="TheProject2"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="THE_FILE_2"
uuid_path="NOT_USED"
scope="FIL"
qualifier="FIL"
kee="the_file_2"
- name="TheFile2"/>
+ name="TheFile2"
+ private="[false]"/>
<issues id="10"
kee="EDCBA"
scope="PRJ"
qualifier="TRK"
kee="struts"
- name="Struts"/>
+ name="Struts"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="MODULE1"
uuid_path="NOT_USED"
scope="PRJ"
qualifier="BRC"
kee="struts:struts-tiles"
- name="Struts Tiles"/>
+ name="Struts Tiles"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="DIR1"
uuid_path="NOT_USED"
scope="DIR"
qualifier="DIR"
kee="struts:struts-tiles:/"
- name="src/main/java/"/>
+ name="src/main/java/"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="FILE1"
uuid_path="NOT_USED"
scope="FIL"
qualifier="CLA"
kee="struts:Action"
- name="Action"/>
+ name="Action"
+ private="[false]"/>
<issues
id="1"
scope="PRJ"
qualifier="TRK"
kee="struts"
- name="Struts"/>
+ name="Struts"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="MODULE1"
uuid_path="NOT_USED"
scope="PRJ"
qualifier="BRC"
kee="struts:struts-tiles"
- name="Struts Tiles"/>
+ name="Struts Tiles"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="DIR1"
uuid_path="NOT_USED"
scope="DIR"
qualifier="DIR"
kee="struts:struts-tiles:/"
- name="src/main/java/"/>
+ name="src/main/java/"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="FILE1"
uuid_path="NOT_USED"
scope="FIL"
qualifier="CLA"
kee="struts:Action"
- name="Action"/>
+ name="Action"
+ private="[false]"/>
<issues
id="1"
scope="PRJ"
qualifier="TRK"
kee="org.struts:struts"
- name="Struts"/>
+ name="Struts"
+ private="[false]"/>
<snapshots id="100"
uuid="u100"
kee="struts"
root_uuid="ABCD"
qualifier="TRK"
- scope="PRJ"/>
+ scope="PRJ"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="CDEF"
uuid_path="NOT_USED"
kee="Action.java"
root_uuid="ABCD"
qualifier="CLA"
- scope="PRJ"/>
+ scope="PRJ"
+ private="[false]"/>
</dataset>
kee="struts"
root_uuid="ABCD"
qualifier="TRK"
- scope="PRJ"/>
+ scope="PRJ"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="CDEF"
uuid_path="NOT_USED"
kee="Action.java"
root_uuid="ABCD"
qualifier="CLA"
- scope="PRJ"/>
+ scope="PRJ"
+ private="[false]"/>
<file_sources id="101"
project_uuid="ABCD"
kee="struts"
root_uuid="ABCD"
qualifier="TRK"
- scope="PRJ"/>
+ scope="PRJ"
+ private="[false]"/>
<projects organization_uuid="org1"
uuid="CDEF"
uuid_path="NOT_USED"
kee="ActionTest.java"
root_uuid="ABCD"
qualifier="CLA"
- scope="PRJ"/>
+ scope="PRJ"
+ private="[false]"/>
<file_sources id="100"
project_uuid="ABCD"
qualifier="VW"
name="All projects"
path="[null]"
- id="10"/>
+ id="10"
+ private="[false]"/>
<snapshots id="10"
uuid="u10"
component_uuid="ABCD"
qualifier="TRK"
name="Struts"
path="[null]"
- id="110"/>
+ id="110"
+ private="[false]"/>
<snapshots id="110"
uuid="u110"
component_uuid="BCDE"
qualifier="VW"
name="By Language"
path="[null]"
- id="11"/>
+ id="11"
+ private="[false]"/>
<snapshots id="11"
uuid="u11"
component_uuid="EFGH"
qualifier="TRK"
name="SSLR"
path="[null]"
- id="112"/>
+ id="112"
+ private="[false]"/>
<snapshots id="112"
uuid="u112"
component_uuid="GHIJ"
qualifier="SVW"
name="Java projects"
path="[null]"
- id="13"/>
+ id="13"
+ private="[false]"/>
<snapshots id="13"
uuid="u13"
component_uuid="FGHI"
qualifier="TRK"
name="Struts"
path="[null]"
- id="113"/>
+ id="113"
+ private="[false]"/>
<snapshots id="113"
uuid="u113"
component_uuid="HIJK"
qualifier="VW"
name="Other projects"
path="[null]"
- id="14"/>
+ id="14"
+ private="[false]"/>
<snapshots id="14"
uuid="u14"
component_uuid="IJKL"
scope="PRJ"
qualifier="TRK"
kee="org.struts:struts"
- name="Struts"/>
+ name="Struts"
+ private="[false]"/>
<snapshots id="100"
uuid="u100"
component_uuid="JKLM"
scope="PRJ"
qualifier="TRK"
kee="org.elasticsearch:elasticsearch"
- name="Elasticsearch"/>
+ name="Elasticsearch"
+ private="[false]"/>
<snapshots id="101"
uuid="u101"
component_uuid="KLMN"