mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Add query param to publish an enterprise release directly
This commit is contained in:
parent
8bdffc90c6
commit
1186c9e292
@ -180,7 +180,18 @@ public interface ApplicationManager {
|
||||
*/
|
||||
ApplicationRelease changeLifecycleState(String releaseUuid, LifecycleChanger lifecycleChanger)
|
||||
throws ApplicationManagementException;
|
||||
|
||||
|
||||
/**
|
||||
* To get all the releases of a particular ApplicationDTO.
|
||||
*
|
||||
* @param applicationReleaseDTO of the ApplicationDTO Release.
|
||||
* @param lifecycleChanger Lifecycle changer that contains the action and the reason for the change.
|
||||
* @throws ApplicationManagementException ApplicationDTO Management Exception.
|
||||
* @return
|
||||
*/
|
||||
ApplicationRelease changeLifecycleState(ApplicationReleaseDTO applicationReleaseDTO, LifecycleChanger lifecycleChanger)
|
||||
throws ApplicationManagementException;
|
||||
|
||||
/**
|
||||
* To update release images such as icons, banner and screenshots.
|
||||
*
|
||||
@ -208,10 +219,11 @@ public interface ApplicationManager {
|
||||
*
|
||||
* @param applicationId ID of the ApplicationDTO
|
||||
* @param entAppReleaseWrapper ApplicatonRelease that need to be be created.
|
||||
* @param isPublished checks if application should be published
|
||||
* @return the unique id of the application release, if the application release succeeded else -1
|
||||
*/
|
||||
ApplicationRelease createEntAppRelease(int applicationId, EntAppReleaseWrapper entAppReleaseWrapper,
|
||||
ApplicationArtifact applicationArtifact) throws ApplicationManagementException;
|
||||
ApplicationArtifact applicationArtifact, boolean isPublished) throws ApplicationManagementException;
|
||||
|
||||
/***
|
||||
*
|
||||
@ -305,5 +317,4 @@ public interface ApplicationManager {
|
||||
String getPlistArtifact(String uuid) throws ApplicationManagementException;
|
||||
|
||||
List<ApplicationReleaseDTO> getReleaseByPackageNames(List<String> packageIds) throws ApplicationManagementException;
|
||||
|
||||
}
|
||||
|
||||
@ -940,18 +940,23 @@ ApplicationManagerImpl implements ApplicationManager {
|
||||
log.debug("Creating a new release. App Id:" + appId);
|
||||
}
|
||||
|
||||
String lifeCycleState;
|
||||
if(isPublished){
|
||||
lifeCycleState = lifecycleStateManager.getInstallableState();
|
||||
} else {
|
||||
lifeCycleState = lifecycleStateManager.getInitialState();
|
||||
}
|
||||
String lifeCycleState = lifecycleStateManager.getInitialState();
|
||||
String[] publishStates= {"IN-REVIEW", "APPROVED", "PUBLISHED"};
|
||||
|
||||
applicationReleaseDTO.setCurrentState(lifeCycleState);
|
||||
applicationReleaseDTO = this.applicationReleaseDAO
|
||||
.createRelease(applicationReleaseDTO, appId, tenantId);
|
||||
applicationReleaseDTO = this.applicationReleaseDAO.createRelease(applicationReleaseDTO, appId, tenantId);
|
||||
LifecycleState lifecycleState = getLifecycleStateInstance(lifeCycleState, lifeCycleState);
|
||||
this.lifecycleStateDAO.addLifecycleState(lifecycleState, applicationReleaseDTO.getId(), tenantId);
|
||||
|
||||
if(isPublished){
|
||||
for (String state: publishStates) {
|
||||
LifecycleChanger lifecycleChanger = new LifecycleChanger();
|
||||
lifecycleChanger.setAction(state);
|
||||
lifecycleChanger.setReason("Updated to " + state);
|
||||
this.changeLifecycleState(applicationReleaseDTO, lifecycleChanger);
|
||||
}
|
||||
}
|
||||
|
||||
applicationReleaseEntities.add(applicationReleaseDTO);
|
||||
applicationDTO.setApplicationReleaseDTOs(applicationReleaseEntities);
|
||||
Application application = APIUtil.appDtoToAppResponse(applicationDTO);
|
||||
@ -1011,7 +1016,7 @@ ApplicationManagerImpl implements ApplicationManager {
|
||||
|
||||
@Override
|
||||
public ApplicationRelease createEntAppRelease(int applicationId, EntAppReleaseWrapper entAppReleaseWrapper,
|
||||
ApplicationArtifact applicationArtifact) throws ApplicationManagementException {
|
||||
ApplicationArtifact applicationArtifact, boolean isPublished) throws ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Application release creating request is received for the application id: " + applicationId);
|
||||
@ -1037,15 +1042,28 @@ ApplicationManagerImpl implements ApplicationManager {
|
||||
ApplicationReleaseDTO applicationReleaseDTO = uploadEntAppReleaseArtifacts(
|
||||
APIUtil.releaseWrapperToReleaseDTO(entAppReleaseWrapper), applicationArtifact, deviceType.getName(),
|
||||
tenantId, true);
|
||||
|
||||
try {
|
||||
ConnectionManagerUtil.beginDBTransaction();
|
||||
String initialstate = lifecycleStateManager.getInitialState();
|
||||
applicationReleaseDTO.setCurrentState(initialstate);
|
||||
LifecycleState lifecycleState = getLifecycleStateInstance(initialstate, initialstate);
|
||||
String lifeCycleState = lifecycleStateManager.getInitialState();
|
||||
String[] publishStates= {"IN-REVIEW", "APPROVED", "PUBLISHED"};
|
||||
|
||||
applicationReleaseDTO.setCurrentState(lifeCycleState);
|
||||
LifecycleState lifecycleState = getLifecycleStateInstance(lifeCycleState, lifeCycleState);
|
||||
applicationReleaseDTO = this.applicationReleaseDAO
|
||||
.createRelease(applicationReleaseDTO, applicationDTO.getId(), tenantId);
|
||||
this.lifecycleStateDAO
|
||||
.addLifecycleState(lifecycleState, applicationReleaseDTO.getId(), tenantId);
|
||||
|
||||
if(isPublished){
|
||||
for (String state: publishStates) {
|
||||
LifecycleChanger lifecycleChanger = new LifecycleChanger();
|
||||
lifecycleChanger.setAction(state);
|
||||
lifecycleChanger.setReason("Updated to " + state);
|
||||
this.changeLifecycleState(applicationReleaseDTO, lifecycleChanger);
|
||||
}
|
||||
}
|
||||
|
||||
ApplicationRelease applicationRelease = APIUtil.releaseDtoToRelease(applicationReleaseDTO);
|
||||
ConnectionManagerUtil.commitDBTransaction();
|
||||
return applicationRelease;
|
||||
@ -1890,6 +1908,61 @@ ApplicationManagerImpl implements ApplicationManager {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
public ApplicationRelease changeLifecycleState(ApplicationReleaseDTO applicationReleaseDTO, LifecycleChanger lifecycleChanger) throws ApplicationManagementException {
|
||||
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
String userName = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
|
||||
if (lifecycleChanger == null || StringUtils.isEmpty(lifecycleChanger.getAction())) {
|
||||
String msg = "The Action is null or empty. Please verify the request.";
|
||||
log.error(msg);
|
||||
throw new BadRequestException(msg);
|
||||
}
|
||||
|
||||
try{
|
||||
if (lifecycleStateManager
|
||||
.isValidStateChange(applicationReleaseDTO.getCurrentState(), lifecycleChanger.getAction(), userName,
|
||||
tenantId)) {
|
||||
if (lifecycleStateManager.isInstallableState(lifecycleChanger.getAction()) && applicationReleaseDAO
|
||||
.hasExistInstallableAppRelease(applicationReleaseDTO.getUuid(),
|
||||
lifecycleStateManager.getInstallableState(), tenantId)) {
|
||||
String msg = "Installable application release is already registered for the application. "
|
||||
+ "Therefore it is not permitted to change the lifecycle state from "
|
||||
+ applicationReleaseDTO.getCurrentState() + " to " + lifecycleChanger.getAction();
|
||||
log.error(msg);
|
||||
throw new ForbiddenException(msg);
|
||||
}
|
||||
LifecycleState lifecycleState = new LifecycleState();
|
||||
lifecycleState.setCurrentState(lifecycleChanger.getAction());
|
||||
lifecycleState.setPreviousState(applicationReleaseDTO.getCurrentState());
|
||||
lifecycleState.setUpdatedBy(userName);
|
||||
lifecycleState.setReasonForChange(lifecycleChanger.getReason());
|
||||
applicationReleaseDTO.setCurrentState(lifecycleChanger.getAction());
|
||||
if (this.applicationReleaseDAO.updateRelease(applicationReleaseDTO, tenantId) == null) {
|
||||
String msg = "Application release updating is failed/.";
|
||||
log.error(msg);
|
||||
throw new ApplicationManagementException(msg);
|
||||
}
|
||||
this.lifecycleStateDAO.addLifecycleState(lifecycleState, applicationReleaseDTO.getId(), tenantId);
|
||||
return APIUtil.releaseDtoToRelease(applicationReleaseDTO);
|
||||
} else {
|
||||
String msg = "Invalid lifecycle state transition from '" + applicationReleaseDTO.getCurrentState() + "'"
|
||||
+ " to '" + lifecycleChanger.getAction() + "'";
|
||||
log.error(msg);
|
||||
throw new ApplicationManagementException(msg);
|
||||
}
|
||||
} catch (ApplicationManagementDAOException e) {
|
||||
String msg = "Error occurred when accessing application release data of application release which has the "
|
||||
+ "application release UUID: " + applicationReleaseDTO.getUuid();
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (LifeCycleManagementDAOException e) {
|
||||
String msg = "Failed to add lifecycle state for Application release UUID: " + applicationReleaseDTO.getUuid();
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void addApplicationCategories(List<String> categories) throws ApplicationManagementException {
|
||||
|
||||
@ -613,6 +613,11 @@ public interface ApplicationManagementPublisherAPI {
|
||||
value = "The application release that need to be created.",
|
||||
required = true)
|
||||
@Multipart("applicationRelease") EntAppReleaseWrapper entAppReleaseWrapper,
|
||||
@ApiParam(
|
||||
name = "isPublished",
|
||||
value = "Published state of the application"
|
||||
)
|
||||
@QueryParam("is-Published") boolean isPublished,
|
||||
@ApiParam(
|
||||
name = "binaryFile",
|
||||
value = "Binary file of uploading application",
|
||||
|
||||
@ -355,6 +355,7 @@ public class ApplicationManagementPublisherAPIImpl implements ApplicationManagem
|
||||
@PathParam("deviceType") String deviceType,
|
||||
@PathParam("appId") int appId,
|
||||
@Multipart("applicationRelease") EntAppReleaseWrapper entAppReleaseWrapper,
|
||||
@QueryParam("is-published") boolean isPublished,
|
||||
@Multipart("binaryFile") Attachment binaryFile,
|
||||
@Multipart("icon") Attachment iconFile,
|
||||
@Multipart(value = "banner", required = false) Attachment bannerFile,
|
||||
@ -370,7 +371,7 @@ public class ApplicationManagementPublisherAPIImpl implements ApplicationManagem
|
||||
|
||||
// Created new Ent App release
|
||||
ApplicationRelease release = applicationManager.createEntAppRelease(appId, entAppReleaseWrapper,
|
||||
constructApplicationArtifact(binaryFile, iconFile, bannerFile, attachmentList));
|
||||
constructApplicationArtifact(binaryFile, iconFile, bannerFile, attachmentList), isPublished);
|
||||
if (release != null) {
|
||||
return Response.status(Response.Status.CREATED).entity(release).build();
|
||||
} else {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user