mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Add java doc comments
Use try-with resource when using CloseableHttpClient Refactor few variable and method names
This commit is contained in:
parent
daaeed52e2
commit
41a0c9118a
@ -21,6 +21,12 @@ package io.entgra.application.mgt.common.exception;
|
||||
* Exception that will be thrown if any error occurs while calling identity server services .
|
||||
*/
|
||||
public class IdentityServerManagementException extends ApplicationManagementException {
|
||||
|
||||
public IdentityServerManagementException(String message, Throwable throwable) {
|
||||
super(message, throwable);
|
||||
setMessage(message);
|
||||
}
|
||||
|
||||
public IdentityServerManagementException(String message) {
|
||||
super(message);
|
||||
setMessage(message);
|
||||
|
||||
@ -100,6 +100,12 @@ public interface ApplicationManager {
|
||||
*/
|
||||
<T> ApplicationDTO uploadReleaseArtifactIfExist(T app) throws ApplicationManagementException;
|
||||
|
||||
/**
|
||||
* Check if public app release packageName is valid (I.E invalid if packageName already exists)
|
||||
*
|
||||
* @param packageName name of the application release package
|
||||
* @throws ApplicationManagementException if package name is invalid
|
||||
*/
|
||||
void validatePublicAppReleasePackageName(String packageName) throws ApplicationManagementException;
|
||||
|
||||
/**
|
||||
@ -169,6 +175,13 @@ public interface ApplicationManager {
|
||||
*/
|
||||
void deleteApplicationRelease(String releaseUuid) throws ApplicationManagementException;
|
||||
|
||||
/**
|
||||
* Use to delete application artifact files (For example this is useful to delete application release artifacts
|
||||
* (I.E screenshots) when an application is deleted)
|
||||
*
|
||||
* @param directoryPaths directory paths that contains release artifacts (I.E screenshots)
|
||||
* @throws ApplicationManagementException if error occurred while deleting artifacts
|
||||
*/
|
||||
void deleteApplicationArtifacts(List<String> directoryPaths) throws ApplicationManagementException;
|
||||
|
||||
/**
|
||||
@ -220,6 +233,13 @@ public interface ApplicationManager {
|
||||
ApplicationType type)
|
||||
throws ApplicationManagementException;
|
||||
|
||||
/**
|
||||
* Get application and all application releases associated to the application for the given application Id
|
||||
*
|
||||
* @param applicationId Application Id
|
||||
* @return {@link ApplicationDTO}
|
||||
* @throws ApplicationManagementException if error occurred application data from the database.
|
||||
*/
|
||||
ApplicationDTO getApplication(int applicationId) throws ApplicationManagementException;
|
||||
|
||||
/**
|
||||
@ -292,7 +312,8 @@ public interface ApplicationManager {
|
||||
void updateApplicationArtifact(String deviceType, String uuid,
|
||||
ApplicationArtifact applicationArtifact) throws ApplicationManagementException;
|
||||
|
||||
/***
|
||||
/**
|
||||
* Use to update existing enterprise app release
|
||||
*
|
||||
* @param releaseUuid UUID of the application release.
|
||||
* @param entAppReleaseWrapper {@link ApplicationReleaseDTO}
|
||||
@ -302,22 +323,47 @@ public interface ApplicationManager {
|
||||
ApplicationRelease updateEntAppRelease(String releaseUuid, EntAppReleaseWrapper entAppReleaseWrapper,
|
||||
ApplicationArtifact applicationArtifact) throws ApplicationManagementException;
|
||||
|
||||
|
||||
/**
|
||||
* Use to update existing public app release
|
||||
*
|
||||
* @param releaseUuid UUID of the application release.
|
||||
* @param publicAppReleaseWrapper {@link ApplicationReleaseDTO}
|
||||
* @param applicationArtifact {@link ApplicationArtifact}
|
||||
* @return If the application release is updated correctly True returns, otherwise retuen False
|
||||
*/
|
||||
ApplicationRelease updatePubAppRelease(String releaseUuid, PublicAppReleaseWrapper publicAppReleaseWrapper,
|
||||
ApplicationArtifact applicationArtifact) throws ApplicationManagementException;
|
||||
|
||||
/**
|
||||
* Use to update existing web app release
|
||||
*
|
||||
* @param releaseUuid UUID of the application release.
|
||||
* @param webAppReleaseWrapper {@link ApplicationReleaseDTO}
|
||||
* @param applicationArtifact {@link ApplicationArtifact}
|
||||
* @return If the application release is updated correctly True returns, otherwise retuen False
|
||||
*/
|
||||
ApplicationRelease updateWebAppRelease(String releaseUuid, WebAppReleaseWrapper webAppReleaseWrapper,
|
||||
ApplicationArtifact applicationArtifact) throws ApplicationManagementException;
|
||||
|
||||
/**
|
||||
* Use to update existing custom app release
|
||||
*
|
||||
* @param releaseUuid UUID of the application release.
|
||||
* @param customAppReleaseWrapper {@link ApplicationReleaseDTO}
|
||||
* @param applicationArtifact {@link ApplicationArtifact}
|
||||
* @return If the application release is updated correctly True returns, otherwise retuen False
|
||||
*/
|
||||
ApplicationRelease updateCustomAppRelease(String releaseUuid, CustomAppReleaseWrapper customAppReleaseWrapper,
|
||||
ApplicationArtifact applicationArtifact) throws ApplicationManagementException;
|
||||
|
||||
/***
|
||||
/**
|
||||
* To validate the application creating request
|
||||
*
|
||||
*/
|
||||
<T> void validateAppCreatingRequest(T param) throws ApplicationManagementException, RequestValidatingException;
|
||||
|
||||
/***
|
||||
/**
|
||||
*
|
||||
* @throws ApplicationManagementException throws if payload does not satisfy requirements.
|
||||
*/
|
||||
|
||||
@ -65,8 +65,7 @@ public class WSO2IAMSPApplicationService implements ISServiceProviderApplication
|
||||
String uriString = constructAPIUrl(identityServer);
|
||||
uriString += Constants.FORWARD_SLASH + spAppId;
|
||||
req.setURI(HttpUtil.createURI(uriString));
|
||||
CloseableHttpClient client = HttpClients.createDefault();
|
||||
try {
|
||||
try (CloseableHttpClient client = HttpClients.createDefault()) {
|
||||
HttpResponse response = invokeISAPI(identityServer, client, req);
|
||||
String responseBody = HttpUtil.getResponseString(response);
|
||||
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
|
||||
@ -82,16 +81,17 @@ public class WSO2IAMSPApplicationService implements ISServiceProviderApplication
|
||||
} catch (IOException e) {
|
||||
String msg = "Error occurred while calling SP Applications API. Make sure identity server is up and running";
|
||||
log.error(msg, e);
|
||||
throw new IdentityServerManagementException(msg);
|
||||
} finally {
|
||||
try {
|
||||
client.close();
|
||||
} catch (IOException e) {
|
||||
log.error("Error occurred while closing http connection");
|
||||
}
|
||||
throw new IdentityServerManagementException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct error message string depending on service providers api response
|
||||
* (I.E If unauthorized a different message will be returned)
|
||||
*
|
||||
* @param response of the service provider api call
|
||||
* @return constructed error message
|
||||
*/
|
||||
private String constructErrorMessage(HttpResponse response) {
|
||||
String msg = "Error occurred while calling SP Applications API";
|
||||
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_UNAUTHORIZED) {
|
||||
@ -109,8 +109,7 @@ public class WSO2IAMSPApplicationService implements ISServiceProviderApplication
|
||||
uriString += Constants.QUERY_STRING_SEPARATOR + Constants.OFFSET_QUERY_PARAM + Constants.QUERY_KEY_VALUE_SEPARATOR
|
||||
+ offset;
|
||||
req.setURI(HttpUtil.createURI(uriString));
|
||||
CloseableHttpClient client = HttpClients.createDefault();
|
||||
try {
|
||||
try (CloseableHttpClient client = HttpClients.createDefault()) {
|
||||
HttpResponse response = invokeISAPI(identityServer, client, req);
|
||||
String responseBody = HttpUtil.getResponseString(response);
|
||||
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
|
||||
@ -123,27 +122,43 @@ public class WSO2IAMSPApplicationService implements ISServiceProviderApplication
|
||||
} catch (IOException e) {
|
||||
String msg = "Error occurred while calling SP Applications API. Make sure identity server is up and running";
|
||||
log.error(msg, e);
|
||||
throw new IdentityServerManagementException(msg);
|
||||
} finally {
|
||||
try {
|
||||
client.close();
|
||||
} catch (IOException e) {
|
||||
log.error("Error occurred while closing http connection");
|
||||
}
|
||||
throw new IdentityServerManagementException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Takes essential prerequisite steps (I.E setting authorization header),
|
||||
* invokes provided GET request and returns the response
|
||||
*
|
||||
* @param identityServer {@link IdentityServerDTO}
|
||||
* @param client httpClient that should be used to invoke
|
||||
* @param request GET request to be invoked
|
||||
* @return response of the invoked api
|
||||
*/
|
||||
private HttpResponse invokeISAPI(IdentityServerDTO identityServer, HttpClient client, HttpGet request) throws IOException {
|
||||
setBasicAuthHeader(identityServer, request);
|
||||
return client.execute(request);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add basic auth header to provided service provider api request by getting the username and password
|
||||
* from identity server bean
|
||||
*
|
||||
* @param identityServer {@link IdentityServerDTO}
|
||||
* @param request service provider api request
|
||||
*/
|
||||
private void setBasicAuthHeader(IdentityServerDTO identityServer, HttpRequestBase request) {
|
||||
String basicAuthHeader = HttpUtil.getBasicAuthBase64Header(identityServer.getUsername(),
|
||||
identityServer.getPassword());
|
||||
request.setHeader(HttpHeaders.AUTHORIZATION, basicAuthHeader);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helps to construct service provider api base url
|
||||
*
|
||||
* @param identityServer {@link IdentityServerDTO}
|
||||
* @return constructed service providers api url
|
||||
*/
|
||||
private String constructAPIUrl(IdentityServerDTO identityServer) {
|
||||
String identityServerUrl = identityServer.getUrl();
|
||||
// add "/" at the end, if the server url doesn't contain "/" at the end
|
||||
|
||||
@ -341,6 +341,14 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Use to upload/save web app release artifacts (I.E icon)
|
||||
*
|
||||
* @param releaseDTO {@link ApplicationReleaseDTO}
|
||||
* @param applicationArtifact {@link ApplicationArtifact}
|
||||
* @return constructed {@link ApplicationReleaseDTO} with upload details
|
||||
* @throws ResourceManagementException if error occurred while uploading
|
||||
*/
|
||||
private ApplicationReleaseDTO uploadWebAppReleaseArtifacts(ApplicationReleaseDTO releaseDTO, ApplicationArtifact applicationArtifact)
|
||||
throws ResourceManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
@ -350,6 +358,15 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
return addImageArtifacts(releaseDTO, applicationArtifact, tenantId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Use to upload/save public app release artifacts (I.E icon)
|
||||
*
|
||||
* @param releaseDTO {@link ApplicationReleaseDTO}
|
||||
* @param applicationArtifact {@link ApplicationArtifact}
|
||||
* @param deviceType Device Type name
|
||||
* @return constructed {@link ApplicationReleaseDTO} with upload details
|
||||
* @throws ResourceManagementException if error occurred while uploading
|
||||
*/
|
||||
private ApplicationReleaseDTO uploadPubAppReleaseArtifacts(ApplicationReleaseDTO releaseDTO, ApplicationArtifact applicationArtifact,
|
||||
String deviceType)
|
||||
throws ResourceManagementException {
|
||||
@ -384,6 +401,15 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Use to upload/save public app release artifacts (I.E icon)
|
||||
*
|
||||
* @param releaseDTO {@link ApplicationReleaseDTO}
|
||||
* @param applicationArtifact {@link ApplicationArtifact}
|
||||
* @param deviceType Device Type name
|
||||
* @return constructed {@link ApplicationReleaseDTO} with upload details
|
||||
* @throws ResourceManagementException if error occurred while uploading
|
||||
*/
|
||||
private ApplicationReleaseDTO uploadCustomAppReleaseArtifacts(ApplicationReleaseDTO releaseDTO, ApplicationArtifact applicationArtifact,
|
||||
String deviceType)
|
||||
throws ResourceManagementException, ApplicationManagementException {
|
||||
@ -402,7 +428,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
} catch (IOException e) {
|
||||
String msg = "Error occurred when uploading release artifact into the server";
|
||||
log.error(msg);
|
||||
throw new ApplicationManagementException(msg);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
}
|
||||
return addImageArtifacts(releaseDTO, applicationArtifact, tenantId);
|
||||
}
|
||||
@ -436,16 +462,32 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Helps to byte content of release binary file of application artifact
|
||||
* This method can be useful when uploading application release binary file or when generating md5hex of release binary
|
||||
*
|
||||
* @param artifact {@link ApplicationArtifact}
|
||||
* @return byte content of application release binary file
|
||||
* @throws ApplicationManagementException if error occurred while getting byte content
|
||||
*/
|
||||
private byte[] getByteContentOfApp(ApplicationArtifact artifact) throws ApplicationManagementException{
|
||||
try {
|
||||
return IOUtils.toByteArray(artifact.getInstallerStream());
|
||||
} catch (IOException e) {
|
||||
String msg = "Error occurred while getting byte content of app binary artifact";
|
||||
log.error(msg);
|
||||
throw new ApplicationManagementException(msg);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Useful to generate md5hex string of application release
|
||||
*
|
||||
* @param applicationArtifact {@link ApplicationArtifact}
|
||||
* @param content byte array content of application release binary file
|
||||
* @return Generated md5hex string
|
||||
* @throws ApplicationManagementException if any error occurred while generating md5hex string
|
||||
*/
|
||||
private String generateMD5OfApp(ApplicationArtifact applicationArtifact, byte[] content) throws ApplicationManagementException {
|
||||
try {
|
||||
String md5OfApp = StorageManagementUtil.getMD5(new ByteArrayInputStream(content));
|
||||
@ -458,7 +500,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
} catch( ApplicationStorageManagementException e) {
|
||||
String msg = "Error occurred while generating md5sum value of " + applicationArtifact.getInstallerName();
|
||||
log.error(msg);
|
||||
throw new ApplicationManagementException(msg);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1197,13 +1239,6 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Application and all application releases associated to the application that has given application Id
|
||||
*
|
||||
* @param applicationId Application Id
|
||||
* @return {@link ApplicationDTO}
|
||||
* @throws ApplicationManagementException if error occurred application data from the databse.
|
||||
*/
|
||||
@Override
|
||||
public ApplicationDTO getApplication(int applicationId) throws ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
|
||||
@ -80,6 +80,13 @@ public class SPApplicationManagerImpl implements SPApplicationManager {
|
||||
return APIUtil.identityServerDtoToIdentityServerResponse(identityServerDTO);
|
||||
}
|
||||
|
||||
/**
|
||||
* This is similar to getIdentityServerFromDB method except throws {@link NotFoundException} if identity server
|
||||
* does not exist for the given id
|
||||
*
|
||||
* @param identityServerId id of identity server
|
||||
* @return {@link IdentityServerDTO}
|
||||
*/
|
||||
private IdentityServerDTO getIdentityServer(int identityServerId) throws ApplicationManagementException {
|
||||
IdentityServerDTO identityServerDTO = getIdentityServerFromDB(identityServerId);
|
||||
if (identityServerDTO == null) {
|
||||
@ -90,6 +97,12 @@ public class SPApplicationManagerImpl implements SPApplicationManager {
|
||||
return identityServerDTO;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use to get {@link IdentityServerDTO} bean from database. Returns null if does not exist
|
||||
*
|
||||
* @param identityServerId id of identity server
|
||||
* @return {@link IdentityServerDTO}
|
||||
*/
|
||||
private IdentityServerDTO getIdentityServerFromDB(int identityServerId) throws ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
try {
|
||||
@ -191,6 +204,12 @@ public class SPApplicationManagerImpl implements SPApplicationManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate the identity server delete request
|
||||
*
|
||||
* @param identityServerId identity server id
|
||||
* @throws BadRequestException if provided identity server id is invalid
|
||||
*/
|
||||
private void validateIdentityServerDeleteRequest(int identityServerId) throws ApplicationManagementException {
|
||||
IdentityServerDTO identityServerDTO = getIdentityServerFromDB(identityServerId);
|
||||
if (identityServerDTO == null) {
|
||||
@ -200,6 +219,15 @@ public class SPApplicationManagerImpl implements SPApplicationManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is useful to re-construct the api params Map using updated identity server bean {@link IdentityServerDTO}
|
||||
* For example updated identity server bean may contain only updated api param, in which case the existing api param values
|
||||
* should be re-added to updated identity server bean
|
||||
*
|
||||
* @param updatedIdentityServerDTO updated identity server request payload
|
||||
* @param existingIdentityServerDTO corresponding existing identity server of updated identity server
|
||||
* @return Constructed api param map
|
||||
*/
|
||||
private Map<String, String> constructUpdatedApiParams(IdentityServerDTO updatedIdentityServerDTO,
|
||||
IdentityServerDTO existingIdentityServerDTO) {
|
||||
Map<String, String> updatedApiParams = updatedIdentityServerDTO.getApiParams();
|
||||
@ -292,6 +320,12 @@ public class SPApplicationManagerImpl implements SPApplicationManager {
|
||||
validateIdentityServerUrl(identityServerDTO.getUrl());
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate provided identity server url (For example make sure it uses http/https protocol)
|
||||
*
|
||||
* @param url url of the identity server
|
||||
* @throws BadRequestException if url is invalid
|
||||
*/
|
||||
private void validateIdentityServerUrl(String url) throws BadRequestException {
|
||||
String[] schemes = {"http","https"};
|
||||
UrlValidator urlValidator = new UrlValidator(schemes, UrlValidator.ALLOW_LOCAL_URLS);
|
||||
@ -302,17 +336,32 @@ public class SPApplicationManagerImpl implements SPApplicationManager {
|
||||
}
|
||||
}
|
||||
|
||||
private void validateUpdateIdentityServerRequestApiParam(IdentityServerDTO identityServerUpdateDTO,
|
||||
/**
|
||||
* Validate provided api params map in a identity server updated request
|
||||
* For example the updated api param map may not contain all the required api params
|
||||
*
|
||||
* @param updatedIdentityServerDto Identity server update request payload bean
|
||||
* @param existingIdentityServerDTO Corresponding existing identity server bean of the updated identity server
|
||||
* @throws ApplicationManagementException if any api param is invalid
|
||||
*/
|
||||
private void validateUpdateIdentityServerRequestApiParam(IdentityServerDTO updatedIdentityServerDto,
|
||||
IdentityServerDTO existingIdentityServerDTO) throws ApplicationManagementException {
|
||||
ISServiceProviderApplicationService serviceProviderApplicationService =
|
||||
ISServiceProviderApplicationService.of(existingIdentityServerDTO.getProviderName());
|
||||
List<String> requiredApiParams = serviceProviderApplicationService.getRequiredApiParams();
|
||||
if (!identityServerUpdateDTO.getProviderName().equals(existingIdentityServerDTO.getProviderName())) {
|
||||
validateAllRequiredParamsExists(identityServerUpdateDTO, requiredApiParams);
|
||||
if (!updatedIdentityServerDto.getProviderName().equals(existingIdentityServerDTO.getProviderName())) {
|
||||
validateAllRequiredParamsExists(updatedIdentityServerDto, requiredApiParams);
|
||||
}
|
||||
validateIfAnyInvalidParamExists(identityServerUpdateDTO, requiredApiParams);
|
||||
validateIfAnyInvalidParamExists(updatedIdentityServerDto, requiredApiParams);
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate api params map of identity server create request payload
|
||||
* For example the api param map may not contain all the required api params
|
||||
*
|
||||
* @param identityServerDTO {@link IdentityServerDTO}
|
||||
* @throws ApplicationManagementException if any api param is invalid
|
||||
*/
|
||||
private void validateCreateIdentityServerRequestApiParams(IdentityServerDTO identityServerDTO) throws ApplicationManagementException {
|
||||
ISServiceProviderApplicationService serviceProviderApplicationService =
|
||||
ISServiceProviderApplicationService.of(identityServerDTO.getProviderName());
|
||||
@ -321,6 +370,13 @@ public class SPApplicationManagerImpl implements SPApplicationManager {
|
||||
validateIfAnyInvalidParamExists(identityServerDTO, requiredApiParams);
|
||||
}
|
||||
|
||||
/**
|
||||
* Make sure if all required api params exists for the given identity server bean
|
||||
*
|
||||
* @param identityServerDTO {@link IdentityServerDTO}
|
||||
* @param requiredApiParams all mandatory api params
|
||||
* @throws BadRequestException if a required api param does not exist
|
||||
*/
|
||||
private void validateAllRequiredParamsExists(IdentityServerDTO identityServerDTO, List<String> requiredApiParams)
|
||||
throws BadRequestException {
|
||||
for (String param : requiredApiParams) {
|
||||
@ -333,6 +389,14 @@ public class SPApplicationManagerImpl implements SPApplicationManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Make sure if all api params are valid
|
||||
* For example it may contain an unwanted api param
|
||||
*
|
||||
* @param identityServerDTO {@link IdentityServerDTO}
|
||||
* @param requiredApiParams all required api params
|
||||
* @throws BadRequestException if an unwanted api param exist
|
||||
*/
|
||||
private void validateIfAnyInvalidParamExists(IdentityServerDTO identityServerDTO, List<String> requiredApiParams)
|
||||
throws BadRequestException {
|
||||
for (String param : identityServerDTO.getApiParamKeys()) {
|
||||
@ -344,6 +408,12 @@ public class SPApplicationManagerImpl implements SPApplicationManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* If the given providerName does not exist in the identity server config file
|
||||
*
|
||||
* @param providerName Name of the identity service provider
|
||||
* @return if provider name exist in identity server config
|
||||
*/
|
||||
private boolean isIdentityServiceProviderNotConfigured(String providerName) {
|
||||
List<IdentityServiceProvider> identityServiceProviders = ConfigurationManager.getInstance().getIdentityServerConfiguration().
|
||||
getIdentityServiceProviders();
|
||||
@ -508,7 +578,7 @@ public class SPApplicationManagerImpl implements SPApplicationManager {
|
||||
} catch (ApplicationManagementException e) {
|
||||
String msg = "Identity service provider configuration file is invalid. Hence failed to proceed.";
|
||||
log.error(msg);
|
||||
throw new ApplicationManagementException(msg);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
}
|
||||
}
|
||||
return identityServiceProviderDTOS;
|
||||
|
||||
@ -95,7 +95,7 @@ public class SPApplicationServiceImpl implements SPApplicationService {
|
||||
return Response.status(Response.Status.OK).entity("Successfully deleted identity server").build();
|
||||
} catch (NotFoundException e) {
|
||||
String msg = "Identity server with the id " + id + " does not exist.";
|
||||
log.error(msg);
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.BAD_REQUEST).entity(msg).build();
|
||||
} catch (ApplicationManagementException e) {
|
||||
String errMsg = "Error occurred while trying to merge identity server apps with existing apps";
|
||||
@ -114,7 +114,7 @@ public class SPApplicationServiceImpl implements SPApplicationService {
|
||||
return Response.status(Response.Status.OK).entity(identityServer).build();
|
||||
} catch (NotFoundException e) {
|
||||
String msg = "Identity server with the id " + id + " does not exist.";
|
||||
log.error(msg);
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.BAD_REQUEST).entity(msg).build();
|
||||
} catch (ApplicationManagementException e) {
|
||||
String errMsg = "Error occurred while trying to merge identity server apps with existing apps";
|
||||
@ -133,7 +133,7 @@ public class SPApplicationServiceImpl implements SPApplicationService {
|
||||
return Response.status(Response.Status.OK).entity(identityServerResponse).build();
|
||||
} catch (NotFoundException e) {
|
||||
String msg = "Identity server with the id " + id + " does not exist.";
|
||||
log.error(msg);
|
||||
log.error(msg, e);
|
||||
return Response.status(Response.Status.BAD_REQUEST).entity(msg).build();
|
||||
} catch (BadRequestException e) {
|
||||
String errMsg = "Identity server request payload is invalid";
|
||||
|
||||
@ -24,6 +24,12 @@ import java.util.Base64;
|
||||
|
||||
public class FileUtil {
|
||||
|
||||
/**
|
||||
* Useful to remove path separator string "," from base64 string
|
||||
*
|
||||
* @param base64String base64 string
|
||||
* @return base64 string without path separator
|
||||
*/
|
||||
public static String removePathSeparatorFromBase64String(String base64String) {
|
||||
String partSeparator = ",";
|
||||
if (base64String.contains(partSeparator)) {
|
||||
@ -32,6 +38,12 @@ public class FileUtil {
|
||||
return base64String;
|
||||
}
|
||||
|
||||
/**
|
||||
* Useful to convert base64 string to input stream
|
||||
*
|
||||
* @param base64 base64 string to be converted
|
||||
* @return {@link InputStream} of the provided base64 string
|
||||
*/
|
||||
public static InputStream base64ToInputStream(String base64) {
|
||||
base64 = FileUtil.removePathSeparatorFromBase64String(base64);
|
||||
byte[] base64Bytes = Base64.getDecoder().decode(base64);
|
||||
@ -72,13 +84,24 @@ public class FileUtil {
|
||||
return suffix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use to extract file extension from file name
|
||||
*
|
||||
* @param fileName name of the file
|
||||
* @return extension of the file
|
||||
*/
|
||||
private static String extractFileExtension(String fileName) {
|
||||
return fileName.substring(fileName.lastIndexOf('.') + 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Use to extract the file name without the extension
|
||||
* For example if you provide "main.java" as the fileName this will return main
|
||||
*
|
||||
* @param fileName name of the file
|
||||
* @return file name without file extension
|
||||
*/
|
||||
private static String extractFileNameWithoutExtension(String fileName) {
|
||||
return fileName.substring(0, fileName.lastIndexOf('.'));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -32,20 +32,47 @@ import java.util.Map;
|
||||
|
||||
public class HttpUtil {
|
||||
|
||||
/**
|
||||
* Use to create {@link URI} from string
|
||||
* This does encoding of the provided uri string before creating the URI
|
||||
*
|
||||
* @param uriString uri string to be used to create the URI
|
||||
* @return created URI
|
||||
*/
|
||||
public static URI createURI(String uriString) {
|
||||
uriString = uriString.replace(" ", "%20");
|
||||
return URI.create(uriString);
|
||||
}
|
||||
|
||||
/**
|
||||
* Use to create basic auth header string for provided credentials
|
||||
*
|
||||
* @param userName username credential
|
||||
* @param password password credential
|
||||
* @return Basic auth header
|
||||
*/
|
||||
public static String getBasicAuthBase64Header(String userName, String password) {
|
||||
return Constants.BASIC_AUTH_HEADER_PREFIX + getBase64Encode(userName, password);
|
||||
}
|
||||
|
||||
/**
|
||||
* Use to get the base64 encoded string of key value pair.
|
||||
* For example this can be useful when creating basic auth header
|
||||
*
|
||||
* @return base64 encoded string of provided key and value
|
||||
*/
|
||||
public static String getBase64Encode(String key, String value) {
|
||||
return new String(Base64.encodeBase64((key + ":" + value).getBytes()));
|
||||
}
|
||||
|
||||
public static String getRequestSubPathFromEnd(URI requestUri, int position) {
|
||||
/**
|
||||
* Useful to get the sub path in a position from the given uri starting from end of the uri
|
||||
*
|
||||
* @param requestUri {@link URI}
|
||||
* @param position of which the sub path is needed
|
||||
* @return Sub path of the uri
|
||||
*/
|
||||
public static String extractRequestSubPathFromEnd(URI requestUri, int position) {
|
||||
if (requestUri.getPath() != null) {
|
||||
String[] pathList = requestUri.getPath().split("/");
|
||||
if (pathList.length - 1 >= position) {
|
||||
@ -55,8 +82,15 @@ public class HttpUtil {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static String getRequestSubPath(String fullPath, int position) {
|
||||
String[] pathList = fullPath.split("/");
|
||||
/**
|
||||
* Useful to get the sub path in a position from the given uri
|
||||
*
|
||||
* @param uri uri string from which the sub path should be extracted
|
||||
* @param position of which the sub path is needed
|
||||
* @return Sub path of the uri
|
||||
*/
|
||||
public static String extractRequestSubPath(String uri, int position) {
|
||||
String[] pathList = uri.split("/");
|
||||
if (pathList.length - 1 > position) {
|
||||
String path = pathList[position + 1];
|
||||
if(path.contains(Constants.URI_QUERY_SEPARATOR)) {
|
||||
@ -67,14 +101,37 @@ public class HttpUtil {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* This returns the response body as string
|
||||
*
|
||||
* @param response {@link HttpResponse}
|
||||
* @return Response body string
|
||||
* @throws IOException if errors while converting response body to string
|
||||
*/
|
||||
public static String getResponseString(HttpResponse response) throws IOException {
|
||||
return EntityUtils.toString(response.getEntity());
|
||||
}
|
||||
|
||||
public static boolean isQueryParamExist(String param, URI request) {
|
||||
Map<String, List<String>> queryMap = getQueryMap(request);
|
||||
/**
|
||||
* Useful to check if a given query param exists in uri
|
||||
*
|
||||
* @param param query param to be checked
|
||||
* @param uri in which query param should be checked
|
||||
* @return if the provided query parameter exists in uri
|
||||
*/
|
||||
public static boolean isQueryParamExist(String param, URI uri) {
|
||||
Map<String, List<String>> queryMap = getQueryMap(uri);
|
||||
return queryMap.containsKey(param);
|
||||
}
|
||||
|
||||
/**
|
||||
* This is useful to get first query parameter value from a query map.
|
||||
* For example a query parameter may have multiple values.
|
||||
*
|
||||
* @param param query parameter of which the value is needed
|
||||
* @param queryMap query map which contains query paramters and it's values
|
||||
* @return First value of provided query parameter
|
||||
*/
|
||||
public static String getFirstQueryValue(String param, Map<String, List<String>> queryMap) {
|
||||
List<String> valueList = queryMap.get(param);
|
||||
String firstValue = null;
|
||||
@ -83,6 +140,20 @@ public class HttpUtil {
|
||||
}
|
||||
return firstValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* This constructs a key/value Map from query string of the provided uri.
|
||||
* In other words this will create a map with query parameters as keys and their
|
||||
* values as values.
|
||||
*
|
||||
* For example if the uri contains "?bar=1&foo=2" this will return a map
|
||||
* with bar and foo as keys and 1 and 2 as their values
|
||||
*
|
||||
* This is similar to getQueryMap(URI uri) method except that this accepts uri string
|
||||
*
|
||||
* @param uri of which the query map to be created
|
||||
* @return Query map of the provided uri
|
||||
*/
|
||||
public static Map<String, List<String>> getQueryMap(String uri) {
|
||||
String query = getQueryFromURIPath(uri);
|
||||
Map<String, List<String>> map = new HashMap<>();
|
||||
@ -103,8 +174,20 @@ public class HttpUtil {
|
||||
}
|
||||
return map;
|
||||
}
|
||||
public static Map<String, List<String>> getQueryMap(URI request) {
|
||||
String query = request.getQuery();
|
||||
|
||||
/**
|
||||
* This constructs a key/value Map from query string of the provided uri.
|
||||
* In other words this will create a map with query parameters as keys and their
|
||||
* values as values.
|
||||
*
|
||||
* For example if the uri contains "?bar=1&foo=2" this will return a map
|
||||
* with bar and foo as keys and 1 and 2 as their values
|
||||
*
|
||||
* @param uri of which the query map to be created
|
||||
* @return Query map of the provided uri
|
||||
*/
|
||||
public static Map<String, List<String>> getQueryMap(URI uri) {
|
||||
String query = uri.getQuery();
|
||||
Map<String, List<String>> map = new HashMap<>();
|
||||
if (query != null) {
|
||||
String[] params = query.split("&");
|
||||
@ -123,6 +206,13 @@ public class HttpUtil {
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get query string from uri path. Return null if no query string exists
|
||||
*
|
||||
* @param uri of which query string should be taken
|
||||
* @return Query string of the provided uri
|
||||
*/
|
||||
public static String getQueryFromURIPath(String uri) {
|
||||
String query = null;
|
||||
if (uri.length() > "?".length() && uri.contains("?")) {
|
||||
@ -134,6 +224,12 @@ public class HttpUtil {
|
||||
return query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get content type of http response
|
||||
*
|
||||
* @param response {@link HttpResponse}
|
||||
* @return Content type
|
||||
*/
|
||||
public static String getContentType(HttpResponse response) {
|
||||
ContentType contentType = ContentType.getOrDefault(response.getEntity());
|
||||
return contentType.getMimeType();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user