Skip to content

Commit

Permalink
Address review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
sadilchamishka committed Nov 10, 2023
1 parent 38df189 commit 1ce6a5d
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 61 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ public class Constants {
public static final String TENANT_CONTEXT_PATH_COMPONENT = "/t/%s";
public static final String ORGANIZATION_CONTEXT_PATH_COMPONENT = "/o";
public static final String USER_API_PATH_COMPONENT = "/api/users";
public static final String SERVER_API_PATH_COMPONENT = "/api/servers";


/**
* Enum for user error prefixes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import static org.wso2.carbon.identity.api.user.common.Constants.ErrorMessage.ERROR_CODE_INVALID_USERNAME;
import static org.wso2.carbon.identity.api.user.common.Constants.ErrorMessage.ERROR_CODE_SERVER_ERROR;
import static org.wso2.carbon.identity.api.user.common.Constants.ORGANIZATION_CONTEXT_PATH_COMPONENT;
import static org.wso2.carbon.identity.api.user.common.Constants.SERVER_API_PATH_COMPONENT;
import static org.wso2.carbon.identity.api.user.common.Constants.TENANT_CONTEXT_PATH_COMPONENT;
import static org.wso2.carbon.identity.api.user.common.Constants.TENANT_NAME_FROM_CONTEXT;
import static org.wso2.carbon.identity.api.user.common.Constants.USER_API_PATH_COMPONENT;
Expand Down Expand Up @@ -184,8 +185,13 @@ public static URI buildURI(String endpoint) {
*/
public static URI buildURIForBody(String endpoint) {

return buildURIForBody(endpoint, false);
}

public static URI buildURIForBody(String endpoint, boolean isServerResource) {

String url;
String context = getContext(endpoint);
String context = getContext(endpoint, isServerResource);

try {
url = ServiceURLBuilder.create().addPath(context).build().getRelativePublicURL();
Expand All @@ -207,7 +213,7 @@ public static URI buildURIForBody(String endpoint) {
public static URI buildURIForHeader(String endpoint) {

URI loc;
String context = getContext(endpoint);
String context = getContext(endpoint, false);

try {
String url = ServiceURLBuilder.create().addPath(context).build().getAbsolutePublicURL();
Expand All @@ -225,14 +231,19 @@ public static URI buildURIForHeader(String endpoint) {
* in non tenant qualified mode we need to append the tenant domain to the path manually.
*
* @param endpoint Relative endpoint path.
* @param isServerResource Is service URL builds for server resource.
* @return Context of the API.
*/
private static String getContext(String endpoint) {
private static String getContext(String endpoint, boolean isServerResource) {

String context;
String organizationId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getOrganizationId();
if (IdentityTenantUtil.isTenantQualifiedUrlsEnabled()) {
context = USER_API_PATH_COMPONENT + endpoint;
if (isServerResource) {
context = SERVER_API_PATH_COMPONENT + endpoint;
} else {
context = USER_API_PATH_COMPONENT + endpoint;
}
if (StringUtils.isNotEmpty(organizationId)) {
String tenantDomain = (String) IdentityUtil.threadLocalProperties.get()
.get(OrganizationManagementConstants.ROOT_TENANT_DOMAIN);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
import static org.wso2.carbon.identity.rest.api.user.organization.v1.util.Util.getError;
import static org.wso2.carbon.identity.rest.api.user.organization.v1.util.Util.handleError;
import static org.wso2.carbon.identity.rest.api.user.organization.v1.util.Util.handleOrganizationManagementException;
import static org.wso2.carbon.identity.rest.api.user.organization.v1.util.Util.organizationGetURL;
import static org.wso2.carbon.identity.rest.api.user.organization.v1.util.Util.buildOrganizationURL;

/**
* Call internal OSGi services to perform user organization management related operations.
Expand Down Expand Up @@ -238,7 +238,7 @@ private OrganizationsResponse getAuthorizedOrganizationsResponse(Integer limit,
organizationDTO.setId(organization.getId());
organizationDTO.setName(organization.getName());
organizationDTO.setStatus(Organization.StatusEnum.valueOf(organization.getStatus()));
organizationDTO.setRef(organizationGetURL(organization.getId()).toString());
organizationDTO.setRef(buildOrganizationURL(organization.getId()).toString());
organizationDTOs.add(organizationDTO);
}
organizationsResponse.setOrganizations(organizationDTOs);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,9 @@

import javax.ws.rs.core.Response;

import static org.wso2.carbon.identity.api.user.common.Constants.ORGANIZATION_CONTEXT_PATH_COMPONENT;
import static org.wso2.carbon.identity.api.user.common.Constants.TENANT_CONTEXT_PATH_COMPONENT;
import static org.wso2.carbon.identity.api.user.common.Constants.USER_API_PATH_COMPONENT;
import static org.wso2.carbon.identity.application.common.util.IdentityApplicationConstants.Error.UNEXPECTED_SERVER_ERROR;
import static org.wso2.carbon.identity.api.user.common.ContextLoader.buildURIForBody;
import static org.wso2.carbon.identity.organization.management.service.constant.OrganizationManagementConstants.ORGANIZATION_PATH;
import static org.wso2.carbon.identity.organization.management.service.constant.OrganizationManagementConstants.PATH_SEPARATOR;
import static org.wso2.carbon.identity.organization.management.service.constant.OrganizationManagementConstants.SERVER_API_PATH_COMPONENT;
import static org.wso2.carbon.identity.organization.management.service.constant.OrganizationManagementConstants.V1_API_PATH_COMPONENT;

/**
Expand Down Expand Up @@ -150,57 +146,9 @@ private static String buildErrorDescription(OrganizationManagementConstants.Erro
* @param organizationId The unique identifier of the organization.
* @return URI
*/
public static URI organizationGetURL(String organizationId) {
public static URI buildOrganizationURL(String organizationId) {

return buildURIForBody(V1_API_PATH_COMPONENT + PATH_SEPARATOR + ORGANIZATION_PATH +
PATH_SEPARATOR + organizationId);
}

private static URI buildURIForBody(String endpoint) {

String url;
String context = getContext(endpoint);

try {
url = ServiceURLBuilder.create().addPath(context).build().getRelativePublicURL();
} catch (URLBuilderException e) {
String errorDescription = "Server encountered an error while building URL for response body.";
throw buildInternalServerError(e, errorDescription);
}
return URI.create(url);
}

private static String getContext(String endpoint) {

String context;
String organizationId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getOrganizationId();
if (IdentityTenantUtil.isTenantQualifiedUrlsEnabled()) {
context = SERVER_API_PATH_COMPONENT + endpoint;
if (StringUtils.isNotEmpty(organizationId)) {
String tenantDomain = (String) IdentityUtil.threadLocalProperties.get()
.get(OrganizationManagementConstants.ROOT_TENANT_DOMAIN);
context = String.format(TENANT_CONTEXT_PATH_COMPONENT, tenantDomain) +
ORGANIZATION_CONTEXT_PATH_COMPONENT + context;
}
} else {
context = String.format(TENANT_CONTEXT_PATH_COMPONENT, IdentityTenantUtil.resolveTenantDomain()) +
USER_API_PATH_COMPONENT + endpoint;
}
return context;
}

private static APIError buildInternalServerError(Exception e, String errorDescription) {

String errorCode = UNEXPECTED_SERVER_ERROR.getCode();
String errorMessage = "Error while building response.";

ErrorResponse errorResponse = new ErrorResponse.Builder().
withCode(errorCode)
.withMessage(errorMessage)
.withDescription(errorDescription)
.build(LOG, e, errorDescription);

Response.Status status = Response.Status.INTERNAL_SERVER_ERROR;
return new APIError(status, errorResponse);
PATH_SEPARATOR + organizationId, true);
}
}

0 comments on commit 1ce6a5d

Please sign in to comment.