mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Bug fixes in app creation logic
This commit is contained in:
parent
21a87d8b8c
commit
2e0bacbd18
@ -119,7 +119,7 @@ public class Util {
|
|||||||
Application application = null;
|
Application application = null;
|
||||||
int applicatioId;
|
int applicatioId;
|
||||||
int iteration = 0;
|
int iteration = 0;
|
||||||
|
if (rs != null) {
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
if (iteration == 0) {
|
if (iteration == 0) {
|
||||||
application = new Application();
|
application = new Application();
|
||||||
@ -145,6 +145,7 @@ public class Util {
|
|||||||
}
|
}
|
||||||
iteration++;
|
iteration++;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return application;
|
return application;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -66,7 +66,7 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
|
|||||||
try {
|
try {
|
||||||
conn = this.getDBConnection();
|
conn = this.getDBConnection();
|
||||||
stmt = conn.prepareStatement("INSERT INTO AP_APP (NAME, TYPE, APP_CATEGORY, SUB_TYPE, RESTRICTED, "
|
stmt = conn.prepareStatement("INSERT INTO AP_APP (NAME, TYPE, APP_CATEGORY, SUB_TYPE, RESTRICTED, "
|
||||||
+ "TENANT_ID, DM_DEVICE_TYPE_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
|
+ "TENANT_ID, DM_DEVICE_TYPE_ID) VALUES (?, ?, ?, ?, ?, ?, ?)",
|
||||||
Statement.RETURN_GENERATED_KEYS);
|
Statement.RETURN_GENERATED_KEYS);
|
||||||
stmt.setString(1, application.getName());
|
stmt.setString(1, application.getName());
|
||||||
stmt.setString(2, application.getType());
|
stmt.setString(2, application.getType());
|
||||||
|
|||||||
@ -66,7 +66,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
|
|||||||
String sql = "INSERT INTO AP_APP_RELEASE (VERSION,TENANT_ID,UUID,RELEASE_TYPE, PACKAGE_NAME, APP_PRICE,"
|
String sql = "INSERT INTO AP_APP_RELEASE (VERSION,TENANT_ID,UUID,RELEASE_TYPE, PACKAGE_NAME, APP_PRICE,"
|
||||||
+ "STORED_LOCATION, BANNER_LOCATION, SC_1_LOCATION,SC_2_LOCATION,SC_3_LOCATION, APP_HASH_VALUE,"
|
+ "STORED_LOCATION, BANNER_LOCATION, SC_1_LOCATION,SC_2_LOCATION,SC_3_LOCATION, APP_HASH_VALUE,"
|
||||||
+ "SHARED_WITH_ALL_TENANTS, APP_META_INFO,CREATED_BY,AP_APP_ID) "
|
+ "SHARED_WITH_ALL_TENANTS, APP_META_INFO,CREATED_BY,AP_APP_ID) "
|
||||||
+ "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
|
+ "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
|
||||||
|
|
||||||
int index = 0;
|
int index = 0;
|
||||||
String generatedColumns[] = {"ID"};
|
String generatedColumns[] = {"ID"};
|
||||||
@ -80,6 +80,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
|
|||||||
statement.setString(++index, String.valueOf(applicationRelease.getPackageName()));
|
statement.setString(++index, String.valueOf(applicationRelease.getPackageName()));
|
||||||
statement.setDouble(++index, applicationRelease.getPrice());
|
statement.setDouble(++index, applicationRelease.getPrice());
|
||||||
statement.setString(++index, applicationRelease.getAppStoredLoc());
|
statement.setString(++index, applicationRelease.getAppStoredLoc());
|
||||||
|
statement.setString(++index, applicationRelease.getBannerLoc());
|
||||||
statement.setString(++index, applicationRelease.getScreenshotLoc1());
|
statement.setString(++index, applicationRelease.getScreenshotLoc1());
|
||||||
statement.setString(++index, applicationRelease.getScreenshotLoc2());
|
statement.setString(++index, applicationRelease.getScreenshotLoc2());
|
||||||
statement.setString(++index, applicationRelease.getScreenshotLoc3());
|
statement.setString(++index, applicationRelease.getScreenshotLoc3());
|
||||||
|
|||||||
@ -50,6 +50,7 @@ import org.wso2.carbon.device.application.mgt.core.exception.ValidationException
|
|||||||
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.mgt.common.DeviceManagementException;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
|
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.DeviceTypeDAO;
|
import org.wso2.carbon.device.mgt.core.dao.DeviceTypeDAO;
|
||||||
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||||
@ -105,8 +106,10 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
|||||||
ApplicationRelease applicationRelease;
|
ApplicationRelease applicationRelease;
|
||||||
List<ApplicationRelease> applicationReleases = new ArrayList<>();
|
List<ApplicationRelease> applicationReleases = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
|
ConnectionManagerUtil.openDBConnection();
|
||||||
ConnectionManagerUtil.beginDBTransaction();
|
ConnectionManagerUtil.beginDBTransaction();
|
||||||
deviceType = this.deviceTypeDAO.getDeviceType(application.getDeviceType(), tenantId);
|
MAMDeviceConnectorImpl mamDeviceConnector = new MAMDeviceConnectorImpl();
|
||||||
|
deviceType = mamDeviceConnector.getDeviceManagementService().getDeviceType(application.getDeviceType());
|
||||||
|
|
||||||
if (deviceType == null) {
|
if (deviceType == null) {
|
||||||
log.error("Device type is not matched with application type");
|
log.error("Device type is not matched with application type");
|
||||||
@ -136,12 +139,12 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
|||||||
}
|
}
|
||||||
applicationRelease = application.getApplicationReleases().get(0);
|
applicationRelease = application.getApplicationReleases().get(0);
|
||||||
applicationRelease = this.applicationReleaseDAO
|
applicationRelease = this.applicationReleaseDAO
|
||||||
.createRelease(applicationRelease, application.getId(), tenantId);
|
.createRelease(applicationRelease, appId, tenantId);
|
||||||
|
|
||||||
LifecycleState lifecycleState = new LifecycleState();
|
LifecycleState lifecycleState = new LifecycleState();
|
||||||
lifecycleState.setCurrentState(AppLifecycleState.CREATED.toString());
|
lifecycleState.setCurrentState(AppLifecycleState.CREATED.toString());
|
||||||
lifecycleState.setPreviousState(AppLifecycleState.CREATED.toString());
|
lifecycleState.setPreviousState(AppLifecycleState.CREATED.toString());
|
||||||
changeLifecycleState(application.getId(), applicationRelease.getUuid(), lifecycleState);
|
changeLifecycleState(appId, applicationRelease.getUuid(), lifecycleState);
|
||||||
|
|
||||||
applicationRelease.setLifecycleState(lifecycleState);
|
applicationRelease.setLifecycleState(lifecycleState);
|
||||||
applicationReleases.add(applicationRelease);
|
applicationReleases.add(applicationRelease);
|
||||||
@ -152,19 +155,17 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
|||||||
|
|
||||||
return application;
|
return application;
|
||||||
|
|
||||||
} catch (DeviceManagementDAOException e) {
|
|
||||||
String msg = "Error occurred while getting device type id of " + application.getType();
|
|
||||||
log.error(msg, e);
|
|
||||||
ConnectionManagerUtil.rollbackDBTransaction();
|
|
||||||
throw new ApplicationManagementException(msg, e);
|
|
||||||
} catch (ApplicationManagementException e) {
|
} catch (ApplicationManagementException e) {
|
||||||
String msg = "Error occurred while adding application";
|
String msg = "Error occurred while adding application";
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
ConnectionManagerUtil.rollbackDBTransaction();
|
ConnectionManagerUtil.rollbackDBTransaction();
|
||||||
throw new ApplicationManagementException(msg, e);
|
throw new ApplicationManagementException(msg, e);
|
||||||
|
} catch (DeviceManagementException e) {
|
||||||
|
e.printStackTrace();
|
||||||
} finally {
|
} finally {
|
||||||
ConnectionManagerUtil.closeDBConnection();
|
//ConnectionManagerUtil.closeDBConnection(); //todo: check this again
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -546,14 +547,13 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
|||||||
Application application;
|
Application application;
|
||||||
boolean isAppAllowed = false;
|
boolean isAppAllowed = false;
|
||||||
try {
|
try {
|
||||||
ConnectionManagerUtil.openDBConnection();
|
|
||||||
application = ApplicationManagementDAOFactory.getApplicationDAO()
|
application = ApplicationManagementDAOFactory.getApplicationDAO()
|
||||||
.getApplicationById(applicationId, tenantId);
|
.getApplicationById(applicationId, tenantId);
|
||||||
if (isAdminUser(userName, tenantId, CarbonConstants.UI_ADMIN_PERMISSION_COLLECTION)) {
|
if (isAdminUser(userName, tenantId, CarbonConstants.UI_ADMIN_PERMISSION_COLLECTION)) {
|
||||||
return application;
|
return application;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!application.getUnrestrictedRoles().isEmpty()) {
|
if (application != null && !application.getUnrestrictedRoles().isEmpty()) {
|
||||||
if (isRoleExists(application.getUnrestrictedRoles(), userName)) {
|
if (isRoleExists(application.getUnrestrictedRoles(), userName)) {
|
||||||
isAppAllowed = true;
|
isAppAllowed = true;
|
||||||
}
|
}
|
||||||
@ -569,8 +569,6 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
|||||||
} catch (UserStoreException e) {
|
} catch (UserStoreException e) {
|
||||||
throw new ApplicationManagementException(
|
throw new ApplicationManagementException(
|
||||||
"User-store exception while getting application with the " + "application id " + applicationId, e);
|
"User-store exception while getting application with the " + "application id " + applicationId, e);
|
||||||
} finally {
|
|
||||||
ConnectionManagerUtil.closeDBConnection();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -707,7 +705,6 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
|||||||
public void changeLifecycleState(int applicationId, String applicationUuid, LifecycleState state)
|
public void changeLifecycleState(int applicationId, String applicationUuid, LifecycleState state)
|
||||||
throws ApplicationManagementException {
|
throws ApplicationManagementException {
|
||||||
try {
|
try {
|
||||||
ConnectionManagerUtil.openDBConnection();
|
|
||||||
Application application = getApplicationIfAccessible(applicationId);
|
Application application = getApplicationIfAccessible(applicationId);
|
||||||
ApplicationRelease applicationRelease = getAppReleaseIfExists(applicationId, applicationUuid);
|
ApplicationRelease applicationRelease = getAppReleaseIfExists(applicationId, applicationUuid);
|
||||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||||
@ -728,8 +725,6 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
|||||||
throw new ApplicationManagementException("Failed to add lifecycle state", e);
|
throw new ApplicationManagementException("Failed to add lifecycle state", e);
|
||||||
} catch (ApplicationManagementException e) {
|
} catch (ApplicationManagementException e) {
|
||||||
throw new ApplicationManagementException("Lifecycle State Validation failed", e);
|
throw new ApplicationManagementException("Lifecycle State Validation failed", e);
|
||||||
} finally {
|
|
||||||
ConnectionManagerUtil.closeDBConnection();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -808,10 +803,6 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
|||||||
|
|
||||||
private Filter validateFilter(Filter filter) {
|
private Filter validateFilter(Filter filter) {
|
||||||
if (filter != null) {
|
if (filter != null) {
|
||||||
if (!SortingOrder.ASC.toString().equals(filter.getSortBy()) &&
|
|
||||||
!SortingOrder.DESC.toString().equals(filter.getSortBy())) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if (filter.getAppType() != null) {
|
if (filter.getAppType() != null) {
|
||||||
boolean isValidRequest = false;
|
boolean isValidRequest = false;
|
||||||
for (ApplicationType applicationType : ApplicationType.values()) {
|
for (ApplicationType applicationType : ApplicationType.values()) {
|
||||||
|
|||||||
@ -193,6 +193,7 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
|
|||||||
|
|
||||||
String artifactDirectoryPath;
|
String artifactDirectoryPath;
|
||||||
String md5OfApp;
|
String md5OfApp;
|
||||||
|
InputStream[] cloneInputStream = cloneInputStream(binaryFile);
|
||||||
md5OfApp = getMD5(binaryFile);
|
md5OfApp = getMD5(binaryFile);
|
||||||
|
|
||||||
if (md5OfApp == null) {
|
if (md5OfApp == null) {
|
||||||
@ -202,7 +203,7 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (DeviceType.ANDROID.toString().equalsIgnoreCase(deviceType)) {
|
if (DeviceType.ANDROID.toString().equalsIgnoreCase(deviceType)) {
|
||||||
ApkMeta apkMeta = ArtifactsParser.readAndroidManifestFile(binaryFile);
|
ApkMeta apkMeta = ArtifactsParser.readAndroidManifestFile(cloneInputStream[2]);
|
||||||
applicationRelease.setVersion(apkMeta.getVersionName());
|
applicationRelease.setVersion(apkMeta.getVersionName());
|
||||||
applicationRelease.setPackageName(apkMeta.getPackageName());
|
applicationRelease.setPackageName(apkMeta.getPackageName());
|
||||||
} else if (DeviceType.IOS.toString().equalsIgnoreCase(deviceType)) {
|
} else if (DeviceType.IOS.toString().equalsIgnoreCase(deviceType)) {
|
||||||
@ -223,8 +224,8 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
|
|||||||
+ "application UUID " + applicationRelease.getUuid() + " is " + artifactDirectoryPath);
|
+ "application UUID " + applicationRelease.getUuid() + " is " + artifactDirectoryPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
String artifactPath = artifactDirectoryPath + Constants.RELEASE_ARTIFACT;
|
String artifactPath = artifactDirectoryPath + File.separator + Constants.RELEASE_ARTIFACT +".apk";
|
||||||
saveFile(binaryFile, artifactPath);
|
saveFile(cloneInputStream[1], artifactPath);
|
||||||
applicationRelease.setAppStoredLoc(artifactPath);
|
applicationRelease.setAppStoredLoc(artifactPath);
|
||||||
applicationRelease.setAppHashValue(md5OfApp);
|
applicationRelease.setAppHashValue(md5OfApp);
|
||||||
|
|
||||||
@ -241,6 +242,38 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
|
|||||||
return applicationRelease;
|
return applicationRelease;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public InputStream[] cloneInputStream(InputStream inputStream) throws ApplicationStorageManagementException {
|
||||||
|
|
||||||
|
ByteArrayOutputStream byteArrayOutputStream = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
byteArrayOutputStream = new ByteArrayOutputStream();
|
||||||
|
|
||||||
|
byte[] buffer = new byte[BUFFER_SIZE];
|
||||||
|
int len;
|
||||||
|
while ((len = inputStream.read(buffer)) > -1 ) {
|
||||||
|
byteArrayOutputStream.write(buffer, 0, len);
|
||||||
|
}
|
||||||
|
byteArrayOutputStream.flush();
|
||||||
|
|
||||||
|
InputStream stream1 = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
|
||||||
|
InputStream stream2 = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
|
||||||
|
InputStream stream3 = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
|
||||||
|
|
||||||
|
return new InputStream[]{stream1, stream2, stream3};
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new ApplicationStorageManagementException("Error occurred while cloning input stream ", e);
|
||||||
|
} finally {
|
||||||
|
if (byteArrayOutputStream != null) {
|
||||||
|
try {
|
||||||
|
byteArrayOutputStream.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ApplicationRelease updateReleaseArtifacts(ApplicationRelease applicationRelease, String appType,
|
public ApplicationRelease updateReleaseArtifacts(ApplicationRelease applicationRelease, String appType,
|
||||||
String deviceType, InputStream binaryFile) throws ApplicationStorageManagementException,
|
String deviceType, InputStream binaryFile) throws ApplicationStorageManagementException,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user