mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge branch 'master' into 'master'
Improve APPM application retrieving APIs See merge request entgra/carbon-device-mgt!521
This commit is contained in:
commit
33d9c316ab
@ -1153,49 +1153,50 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
public Application getApplicationById(int appId, String state) throws ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
String userName = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
|
||||
boolean isVisibleApp = false;
|
||||
ApplicationDTO applicationDTO = getApplication(appId);
|
||||
|
||||
try {
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
List<ApplicationReleaseDTO> filteredApplicationReleaseDTOs = new ArrayList<>();
|
||||
for (ApplicationReleaseDTO applicationReleaseDTO : applicationDTO.getApplicationReleaseDTOs()) {
|
||||
if (!applicationReleaseDTO.getCurrentState().equals(lifecycleStateManager.getEndState()) && (
|
||||
state == null || applicationReleaseDTO.getCurrentState().equals(state))) {
|
||||
filteredApplicationReleaseDTOs.add(applicationReleaseDTO);
|
||||
}
|
||||
}
|
||||
if (state != null && filteredApplicationReleaseDTOs.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
applicationDTO.setApplicationReleaseDTOs(filteredApplicationReleaseDTOs);
|
||||
|
||||
List<String> tags = this.applicationDAO.getAppTags(appId, tenantId);
|
||||
List<String> categories = this.applicationDAO.getAppCategories(appId, tenantId);
|
||||
applicationDTO.setTags(tags);
|
||||
if (!categories.isEmpty()){
|
||||
applicationDTO.setAppCategories(categories);
|
||||
}
|
||||
|
||||
List<String> unrestrictedRoles = this.visibilityDAO.getUnrestrictedRoles(appId, tenantId);
|
||||
if (!unrestrictedRoles.isEmpty()) {
|
||||
if (hasUserRole(unrestrictedRoles, userName)) {
|
||||
isVisibleApp = true;
|
||||
}
|
||||
} else {
|
||||
isVisibleApp = true;
|
||||
}
|
||||
|
||||
if (!isVisibleApp) {
|
||||
String msg = "You are trying to access visibility restricted application. You don't have required "
|
||||
+ "roles to view this application,";
|
||||
if (!unrestrictedRoles.isEmpty() && !hasUserRole(unrestrictedRoles, userName)) {
|
||||
String msg = "You are trying to access visibility restricted application and you are not assigned"
|
||||
+ " required roles to view this application,";
|
||||
log.error(msg);
|
||||
throw new ForbiddenException(msg);
|
||||
}
|
||||
return APIUtil.appDtoToAppResponse(applicationDTO);
|
||||
if (lifecycleStateManager.getEndState().equals(applicationDTO.getStatus())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
List<ApplicationReleaseDTO> filteredApplicationReleaseDTOs = new ArrayList<>();
|
||||
AtomicBoolean isDeletableApp = new AtomicBoolean(true);
|
||||
AtomicBoolean isHideableApp = new AtomicBoolean(true);
|
||||
for (ApplicationReleaseDTO applicationReleaseDTO : applicationDTO.getApplicationReleaseDTOs()) {
|
||||
if (!applicationReleaseDTO.getCurrentState().equals(lifecycleStateManager.getEndState())) {
|
||||
if (isHideableApp.get()) {
|
||||
isHideableApp.set(false);
|
||||
}
|
||||
if (isDeletableApp.get() && !lifecycleStateManager
|
||||
.isDeletableState(applicationReleaseDTO.getCurrentState())) {
|
||||
isDeletableApp.set(false);
|
||||
}
|
||||
if (state == null || state.equals(applicationReleaseDTO.getCurrentState())) {
|
||||
filteredApplicationReleaseDTOs.add(applicationReleaseDTO);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
applicationDTO.setApplicationReleaseDTOs(filteredApplicationReleaseDTOs);
|
||||
applicationDTO.setTags(this.applicationDAO.getAppTags(appId, tenantId));
|
||||
applicationDTO.setAppCategories(this.applicationDAO.getAppCategories(appId, tenantId));
|
||||
|
||||
Application application = APIUtil.appDtoToAppResponse(applicationDTO);
|
||||
application.setHideableApp(isHideableApp.get());
|
||||
application.setDeletableApp(isDeletableApp.get());
|
||||
return application;
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the database connection to get application for application ID: "
|
||||
+ appId;
|
||||
String msg =
|
||||
"Error occurred while obtaining the database connection to get application for application ID: "
|
||||
+ appId;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (LifecycleManagementException e) {
|
||||
@ -1219,7 +1220,6 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
public Application getApplicationByUuid(String releaseUuid) throws ApplicationManagementException{
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
String userName = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
|
||||
boolean isVisibleApp = false;
|
||||
|
||||
try {
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
@ -1230,34 +1230,36 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
throw new NotFoundException(msg);
|
||||
}
|
||||
|
||||
List<String> tags = this.applicationDAO.getAppTags(applicationDTO.getId(), tenantId);
|
||||
List<String> categories = this.applicationDAO.getAppCategories(applicationDTO.getId(), tenantId);
|
||||
applicationDTO.setTags(tags);
|
||||
applicationDTO.setAppCategories(categories);
|
||||
|
||||
List<String> unrestrictedRoles = this.visibilityDAO.getUnrestrictedRoles(applicationDTO.getId(), tenantId);
|
||||
if (!unrestrictedRoles.isEmpty()) {
|
||||
if (hasUserRole(unrestrictedRoles, userName)) {
|
||||
isVisibleApp = true;
|
||||
}
|
||||
} else {
|
||||
isVisibleApp = true;
|
||||
ApplicationReleaseDTO applicationReleaseDTO = applicationDTO.getApplicationReleaseDTOs().get(0);
|
||||
if (lifecycleStateManager.isEndState(applicationReleaseDTO.getCurrentState())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!isVisibleApp) {
|
||||
List<String> unrestrictedRoles = this.visibilityDAO.getUnrestrictedRoles(applicationDTO.getId(), tenantId);
|
||||
if (!unrestrictedRoles.isEmpty() && !hasUserRole(unrestrictedRoles, userName)) {
|
||||
String msg = "You are trying to access visibility restricted application. You don't have required "
|
||||
+ "roles to view this application,";
|
||||
log.error(msg);
|
||||
throw new ForbiddenException(msg);
|
||||
}
|
||||
return APIUtil.appDtoToAppResponse(applicationDTO);
|
||||
|
||||
applicationDTO.setTags(this.applicationDAO.getAppTags(applicationDTO.getId(), tenantId));
|
||||
applicationDTO.setAppCategories(this.applicationDAO.getAppCategories(applicationDTO.getId(), tenantId));
|
||||
|
||||
Application application = APIUtil.appDtoToAppResponse(applicationDTO);
|
||||
if (lifecycleStateManager.isDeletableState(applicationReleaseDTO.getCurrentState())) {
|
||||
ApplicationDTO entireApplication = applicationDAO.getApplication(applicationDTO.getId(), tenantId);
|
||||
application.setDeletableApp(isDeletableApp(entireApplication.getApplicationReleaseDTOs()));
|
||||
}
|
||||
return application;
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining the database connection to get application for application "
|
||||
+ "release UUID: " + releaseUuid;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (UserStoreException e) {
|
||||
String msg = "User-store exception occurred while getting application for application release UUID " + releaseUuid;
|
||||
String msg = "User-store exception occurred while getting application for application release UUID "
|
||||
+ releaseUuid;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (ApplicationManagementDAOException e) {
|
||||
|
||||
@ -165,10 +165,13 @@ public interface ApplicationManagementPublisherAPI {
|
||||
response = ApplicationDTO.class),
|
||||
@ApiResponse(
|
||||
code = 403,
|
||||
message = "Don't have permission to access the application"),
|
||||
message = "Forbidden. \n Don't have permission to access the application"),
|
||||
@ApiResponse(
|
||||
code = 404,
|
||||
message = "Application not found"),
|
||||
message = "Not Found. \n Application not found"),
|
||||
@ApiResponse(
|
||||
code = 409,
|
||||
message = "Conflict. \n Couldn't find an active application"),
|
||||
@ApiResponse(
|
||||
code = 500,
|
||||
message = "Internal Server Error. \n Error occurred while getting relevant application.",
|
||||
@ -211,10 +214,13 @@ public interface ApplicationManagementPublisherAPI {
|
||||
response = ApplicationDTO.class),
|
||||
@ApiResponse(
|
||||
code = 403,
|
||||
message = "Don't have permission to access the application release"),
|
||||
message = "Forbidden. \n Don't have permission to access the application release"),
|
||||
@ApiResponse(
|
||||
code = 404,
|
||||
message = "Application release not found"),
|
||||
message = "Not Found. \n Application release not found"),
|
||||
@ApiResponse(
|
||||
code = 409,
|
||||
message = "Conflict. \n Application release is in the end state of lifecycle flow"),
|
||||
@ApiResponse(
|
||||
code = 500,
|
||||
message = "Internal Server Error. \n Error occurred while getting relevant application release.",
|
||||
|
||||
@ -313,8 +313,8 @@ public interface ApplicationManagementPublisherAdminAPI {
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "PUT",
|
||||
value = "Retire the application with the given UUID",
|
||||
notes = "This will retire the application with the given UUID",
|
||||
value = "Retire the application with the given app Id",
|
||||
notes = "This will retire the application with the given app Id",
|
||||
tags = "Application Management",
|
||||
extensions = {
|
||||
@Extension(properties = {
|
||||
@ -326,7 +326,7 @@ public interface ApplicationManagementPublisherAdminAPI {
|
||||
value = {
|
||||
@ApiResponse(
|
||||
code = 200,
|
||||
message = "OK. \n Successfully deleted the application identified by UUID.",
|
||||
message = "OK. \n Successfully deleted the application identified by app Id.",
|
||||
response = List.class),
|
||||
@ApiResponse(
|
||||
code = 500,
|
||||
@ -341,8 +341,8 @@ public interface ApplicationManagementPublisherAdminAPI {
|
||||
})
|
||||
Response retireApplication(
|
||||
@ApiParam(
|
||||
name = "UUID",
|
||||
value = "Unique identifier of the ApplicationDTO",
|
||||
name = "appId",
|
||||
value = "Application Id",
|
||||
required = true)
|
||||
@PathParam("appId") int applicationId
|
||||
);
|
||||
|
||||
@ -116,9 +116,9 @@ public class ApplicationManagementPublisherAPIImpl implements ApplicationManagem
|
||||
try {
|
||||
Application application = applicationManager.getApplicationById(appId, state);
|
||||
if (application == null){
|
||||
String msg = "Could not found an application release which is in " + state + " state.";
|
||||
String msg = "Could not found an active application which has Id: " + appId;
|
||||
log.error(msg);
|
||||
return Response.status(Response.Status.OK).entity(msg).build();
|
||||
return Response.status(Response.Status.CONFLICT).entity(msg).build();
|
||||
}
|
||||
return Response.status(Response.Status.OK).entity(application).build();
|
||||
} catch (NotFoundException e) {
|
||||
@ -148,7 +148,7 @@ public class ApplicationManagementPublisherAPIImpl implements ApplicationManagem
|
||||
if (application == null){
|
||||
String msg = "Application release is in the end state of the application lifecycle flow.";
|
||||
log.error(msg);
|
||||
return Response.status(Response.Status.OK).entity(msg).build();
|
||||
return Response.status(Response.Status.CONFLICT).entity(msg).build();
|
||||
}
|
||||
return Response.status(Response.Status.OK).entity(application).build();
|
||||
} catch (NotFoundException e) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user