Skip to content

Commit

Permalink
Refactor code
Browse files Browse the repository at this point in the history
Remove logical methods from model classes and move them to util classes
  • Loading branch information
SavinduDimal committed Feb 6, 2025
1 parent 005d2b5 commit d3c4cb6
Show file tree
Hide file tree
Showing 5 changed files with 158 additions and 77 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.LinkedHashSet;
Expand Down Expand Up @@ -780,37 +779,6 @@ public void removeAllTiersForOrganizations() {
availableTiersForOrganizations.clear();
}

public void setAvailableTiersForOrganizationsFromString(String tiersString) {

if (tiersString == null || tiersString.isEmpty()) {
return;
}
try {
ObjectMapper objectMapper = new ObjectMapper();
OrganizationTiers[] tiersArray = objectMapper.readValue(tiersString, OrganizationTiers[].class);
availableTiersForOrganizations = new LinkedHashSet<>(Arrays.asList(tiersArray));
} catch (Exception e) {
log.error("Error while converting string to availableTiersForOrganizations object for API : " + getUUID(),
e);
}
}

public String getAvailableTiersForOrganizationsAsString() {
if (availableTiersForOrganizations == null || availableTiersForOrganizations.isEmpty()) {
return null;
}
try {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(availableTiersForOrganizations);
} catch (JsonProcessingException e) {
log.error("Error while converting availableTiersForOrganizations to string for API : " + getUUID(), e);
return null;
} catch (Exception e) {
log.error("Unexpected error while processing availableTiersForOrganizations for API : " + getUUID(), e);
return null;
}
}

