Skip to content

Commit af79acc

Browse files
authored
Merge pull request #18 from MicroFocus/dmoldoveanu_story_1234009
user story #1234009: changed the 'View in Octane' link based on octane server version
2 parents 9f32eda + 6aac64b commit af79acc

File tree

6 files changed

+34
-18
lines changed

6 files changed

+34
-18
lines changed

src/main/java/com/microfocus/octane/plugins/configuration/OctaneRestManager.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ public class OctaneRestManager {
4444

4545
private static final Logger log = LoggerFactory.getLogger(OctaneRestManager.class);
4646

47-
private static LoadingCache<String, VersionEntity> versionCache = CacheBuilder
47+
private static LoadingCache<SpaceConfiguration, VersionEntity> versionCache = CacheBuilder
4848
.newBuilder()
4949
.expireAfterWrite(30, TimeUnit.MINUTES)
50-
.build((new CacheLoader<String, VersionEntity>() {
50+
.build((new CacheLoader<SpaceConfiguration, VersionEntity>() {
5151
@Override
52-
public VersionEntity load(@NotNull String spaceConfigId) {
53-
return getOctaneServerVersion(spaceConfigId);
52+
public VersionEntity load(@NotNull SpaceConfiguration sc) {
53+
return getOctaneServerVersion(sc);
5454
}
5555
}));
5656

@@ -71,7 +71,7 @@ private static String getQueryParamBasedOnTypeAndVersion(SpaceConfiguration sc,
7171
if (hasSubtype) {
7272
VersionEntity versionEntity;
7373
try {
74-
versionEntity = versionCache.get(sc.getId());
74+
versionEntity = versionCache.get(sc);
7575
} catch (ExecutionException e) {
7676
throw new RuntimeException(e.getMessage());
7777
}
@@ -88,9 +88,7 @@ private static String getQueryParamBasedOnTypeAndVersion(SpaceConfiguration sc,
8888
return getQueryParam(octaneEntity, typeDescriptor);
8989
}
9090

91-
private static VersionEntity getOctaneServerVersion(String spaceConfigId) {
92-
SpaceConfiguration sc = ConfigurationManager.getInstance().getSpaceConfigurationById(spaceConfigId, true).get();
93-
91+
public static VersionEntity getOctaneServerVersion(SpaceConfiguration sc) {
9492
String url = "/admin/server/version";
9593
Map<String, String> headers = createHeaderMapWithOctaneClientType();
9694
headers.put(RestConnector.HEADER_ACCEPT, RestConnector.HEADER_APPLICATION_JSON);

src/main/java/com/microfocus/octane/plugins/configuration/PluginConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,5 @@ public class PluginConstants {
1919
public static final String DEFAULT_BUILD = "9999";
2020
public static final String SEPARATOR = ".";
2121
public static final String FUGEES_VERSION = "15.1.90";
22+
public static final String GUNSNROSES_PUSH2 = "16.0.16";
2223
}

src/main/java/com/microfocus/octane/plugins/configuration/SpaceConfiguration.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import org.codehaus.jackson.annotate.JsonIgnore;
2121
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
2222

23+
import java.util.Objects;
24+
2325
@JsonIgnoreProperties(ignoreUnknown = true)
2426
public class SpaceConfiguration {
2527

@@ -98,4 +100,17 @@ public RestConnector getRestConnector() {
98100
public void clearRestConnector() {
99101
restConnector = null;
100102
}
103+
104+
@Override
105+
public boolean equals(Object o) {
106+
if (this == o) return true;
107+
if (o == null || getClass() != o.getClass()) return false;
108+
SpaceConfiguration that = (SpaceConfiguration) o;
109+
return location.equals(that.location) && locationParts.equals(that.locationParts) && id.equals(that.id);
110+
}
111+
112+
@Override
113+
public int hashCode() {
114+
return Objects.hash(location, locationParts, id);
115+
}
101116
}

src/main/java/com/microfocus/octane/plugins/descriptors/OctaneEntityTypeDescriptor.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
package com.microfocus.octane.plugins.descriptors;
1717

18+
import com.microfocus.octane.plugins.configuration.*;
19+
1820
public class OctaneEntityTypeDescriptor {
1921

2022
/***
@@ -62,7 +64,7 @@ public class OctaneEntityTypeDescriptor {
6264
*/
6365
private String indirectCoveringTestsField;
6466

65-
private static final String TESTS_URL_FOR_DEFECTS = "&configuration={\"tabName\":\"%s\",\"relation_name\":\"test_to_work_items-gherkin_test-scenario_test-test_automated-test_manual-test_suite-target\"}";
67+
private static final String TESTS_URL_FOR_DEFECTS = "&configuration={\"tabName\":\"relationships\",\"relation_name\":\"test_to_work_items-gherkin_test-scenario_test-test_automated-test_manual-test_suite-target\"}";
6668

6769
public OctaneEntityTypeDescriptor(String typeName, String alias, String typeAbbreviation, String label, String typeColor, String nameForNavigation, String testTabName, String testReferenceField, String indirectCoveringTestsField) {
6870
this.typeName = typeName;
@@ -103,13 +105,14 @@ public String buildEntityUrl(String baseUrl, long spaceId, long workspaceId, Str
103105
return octaneEntityUrl;
104106
}
105107

106-
public String buildTestTabEntityUrl(String baseUrl, long spaceId, long workspaceId, String entityId, String subtype) {
107-
if (("defect").equals(subtype)) {
108-
String defectTestsUrl = String.format(TESTS_URL_FOR_DEFECTS, getTestTabName());
108+
public String buildTestTabEntityUrl(SpaceConfiguration sc, long workspaceId, String entityId, String subtype) {
109+
VersionEntity versionEntity = OctaneRestManager.getOctaneServerVersion(sc);
110+
OctaneServerVersion octaneServerVersion = new OctaneServerVersion(versionEntity.getVersion());
109111

110-
return buildEntityUrl(baseUrl, spaceId, workspaceId, entityId) + defectTestsUrl;
112+
if (("defect").equals(subtype) && octaneServerVersion.isLessThan(new OctaneServerVersion(PluginConstants.GUNSNROSES_PUSH2))) {
113+
return buildEntityUrl(sc.getLocationParts().getBaseUrl(), sc.getLocationParts().getSpaceId(), workspaceId, entityId) + TESTS_URL_FOR_DEFECTS;
111114
} else {
112-
return buildEntityUrl(baseUrl, spaceId, workspaceId, entityId) + "&tabName=" + getTestTabName();
115+
return buildEntityUrl(sc.getLocationParts().getBaseUrl(), sc.getLocationParts().getSpaceId(), workspaceId, entityId) + "&tabName=" + getTestTabName();
113116
}
114117
}
115118

src/main/java/com/microfocus/octane/plugins/descriptors/OctaneEntityTypeManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class OctaneEntityTypeManager {
2828
//TYPE
2929
OctaneEntityTypeDescriptor featureType = new OctaneEntityTypeDescriptor("feature", null, "F", "Feature", "#e57828", "work_item", "tests_in_backlog", "covered_content", "work_items_of_last_run");
3030
OctaneEntityTypeDescriptor storyType = new OctaneEntityTypeDescriptor("story", null, "US", "User Story", "#ffb000", "work_item", "tests_in_backlog", "covered_content", "work_items_of_last_run");
31-
OctaneEntityTypeDescriptor defectType = new OctaneEntityTypeDescriptor("defect", null, "D", "Defect", "#b21646", "work_item", "relationships", "covered_content", "work_items_of_last_run");
31+
OctaneEntityTypeDescriptor defectType = new OctaneEntityTypeDescriptor("defect", null, "D", "Defect", "#b21646", "work_item", "tests_in_backlog", "covered_content", "work_items_of_last_run");
3232

3333
OctaneEntityTypeDescriptor requirementType = new OctaneEntityTypeDescriptor("requirement_document", null, "RD", "Requirement", "#0b8eac", "requirement", "tests_in_requirement", "covered_requirement", null);
3434
OctaneEntityTypeDescriptor applicationModuleType = new OctaneEntityTypeDescriptor("product_area", "application_module", "AM", "Application Module", "#43e4ff", "product_area", "tests-in-pa", "product_areas", null);

src/main/java/com/microfocus/octane/plugins/views/CoverageUiHelper.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -241,9 +241,8 @@ public static Map<String, Object> buildCoverageContextMap(String projectKey, Str
241241
//fill context map
242242
octaneEntity.put("url", typeDescriptor.buildEntityUrl(spaceConfiguration.getLocationParts().getBaseUrl(),
243243
spaceConfiguration.getLocationParts().getSpaceId(), workspaceConfig.getWorkspaceId(), octaneEntity.getId()));
244-
octaneEntity.put("testTabUrl", typeDescriptor.buildTestTabEntityUrl(spaceConfiguration.getLocationParts().getBaseUrl(),
245-
spaceConfiguration.getLocationParts().getSpaceId(), workspaceConfig.getWorkspaceId(), octaneEntity.getId(),
246-
(String) octaneEntity.getFields().get("subtype")));
244+
octaneEntity.put("testTabUrl", typeDescriptor.buildTestTabEntityUrl(spaceConfiguration, workspaceConfig.getWorkspaceId(),
245+
octaneEntity.getId(), (String) octaneEntity.getFields().get("subtype")));
247246
octaneEntity.put("typeAbbreviation", typeDescriptor.getTypeAbbreviation());
248247
octaneEntity.put("typeColor", typeDescriptor.getTypeColor());
249248
contextMap.put("octaneEntity", octaneEntity);

0 commit comments

Comments
 (0)