mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Improve app create response
This commit is contained in:
parent
7e4cc36977
commit
03dc9e8810
@ -118,6 +118,12 @@
|
|||||||
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
|
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.jackson</groupId>
|
||||||
|
<artifactId>jackson-core-asl</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
|
||||||
|
|||||||
@ -68,6 +68,11 @@ public class Filter {
|
|||||||
*/
|
*/
|
||||||
private int deviceTypeId;
|
private int deviceTypeId;
|
||||||
|
|
||||||
|
/***
|
||||||
|
* Package Name of the application release. i.e org.wso2.iot.agent etc
|
||||||
|
*/
|
||||||
|
private String packageName;
|
||||||
|
|
||||||
public int getLimit() {
|
public int getLimit() {
|
||||||
return limit;
|
return limit;
|
||||||
}
|
}
|
||||||
@ -133,4 +138,8 @@ public class Filter {
|
|||||||
public int getDeviceTypeId() { return deviceTypeId; }
|
public int getDeviceTypeId() { return deviceTypeId; }
|
||||||
|
|
||||||
public void setDeviceTypeId(int deviceTypeId) { this.deviceTypeId = deviceTypeId; }
|
public void setDeviceTypeId(int deviceTypeId) { this.deviceTypeId = deviceTypeId; }
|
||||||
|
|
||||||
|
public String getPackageName() { return packageName; }
|
||||||
|
|
||||||
|
public void setPackageName(String packageName) { this.packageName = packageName; }
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,14 +18,14 @@
|
|||||||
*/
|
*/
|
||||||
package org.wso2.carbon.device.application.mgt.common.entity;
|
package org.wso2.carbon.device.application.mgt.common.entity;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
|
||||||
|
|
||||||
@ApiModel(value = "ApplicationReleaseEntity", description = "This class holds the details when releasing an ApplicationEntity to application store")
|
@ApiModel(value = "ApplicationReleaseEntity", description = "This class holds the details when releasing an ApplicationEntity to application store")
|
||||||
|
@JsonIgnoreProperties({"appHashValue"})
|
||||||
public class ApplicationReleaseEntity {
|
public class ApplicationReleaseEntity {
|
||||||
|
|
||||||
@JsonIgnore
|
|
||||||
@ApiModelProperty(name = "id",
|
@ApiModelProperty(name = "id",
|
||||||
value = "ID of the application release")
|
value = "ID of the application release")
|
||||||
private int id;
|
private int id;
|
||||||
|
|||||||
@ -20,6 +20,11 @@ import io.swagger.annotations.ApiModelProperty;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class Application {
|
public class Application {
|
||||||
|
@ApiModelProperty(name = "id",
|
||||||
|
value = "ID of the application",
|
||||||
|
required = true)
|
||||||
|
private int id;
|
||||||
|
|
||||||
@ApiModelProperty(name = "name",
|
@ApiModelProperty(name = "name",
|
||||||
value = "Name of the application",
|
value = "Name of the application",
|
||||||
required = true)
|
required = true)
|
||||||
@ -68,12 +73,14 @@ public class Application {
|
|||||||
example = "IoS, Android, Arduino, RaspberryPi etc")
|
example = "IoS, Android, Arduino, RaspberryPi etc")
|
||||||
private String deviceType;
|
private String deviceType;
|
||||||
|
|
||||||
|
|
||||||
@ApiModelProperty(name = "applicationReleases",
|
@ApiModelProperty(name = "applicationReleases",
|
||||||
value = "List of application releases",
|
value = "List of application releases",
|
||||||
required = true)
|
required = true)
|
||||||
private List<ApplicationRelease> applicationReleases;
|
private List<ApplicationRelease> applicationReleases;
|
||||||
|
|
||||||
|
public int getId() { return id; }
|
||||||
|
|
||||||
|
public void setId(int id) { this.id = id; }
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return name;
|
return name;
|
||||||
|
|||||||
@ -28,6 +28,38 @@ public class ApplicationRelease {
|
|||||||
value = "Description of the application release")
|
value = "Description of the application release")
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "version",
|
||||||
|
value = "Version of the application release")
|
||||||
|
private String version;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "uuid",
|
||||||
|
value = "UUID of the application release")
|
||||||
|
private String uuid;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "installerPath",
|
||||||
|
value = "ApplicationEntity storing location")
|
||||||
|
private String installerPath;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "bannerPath",
|
||||||
|
value = "Banner file storing location")
|
||||||
|
private String bannerPath;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "iconPath",
|
||||||
|
value = "icon file storing location")
|
||||||
|
private String iconPath;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "screenshotPath1",
|
||||||
|
value = "Screenshot storing location")
|
||||||
|
private String screenshotPath1;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "screenshotPath2",
|
||||||
|
value = "Screenshot storing location")
|
||||||
|
private String screenshotPath2;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "screenshotPath3",
|
||||||
|
value = "Screenshot storing location")
|
||||||
|
private String screenshotPath3;
|
||||||
|
|
||||||
@ApiModelProperty(name = "releaseType",
|
@ApiModelProperty(name = "releaseType",
|
||||||
value = "Release type of the application release",
|
value = "Release type of the application release",
|
||||||
required = true,
|
required = true,
|
||||||
@ -101,6 +133,42 @@ public class ApplicationRelease {
|
|||||||
|
|
||||||
public void setDescription(String description) { this.description = description; }
|
public void setDescription(String description) { this.description = description; }
|
||||||
|
|
||||||
|
public String getVersion() { return version; }
|
||||||
|
|
||||||
|
public void setVersion(String version) { this.version = version; }
|
||||||
|
|
||||||
|
public String getUuid() { return uuid; }
|
||||||
|
|
||||||
|
public void setUuid(String uuid) { this.uuid = uuid; }
|
||||||
|
|
||||||
|
public String getInstallerPath() { return installerPath; }
|
||||||
|
|
||||||
|
public void setInstallerPath(String installerPath) { this.installerPath = installerPath; }
|
||||||
|
|
||||||
|
public String getBannerPath() { return bannerPath; }
|
||||||
|
|
||||||
|
public void setBannerPath(String bannerPath) { this.bannerPath = bannerPath; }
|
||||||
|
|
||||||
|
public String getIconPath() { return iconPath; }
|
||||||
|
|
||||||
|
public void setIconPath(String iconPath) { this.iconPath = iconPath; }
|
||||||
|
|
||||||
|
public String getScreenshotPath1() { return screenshotPath1; }
|
||||||
|
|
||||||
|
public void setScreenshotPath1(String screenshotPath1) { this.screenshotPath1 = screenshotPath1; }
|
||||||
|
|
||||||
|
public String getScreenshotPath2() { return screenshotPath2; }
|
||||||
|
|
||||||
|
public void setScreenshotPath2(String screenshotPath2) { this.screenshotPath2 = screenshotPath2; }
|
||||||
|
|
||||||
|
public String getScreenshotPath3() { return screenshotPath3; }
|
||||||
|
|
||||||
|
public void setScreenshotPath3(String screenshotPath3) { this.screenshotPath3 = screenshotPath3; }
|
||||||
|
|
||||||
|
public boolean isSharedWithAllTenants() { return isSharedWithAllTenants; }
|
||||||
|
|
||||||
|
public void setSharedWithAllTenants(boolean sharedWithAllTenants) { isSharedWithAllTenants = sharedWithAllTenants; }
|
||||||
|
|
||||||
public String getSupportedOsVersions() { return supportedOsVersions; }
|
public String getSupportedOsVersions() { return supportedOsVersions; }
|
||||||
|
|
||||||
public void setSupportedOsVersions(String supportedOsVersions) { this.supportedOsVersions = supportedOsVersions; }
|
public void setSupportedOsVersions(String supportedOsVersions) { this.supportedOsVersions = supportedOsVersions; }
|
||||||
|
|||||||
@ -27,6 +27,7 @@ import org.wso2.carbon.device.application.mgt.common.Filter;
|
|||||||
import org.wso2.carbon.device.application.mgt.common.entity.LifecycleStateEntity;
|
import org.wso2.carbon.device.application.mgt.common.entity.LifecycleStateEntity;
|
||||||
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationManagementException;
|
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationManagementException;
|
||||||
import org.wso2.carbon.device.application.mgt.common.exception.RequestValidatingException;
|
import org.wso2.carbon.device.application.mgt.common.exception.RequestValidatingException;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.response.Application;
|
||||||
import org.wso2.carbon.device.application.mgt.common.wrapper.ApplicationReleaseWrapper;
|
import org.wso2.carbon.device.application.mgt.common.wrapper.ApplicationReleaseWrapper;
|
||||||
import org.wso2.carbon.device.application.mgt.common.wrapper.ApplicationWrapper;
|
import org.wso2.carbon.device.application.mgt.common.wrapper.ApplicationWrapper;
|
||||||
|
|
||||||
@ -46,7 +47,7 @@ public interface ApplicationManager {
|
|||||||
* @return Created application
|
* @return Created application
|
||||||
* @throws ApplicationManagementException ApplicationEntity Management Exception
|
* @throws ApplicationManagementException ApplicationEntity Management Exception
|
||||||
*/
|
*/
|
||||||
ApplicationEntity createApplication(ApplicationWrapper applicationWrapper, ApplicationArtifact applicationArtifact)
|
Application createApplication(ApplicationWrapper applicationWrapper, ApplicationArtifact applicationArtifact)
|
||||||
throws ApplicationManagementException, RequestValidatingException;
|
throws ApplicationManagementException, RequestValidatingException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -46,6 +46,8 @@ public class Configuration {
|
|||||||
|
|
||||||
private List<String> appCategories;
|
private List<String> appCategories;
|
||||||
|
|
||||||
|
private String artifactDownloadEndpoint;
|
||||||
|
|
||||||
@XmlElement(name = "DatasourceName", required = true)
|
@XmlElement(name = "DatasourceName", required = true)
|
||||||
public String getDatasourceName() {
|
public String getDatasourceName() {
|
||||||
return datasourceName;
|
return datasourceName;
|
||||||
@ -89,6 +91,15 @@ public class Configuration {
|
|||||||
this.uiConfiguration = uiConfiguration;
|
this.uiConfiguration = uiConfiguration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@XmlElement(name = "ArtifactDownloadEndpoint", required = true)
|
||||||
|
public String getArtifactDownloadEndpoint() {
|
||||||
|
return artifactDownloadEndpoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setArtifactDownloadEndpoint(String artifactDownloadEndpoint) {
|
||||||
|
this.artifactDownloadEndpoint = artifactDownloadEndpoint;
|
||||||
|
}
|
||||||
|
|
||||||
@XmlElementWrapper(name = "AppCategories")
|
@XmlElementWrapper(name = "AppCategories")
|
||||||
@XmlElement(name = "Category")
|
@XmlElement(name = "Category")
|
||||||
public List<String> getAppCategories() {
|
public List<String> getAppCategories() {
|
||||||
|
|||||||
@ -42,10 +42,13 @@ import org.wso2.carbon.device.application.mgt.common.exception.DBConnectionExcep
|
|||||||
import org.wso2.carbon.device.application.mgt.common.exception.RequestValidatingException;
|
import org.wso2.carbon.device.application.mgt.common.exception.RequestValidatingException;
|
||||||
import org.wso2.carbon.device.application.mgt.common.exception.ResourceManagementException;
|
import org.wso2.carbon.device.application.mgt.common.exception.ResourceManagementException;
|
||||||
import org.wso2.carbon.device.application.mgt.common.exception.TransactionManagementException;
|
import org.wso2.carbon.device.application.mgt.common.exception.TransactionManagementException;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.response.Application;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.response.ApplicationRelease;
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationManager;
|
import org.wso2.carbon.device.application.mgt.common.services.ApplicationManager;
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationStorageManager;
|
import org.wso2.carbon.device.application.mgt.common.services.ApplicationStorageManager;
|
||||||
import org.wso2.carbon.device.application.mgt.common.wrapper.ApplicationReleaseWrapper;
|
import org.wso2.carbon.device.application.mgt.common.wrapper.ApplicationReleaseWrapper;
|
||||||
import org.wso2.carbon.device.application.mgt.common.wrapper.ApplicationWrapper;
|
import org.wso2.carbon.device.application.mgt.common.wrapper.ApplicationWrapper;
|
||||||
|
import org.wso2.carbon.device.application.mgt.core.config.ConfigurationManager;
|
||||||
import org.wso2.carbon.device.application.mgt.core.dao.ApplicationDAO;
|
import org.wso2.carbon.device.application.mgt.core.dao.ApplicationDAO;
|
||||||
import org.wso2.carbon.device.application.mgt.core.dao.ApplicationReleaseDAO;
|
import org.wso2.carbon.device.application.mgt.core.dao.ApplicationReleaseDAO;
|
||||||
import org.wso2.carbon.device.application.mgt.core.dao.LifecycleStateDAO;
|
import org.wso2.carbon.device.application.mgt.core.dao.LifecycleStateDAO;
|
||||||
@ -63,6 +66,7 @@ import org.wso2.carbon.device.application.mgt.core.exception.VisibilityManagemen
|
|||||||
import org.wso2.carbon.device.application.mgt.core.internal.DataHolder;
|
import org.wso2.carbon.device.application.mgt.core.internal.DataHolder;
|
||||||
import org.wso2.carbon.device.application.mgt.core.lifecycle.LifecycleStateManger;
|
import org.wso2.carbon.device.application.mgt.core.lifecycle.LifecycleStateManger;
|
||||||
import org.wso2.carbon.device.application.mgt.core.util.ConnectionManagerUtil;
|
import org.wso2.carbon.device.application.mgt.core.util.ConnectionManagerUtil;
|
||||||
|
import org.wso2.carbon.device.application.mgt.core.util.Constants;
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||||
|
|
||||||
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||||
@ -117,67 +121,21 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
|||||||
* @throws ApplicationManagementException Catch all other throwing exceptions and returns {@link ApplicationManagementException}
|
* @throws ApplicationManagementException Catch all other throwing exceptions and returns {@link ApplicationManagementException}
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public ApplicationEntity createApplication(ApplicationWrapper applicationWrapper,
|
public Application createApplication(ApplicationWrapper applicationWrapper,
|
||||||
ApplicationArtifact applicationArtifact) throws RequestValidatingException, ApplicationManagementException {
|
ApplicationArtifact applicationArtifact) throws RequestValidatingException, ApplicationManagementException {
|
||||||
|
|
||||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||||
String userName = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
|
String userName = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
|
||||||
ApplicationStorageManager applicationStorageManager = Util.getApplicationStorageManager();
|
|
||||||
ApplicationEntity applicationEntity;
|
ApplicationEntity applicationEntity;
|
||||||
try {
|
Application application;
|
||||||
applicationEntity = appWrapperToAppEntity(applicationWrapper);
|
|
||||||
} catch (UnexpectedServerErrorException e) {
|
|
||||||
throw new ApplicationManagementException(e.getMessage(), e);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("Application create request is received for the tenant : " + tenantId + " From" + " the user : "
|
log.debug("Application create request is received for the tenant : " + tenantId + " From" + " the user : "
|
||||||
+ userName);
|
+ userName);
|
||||||
}
|
}
|
||||||
ApplicationReleaseEntity applicationReleaseEntity;
|
|
||||||
List<ApplicationReleaseEntity> applicationReleaseEntities = new ArrayList<>();
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
applicationReleaseEntity = applicationEntity.getApplicationReleases().get(0);
|
applicationEntity = addApplicationReleaseArtifacts(appWrapperToAppEntity(applicationWrapper), applicationArtifact);
|
||||||
// The application executable artifacts such as apks are uploaded.
|
} catch (UnexpectedServerErrorException e) {
|
||||||
if (!ApplicationType.ENTERPRISE.toString().equals(applicationWrapper.getType())) {
|
throw new ApplicationManagementException(e.getMessage(), e);
|
||||||
applicationReleaseEntity = applicationStorageManager
|
|
||||||
.uploadReleaseArtifact(applicationReleaseEntity, applicationEntity.getType(),
|
|
||||||
applicationEntity.getDeviceTypeName(), null);
|
|
||||||
} else {
|
|
||||||
applicationReleaseEntity.setInstallerName(applicationArtifact.getInstallerName());
|
|
||||||
applicationReleaseEntity = applicationStorageManager
|
|
||||||
.uploadReleaseArtifact(applicationReleaseEntity, applicationEntity.getType(),
|
|
||||||
applicationEntity.getDeviceTypeName(), applicationArtifact.getInstallerStream());
|
|
||||||
}
|
|
||||||
|
|
||||||
applicationReleaseEntity.setIconName(applicationArtifact.getIconName());
|
|
||||||
applicationReleaseEntity.setBannerName(applicationArtifact.getBannername());
|
|
||||||
|
|
||||||
Map<String, InputStream> screenshots = applicationArtifact.getScreenshots();
|
|
||||||
List<String> screenshotNames = new ArrayList<>(screenshots.keySet());
|
|
||||||
|
|
||||||
int counter = 1;
|
|
||||||
for (String scName : screenshotNames) {
|
|
||||||
if (counter == 1) {
|
|
||||||
applicationReleaseEntity.setScreenshotName1(scName);
|
|
||||||
} else if (counter == 2) {
|
|
||||||
applicationReleaseEntity.setScreenshotName2(scName);
|
|
||||||
|
|
||||||
} else if (counter == 3) {
|
|
||||||
applicationReleaseEntity.setScreenshotName3(scName);
|
|
||||||
}
|
|
||||||
counter++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Upload images
|
|
||||||
applicationReleaseEntity = applicationStorageManager
|
|
||||||
.uploadImageArtifacts(applicationReleaseEntity, applicationArtifact.getIconStream(),
|
|
||||||
applicationArtifact.getBannerStream(),
|
|
||||||
new ArrayList<>(screenshots.values()));
|
|
||||||
applicationReleaseEntity.setUuid(UUID.randomUUID().toString());
|
|
||||||
applicationReleaseEntities.add(applicationReleaseEntity);
|
|
||||||
applicationEntity.setApplicationReleases(applicationReleaseEntities);
|
|
||||||
} catch (ResourceManagementException e) {
|
} catch (ResourceManagementException e) {
|
||||||
String msg = "Error Occured when uploading artifacts of the application.: " + applicationWrapper.getName();
|
String msg = "Error Occured when uploading artifacts of the application.: " + applicationWrapper.getName();
|
||||||
log.error(msg);
|
log.error(msg);
|
||||||
@ -185,7 +143,10 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
List<ApplicationReleaseEntity> applicationReleaseEntities = new ArrayList<>();
|
||||||
|
ApplicationReleaseEntity applicationReleaseEntity;
|
||||||
Filter filter = new Filter();
|
Filter filter = new Filter();
|
||||||
|
|
||||||
filter.setFullMatch(true);
|
filter.setFullMatch(true);
|
||||||
filter.setAppName(applicationEntity.getName().trim());
|
filter.setAppName(applicationEntity.getName().trim());
|
||||||
filter.setDeviceTypeId(applicationEntity.getDeviceTypeId());
|
filter.setDeviceTypeId(applicationEntity.getDeviceTypeId());
|
||||||
@ -307,10 +268,10 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
|||||||
applicationReleaseEntity.setCurrentState(AppLifecycleState.CREATED.toString());
|
applicationReleaseEntity.setCurrentState(AppLifecycleState.CREATED.toString());
|
||||||
applicationReleaseEntities.add(applicationReleaseEntity);
|
applicationReleaseEntities.add(applicationReleaseEntity);
|
||||||
applicationEntity.setApplicationReleases(applicationReleaseEntities);
|
applicationEntity.setApplicationReleases(applicationReleaseEntities);
|
||||||
|
application = appDtoToAppResponse(applicationEntity);
|
||||||
ConnectionManagerUtil.commitDBTransaction();
|
ConnectionManagerUtil.commitDBTransaction();
|
||||||
}
|
}
|
||||||
return applicationEntity;
|
return application;
|
||||||
} catch (LifeCycleManagementDAOException e) {
|
} catch (LifeCycleManagementDAOException e) {
|
||||||
ConnectionManagerUtil.rollbackDBTransaction();
|
ConnectionManagerUtil.rollbackDBTransaction();
|
||||||
String msg = "Error occured while adding lifecycle state. application name: " + applicationWrapper.getName()
|
String msg = "Error occured while adding lifecycle state. application name: " + applicationWrapper.getName()
|
||||||
@ -348,6 +309,60 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ApplicationEntity addApplicationReleaseArtifacts(ApplicationEntity applicationEntity,
|
||||||
|
ApplicationArtifact applicationArtifact) throws ResourceManagementException {
|
||||||
|
ApplicationStorageManager applicationStorageManager = Util.getApplicationStorageManager();
|
||||||
|
List<ApplicationReleaseEntity> applicationReleaseEntities = new ArrayList<>();
|
||||||
|
ApplicationReleaseEntity applicationReleaseEntity;
|
||||||
|
try {
|
||||||
|
applicationReleaseEntity = applicationEntity.getApplicationReleases().get(0);
|
||||||
|
// The application executable artifacts such as apks are uploaded.
|
||||||
|
if (!ApplicationType.ENTERPRISE.toString().equals(applicationEntity.getType())) {
|
||||||
|
applicationReleaseEntity = applicationStorageManager
|
||||||
|
.uploadReleaseArtifact(applicationReleaseEntity, applicationEntity.getType(),
|
||||||
|
applicationEntity.getDeviceTypeName(), null);
|
||||||
|
} else {
|
||||||
|
applicationReleaseEntity.setInstallerName(applicationArtifact.getInstallerName());
|
||||||
|
applicationReleaseEntity = applicationStorageManager
|
||||||
|
.uploadReleaseArtifact(applicationReleaseEntity, applicationEntity.getType(),
|
||||||
|
applicationEntity.getDeviceTypeName(), applicationArtifact.getInstallerStream());
|
||||||
|
}
|
||||||
|
|
||||||
|
applicationReleaseEntity.setIconName(applicationArtifact.getIconName());
|
||||||
|
applicationReleaseEntity.setBannerName(applicationArtifact.getBannername());
|
||||||
|
|
||||||
|
Map<String, InputStream> screenshots = applicationArtifact.getScreenshots();
|
||||||
|
List<String> screenshotNames = new ArrayList<>(screenshots.keySet());
|
||||||
|
|
||||||
|
int counter = 1;
|
||||||
|
for (String scName : screenshotNames) {
|
||||||
|
if (counter == 1) {
|
||||||
|
applicationReleaseEntity.setScreenshotName1(scName);
|
||||||
|
} else if (counter == 2) {
|
||||||
|
applicationReleaseEntity.setScreenshotName2(scName);
|
||||||
|
|
||||||
|
} else if (counter == 3) {
|
||||||
|
applicationReleaseEntity.setScreenshotName3(scName);
|
||||||
|
}
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Upload images
|
||||||
|
applicationReleaseEntity = applicationStorageManager
|
||||||
|
.uploadImageArtifacts(applicationReleaseEntity, applicationArtifact.getIconStream(),
|
||||||
|
applicationArtifact.getBannerStream(), new ArrayList<>(screenshots.values()));
|
||||||
|
applicationReleaseEntity.setUuid(UUID.randomUUID().toString());
|
||||||
|
applicationReleaseEntities.add(applicationReleaseEntity);
|
||||||
|
applicationEntity.setApplicationReleases(applicationReleaseEntities);
|
||||||
|
return applicationEntity;
|
||||||
|
} catch (RequestValidatingException e) {
|
||||||
|
// todo remove this exception cath, do this validation in the request validate method
|
||||||
|
String msg = "Error Occured when uploading artifacts of the application.: " + applicationEntity.getName();
|
||||||
|
log.error(msg);
|
||||||
|
throw new ResourceManagementException(msg, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ApplicationList getApplications(Filter filter, String deviceTypeName)
|
public ApplicationList getApplications(Filter filter, String deviceTypeName)
|
||||||
throws ApplicationManagementException {
|
throws ApplicationManagementException {
|
||||||
@ -1652,6 +1667,55 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
|||||||
return applicationReleaseEntity;
|
return applicationReleaseEntity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Application appDtoToAppResponse(ApplicationEntity applicationEntity) {
|
||||||
|
|
||||||
|
Application application = new Application();
|
||||||
|
application.setId(applicationEntity.getId());
|
||||||
|
application.setName(applicationEntity.getName());
|
||||||
|
application.setDescription(applicationEntity.getDescription());
|
||||||
|
application.setAppCategory(applicationEntity.getAppCategory());
|
||||||
|
application.setType(applicationEntity.getType());
|
||||||
|
application.setSubType(applicationEntity.getSubType());
|
||||||
|
application.setPaymentCurrency(applicationEntity.getPaymentCurrency());
|
||||||
|
application.setTags(applicationEntity.getTags());
|
||||||
|
application.setUnrestrictedRoles(applicationEntity.getUnrestrictedRoles());
|
||||||
|
application.setDeviceType(applicationEntity.getDeviceTypeName());
|
||||||
|
List<ApplicationRelease> applicationReleases = applicationEntity.getApplicationReleases()
|
||||||
|
.stream().map(this::releaseDtoToRelease).collect(Collectors.toList());
|
||||||
|
application.setApplicationReleases(applicationReleases);
|
||||||
|
return application;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ApplicationRelease releaseDtoToRelease(ApplicationReleaseEntity applicationReleaseEntity){
|
||||||
|
String artifactDownloadEndpoint = ConfigurationManager.getInstance().getConfiguration().getArtifactDownloadEndpoint();
|
||||||
|
String basePath = artifactDownloadEndpoint + Constants.FORWARD_SLASH + applicationReleaseEntity.getUuid();
|
||||||
|
ApplicationRelease applicationRelease = new ApplicationRelease();
|
||||||
|
applicationRelease.setDescription(applicationReleaseEntity.getDescription());
|
||||||
|
applicationRelease.setReleaseType(applicationReleaseEntity.getReleaseType());
|
||||||
|
applicationRelease.setPrice(applicationReleaseEntity.getPrice());
|
||||||
|
applicationRelease.setIsSharedWithAllTenants(applicationReleaseEntity.getIsSharedWithAllTenants());
|
||||||
|
applicationRelease.setMetaData(applicationReleaseEntity.getMetaData());
|
||||||
|
applicationRelease.setUrl(applicationReleaseEntity.getUrl());
|
||||||
|
applicationRelease.setSupportedOsVersions(applicationReleaseEntity.getSupportedOsVersions());
|
||||||
|
applicationRelease.setInstallerPath(basePath + Constants.FORWARD_SLASH + applicationReleaseEntity.getInstallerName());
|
||||||
|
applicationRelease.setIconPath(basePath + Constants.FORWARD_SLASH + applicationReleaseEntity.getIconName());
|
||||||
|
applicationRelease.setBannerPath(basePath + Constants.FORWARD_SLASH + applicationReleaseEntity.getBannerName());
|
||||||
|
|
||||||
|
if (!StringUtils.isEmpty(applicationReleaseEntity.getScreenshotName1())) {
|
||||||
|
applicationRelease.setScreenshotPath1(
|
||||||
|
basePath + Constants.FORWARD_SLASH + applicationReleaseEntity.getScreenshotName1());
|
||||||
|
}
|
||||||
|
if (!StringUtils.isEmpty(applicationReleaseEntity.getScreenshotName2())) {
|
||||||
|
applicationRelease.setScreenshotPath2(
|
||||||
|
basePath + Constants.FORWARD_SLASH + applicationReleaseEntity.getScreenshotName2());
|
||||||
|
}
|
||||||
|
if (!StringUtils.isEmpty(applicationReleaseEntity.getScreenshotName3())) {
|
||||||
|
applicationRelease.setScreenshotPath3(
|
||||||
|
basePath + Constants.FORWARD_SLASH + applicationReleaseEntity.getScreenshotName3());
|
||||||
|
}
|
||||||
|
return applicationRelease;
|
||||||
|
}
|
||||||
|
|
||||||
private <T> DeviceType getDevceTypeData( T deviceTypeAttr)
|
private <T> DeviceType getDevceTypeData( T deviceTypeAttr)
|
||||||
throws BadRequestException, UnexpectedServerErrorException {
|
throws BadRequestException, UnexpectedServerErrorException {
|
||||||
List<DeviceType> deviceTypes;
|
List<DeviceType> deviceTypes;
|
||||||
|
|||||||
@ -233,7 +233,6 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
|
|||||||
StorageManagementUtil.createArtifactDirectory(artifactDirectoryPath);
|
StorageManagementUtil.createArtifactDirectory(artifactDirectoryPath);
|
||||||
artifactPath = artifactDirectoryPath + File.separator + applicationRelease.getInstallerName();
|
artifactPath = artifactDirectoryPath + File.separator + applicationRelease.getInstallerName();
|
||||||
saveFile(new ByteArrayInputStream(content), artifactPath);
|
saveFile(new ByteArrayInputStream(content), artifactPath);
|
||||||
applicationRelease.setInstallerName(artifactPath);
|
|
||||||
applicationRelease.setAppHashValue(md5OfApp);
|
applicationRelease.setAppHashValue(md5OfApp);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
String msg = "IO Exception while saving the release artifacts in the server for the application UUID "
|
String msg = "IO Exception while saving the release artifacts in the server for the application UUID "
|
||||||
|
|||||||
@ -37,8 +37,7 @@ public class Constants {
|
|||||||
public static final String CF_BUNDLE_VERSION = "CFBundleVersion";
|
public static final String CF_BUNDLE_VERSION = "CFBundleVersion";
|
||||||
public static final String APP_EXTENSION = ".app";
|
public static final String APP_EXTENSION = ".app";
|
||||||
|
|
||||||
public static final String ANDROID_INSTALLER_EXT = ".apk";
|
public static final String FORWARD_SLASH = "/";
|
||||||
public static final String IOS_INSTALLER_EXT = ".ipa";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Database types supported by Application Management.
|
* Database types supported by Application Management.
|
||||||
|
|||||||
@ -28,6 +28,7 @@ import org.wso2.carbon.device.application.mgt.common.entity.ApplicationReleaseEn
|
|||||||
import org.wso2.carbon.device.application.mgt.common.entity.LifecycleStateEntity;
|
import org.wso2.carbon.device.application.mgt.common.entity.LifecycleStateEntity;
|
||||||
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationStorageManagementException;
|
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationStorageManagementException;
|
||||||
import org.wso2.carbon.device.application.mgt.common.exception.RequestValidatingException;
|
import org.wso2.carbon.device.application.mgt.common.exception.RequestValidatingException;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.response.Application;
|
||||||
import org.wso2.carbon.device.application.mgt.common.wrapper.ApplicationWrapper;
|
import org.wso2.carbon.device.application.mgt.common.wrapper.ApplicationWrapper;
|
||||||
import org.wso2.carbon.device.application.mgt.core.exception.BadRequestException;
|
import org.wso2.carbon.device.application.mgt.core.exception.BadRequestException;
|
||||||
import org.wso2.carbon.device.application.mgt.core.exception.ForbiddenException;
|
import org.wso2.carbon.device.application.mgt.core.exception.ForbiddenException;
|
||||||
@ -153,7 +154,7 @@ public class ApplicationManagementAPIImpl implements ApplicationManagementAPI {
|
|||||||
applicationManager
|
applicationManager
|
||||||
.validateAppCreatingRequest(applicationWrapper, binaryFile, iconFile, bannerFile, attachmentList);
|
.validateAppCreatingRequest(applicationWrapper, binaryFile, iconFile, bannerFile, attachmentList);
|
||||||
// Created new application entry
|
// Created new application entry
|
||||||
ApplicationEntity createdApplication = applicationManager.createApplication(applicationWrapper,
|
Application createdApplication = applicationManager.createApplication(applicationWrapper,
|
||||||
constructApplicationArtifact(binaryFile, iconFile, bannerFile, attachmentList));
|
constructApplicationArtifact(binaryFile, iconFile, bannerFile, attachmentList));
|
||||||
if (createdApplication != null) {
|
if (createdApplication != null) {
|
||||||
return Response.status(Response.Status.CREATED).entity(createdApplication).build();
|
return Response.status(Response.Status.CREATED).entity(createdApplication).build();
|
||||||
|
|||||||
@ -21,7 +21,7 @@ PRIMARY KEY (ID)
|
|||||||
CREATE TABLE IF NOT EXISTS AP_APP_RELEASE(
|
CREATE TABLE IF NOT EXISTS AP_APP_RELEASE(
|
||||||
ID INTEGER NOT NULL AUTO_INCREMENT,
|
ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
DESCRIPTION CLOB NOT NULL,
|
DESCRIPTION CLOB NOT NULL,
|
||||||
VERSION VARCHAR(10) NOT NULL,
|
VERSION VARCHAR(20) NOT NULL,
|
||||||
TENANT_ID INTEGER NOT NULL,
|
TENANT_ID INTEGER NOT NULL,
|
||||||
UUID VARCHAR(200) NOT NULL,
|
UUID VARCHAR(200) NOT NULL,
|
||||||
RELEASE_TYPE VARCHAR(45) NOT NULL,
|
RELEASE_TYPE VARCHAR(45) NOT NULL,
|
||||||
|
|||||||
@ -26,7 +26,7 @@ CREATE TABLE IF NOT EXISTS `APP_MANAGER`.`AP_APP_RELEASE`
|
|||||||
(
|
(
|
||||||
`ID` INT(11) NOT NULL,
|
`ID` INT(11) NOT NULL,
|
||||||
`DESCRIPTION` TEXT NOT NULL,
|
`DESCRIPTION` TEXT NOT NULL,
|
||||||
`VERSION` VARCHAR(10) NOT NULL,
|
`VERSION` VARCHAR(20) NOT NULL,
|
||||||
`TENANT_ID` INT(11) NOT NULL,
|
`TENANT_ID` INT(11) NOT NULL,
|
||||||
`UUID` VARCHAR(200) NOT NULL,
|
`UUID` VARCHAR(200) NOT NULL,
|
||||||
`RELEASE_TYPE` VARCHAR(45) NOT NULL,
|
`RELEASE_TYPE` VARCHAR(45) NOT NULL,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user