Skip to content

Commit 2f2e10f

Browse files
committed
Add improvement to show in which revision the scoped resource is used
1 parent 27b6ffe commit 2f2e10f

File tree

6 files changed

+64
-6
lines changed

6 files changed

+64
-6
lines changed

components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/dao/ApiMgtDAO.java

+19-1
Original file line numberDiff line numberDiff line change
@@ -16398,19 +16398,37 @@ public SharedScopeUsage getSharedScopeUsage(String uuid, int tenantId) throws AP
1639816398
API usedApi = new API(apiIdentifier);
1639916399
usedApi.setContext(apiUsageResultSet.getString("CONTEXT"));
1640016400

16401+
//in case the record is for an API revision set isRevision to true
16402+
String revisionUuid = apiUsageResultSet.getString("REVISION_UUID");
16403+
String GET_SHARED_SCOPE_URI_USAGE_BY_TENANT = SQLConstants.GET_SHARED_SCOPE_URI_USAGE_IN_CURRENT_APIS_BY_TENANT;
16404+
if (StringUtils.isNotEmpty(revisionUuid)) {
16405+
usedApi.setRevision(true);
16406+
GET_SHARED_SCOPE_URI_USAGE_BY_TENANT = SQLConstants.GET_SHARED_SCOPE_URI_USAGE_IN_REVISIONS_BY_TENANT;
16407+
}
16408+
1640116409
try (PreparedStatement psForUriUsage = connection
16402-
.prepareStatement(SQLConstants.GET_SHARED_SCOPE_URI_USAGE_BY_TENANT)) {
16410+
.prepareStatement(GET_SHARED_SCOPE_URI_USAGE_BY_TENANT)) {
1640316411
int apiId = apiUsageResultSet.getInt("API_ID");
1640416412
Set<URITemplate> usedUriTemplates = new LinkedHashSet<>();
1640516413
psForUriUsage.setString(1, uuid);
1640616414
psForUriUsage.setInt(2, tenantId);
1640716415
psForUriUsage.setInt(3, apiId);
16416+
16417+
if (usedApi.isRevision()) {
16418+
psForUriUsage.setString(4, revisionUuid);
16419+
}
16420+
1640816421
try (ResultSet uriUsageResultSet = psForUriUsage.executeQuery()) {
1640916422
while (uriUsageResultSet.next()) {
1641016423
URITemplate usedUriTemplate = new URITemplate();
1641116424
usedUriTemplate.setUriTemplate(uriUsageResultSet.getString("URL_PATTERN"));
1641216425
usedUriTemplate.setHTTPVerb(uriUsageResultSet.getString("HTTP_METHOD"));
1641316426
usedUriTemplates.add(usedUriTemplate);
16427+
16428+
if (usedApi.isRevision()) {
16429+
APIRevision revision = getRevisionByRevisionUUID(connection, revisionUuid);
16430+
usedApi.setRevisionId(revision.getId());
16431+
}
1641416432
}
1641516433
}
1641616434
usedApi.setUriTemplates(usedUriTemplates);

components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/dao/constants/SQLConstants.java

+15-4
Original file line numberDiff line numberDiff line change
@@ -3522,17 +3522,28 @@ public static class RevokedJWTConstants {
35223522
+ "FROM AM_SHARED_SCOPE SS "
35233523
+ "WHERE SS.TENANT_ID = ?";
35243524
public static final String GET_SHARED_SCOPE_API_USAGE_BY_TENANT =
3525-
"SELECT AA.API_ID, AA.API_NAME, AA.CONTEXT, AA.API_VERSION, AA.API_PROVIDER "
3525+
"SELECT AA.API_ID, AA.API_NAME, AA.CONTEXT, AA.API_VERSION, AA.API_PROVIDER, AAUM.REVISION_UUID "
35263526
+ "FROM AM_SHARED_SCOPE ASSC, AM_API_RESOURCE_SCOPE_MAPPING AARSM, "
35273527
+ "AM_API_URL_MAPPING AAUM, AM_API AA "
35283528
+ "WHERE ASSC.NAME=AARSM.SCOPE_NAME AND "
35293529
+ "AARSM.URL_MAPPING_ID=AAUM.URL_MAPPING_ID AND "
3530-
+ "AAUM.API_ID=AA.API_ID AND AAUM.REVISION_UUID IS NULL AND "
3530+
+ "AAUM.API_ID=AA.API_ID AND "
35313531
+ "ASSC.UUID=? AND "
35323532
+ "AARSM.TENANT_ID=? "
3533-
+ "GROUP BY AA.API_ID, AA.API_NAME, AA.CONTEXT, AA.API_VERSION, AA.API_PROVIDER";
3533+
+ "GROUP BY AA.API_ID, AA.API_NAME, AA.CONTEXT, AA.API_VERSION, AA.API_PROVIDER, AAUM.REVISION_UUID";
3534+
3535+
public static final String GET_SHARED_SCOPE_URI_USAGE_IN_REVISIONS_BY_TENANT =
3536+
"SELECT AAUM.URL_PATTERN, AAUM.HTTP_METHOD "
3537+
+ "FROM AM_SHARED_SCOPE ASSC, AM_API_RESOURCE_SCOPE_MAPPING AARSM, "
3538+
+ "AM_API_URL_MAPPING AAUM, AM_API AA "
3539+
+ "WHERE ASSC.NAME=AARSM.SCOPE_NAME AND "
3540+
+ "AARSM.URL_MAPPING_ID=AAUM.URL_MAPPING_ID AND "
3541+
+ "AAUM.API_ID=AA.API_ID AND "
3542+
+ "ASSC.UUID=? AND "
3543+
+ "AARSM.TENANT_ID=? AND "
3544+
+ "AA.API_ID=? AND AAUM.REVISION_UUID=?";
35343545

3535-
public static final String GET_SHARED_SCOPE_URI_USAGE_BY_TENANT =
3546+
public static final String GET_SHARED_SCOPE_URI_USAGE_IN_CURRENT_APIS_BY_TENANT =
35363547
"SELECT AAUM.URL_PATTERN, AAUM.HTTP_METHOD "
35373548
+ "FROM AM_SHARED_SCOPE ASSC, AM_API_RESOURCE_SCOPE_MAPPING AARSM, "
35383549
+ "AM_API_URL_MAPPING AAUM, AM_API AA "

components/apimgt/org.wso2.carbon.apimgt.rest.api.common/src/main/resources/publisher-api.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -11097,6 +11097,9 @@ components:
1109711097
description: |
1109811098
If the provider value is not given user invoking the api will be used as the provider.
1109911099
example: admin
11100+
revisionID:
11101+
type: string
11102+
example: Revision 1
1110011103
usedResourceList:
1110111104
type: array
1110211105
description: |

components/apimgt/org.wso2.carbon.apimgt.rest.api.publisher.v1.common/src/gen/java/org/wso2/carbon/apimgt/rest/api/publisher/v1/dto/SharedScopeUsedAPIInfoDTO.java

+21-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public class SharedScopeUsedAPIInfoDTO {
2727
private String context = null;
2828
private String version = null;
2929
private String provider = null;
30+
private String revisionID = null;
3031
private List<SharedScopeUsedAPIResourceInfoDTO> usedResourceList = new ArrayList<SharedScopeUsedAPIResourceInfoDTO>();
3132

3233
/**
@@ -101,6 +102,23 @@ public void setProvider(String provider) {
101102
this.provider = provider;
102103
}
103104

105+
/**
106+
**/
107+
public SharedScopeUsedAPIInfoDTO revisionID(String revisionID) {
108+
this.revisionID = revisionID;
109+
return this;
110+
}
111+
112+
113+
@ApiModelProperty(example = "Revision 1", value = "")
114+
@JsonProperty("revisionID")
115+
public String getRevisionID() {
116+
return revisionID;
117+
}
118+
public void setRevisionID(String revisionID) {
119+
this.revisionID = revisionID;
120+
}
121+
104122
/**
105123
* Resource list which have used the shared scope within this API
106124
**/
@@ -134,12 +152,13 @@ public boolean equals(java.lang.Object o) {
134152
Objects.equals(context, sharedScopeUsedAPIInfo.context) &&
135153
Objects.equals(version, sharedScopeUsedAPIInfo.version) &&
136154
Objects.equals(provider, sharedScopeUsedAPIInfo.provider) &&
155+
Objects.equals(revisionID, sharedScopeUsedAPIInfo.revisionID) &&
137156
Objects.equals(usedResourceList, sharedScopeUsedAPIInfo.usedResourceList);
138157
}
139158

140159
@Override
141160
public int hashCode() {
142-
return Objects.hash(name, context, version, provider, usedResourceList);
161+
return Objects.hash(name, context, version, provider, revisionID, usedResourceList);
143162
}
144163

145164
@Override
@@ -151,6 +170,7 @@ public String toString() {
151170
sb.append(" context: ").append(toIndentedString(context)).append("\n");
152171
sb.append(" version: ").append(toIndentedString(version)).append("\n");
153172
sb.append(" provider: ").append(toIndentedString(provider)).append("\n");
173+
sb.append(" revisionID: ").append(toIndentedString(revisionID)).append("\n");
154174
sb.append(" usedResourceList: ").append(toIndentedString(usedResourceList)).append("\n");
155175
sb.append("}");
156176
return sb.toString();

components/apimgt/org.wso2.carbon.apimgt.rest.api.publisher.v1.common/src/main/java/org/wso2/carbon/apimgt/rest/api/publisher/v1/common/mappings/SharedScopeMappingUtil.java

+3
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ public static SharedScopeUsageDTO fromSharedScopeUsageToDTO(SharedScopeUsage sha
7575
usedAPIInfoDTO.setProvider(apiIdentifier.getProviderName());
7676
usedAPIInfoDTO.setContext(api.getContext());
7777

78+
String revisionName = api.getRevisionId() != 0 ? "Revision " + api.getRevisionId() : "Current API";
79+
usedAPIInfoDTO.setRevisionID(revisionName);
80+
7881
List<SharedScopeUsedAPIResourceInfoDTO> usedAPIResourceInfoDTOList = new ArrayList<>();
7982
for (URITemplate uriTemplate : api.getUriTemplates()) {
8083
SharedScopeUsedAPIResourceInfoDTO usedAPIResourceInfoDTO = new SharedScopeUsedAPIResourceInfoDTO();

components/apimgt/org.wso2.carbon.apimgt.rest.api.publisher.v1/src/main/resources/publisher-api.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -11097,6 +11097,9 @@ components:
1109711097
description: |
1109811098
If the provider value is not given user invoking the api will be used as the provider.
1109911099
example: admin
11100+
revisionID:
11101+
type: string
11102+
example: Revision 1
1110011103
usedResourceList:
1110111104
type: array
1110211105
description: |

0 commit comments

Comments
 (0)