public Set<URITemplate> getUriTemplates() {
return uriTemplates;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

package org.wso2.carbon.apimgt.impl.utils;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
Expand Down Expand Up @@ -695,7 +696,7 @@ public static API getAPI(GovernanceArtifact artifact)

// Set available tiers for organizations
String organizationTiers = artifact.getAttribute(APIConstants.API_OVERVIEW_ORGANIZATION_TIERS);
api.setAvailableTiersForOrganizationsFromString(organizationTiers);
api.setAvailableTiersForOrganizations(getAvailableTiersForOrganizationsFromString(organizationTiers));

api.addAvailableTiers(availablePolicy);
String tenantDomainName = MultitenantUtils.getTenantDomain(replaceEmailDomainBack(providerName));
Expand Down Expand Up @@ -824,7 +825,7 @@ public static API getLightWeightAPI(GovernanceArtifact artifact)

// Set available tiers for organizations
String organizationTiers = artifact.getAttribute(APIConstants.API_OVERVIEW_ORGANIZATION_TIERS);
api.setAvailableTiersForOrganizationsFromString(organizationTiers);
api.setAvailableTiersForOrganizations(getAvailableTiersForOrganizationsFromString(organizationTiers));

String tenantDomainName = MultitenantUtils.getTenantDomain(replaceEmailDomainBack(providerName));
api.setMonetizationCategory(getAPIMonetizationCategory(availablePolicy, tenantDomainName));
Expand Down Expand Up @@ -1005,9 +1006,9 @@ public static GenericArtifact createAPIArtifactContent(GenericArtifact artifact,
artifact.setAttribute(APIConstants.API_OVERVIEW_TIER, tiers);
}

if (api.getAvailableTiersForOrganizationsAsString() != null) {
if (getAvailableTiersForOrganizationsAsString(api) != null) {
artifact.setAttribute(APIConstants.API_OVERVIEW_ORGANIZATION_TIERS,
api.getAvailableTiersForOrganizationsAsString());
getAvailableTiersForOrganizationsAsString(api));
}

if (APIConstants.PUBLISHED.equals(apiStatus)) {
Expand Down Expand Up @@ -2724,7 +2725,7 @@ public static API getAPI(GovernanceArtifact artifact, Registry registry, APIIden

// Set available tiers for organizations
String organizationTiers = artifact.getAttribute(APIConstants.API_OVERVIEW_ORGANIZATION_TIERS);
api.setAvailableTiersForOrganizationsFromString(organizationTiers);
api.setAvailableTiersForOrganizations(getAvailableTiersForOrganizationsFromString(organizationTiers));

api.setContext(artifact.getAttribute(APIConstants.API_OVERVIEW_CONTEXT));
api.setContextTemplate(artifact.getAttribute(APIConstants.API_OVERVIEW_CONTEXT_TEMPLATE));
Expand Down Expand Up @@ -11174,6 +11175,54 @@ public static Boolean isOrgWideAppUpdateEnabled() {
return Boolean.getBoolean(
APIConstants.ORGANIZATION_WIDE_APPLICATION_UPDATE_ENABLED);
}

/**
* Get available tiers for organizations as a string.
*
* @param api API object
* @return String object of the organization based tiers
*/
private static String getAvailableTiersForOrganizationsAsString(API api) {

Set<org.wso2.carbon.apimgt.api.model.OrganizationTiers> availableTiersForOrganizations
= api.getAvailableTiersForOrganizations();
if (availableTiersForOrganizations == null || availableTiersForOrganizations.isEmpty()) {
return null;
}
try {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(availableTiersForOrganizations);
} catch (JsonProcessingException e) {
log.error("Error while converting availableTiersForOrganizations to string for API : " + api.getUuid(), e);
return null;
} catch (Exception e) {
log.error("Unexpected error while processing availableTiersForOrganizations for API : " + api.getUuid(), e);
return null;
}
}

/**
* Convert string object to a OrganizationTiers set.
*
* @param tiersString String object to be converted
* @return OrganziationTiers set
*/
public static Set<org.wso2.carbon.apimgt.api.model.OrganizationTiers> getAvailableTiersForOrganizationsFromString(
String tiersString) {

if (tiersString == null || tiersString.isEmpty()) {
return new LinkedHashSet<>();
}
try {
ObjectMapper objectMapper = new ObjectMapper();
org.wso2.carbon.apimgt.api.model.OrganizationTiers[] tiersArray = objectMapper.readValue(tiersString,
org.wso2.carbon.apimgt.api.model.OrganizationTiers[].class);
return new LinkedHashSet<>(Arrays.asList(tiersArray));
} catch (Exception e) {
log.error("Error while converting string to availableTiersForOrganizations object", e);
return new LinkedHashSet<>();
}
}

public static synchronized String getOrganizationIdFromExternalReference(String referenceId,
String organizationName, String rootOrganization) throws APIManagementException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1294,7 +1294,8 @@ private DevPortalAPISearchResult searchPaginatedDevPortalAPIs(Registry userRegis
apiInfo.setAvailableTierNames(availableTiers);
// Set available tiers for organizations
String organizationTiers = artifact.getAttribute(APIConstants.API_OVERVIEW_ORGANIZATION_TIERS);
apiInfo.setAvailableTiersForOrganizationsFromString(organizationTiers);
apiInfo.setAvailableTiersForOrganizations(
RegistryPersistenceUtil.getOrganizationTiersFromString(organizationTiers));
apiInfo.setSubscriptionAvailability(
artifact.getAttribute(APIConstants.API_OVERVIEW_SUBSCRIPTION_AVAILABILITY));
apiInfo.setSubscriptionAvailableOrgs(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,8 @@
*/
package org.wso2.carbon.apimgt.persistence.dto;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.apimgt.api.model.Tier;

import java.util.LinkedHashSet;
import java.util.Map;
Expand Down Expand Up @@ -148,40 +146,6 @@ public void setAvailableTiersForOrganizations(Set<OrganizationTiers> availableTi
this.availableTiersForOrganizations = availableTiersForOrganizations;
}

public void setAvailableTiersForOrganizationsFromString(String tiersString) {

if (tiersString == null || tiersString.isEmpty()) {
return;
}
try {
ObjectMapper objectMapper = new ObjectMapper();
org.wso2.carbon.apimgt.api.model.OrganizationTiers[] tiersArray = objectMapper.readValue(tiersString,
org.wso2.carbon.apimgt.api.model.OrganizationTiers[].class);
for (org.wso2.carbon.apimgt.api.model.OrganizationTiers organizationTiersToMap : tiersArray) {
OrganizationTiers organizationTiers = getOrganizationTiers(organizationTiersToMap);
availableTiersForOrganizations.add(organizationTiers);
}
} catch (Exception e) {
log.error("Error while converting string to availableTiersForOrganizations object for API : " + getId(),
e);
}
}

private static OrganizationTiers getOrganizationTiers(
org.wso2.carbon.apimgt.api.model.OrganizationTiers organizationTiersToMap) {

OrganizationTiers organizationTiers = new OrganizationTiers();
organizationTiers.setOrganizationID(organizationTiersToMap.getOrganizationID());
organizationTiers.setOrganizationName(organizationTiersToMap.getOrganizationName());
Set<Tier> tiersToMap = organizationTiersToMap.getTiers();
Set<String> tiers = new LinkedHashSet<>();
for (Tier tierToMap : tiersToMap) {
tiers.add(tierToMap.getName());
}
organizationTiers.setTiers(tiers);
return organizationTiers;
}

public String getSubscriptionAvailableOrgs() {
return subscriptionAvailableOrgs;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@

package org.wso2.carbon.apimgt.persistence.utils;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.commons.lang3.ArrayUtils;
Expand All @@ -40,6 +42,7 @@
import org.wso2.carbon.apimgt.api.model.URITemplate;
import org.wso2.carbon.apimgt.persistence.APIConstants;
import org.wso2.carbon.apimgt.persistence.dto.DevPortalAPI;
import org.wso2.carbon.apimgt.persistence.dto.OrganizationTiers;
import org.wso2.carbon.apimgt.persistence.dto.PublisherAPI;
import org.wso2.carbon.apimgt.persistence.exceptions.APIPersistenceException;
import org.wso2.carbon.apimgt.persistence.exceptions.PersistenceException;
Expand Down Expand Up @@ -85,6 +88,7 @@
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Properties;
Expand Down Expand Up @@ -259,9 +263,9 @@ public static GenericArtifact createAPIArtifactContent(GenericArtifact artifact,
artifact.setAttribute(APIConstants.API_OVERVIEW_TIER, tiers);
}

if (api.getAvailableTiersForOrganizationsAsString() != null) {
if (getAvailableTiersForOrganizationsAsString(api) != null) {
artifact.setAttribute(APIConstants.API_OVERVIEW_ORGANIZATION_TIERS,
api.getAvailableTiersForOrganizationsAsString());
getAvailableTiersForOrganizationsAsString(api));
}

if (APIConstants.PUBLISHED.equals(apiStatus)) {
Expand Down Expand Up @@ -343,6 +347,101 @@ public static GenericArtifact createAPIArtifactContent(GenericArtifact artifact,
return artifact;
}

/**
* Get available tiers for organizations as a string.
*
* @param api API object
* @return String object of the organization based tiers
*/
private static String getAvailableTiersForOrganizationsAsString(API api) {

Set<org.wso2.carbon.apimgt.api.model.OrganizationTiers> availableTiersForOrganizations
= api.getAvailableTiersForOrganizations();
if (availableTiersForOrganizations == null || availableTiersForOrganizations.isEmpty()) {
return null;
}
try {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(availableTiersForOrganizations);
} catch (JsonProcessingException e) {
log.error("Error while converting availableTiersForOrganizations to string for API : " + api.getUuid(), e);
return null;
} catch (Exception e) {
log.error("Unexpected error while processing availableTiersForOrganizations for API : " + api.getUuid(), e);
return null;
}
}

/**
* Convert string object to an org.wso2.carbon.apimgt.api.model.OrganizationTiers set.
*
* @param tiersString String object to be converted
* @return OrganziationTiers set
*/
public static Set<org.wso2.carbon.apimgt.api.model.OrganizationTiers> getAvailableTiersForOrganizationsFromString(
String tiersString) {

if (tiersString == null || tiersString.isEmpty()) {
return new LinkedHashSet<>();
}
try {
ObjectMapper objectMapper = new ObjectMapper();
org.wso2.carbon.apimgt.api.model.OrganizationTiers[] tiersArray = objectMapper.readValue(tiersString,
org.wso2.carbon.apimgt.api.model.OrganizationTiers[].class);
return new LinkedHashSet<>(Arrays.asList(tiersArray));
} catch (Exception e) {
log.error("Error while converting string to availableTiersForOrganizations object", e);
return new LinkedHashSet<>();
}
}

/**
* Convert string object to an org.wso2.carbon.apimgt.persistence.dto.OrganizationTiers set.
*
* @param tiersString String object to be converted
* @return OrganziationTiers set
*/
public static Set<OrganizationTiers> getOrganizationTiersFromString(String tiersString) {

Set<OrganizationTiers> availableTiersForOrganizations = new LinkedHashSet<>();;
if (tiersString == null || tiersString.isEmpty()) {
return availableTiersForOrganizations;
}
try {
ObjectMapper objectMapper = new ObjectMapper();
org.wso2.carbon.apimgt.api.model.OrganizationTiers[] tiersArray = objectMapper.readValue(tiersString,
org.wso2.carbon.apimgt.api.model.OrganizationTiers[].class);
for (org.wso2.carbon.apimgt.api.model.OrganizationTiers organizationTiersToMap : tiersArray) {
OrganizationTiers organizationTiers = getOrganizationTiers(organizationTiersToMap);
availableTiersForOrganizations.add(organizationTiers);
}
} catch (Exception e) {
log.error("Error while converting string to OrganizationTiers set.", e);
}
return availableTiersForOrganizations;
}

/**
* Map org.wso2.carbon.apimgt.api.model.OrganizationTiers to org.wso2.carbon.apimgt.persistence.dto.OrganizationTiers
*
* @param organizationTiersToMap org.wso2.carbon.apimgt.api.model.OrganizationTiers object
* @return org.wso2.carbon.apimgt.persistence.dto.OrganizationTiers object
*/
private static OrganizationTiers getOrganizationTiers(
org.wso2.carbon.apimgt.api.model.OrganizationTiers organizationTiersToMap) {

OrganizationTiers organizationTiers = new OrganizationTiers();
organizationTiers.setOrganizationID(organizationTiersToMap.getOrganizationID());
organizationTiers.setOrganizationName(organizationTiersToMap.getOrganizationName());
Set<Tier> tiersToMap = organizationTiersToMap.getTiers();
Set<String> tiers = new LinkedHashSet<>();
for (Tier tierToMap : tiersToMap) {
tiers.add(tierToMap.getName());
}
organizationTiers.setTiers(tiers);
return organizationTiers;
}

private static String getWsUriMappingJsonFromDto(Map<String, String> wsUriMapping) {
return new Gson().toJson(wsUriMapping);
}
Expand Down Expand Up @@ -745,7 +844,7 @@ public static API getAPI(GovernanceArtifact artifact, Registry registry)

// Set available tiers for organizations
String organizationTiers = artifact.getAttribute(APIConstants.API_OVERVIEW_ORGANIZATION_TIERS);
api.setAvailableTiersForOrganizationsFromString(organizationTiers);
api.setAvailableTiersForOrganizations(getAvailableTiersForOrganizationsFromString(organizationTiers));

// This contains the resolved context
api.setContext(artifact.getAttribute(APIConstants.API_OVERVIEW_CONTEXT));
Expand Down

0 comments on commit d3c4cb6

Please sign in to comment.