diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.artifact.retrieve.api/src/main/java/org/wso2/carbon/device/application/mgt/api/services/AppMgtAPI.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.artifact.retrieve.api/src/main/java/org/wso2/carbon/device/application/mgt/api/services/AppMgtAPI.java
deleted file mode 100644
index ee5dd06a41..0000000000
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.artifact.retrieve.api/src/main/java/org/wso2/carbon/device/application/mgt/api/services/AppMgtAPI.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
- *
- * Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.wso2.carbon.device.application.mgt.api.services;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
-import io.swagger.annotations.Extension;
-import io.swagger.annotations.ExtensionProperty;
-import io.swagger.annotations.Info;
-import io.swagger.annotations.SwaggerDefinition;
-import org.wso2.carbon.device.application.mgt.common.*;
-import org.wso2.carbon.device.application.mgt.common.ErrorResponse;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-/**
- * APIs to handle application management related tasks.
- */
-@SwaggerDefinition(
- info = @Info(
- version = "1.0.0",
- title = "Application Management Common Service",
- extensions = {
- @Extension(properties = {
- @ExtensionProperty(name = "name", value = "ApplicationManagementCommonService"),
- @ExtensionProperty(name = "context", value = "/api/application-mgt/v1.0/app-mgt"),
- })
- }
- )
-)
-@Path("/app-mgt")
-@Api(value = "Application Management Common Service", description = "This API carries all application management common services")
-@Produces(MediaType.APPLICATION_JSON)
-public interface AppMgtAPI {
-
- @GET
- @Path("/ui-config")
- @Produces(MediaType.APPLICATION_JSON)
- @ApiOperation(
- consumes = MediaType.APPLICATION_JSON,
- produces = MediaType.APPLICATION_JSON,
- httpMethod = "GET",
- value = "get application management UI configuration",
- notes = "This will get all UI configuration of application management"
- )
- @ApiResponses(
- value = {
- @ApiResponse(
- code = 200,
- message = "OK. \n Successfully got UI config.",
- response = ApplicationList.class),
- @ApiResponse(
- code = 404,
- message = "Not Found. There doesn't have an defined UI config." +
- "query."),
- @ApiResponse(
- code = 500,
- message = "Internal Server Error. \n Error occurred while getting the UI config.",
- response = ErrorResponse.class)
- })
- Response getUiConfig();
-
-}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.artifact.retrieve.api/src/main/java/org/wso2/carbon/device/application/mgt/api/services/impl/AppMgtAPIImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.artifact.retrieve.api/src/main/java/org/wso2/carbon/device/application/mgt/api/services/impl/AppMgtAPIImpl.java
deleted file mode 100644
index 9af367c692..0000000000
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.artifact.retrieve.api/src/main/java/org/wso2/carbon/device/application/mgt/api/services/impl/AppMgtAPIImpl.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
- *
- * Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.wso2.carbon.device.application.mgt.api.services.impl;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.wso2.carbon.device.application.mgt.api.services.AppMgtAPI;
-import org.wso2.carbon.device.application.mgt.common.config.UIConfiguration;
-import org.wso2.carbon.device.application.mgt.common.services.ConfigManager;
-import org.wso2.carbon.device.application.mgt.core.util.APIUtil;
-import org.wso2.carbon.device.application.mgt.common.exception.ApplicationManagementException;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Response;
-
-/**
- * Implementation of Application Management related APIs.
- */
-@Produces({"application/json"})
-@Path("/app-mgt")
-public class AppMgtAPIImpl implements AppMgtAPI {
-
- private static Log log = LogFactory.getLog(AppMgtAPIImpl.class);
-
- @GET
- @Override
- @Consumes("application/json")
- @Path("/ui-config")
- public Response getUiConfig() {
- ConfigManager configManager = APIUtil.getConfigManager();
- try {
- UIConfiguration uiConfiguration = configManager.getUIConfiguration();
- return Response.status(Response.Status.OK).entity(uiConfiguration).build();
-
- }catch (ApplicationManagementException e) {
- String msg = "Error occurred while getting the application list for publisher ";
- log.error(msg, e);
- return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
- }
- }
-
-}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.artifact.retrieve.api/src/main/java/org/wso2/carbon/device/application/mgt/artifact/retrieve/api/services/AppArtifactRetrievalAPI.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.artifact.retrieve.api/src/main/java/org/wso2/carbon/device/application/mgt/artifact/retrieve/api/services/AppArtifactRetrievalAPI.java
new file mode 100644
index 0000000000..f129996803
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.artifact.retrieve.api/src/main/java/org/wso2/carbon/device/application/mgt/artifact/retrieve/api/services/AppArtifactRetrievalAPI.java
@@ -0,0 +1,19 @@
+package org.wso2.carbon.device.application.mgt.artifact.retrieve.api.services;/* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
+ *
+ * Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+public interface AppArtifactRetrievalAPI {
+}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.artifact.retrieve.api/src/main/java/org/wso2/carbon/device/application/mgt/artifact/retrieve/api/services/impl/AppArtifactRetrivaalAPIImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.artifact.retrieve.api/src/main/java/org/wso2/carbon/device/application/mgt/artifact/retrieve/api/services/impl/AppArtifactRetrivaalAPIImpl.java
new file mode 100644
index 0000000000..8189ecdd18
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.artifact.retrieve.api/src/main/java/org/wso2/carbon/device/application/mgt/artifact/retrieve/api/services/impl/AppArtifactRetrivaalAPIImpl.java
@@ -0,0 +1,19 @@
+package org.wso2.carbon.device.application.mgt.artifact.retrieve.api.services.impl;/* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
+ *
+ * Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+public class AppArtifactRetrivaalAPIImpl {
+}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.artifact.retrieve.api/src/main/webapp/WEB-INF/cxf-servlet.xml b/components/application-mgt/org.wso2.carbon.device.application.mgt.artifact.retrieve.api/src/main/webapp/WEB-INF/cxf-servlet.xml
index abc22c4919..8cfd529adf 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.artifact.retrieve.api/src/main/webapp/WEB-INF/cxf-servlet.xml
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.artifact.retrieve.api/src/main/webapp/WEB-INF/cxf-servlet.xml
@@ -52,7 +52,7 @@
-
+
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/ApplicationRelease.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/ApplicationRelease.java
index b1b0ab8f14..44e88b7927 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/ApplicationRelease.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/ApplicationRelease.java
@@ -85,7 +85,7 @@ public class ApplicationRelease {
@ApiModelProperty(name = "isSharedWithAllTenants",
value = "If application release is shared with all tenants it is eqal to 1 otherwise 0",
required = true)
- private int isSharedWithAllTenants;
+ private boolean isSharedWithAllTenants;
@ApiModelProperty(name = "metaData",
value = "Meta data of the application release",
@@ -168,7 +168,7 @@ public class ApplicationRelease {
this.appHashValue = appHashValue;
}
- public void setIsSharedWithAllTenants(int isSharedWithAllTenants) {
+ public void setIsSharedWithAllTenants(boolean isSharedWithAllTenants) {
this.isSharedWithAllTenants = isSharedWithAllTenants;
}
@@ -196,9 +196,7 @@ public class ApplicationRelease {
return appHashValue;
}
- public int getIsSharedWithAllTenants() {
- return isSharedWithAllTenants;
- }
+ public boolean getIsSharedWithAllTenants() { return isSharedWithAllTenants; }
public String getMetaData() {
return metaData;
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/wrappers/ApplicationReleaseWrapper.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/wrappers/ApplicationReleaseWrapper.java
new file mode 100644
index 0000000000..0c6e85f65b
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/wrappers/ApplicationReleaseWrapper.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.wso2.carbon.device.application.mgt.common.wrappers;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+@ApiModel(value = "ApplicationRelease", description = "This class holds the details when releasing an Application to application store")
+public class ApplicationReleaseWrapper {
+
+ @ApiModelProperty(name = "description",
+ value = "Description of the application release")
+ private String description;
+
+ @ApiModelProperty(name = "releaseType",
+ value = "Release type of the application release",
+ required = true,
+ example = "alpha, beta etc")
+ private String releaseType;
+
+ @ApiModelProperty(name = "price",
+ value = "Price of the application release",
+ required = true)
+ private Double price;
+
+ @ApiModelProperty(name = "isSharedWithAllTenants",
+ value = "If application release is shared with all tenants it is eqal to 1 otherwise 0",
+ required = true)
+ private boolean isSharedWithAllTenants;
+
+ @ApiModelProperty(name = "metaData",
+ value = "Meta data of the application release",
+ required = true)
+ private String metaData;
+
+ @ApiModelProperty(name = "url",
+ value = "URL which is used for WEB-CLIP")
+ private String url;
+
+ @ApiModelProperty(name = "supportedOsVersions",
+ value = "Application release supported OS versions")
+ private String supportedOsVersions;
+
+ public String getReleaseType() {
+ return releaseType;
+ }
+
+ public void setReleaseType(String releaseType) {
+ this.releaseType = releaseType;
+ }
+
+ public void setIsSharedWithAllTenants(boolean isSharedWithAllTenants) {
+ this.isSharedWithAllTenants = isSharedWithAllTenants;
+ }
+
+ public void setMetaData(String metaData) {
+ this.metaData = metaData;
+ }
+
+ public Double getPrice() {
+ return price;
+ }
+
+ public void setPrice(Double price) {
+ this.price = price;
+ }
+
+ public boolean getIsSharedWithAllTenants() {
+ return isSharedWithAllTenants;
+ }
+
+ public String getMetaData() {
+ return metaData;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getDescription() { return description; }
+
+ public void setDescription(String description) { this.description = description; }
+
+ public String getSupportedOsVersions() { return supportedOsVersions; }
+
+ public void setSupportedOsVersions(String supportedOsVersions) { this.supportedOsVersions = supportedOsVersions; }
+}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/wrappers/ApplicationWrapper.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/wrappers/ApplicationWrapper.java
new file mode 100644
index 0000000000..8d64248985
--- /dev/null
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.common/src/main/java/org/wso2/carbon/device/application/mgt/common/wrappers/ApplicationWrapper.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.wso2.carbon.device.application.mgt.common.wrappers;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.wso2.carbon.device.application.mgt.common.ApplicationRelease;
+
+import java.util.List;
+
+@ApiModel(value = "Application", description = "Application represents the an Application in Application Store")
+public class ApplicationWrapper {
+
+
+ @ApiModelProperty(name = "name",
+ value = "Name of the application",
+ required = true)
+ private String name;
+
+ @ApiModelProperty(name = "description",
+ value = "Description of the application",
+ required = true)
+ private String description;
+
+ @ApiModelProperty(name = "appCategory",
+ value = "Category of the application",
+ required = true,
+ example = "Educational, Gaming, Travel, Entertainment etc")
+ private String appCategory;
+
+ @ApiModelProperty(name = "type",
+ value = "Type of the application",
+ required = true,
+ example = "ENTERPRISE, PUBLIC, WEB, WEB_CLIP etc")
+ private String type;
+
+ @ApiModelProperty(name = "subType",
+ value = "Subscription type of the application",
+ required = true,
+ example = "PAID, FREE")
+ private String subType;
+
+ @ApiModelProperty(name = "paymentCurrency",
+ value = "Payment currency of the application",
+ required = true,
+ example = "$")
+ private String paymentCurrency;
+
+ @ApiModelProperty(name = "tags",
+ value = "List of application tags")
+ private List tags;
+
+ @ApiModelProperty(name = "unrestrictedRoles",
+ value = "List of roles that users should have to access the application")
+ private List unrestrictedRoles;
+
+ @ApiModelProperty(name = "deviceType",
+ value = "Related device type of the application",
+ required = true,
+ example = "IoS, Android, Arduino, RaspberryPi etc")
+ private String deviceType;
+
+
+ @ApiModelProperty(name = "applicationReleases",
+ value = "List of application releases",
+ required = true)
+ private List applicationReleases;
+
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) { this.name = name; }
+
+ public String getAppCategory() {
+ return appCategory;
+ }
+
+ public void setAppCategory(String appCategory) {
+ this.appCategory = appCategory;
+ }
+
+ public List getTags() { return tags; }
+
+ public void setTags(List tags) { this.tags = tags; }
+
+ public String getType() { return type; }
+
+ public void setType(String type) { this.type = type; }
+
+ public String getSubType() { return subType; }
+
+ public void setSubType(String subType) { this.subType = subType; }
+
+ public String getPaymentCurrency() { return paymentCurrency; }
+
+ public void setPaymentCurrency(String paymentCurrency) { this.paymentCurrency = paymentCurrency; }
+
+ public List getApplicationReleases() { return applicationReleases; }
+
+ public void setApplicationReleases(List applicationReleases) {
+ this.applicationReleases = applicationReleases; }
+
+ public List getUnrestrictedRoles() { return unrestrictedRoles; }
+
+ public void setUnrestrictedRoles(List unrestrictedRoles) { this.unrestrictedRoles = unrestrictedRoles; }
+
+ public String getDeviceType() { return deviceType; }
+
+ public void setDeviceType(String deviceType) { this.deviceType = deviceType; }
+
+ public String getDescription() { return description; }
+
+ public void setDescription(String description) { this.description = description; }
+}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/common/Util.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/common/Util.java
index 0fab3d6c7c..ca08987c90 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/common/Util.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/common/Util.java
@@ -238,7 +238,7 @@ public class Util {
applicationRelease.setScreenshotLoc2(resultSet.getString("SCREEN_SHOT_2"));
applicationRelease.setScreenshotLoc3(resultSet.getString("SCREEN_SHOT_3"));
applicationRelease.setAppHashValue(resultSet.getString("HASH_VALUE"));
- applicationRelease.setIsSharedWithAllTenants(resultSet.getInt("SHARED"));
+ applicationRelease.setIsSharedWithAllTenants(resultSet.getBoolean("SHARED"));
applicationRelease.setMetaData(resultSet.getString("APP_META_INFO"));
applicationRelease.setRating(resultSet.getDouble("RATING"));
return applicationRelease;
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/release/GenericApplicationReleaseDAOImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/release/GenericApplicationReleaseDAOImpl.java
index 3081fbba23..eef560b179 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/release/GenericApplicationReleaseDAOImpl.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/dao/impl/application/release/GenericApplicationReleaseDAOImpl.java
@@ -57,33 +57,51 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
PreparedStatement statement = null;
ResultSet resultSet = null;
- String sql = "INSERT INTO AP_APP_RELEASE (VERSION,TENANT_ID,UUID,RELEASE_TYPE, PACKAGE_NAME, APP_PRICE, "
- + "STORED_LOCATION, ICON_LOCATION, BANNER_LOCATION, SC_1_LOCATION,SC_2_LOCATION,SC_3_LOCATION,"
- + "APP_HASH_VALUE, SHARED_WITH_ALL_TENANTS, APP_META_INFO,AP_APP_ID) "
- + "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
+ String sql = "INSERT INTO AP_APP_RELEASE "
+ + "(DESCRIPTION,"
+ + "VERSION,"
+ + "TENANT_ID,"
+ + "UUID,"
+ + "RELEASE_TYPE,"
+ + "PACKAGE_NAME,"
+ + "APP_PRICE, "
+ + "STORED_LOCATION,"
+ + "ICON_LOCATION,"
+ + "BANNER_LOCATION,"
+ + "SC_1_LOCATION,"
+ + "SC_2_LOCATION,"
+ + "SC_3_LOCATION,"
+ + "APP_HASH_VALUE,"
+ + "SHARED_WITH_ALL_TENANTS,"
+ + "APP_META_INFO,"
+ + "SUPPORTED_OS_VERSIONS,"
+ + "CURRENT_STATE,"
+ + "AP_APP_ID) "
+ + "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
- // TODO : make this readable
- int index = 0;
String generatedColumns[] = { "ID" };
try {
connection = this.getDBConnection();
statement = connection.prepareStatement(sql, generatedColumns);
- statement.setString(++index, applicationRelease.getVersion());
- statement.setInt(++index, tenantId);
- statement.setString(++index, applicationRelease.getUuid());
- statement.setString(++index, String.valueOf(applicationRelease.getReleaseType()));
- statement.setString(++index, String.valueOf(applicationRelease.getPackageName()));
- statement.setDouble(++index, applicationRelease.getPrice());
- statement.setString(++index, applicationRelease.getAppStoredLoc());
- statement.setString(++index, applicationRelease.getIconLoc());
- statement.setString(++index, applicationRelease.getBannerLoc());
- statement.setString(++index, applicationRelease.getScreenshotLoc1());
- statement.setString(++index, applicationRelease.getScreenshotLoc2());
- statement.setString(++index, applicationRelease.getScreenshotLoc3());
- statement.setString(++index, applicationRelease.getAppHashValue());
- statement.setInt(++index, applicationRelease.getIsSharedWithAllTenants());
- statement.setString(++index, applicationRelease.getMetaData());
- statement.setInt(++index, appId);
+ statement.setString(1, applicationRelease.getDescription());
+ statement.setString(2, applicationRelease.getVersion());
+ statement.setInt(3, tenantId);
+ statement.setString(4, applicationRelease.getUuid());
+ statement.setString(5, String.valueOf(applicationRelease.getReleaseType()));
+ statement.setString(6, String.valueOf(applicationRelease.getPackageName()));
+ statement.setDouble(7, applicationRelease.getPrice());
+ statement.setString(8, applicationRelease.getAppStoredLoc());
+ statement.setString(9, applicationRelease.getIconLoc());
+ statement.setString(10, applicationRelease.getBannerLoc());
+ statement.setString(11, applicationRelease.getScreenshotLoc1());
+ statement.setString(12, applicationRelease.getScreenshotLoc2());
+ statement.setString(13, applicationRelease.getScreenshotLoc3());
+ statement.setString(14, applicationRelease.getAppHashValue());
+ statement.setBoolean(15, applicationRelease.getIsSharedWithAllTenants());
+ statement.setString(16, applicationRelease.getMetaData());
+ statement.setString(17, applicationRelease.getSupportedOsVersions());
+ statement.setString(18, applicationRelease.getCurrentState());
+ statement.setInt(19, appId);
statement.executeUpdate();
resultSet = statement.getGeneratedKeys();
if (resultSet.next()) {
@@ -386,7 +404,7 @@ public class GenericApplicationReleaseDAOImpl extends AbstractDAOImpl implements
statement.setString(10, applicationRelease.getScreenshotLoc2());
statement.setString(11, applicationRelease.getScreenshotLoc3());
statement.setString(12, applicationRelease.getAppHashValue());
- statement.setInt(13, applicationRelease.getIsSharedWithAllTenants());
+ statement.setBoolean(13, applicationRelease.getIsSharedWithAllTenants());
statement.setString(14, applicationRelease.getMetaData());
statement.setInt(15, applicationId);
statement.setInt(16, tenantId);
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ApplicationManagerImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ApplicationManagerImpl.java
index 5fac1bc4e7..a5ff6cd8c2 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ApplicationManagerImpl.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ApplicationManagerImpl.java
@@ -76,6 +76,7 @@ import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Queue;
import java.util.Set;
import java.util.UUID;
@@ -120,19 +121,16 @@ public class ApplicationManagerImpl implements ApplicationManager {
String userName = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
ApplicationStorageManager applicationStorageManager = Util.getApplicationStorageManager();
application.setUser(new User(userName, tenantId));
- if (log.isDebugEnabled()) {
- log.debug("Create Application received for the tenant : " + tenantId + " From" + " the user : " + userName);
- }
DeviceType deviceType = null;
List deviceTypes;
ApplicationRelease applicationRelease;
List applicationReleases = new ArrayList<>();
+ if (log.isDebugEnabled()) {
+ log.debug("Create Application received for the tenant : " + tenantId + " From" + " the user : " + userName);
+ }
try {
validateAppCreatingRequest(application, binaryFile, iconFile, bannerFile, attachmentList);
- // Getting the device type details to get device type ID for internal mappings
- // deviceType = Util.getDeviceManagementService().getDeviceType(application.getDeviceType());
-
deviceTypes = Util.getDeviceManagementService().getDeviceTypes();
for (DeviceType dt : deviceTypes) {
if (dt.getName().equals(application.getDeviceType())) {
@@ -141,11 +139,11 @@ public class ApplicationManagerImpl implements ApplicationManager {
break;
}
}
-
if (deviceType == null) {
- log.error("Invalid device type is found with the request. Requested Device Type is: " + application
- .getDeviceType());
- return null;
+ String msg = "Invalid device type is found with the request. Requested Device Type is: " + application
+ .getDeviceType();
+ log.error(msg);
+ throw new RequestValidatingException(msg);
}
applicationRelease = application.getApplicationReleases().get(0);
@@ -167,10 +165,12 @@ public class ApplicationManagerImpl implements ApplicationManager {
applicationReleases.add(applicationRelease);
application.setApplicationReleases(applicationReleases);
} catch (ResourceManagementException e) {
- throw new ApplicationManagementException("");
+ String msg = "Error Occured when uploading artifacts of the application.: " + application.getName();
+ log.error(msg);
+ throw new ApplicationManagementException(msg, e);
} catch (DeviceManagementException e) {
- throw new ApplicationManagementException(
- "Error occurred while getting device type id of " + application.getType(), e);
+ String msg = "Error occurred while getting device type id of " + application.getType();
+ throw new ApplicationManagementException(msg, e);
}
try {
@@ -185,14 +185,15 @@ public class ApplicationManagerImpl implements ApplicationManager {
ApplicationList applicationList = applicationDAO.getApplications(filter, tenantId);
if (!applicationList.getApplications().isEmpty()) {
- throw new RequestValidatingException(
+ String msg =
"Already an application registered with same name - " + applicationList.getApplications().get(0)
- .getName());
+ .getName();
+ log.error(msg);
+ throw new RequestValidatingException(msg);
}
// Insert to application table
int appId = this.applicationDAO.createApplication(application, tenantId);
-
if (appId == -1) {
log.error("Application creation is Failed");
ConnectionManagerUtil.rollbackDBTransaction();
@@ -201,15 +202,15 @@ public class ApplicationManagerImpl implements ApplicationManager {
if (log.isDebugEnabled()) {
log.debug("New Application entry added to AP_APP table. App Id:" + appId);
}
-
//adding application unrestricted roles
- if (!application.getUnrestrictedRoles().isEmpty()) {
- if (!isValidRestrictedRole(application.getUnrestrictedRoles())) {
+ List unrestrictedRoles = application.getUnrestrictedRoles();
+ if (!unrestrictedRoles.isEmpty()) {
+ if (!isValidRestrictedRole(unrestrictedRoles)) {
String msg = "Unrestricted role list contain role/roles which are not in the user store.";
log.error(msg);
throw new ApplicationManagementException(msg);
}
- this.visibilityDAO.addUnrestrictedRoles(application.getUnrestrictedRoles(), appId, tenantId);
+ this.visibilityDAO.addUnrestrictedRoles(unrestrictedRoles, appId, tenantId);
if (log.isDebugEnabled()) {
log.debug("New restricted roles to app ID mapping added to AP_UNRESTRICTED_ROLE table."
+ " App Id:" + appId);
@@ -217,34 +218,36 @@ public class ApplicationManagerImpl implements ApplicationManager {
}
List registeredCatehgories = this.applicationDAO.getAllCategories(tenantId);
+ String categoryName = application.getAppCategory();
+ Optional category = registeredCatehgories.stream().filter(obj -> obj.getCategoryName().equals(categoryName)).findAny();
- if (registeredCatehgories.isEmpty() || !registeredCatehgories.contains(application.getAppCategory())) {
+ if (registeredCatehgories.isEmpty()) {
ConnectionManagerUtil.rollbackDBTransaction();
- String msg = "Registered application category set is empty.";
+ String msg = "Registered application category set is empty category: " + categoryName;
log.error(msg);
throw new ApplicationManagementException(msg);
}
+ if (!category.isPresent()){
+ ConnectionManagerUtil.rollbackDBTransaction();
+ String msg = "Request contains invalid category: " + categoryName;
+ log.error(msg);
+ throw new ApplicationManagementException(msg);
- boolean isValidAppCategory = false;
-
- for (Category category : registeredCatehgories) {
- if (category.getCategoryName().equals(application.getAppCategory())) {
- isValidAppCategory = true;
- break;
- }
}
- // if (!isValidAppCategory){
- // ConnectionManagerUtil.rollbackDBTransaction();
- // String msg = "Invalid category type is found. Category: " + application. getAppCategory();
- // log.error(msg);
- // throw new RequestValidatingException(msg);
- // }
+ /*
+ In current flow, allow to add one category for an application. If it is required to add multiple
+ categories DAO layer is implemented to match with that requirement. Hence logic is also implemented
+ this way.
+ */
+ List categoryIds = new ArrayList<>();
+ categoryIds.add(category.get().getId());
+ this.applicationDAO.addCategoryMapping(categoryIds,appId,tenantId);
- // todo add categories
//adding application tags
- if (!application.getTags().isEmpty()) {
+ List tags = application.getTags();
+ if (!tags.isEmpty()) {
List allRegisteredTags = applicationDAO.getAllTags(tenantId);
List allRegisteredTagNames = new ArrayList<>();
List tagIds = new ArrayList<>();
@@ -252,17 +255,17 @@ public class ApplicationManagerImpl implements ApplicationManager {
for (Tag tag : allRegisteredTags) {
allRegisteredTagNames.add(tag.getTagName());
}
- List newTags = getDifference(application.getTags(), allRegisteredTagNames);
+ List newTags = getDifference(tags, allRegisteredTagNames);
if (!newTags.isEmpty()) {
this.applicationDAO.addTags(newTags, tenantId);
if (log.isDebugEnabled()) {
log.debug("New tags entry added to AP_APP_TAG table. App Id:" + appId);
}
- tagIds = this.applicationDAO.getTagIdsForTagNames(application.getTags(), tenantId);
+ tagIds = this.applicationDAO.getTagIdsForTagNames(tags, tenantId);
} else {
for (Tag tag : allRegisteredTags) {
- for (String tagName : application.getTags()) {
+ for (String tagName : tags) {
if (tagName.equals(tag.getTagName())) {
tagIds.add(tag.getId());
break;
@@ -295,25 +298,36 @@ public class ApplicationManagerImpl implements ApplicationManager {
return application;
} catch (LifeCycleManagementDAOException e) {
ConnectionManagerUtil.rollbackDBTransaction();
- throw new ApplicationManagementException(
- "Error occured while adding lifecycle state. application name: " + application.getName()
- + " application type: is " + application.getType(), e);
+ String msg = "Error occured while adding lifecycle state. application name: " + application.getName()
+ + " application type: is " + application.getType();
+ log.error(msg);
+ throw new ApplicationManagementException(msg, e);
} catch (ApplicationManagementDAOException e) {
ConnectionManagerUtil.rollbackDBTransaction();
- throw new ApplicationManagementException(
+ String msg =
"Error occured while adding application or application release. application name: " + application
- .getName() + " application type: " + application.getType(), e);
+ .getName() + " application type: " + application.getType();
+ log.error(msg);
+ throw new ApplicationManagementException(msg, e);
} catch (DBConnectionException e) {
- throw new ApplicationManagementException("Error occured while getting database connection. ", e);
+ String msg = "Error occured while getting database connection.";
+ log.error(msg);
+ throw new ApplicationManagementException(msg, e);
} catch (VisibilityManagementDAOException e) {
ConnectionManagerUtil.rollbackDBTransaction();
- throw new ApplicationManagementException(
- "Error occured while adding unrestricted roles. application name: " + application.getName()
- + " application type: " + application.getType(), e);
+ String msg = "Error occured while adding unrestricted roles. application name: " + application.getName()
+ + " application type: " + application.getType();
+ log.error(msg);
+ throw new ApplicationManagementException(msg, e);
} catch (TransactionManagementException e) {
- throw new ApplicationManagementException("Error occured while disabling AutoCommit. ", e);
+ String msg = "Error occured while disabling AutoCommit.";
+ log.error(msg);
+ throw new ApplicationManagementException(msg, e);
} catch (UserStoreException e) {
- throw new ApplicationManagementException("Error occured while disabling AutoCommit. ", e);
+ ConnectionManagerUtil.rollbackDBTransaction();
+ String msg = "Error occured when validating the unrestricted roles given for the application";
+ log.error(msg);
+ throw new ApplicationManagementException(msg, e);
} finally {
ConnectionManagerUtil.closeDBConnection();
}
@@ -1363,7 +1377,6 @@ public class ApplicationManagerImpl implements ApplicationManager {
String releaseType = updateRelease.getReleaseType();
Double price = updateRelease.getPrice();
- int isSharedWithTenants = updateRelease.getIsSharedWithAllTenants();
String metaData = updateRelease.getMetaData();
if (price < 0.0 || (price == 0.0 && ApplicationSubscriptionType.PAID.toString().equals(app.getSubType()))
@@ -1379,10 +1392,6 @@ public class ApplicationManagerImpl implements ApplicationManager {
if (releaseType != null) {
release.setReleaseType(releaseType);
}
- //todo change this when isShared with field change to boolean
- if (isSharedWithTenants == 0 || isSharedWithTenants == 1) {
- release.setIsSharedWithAllTenants(isSharedWithTenants);
- }
if (metaData != null) {
release.setMetaData(metaData);
}
@@ -1467,24 +1476,31 @@ public class ApplicationManagerImpl implements ApplicationManager {
String applicationType = application.getType();
if (StringUtils.isEmpty(application.getName())) {
- String msg = "";
+ String msg = "Application name cannot be empty";
log.error(msg);
- throw new RequestValidatingException("Application name cannot be empty");
+ throw new RequestValidatingException(msg);
}
if (StringUtils.isEmpty(application.getAppCategory())) {
- throw new RequestValidatingException("Application category can't be empty");
+ String msg = "Application category can't be empty";
+ log.error(msg);
+ throw new RequestValidatingException(msg);
}
if (StringUtils.isEmpty(applicationType)) {
- throw new RequestValidatingException("Application type can't be empty");
+ String msg = "Application type can't be empty";
+ log.error(msg);
+ throw new RequestValidatingException(msg);
}
if (StringUtils.isEmpty(application.getDeviceType())) {
- throw new RequestValidatingException("Device type can't be empty for the application");
+ String msg = "Device type can't be empty for the application";
+ log.error(msg);
+ throw new RequestValidatingException(msg);
}
isValidApplicationType = isValidAppType(application.getType());
if (!isValidApplicationType) {
- throw new RequestValidatingException(
- "App Type contains in the application creating payload doesn't match with supported app types");
+ String msg = "App Type contains in the application creating payload doesn't match with supported app types";
+ log.error(msg);
+ throw new RequestValidatingException(msg);
}
List appReleases;
@@ -1495,6 +1511,7 @@ public class ApplicationManagerImpl implements ApplicationManager {
"Invalid application creating request. Application creating request must have single application "
+ "release. Application name:" + application.getName() + " and type: " + application
.getType();
+ log.error(msg);
throw new RequestValidatingException(msg);
}
validateReleaseCreatingRequest(appReleases.get(0), applicationType, binaryFile, iconFile, bannerFile,
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ApplicationStorageManagerImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ApplicationStorageManagerImpl.java
index 64cbee410c..082908a848 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ApplicationStorageManagerImpl.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.core/src/main/java/org/wso2/carbon/device/application/mgt/core/impl/ApplicationStorageManagerImpl.java
@@ -39,11 +39,13 @@ import org.wso2.carbon.device.application.mgt.common.exception.RequestValidating
import org.wso2.carbon.device.application.mgt.common.exception.ResourceManagementException;
import org.wso2.carbon.device.application.mgt.common.services.ApplicationStorageManager;
import org.wso2.carbon.device.application.mgt.core.exception.ParsingException;
+import org.wso2.carbon.device.application.mgt.core.internal.DataHolder;
import org.wso2.carbon.device.application.mgt.core.util.ArtifactsParser;
import org.wso2.carbon.device.application.mgt.core.util.Constants;
import org.wso2.carbon.device.application.mgt.core.util.StorageManagementUtil;
import org.xml.sax.SAXException;
+import javax.activation.DataHandler;
import javax.xml.parsers.ParserConfigurationException;
import java.io.*;
import java.text.ParseException;
@@ -140,35 +142,35 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
InputStream bannerFileStream;
List screenshotStreams = new ArrayList<>();
List scFileExtensions = new ArrayList<>();
- String iconFileExtension;
- String bannerFileExtension;
-
- int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
+ DataHandler iconFileDataHandler;
+ DataHandler bannerFileDataHandler;
String artifactDirectoryPath;
String iconStoredLocation;
String bannerStoredLocation;
String scStoredLocation;
+ int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
try {
+ iconFileDataHandler = iconFile.getDataHandler();
+ bannerFileDataHandler = bannerFile.getDataHandler();
- iconFileStream = iconFile.getDataHandler().getInputStream();
- iconFileExtension = iconFile.getDataHandler().getContentType();
- bannerFileExtension = bannerFile.getDataHandler().getContentType();
- bannerFileStream = bannerFile.getDataHandler().getInputStream();
+ iconFileStream = iconFileDataHandler.getInputStream();
+ bannerFileStream = bannerFileDataHandler.getInputStream();
for (Attachment screenshot : screenshots) {
- screenshotStreams.add(screenshot.getDataHandler().getInputStream());
- scFileExtensions.add(screenshot.getDataHandler().getContentType());
+ DataHandler scDataHandler = screenshot.getDataHandler();
+ screenshotStreams.add(scDataHandler.getInputStream());
+ scFileExtensions.add(scDataHandler.getName());
}
artifactDirectoryPath = storagePath + applicationRelease.getAppHashValue();
StorageManagementUtil.createArtifactDirectory(artifactDirectoryPath);
- iconStoredLocation = artifactDirectoryPath + File.separator + Constants.IMAGE_ARTIFACTS[0] + iconFileExtension;
- bannerStoredLocation = artifactDirectoryPath + File.separator + Constants.IMAGE_ARTIFACTS[1] + bannerFileExtension;
if (iconFileStream != null) {
+ iconStoredLocation = artifactDirectoryPath + File.separator + iconFileDataHandler.getName();
saveFile(iconFileStream, iconStoredLocation);
applicationRelease.setIconLoc(iconStoredLocation);
}
if (bannerFileStream != null) {
+ bannerStoredLocation = artifactDirectoryPath + File.separator + bannerFileDataHandler.getName();
saveFile(bannerFileStream, bannerStoredLocation);
applicationRelease.setBannerLoc(bannerStoredLocation);
}
@@ -178,8 +180,7 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
}
int count = 0;
for (InputStream screenshotStream : screenshotStreams) {
- scStoredLocation = artifactDirectoryPath + File.separator + Constants.IMAGE_ARTIFACTS[2] + count
- + scFileExtensions.get(count);
+ scStoredLocation = artifactDirectoryPath + File.separator + scFileExtensions.get(count);
count ++;
if (count == 1) {
applicationRelease.setScreenshotLoc1(scStoredLocation);
@@ -202,7 +203,6 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
+ "update the screen-shot count for the application " + applicationRelease.getUuid() +
" for the tenant id " + tenantId, e);
}
-
}
@Override
@@ -298,9 +298,6 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
throw new ApplicationStorageManagementException(msg);
}
-
-
-
if (log.isDebugEnabled()) {
log.debug("Artifact Directory Path for saving the application release related artifacts related with "
+ "application UUID " + applicationRelease.getUuid() + " is " + artifactDirectoryPath);
@@ -329,8 +326,6 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
Attachment binaryFileAttachment) throws ResourceManagementException, RequestValidatingException{
try {
- InputStream binaryFile = binaryFileAttachment.getDataHandler().getInputStream();
- String installerExtension = binaryFileAttachment.getDataHandler().getContentType();
if (ApplicationType.WEB_CLIP.toString().equals(appType)) {
applicationRelease.setVersion(Constants.DEFAULT_VERSION);
UrlValidator urlValidator = new UrlValidator();
@@ -346,6 +341,9 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
String artifactDirectoryPath;
String md5OfApp;
String artifactPath;
+ DataHandler binaryDataHandler = binaryFileAttachment.getDataHandler();
+ String fileName = binaryDataHandler.getName();
+ InputStream binaryFile = binaryDataHandler.getInputStream();
InputStream[] cloneInputStream = cloneInputStream(binaryFile);
md5OfApp = getMD5(binaryFile);
if (md5OfApp == null) {
@@ -375,12 +373,7 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
throw new ApplicationStorageManagementException(msg);
}
- artifactPath = artifactDirectoryPath + File.separator + Constants.RELEASE_ARTIFACT
- + installerExtension;
-
-
-
-
+ artifactPath = artifactDirectoryPath + File.separator + fileName;
if (log.isDebugEnabled()) {
log.debug("Artifact Directory Path for saving the application release related artifacts related with "
+ "application UUID " + applicationRelease.getUuid() + " is " + artifactDirectoryPath);
@@ -403,7 +396,6 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
throw new ApplicationStorageManagementException(msg, e);
}
return applicationRelease;
-
}
private InputStream[] cloneInputStream(InputStream inputStream) throws ApplicationStorageManagementException {
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.api/src/main/java/org/wso2/carbon/device/application/mgt/publisher/api/services/impl/ApplicationManagementAPIImpl.java b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.api/src/main/java/org/wso2/carbon/device/application/mgt/publisher/api/services/impl/ApplicationManagementAPIImpl.java
index 5865ad94a2..72b5723701 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.api/src/main/java/org/wso2/carbon/device/application/mgt/publisher/api/services/impl/ApplicationManagementAPIImpl.java
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.api/src/main/java/org/wso2/carbon/device/application/mgt/publisher/api/services/impl/ApplicationManagementAPIImpl.java
@@ -133,7 +133,7 @@ public class ApplicationManagementAPIImpl implements ApplicationManagementAPI {
@Multipart("screenshot3") Attachment screenshot3) {
ApplicationManager applicationManager = APIUtil.getApplicationManager();
List attachmentList = new ArrayList<>();
- if (screenshot1 != null){
+ if (screenshot1 != null) {
attachmentList.add(screenshot1);
}
if (screenshot2 != null) {
@@ -158,20 +158,7 @@ public class ApplicationManagementAPIImpl implements ApplicationManagementAPI {
String msg = "Error occurred while creating the application";
log.error(msg, e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
- }
-// catch (ResourceManagementException e) {
-// String msg =
-// "Error occurred while uploading the releases artifacts of the application " + application.getName();
-// log.error(msg, e);
-// return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
-// } catch (IOException e) {
-// String msg =
-// "Error while uploading binary file and resources for the application release of the application "
-// + application.getName();
-// log.error(msg, e);
-// return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
-// }
- catch (RequestValidatingException e) {
+ } catch (RequestValidatingException e) {
String msg = "Error occurred while handling the application creating request";
log.error(msg, e);
return Response.status(Response.Status.BAD_REQUEST).entity(msg).build();
diff --git a/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/pom.xml b/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/pom.xml
index 5509b86ee3..f6a13ac5eb 100644
--- a/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/pom.xml
+++ b/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/pom.xml
@@ -145,6 +145,9 @@
commons-validator:commons-validator:${commons-validator.version}
+
+
+
diff --git a/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/dbscripts/cdm/application-mgt/h2.sql b/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/dbscripts/cdm/application-mgt/h2.sql
index 2600e21f7f..43e7e26f47 100644
--- a/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/dbscripts/cdm/application-mgt/h2.sql
+++ b/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/dbscripts/cdm/application-mgt/h2.sql
@@ -35,25 +35,23 @@ CREATE TABLE IF NOT EXISTS APP_MANAGER.AP_APP_RELEASE(
TENANT_ID varchar(45) NOT NULL,
UUID varchar(200) NOT NULL,
RELEASE_TYPE varchar(45) NOT NULL,
+ PACKAGE_NAME varchar(45) NOT NULL,
APP_PRICE decimal(6, 2) NULL DEFAULT NULL,
- STORED_LOCATION varchar(45) NOT NULL,
- BANNER_LOCATION varchar(45) NOT NULL,
- SC_1_LOCATION varchar(45) NOT NULL,
- SC_2_LOCATION varchar(45) NULL DEFAULT NULL,
- SC_3_LOCATION varchar(45) NULL DEFAULT NULL,
+ STORED_LOCATION varchar(100) NOT NULL,
+ ICON_LOCATION varchar(100) NOT NULL,
+ BANNER_LOCATION varchar(100) NOT NULL,
+ SC_1_LOCATION varchar(100) NOT NULL,
+ SC_2_LOCATION varchar(100) NULL DEFAULT NULL,
+ SC_3_LOCATION varchar(100) NULL DEFAULT NULL,
APP_HASH_VALUE varchar(1000) NOT NULL,
- SHARED_WITH_ALL_TENANTS tinyint NULL DEFAULT NULL,
+ SHARED_WITH_ALL_TENANTS tinyint NOT NULL,
APP_META_INFO clob NULL DEFAULT NULL,
- PACKAGE_NAME varchar(45) NOT NULL,
- SUPPORTED_OS_VERSIONS varchar(45) NULL,
+ SUPPORTED_OS_VERSIONS varchar(45) NOT NULL,
RATING double NULL DEFAULT NULL,
- CURRENT_STATE varchar(45) NULL,
+ CURRENT_STATE varchar(45) NOT NULL,
RATED_USERS int NULL,
AP_APP_ID int NOT NULL,
- PRIMARY KEY (
- ID,
- AP_APP_ID
- ),
+ PRIMARY KEY (ID),
CONSTRAINT fk_AP_APP_RELEASE_AP_APP1
FOREIGN KEY (AP_APP_ID)
REFERENCES APP_MANAGER.AP_APP (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
diff --git a/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/dbscripts/cdm/application-mgt/mysql.sql b/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/dbscripts/cdm/application-mgt/mysql.sql
index dc28252bb6..6b6e488321 100644
--- a/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/dbscripts/cdm/application-mgt/mysql.sql
+++ b/features/application-mgt/org.wso2.carbon.device.application.mgt.server.feature/src/main/resources/dbscripts/cdm/application-mgt/mysql.sql
@@ -49,22 +49,23 @@ CREATE TABLE IF NOT EXISTS `APP_MANAGER`.`AP_APP_RELEASE` (
`TENANT_ID` VARCHAR(45) NOT NULL,
`UUID` VARCHAR(200) NOT NULL,
`RELEASE_TYPE` VARCHAR(45) NOT NULL,
+ `PACKAGE_NAME` VARCHAR(45) NOT NULL,
`APP_PRICE` DECIMAL(6,2) NULL DEFAULT NULL,
- `STORED_LOCATION` VARCHAR(45) NOT NULL,
- `BANNER_LOCATION` VARCHAR(45) NOT NULL,
- `SC_1_LOCATION` VARCHAR(45) NOT NULL,
- `SC_2_LOCATION` VARCHAR(45) NULL DEFAULT NULL,
- `SC_3_LOCATION` VARCHAR(45) NULL DEFAULT NULL,
+ `STORED_LOCATION` VARCHAR(100) NOT NULL,
+ `ICON_LOCATION` VARCHAR(100) NOT NULL,
+ `BANNER_LOCATION` VARCHAR(100) NOT NULL,
+ `SC_1_LOCATION` VARCHAR(100) NOT NULL,
+ `SC_2_LOCATION` VARCHAR(100) NULL DEFAULT NULL,
+ `SC_3_LOCATION` VARCHAR(100) NULL DEFAULT NULL,
`APP_HASH_VALUE` VARCHAR(1000) NOT NULL,
- `SHARED_WITH_ALL_TENANTS` TINYINT(1) NULL DEFAULT NULL,
+ `SHARED_WITH_ALL_TENANTS` TINYINT(1) NOT NULL,
`APP_META_INFO` TEXT NULL DEFAULT NULL,
- `PACKAGE_NAME` VARCHAR(45) NOT NULL,
- `SUPPORTED_OS_VERSIONS` VARCHAR(45) NULL,
+ `SUPPORTED_OS_VERSIONS` VARCHAR(45) NOT NULL,
`RATING` DOUBLE NULL DEFAULT NULL,
- `CURRENT_STATE` VARCHAR(45) NULL,
+ `CURRENT_STATE` VARCHAR(45) NOT NULL,
`RATED_USERS` INT(11) NULL,
`AP_APP_ID` INT(11) NOT NULL,
- PRIMARY KEY (`ID`, `AP_APP_ID`),
+ PRIMARY KEY (`ID`),
INDEX `fk_AP_APP_RELEASE_AP_APP1_idx` (`AP_APP_ID` ASC),
CONSTRAINT `fk_AP_APP_RELEASE_AP_APP1`
FOREIGN KEY (`AP_APP_ID`)
@@ -73,7 +74,7 @@ CREATE TABLE IF NOT EXISTS `APP_MANAGER`.`AP_APP_RELEASE` (
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
-COMMENT = ' ';
+COMMENT = ' ';
-- -----------------------------------------------------