From 8b7c9dc209132df0492eef1b28ad42c8f0430269 Mon Sep 17 00:00:00 2001 From: dakshina Date: Sun, 12 Jan 2025 11:47:34 +0530 Subject: [PATCH] Implement Labels Feature --- .../org/wso2/carbon/apimgt/api/APIAdmin.java | 49 ++ .../wso2/carbon/apimgt/api/APIProvider.java | 40 ++ .../carbon/apimgt/api/ExceptionCodes.java | 17 +- .../carbon/apimgt/api/model/ApiResult.java | 78 +++ .../wso2/carbon/apimgt/api/model/Label.java | 24 +- .../wso2/carbon/apimgt/impl/APIAdminImpl.java | 105 ++++ .../wso2/carbon/apimgt/impl/APIConstants.java | 1 + .../carbon/apimgt/impl/APIConsumerImpl.java | 40 -- .../carbon/apimgt/impl/APIProviderImpl.java | 105 +++- .../apimgt/impl/AbstractAPIManager.java | 3 + .../carbon/apimgt/impl/dao/LabelsDAO.java | 487 ++++++++++++++++++ .../impl/dao/constants/SQLConstants.java | 41 ++ .../RegistryPersistenceUtilTestCase.java | 5 - .../apimgt/rest/api/admin/v1/LabelsApi.java | 123 +++++ .../rest/api/admin/v1/LabelsApiService.java | 31 ++ .../rest/api/admin/v1/dto/LabelDTO.java | 122 +++++ .../rest/api/admin/v1/dto/LabelListDTO.java | 129 +++++ .../api/admin/v1/dto/LabelUsageApisDTO.java | 110 ++++ .../rest/api/admin/v1/dto/LabelUsageDTO.java | 83 +++ .../admin/v1/impl/LabelsApiServiceImpl.java | 108 ++++ .../v1/utils/mappings/LabelMappingUtil.java | 93 ++++ .../mappings/LabelsUsageMappingUtil.java | 77 +++ .../src/main/resources/admin-api.yaml | 228 ++++++++ .../src/main/webapp/WEB-INF/beans.xml | 1 + .../src/main/webapp/WEB-INF/web.xml | 3 +- .../rest/api/common/RestApiConstants.java | 2 + .../src/main/resources/admin-api.yaml | 228 ++++++++ .../src/main/resources/publisher-api.yaml | 190 +++++++ .../rest/api/publisher/v1/dto/LabelDTO.java | 122 +++++ .../api/publisher/v1/dto/LabelListDTO.java | 129 +++++ .../publisher/v1/dto/RequestLabelListDTO.java | 86 ++++ .../v1/common/mappings/APIMappingUtil.java | 2 +- .../v1/common/mappings/LabelMappingUtil.java | 86 ++++ .../apimgt/rest/api/publisher/v1/ApisApi.java | 59 +++ .../rest/api/publisher/v1/ApisApiService.java | 5 + .../rest/api/publisher/v1/LabelsApi.java | 53 ++ .../api/publisher/v1/LabelsApiService.java | 24 + .../publisher/v1/impl/ApisApiServiceImpl.java | 26 +- .../v1/impl/LabelsApiServiceImpl.java | 47 ++ .../src/main/resources/publisher-api.yaml | 190 +++++++ .../src/main/webapp/WEB-INF/beans.xml | 1 + .../src/main/webapp/WEB-INF/web.xml | 3 +- .../multi-dc/OGG/oracle/apimgt/tables.sql | 17 + .../multi-dc/OGG/oracle/apimgt/tables_23c.sql | 17 + .../multi-dc/Postgresql/apimgt/tables.sql | 21 +- .../SQLServer/mssql/apimgt/tables.sql | 17 + .../src/main/resources/sql/db2.sql | 17 + .../src/main/resources/sql/h2.sql | 17 + .../src/main/resources/sql/mssql.sql | 18 + .../src/main/resources/sql/mysql.sql | 17 + .../src/main/resources/sql/mysql_cluster.sql | 17 + .../src/main/resources/sql/oracle.sql | 19 + .../src/main/resources/sql/oracle_23c.sql | 19 + .../src/main/resources/sql/oracle_rac.sql | 19 + .../src/main/resources/sql/postgresql.sql | 19 + .../src/main/resources/sql/h2.sql | 18 + 56 files changed, 3520 insertions(+), 88 deletions(-) create mode 100644 components/apimgt/org.wso2.carbon.apimgt.api/src/main/java/org/wso2/carbon/apimgt/api/model/ApiResult.java create mode 100644 components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/dao/LabelsDAO.java create mode 100644 components/apimgt/org.wso2.carbon.apimgt.rest.api.admin.v1/src/gen/java/org/wso2/carbon/apimgt/rest/api/admin/v1/LabelsApi.java create mode 100644 components/apimgt/org.wso2.carbon.apimgt.rest.api.admin.v1/src/gen/java/org/wso2/carbon/apimgt/rest/api/admin/v1/LabelsApiService.java create mode 100644 components/apimgt/org.wso2.carbon.apimgt.rest.api.admin.v1/src/gen/java/org/wso2/carbon/apimgt/rest/api/admin/v1/dto/LabelDTO.java create mode 100644 components/apimgt/org.wso2.carbon.apimgt.rest.api.admin.v1/src/gen/java/org/wso2/carbon/apimgt/rest/api/admin/v1/dto/LabelListDTO.java create mode 100644 components/apimgt/org.wso2.carbon.apimgt.rest.api.admin.v1/src/gen/java/org/wso2/carbon/apimgt/rest/api/admin/v1/dto/LabelUsageApisDTO.java create mode 100644 components/apimgt/org.wso2.carbon.apimgt.rest.api.admin.v1/src/gen/java/org/wso2/carbon/apimgt/rest/api/admin/v1/dto/LabelUsageDTO.java create mode 100644 components/apimgt/org.wso2.carbon.apimgt.rest.api.admin.v1/src/main/java/org/wso2/carbon/apimgt/rest/api/admin/v1/impl/LabelsApiServiceImpl.java create mode 100644 components/apimgt/org.wso2.carbon.apimgt.rest.api.admin.v1/src/main/java/org/wso2/carbon/apimgt/rest/api/admin/v1/utils/mappings/LabelMappingUtil.java create mode 100644 components/apimgt/org.wso2.carbon.apimgt.rest.api.admin.v1/src/main/java/org/wso2/carbon/apimgt/rest/api/admin/v1/utils/mappings/LabelsUsageMappingUtil.java create mode 100644 components/apimgt/org.wso2.carbon.apimgt.rest.api.publisher.v1.common/src/gen/java/org/wso2/carbon/apimgt/rest/api/publisher/v1/dto/LabelDTO.java create mode 100644 components/apimgt/org.wso2.carbon.apimgt.rest.api.publisher.v1.common/src/gen/java/org/wso2/carbon/apimgt/rest/api/publisher/v1/dto/LabelListDTO.java create mode 100644 components/apimgt/org.wso2.carbon.apimgt.rest.api.publisher.v1.common/src/gen/java/org/wso2/carbon/apimgt/rest/api/publisher/v1/dto/RequestLabelListDTO.java create mode 100644 components/apimgt/org.wso2.carbon.apimgt.rest.api.publisher.v1.common/src/main/java/org/wso2/carbon/apimgt/rest/api/publisher/v1/common/mappings/LabelMappingUtil.java create mode 100644 components/apimgt/org.wso2.carbon.apimgt.rest.api.publisher.v1/src/gen/java/org/wso2/carbon/apimgt/rest/api/publisher/v1/LabelsApi.java create mode 100644 components/apimgt/org.wso2.carbon.apimgt.rest.api.publisher.v1/src/gen/java/org/wso2/carbon/apimgt/rest/api/publisher/v1/LabelsApiService.java create mode 100644 components/apimgt/org.wso2.carbon.apimgt.rest.api.publisher.v1/src/main/java/org/wso2/carbon/apimgt/rest/api/publisher/v1/impl/LabelsApiServiceImpl.java diff --git a/components/apimgt/org.wso2.carbon.apimgt.api/src/main/java/org/wso2/carbon/apimgt/api/APIAdmin.java b/components/apimgt/org.wso2.carbon.apimgt.api/src/main/java/org/wso2/carbon/apimgt/api/APIAdmin.java index 8d06ba4e1ed2..1358f452c217 100644 --- a/components/apimgt/org.wso2.carbon.apimgt.api/src/main/java/org/wso2/carbon/apimgt/api/APIAdmin.java +++ b/components/apimgt/org.wso2.carbon.apimgt.api/src/main/java/org/wso2/carbon/apimgt/api/APIAdmin.java @@ -20,10 +20,12 @@ import org.wso2.carbon.apimgt.api.dto.KeyManagerConfigurationDTO; import org.wso2.carbon.apimgt.api.dto.KeyManagerPermissionConfigurationDTO; import org.wso2.carbon.apimgt.api.model.APICategory; +import org.wso2.carbon.apimgt.api.model.ApiResult; import org.wso2.carbon.apimgt.api.model.Application; import org.wso2.carbon.apimgt.api.model.ApplicationInfo; import org.wso2.carbon.apimgt.api.model.Environment; import org.wso2.carbon.apimgt.api.model.LLMProvider; +import org.wso2.carbon.apimgt.api.model.Label; import org.wso2.carbon.apimgt.api.model.Monetization; import org.wso2.carbon.apimgt.api.model.MonetizationUsagePublishInfo; import org.wso2.carbon.apimgt.api.model.Workflow; @@ -266,6 +268,53 @@ void updateMonetizationUsagePublishInfo(MonetizationUsagePublishInfo monetizatio */ APICategory getAPICategoryByID(String apiCategoryId) throws APIManagementException; + /** + * Adds a new label for the tenant + * + * @param label label to add + * @param tenantDomain tenant domain + * @throws APIManagementException if failed add label + */ + Label addLabel(Label label, String tenantDomain) throws APIManagementException; + + /** + * Updates a label + * + * @param labelID label ID to update + * @param updateLabelBody label data to update + * @param tenantDomain tenant domain + * @throws APIManagementException if failed update label + */ + Label updateLabel(String labelID, Label updateLabelBody, String tenantDomain) throws APIManagementException; + + /** + * Delete a label + * + * @param labelID label ID to delete + * @param tenantDomain tenant domain + * @throws APIManagementException if failed delete label + */ + void deleteLabel(String labelID, String tenantDomain) throws APIManagementException; + + /** + * Returns all labels of the tenant + * + * @param tenantDomain tenant domain + * @return List