mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Adding icon support for platform
This commit is contained in:
parent
a8806501de
commit
5c23d42de1
@ -23,12 +23,7 @@ import org.apache.commons.logging.LogFactory;
|
|||||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
import org.wso2.carbon.device.application.mgt.api.beans.ErrorResponse;
|
import org.wso2.carbon.device.application.mgt.api.beans.ErrorResponse;
|
||||||
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.services.ApplicationManager;
|
import org.wso2.carbon.device.application.mgt.common.services.*;
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationReleaseManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationStorageManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.LifecycleStateManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.PlatformManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.SubscriptionManager;
|
|
||||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||||
|
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
@ -47,6 +42,7 @@ public class APIUtil {
|
|||||||
private static ApplicationReleaseManager applicationReleaseManager;
|
private static ApplicationReleaseManager applicationReleaseManager;
|
||||||
private static ApplicationStorageManager applicationStorageManager;
|
private static ApplicationStorageManager applicationStorageManager;
|
||||||
private static SubscriptionManager subscriptionManager;
|
private static SubscriptionManager subscriptionManager;
|
||||||
|
private static PlatformStorageManager platformStorageManager;
|
||||||
|
|
||||||
public static ApplicationManager getApplicationManager() {
|
public static ApplicationManager getApplicationManager() {
|
||||||
if (applicationManager == null) {
|
if (applicationManager == null) {
|
||||||
@ -147,7 +143,31 @@ public class APIUtil {
|
|||||||
}
|
}
|
||||||
return applicationStorageManager;
|
return applicationStorageManager;
|
||||||
}
|
}
|
||||||
public static Response getResponse(ApplicationManagementException ex, Response.Status status) {
|
|
||||||
|
/**
|
||||||
|
* To get the Platform Storage Manager from the osgi context.
|
||||||
|
*
|
||||||
|
* @return PlatformStoreManager instance in the current osgi context.
|
||||||
|
*/
|
||||||
|
public static PlatformStorageManager getPlatformStorageManager() {
|
||||||
|
if (platformStorageManager == null) {
|
||||||
|
synchronized (APIUtil.class) {
|
||||||
|
if (platformStorageManager == null) {
|
||||||
|
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
||||||
|
platformStorageManager = (PlatformStorageManager) ctx
|
||||||
|
.getOSGiService(PlatformStorageManager.class, null);
|
||||||
|
if (platformStorageManager == null) {
|
||||||
|
String msg = "Platform Storage Manager service has not initialized.";
|
||||||
|
log.error(msg);
|
||||||
|
throw new IllegalStateException(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return platformStorageManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Response getResponse(Exception ex, Response.Status status) {
|
||||||
return getResponse(ex.getMessage(), status);
|
return getResponse(ex.getMessage(), status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -28,8 +28,11 @@ import io.swagger.annotations.ExtensionProperty;
|
|||||||
import io.swagger.annotations.Info;
|
import io.swagger.annotations.Info;
|
||||||
import io.swagger.annotations.SwaggerDefinition;
|
import io.swagger.annotations.SwaggerDefinition;
|
||||||
import io.swagger.annotations.Tag;
|
import io.swagger.annotations.Tag;
|
||||||
|
import org.apache.cxf.jaxrs.ext.multipart.Attachment;
|
||||||
|
import org.apache.cxf.jaxrs.ext.multipart.Multipart;
|
||||||
import org.wso2.carbon.apimgt.annotations.api.Scopes;
|
import org.wso2.carbon.apimgt.annotations.api.Scopes;
|
||||||
import org.wso2.carbon.device.application.mgt.api.beans.ErrorResponse;
|
import org.wso2.carbon.device.application.mgt.api.beans.ErrorResponse;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.ApplicationRelease;
|
||||||
import org.wso2.carbon.device.application.mgt.common.Platform;
|
import org.wso2.carbon.device.application.mgt.common.Platform;
|
||||||
|
|
||||||
import javax.validation.constraints.Size;
|
import javax.validation.constraints.Size;
|
||||||
@ -96,7 +99,6 @@ import javax.ws.rs.core.Response;
|
|||||||
"such as get all the available platform for a tenant, etc.")
|
"such as get all the available platform for a tenant, etc.")
|
||||||
@Path("/platforms")
|
@Path("/platforms")
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
@Consumes(MediaType.APPLICATION_JSON)
|
|
||||||
public interface PlatformManagementAPI {
|
public interface PlatformManagementAPI {
|
||||||
String SCOPE = "scope";
|
String SCOPE = "scope";
|
||||||
|
|
||||||
@ -181,9 +183,9 @@ public interface PlatformManagementAPI {
|
|||||||
|
|
||||||
@POST
|
@POST
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
@Consumes(MediaType.APPLICATION_JSON)
|
@Consumes(MediaType.MULTIPART_FORM_DATA)
|
||||||
@ApiOperation(
|
@ApiOperation(
|
||||||
consumes = MediaType.APPLICATION_JSON,
|
consumes = MediaType.MULTIPART_FORM_DATA,
|
||||||
produces = MediaType.APPLICATION_JSON,
|
produces = MediaType.APPLICATION_JSON,
|
||||||
httpMethod = "POST",
|
httpMethod = "POST",
|
||||||
value = "Add Platform",
|
value = "Add Platform",
|
||||||
@ -209,19 +211,16 @@ public interface PlatformManagementAPI {
|
|||||||
response = ErrorResponse.class)
|
response = ErrorResponse.class)
|
||||||
})
|
})
|
||||||
Response addPlatform(
|
Response addPlatform(
|
||||||
@ApiParam(
|
@Multipart(value = "Platform", type = "application/json" ) Platform platform,
|
||||||
name = "platform",
|
@Multipart(value = "icon", required = true) Attachment iconFile
|
||||||
value = "The payload of the platform",
|
|
||||||
required = true)
|
|
||||||
Platform platform
|
|
||||||
);
|
);
|
||||||
|
|
||||||
@PUT
|
@PUT
|
||||||
@Path("/{identifier}")
|
@Path("/{identifier}")
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
@Consumes(MediaType.APPLICATION_JSON)
|
@Consumes(MediaType.MULTIPART_FORM_DATA)
|
||||||
@ApiOperation(
|
@ApiOperation(
|
||||||
consumes = MediaType.APPLICATION_JSON,
|
consumes = MediaType.MULTIPART_FORM_DATA,
|
||||||
produces = MediaType.APPLICATION_JSON,
|
produces = MediaType.APPLICATION_JSON,
|
||||||
httpMethod = "PUT",
|
httpMethod = "PUT",
|
||||||
value = "Update Platform",
|
value = "Update Platform",
|
||||||
@ -247,11 +246,8 @@ public interface PlatformManagementAPI {
|
|||||||
response = ErrorResponse.class)
|
response = ErrorResponse.class)
|
||||||
})
|
})
|
||||||
Response updatePlatform(
|
Response updatePlatform(
|
||||||
@ApiParam(
|
@Multipart(value = "Platform", type = "application/json" ) Platform platform,
|
||||||
name = "platform",
|
@Multipart(value = "icon", required = false) Attachment iconFile,
|
||||||
value = "The payload of the platform",
|
|
||||||
required = true)
|
|
||||||
Platform platform,
|
|
||||||
@ApiParam(
|
@ApiParam(
|
||||||
name = "identifier",
|
name = "identifier",
|
||||||
required = true)
|
required = true)
|
||||||
@ -343,7 +339,7 @@ public interface PlatformManagementAPI {
|
|||||||
);
|
);
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Path("tags")
|
@Path("tags/{name}")
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
@Consumes(MediaType.APPLICATION_JSON)
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
@ApiOperation(
|
@ApiOperation(
|
||||||
@ -374,6 +370,6 @@ public interface PlatformManagementAPI {
|
|||||||
Response getPlatformTags(
|
Response getPlatformTags(
|
||||||
@ApiParam(name = "name", value ="The initial part of the name of platform tags that we need to retrieve",
|
@ApiParam(name = "name", value ="The initial part of the name of platform tags that we need to retrieve",
|
||||||
required = true)
|
required = true)
|
||||||
@QueryParam("name") @Size(min = 3) String name
|
@PathParam("name") @Size(min = 3) String name
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,6 +32,7 @@ import org.wso2.carbon.device.application.mgt.common.Filter;
|
|||||||
import org.wso2.carbon.device.application.mgt.common.ImageArtifact;
|
import org.wso2.carbon.device.application.mgt.common.ImageArtifact;
|
||||||
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.ApplicationStorageManagementException;
|
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationStorageManagementException;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.exception.ResourceManagementException;
|
||||||
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.ApplicationReleaseManager;
|
import org.wso2.carbon.device.application.mgt.common.services.ApplicationReleaseManager;
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationStorageManager;
|
import org.wso2.carbon.device.application.mgt.common.services.ApplicationStorageManager;
|
||||||
@ -97,6 +98,9 @@ public class ApplicationManagementAPIImpl implements ApplicationManagementAPI {
|
|||||||
String msg = "Error occurred while getting the application list";
|
String msg = "Error occurred while getting the application list";
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
return Response.status(Response.Status.BAD_REQUEST).build();
|
return Response.status(Response.Status.BAD_REQUEST).build();
|
||||||
|
} catch (ApplicationStorageManagementException e) {
|
||||||
|
log.error("Error occurred while getting the image artifacts of the application", e);
|
||||||
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,6 +136,9 @@ public class ApplicationManagementAPIImpl implements ApplicationManagementAPI {
|
|||||||
} catch (ApplicationManagementException e) {
|
} catch (ApplicationManagementException e) {
|
||||||
log.error("Error occurred while getting application with the uuid " + uuid, e);
|
log.error("Error occurred while getting application with the uuid " + uuid, e);
|
||||||
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
|
} catch (ApplicationStorageManagementException e) {
|
||||||
|
log.error("Error occurred while getting the image artifacts of the application with the uuid " + uuid, e);
|
||||||
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,6 +259,10 @@ public class ApplicationManagementAPIImpl implements ApplicationManagementAPI {
|
|||||||
return APIUtil.getResponse(new ApplicationManagementException(
|
return APIUtil.getResponse(new ApplicationManagementException(
|
||||||
"Exception while trying to read icon, " + "banner files for the application " +
|
"Exception while trying to read icon, " + "banner files for the application " +
|
||||||
applicationUUID, e), Response.Status.BAD_REQUEST);
|
applicationUUID, e), Response.Status.BAD_REQUEST);
|
||||||
|
} catch (ResourceManagementException e) {
|
||||||
|
log.error("Error occurred while uploading the image artifacts of the application with the uuid "
|
||||||
|
+ applicationUUID, e);
|
||||||
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -259,8 +270,8 @@ public class ApplicationManagementAPIImpl implements ApplicationManagementAPI {
|
|||||||
@PUT
|
@PUT
|
||||||
@Path("/upload-image-artifacts/{uuid}")
|
@Path("/upload-image-artifacts/{uuid}")
|
||||||
public Response updateApplicationArtifacts(@PathParam("uuid") String applicationUUID,
|
public Response updateApplicationArtifacts(@PathParam("uuid") String applicationUUID,
|
||||||
@Multipart("icon") Attachment iconFile, @Multipart("banner") Attachment bannerFile, @Multipart
|
@Multipart("icon") Attachment iconFile, @Multipart("banner") Attachment bannerFile,
|
||||||
("screenshot") List<Attachment> attachmentList) {
|
@Multipart("screenshot") List<Attachment> attachmentList) {
|
||||||
ApplicationStorageManager applicationStorageManager = APIUtil.getApplicationStorageManager();
|
ApplicationStorageManager applicationStorageManager = APIUtil.getApplicationStorageManager();
|
||||||
try {
|
try {
|
||||||
InputStream iconFileStream = null;
|
InputStream iconFileStream = null;
|
||||||
@ -282,15 +293,15 @@ public class ApplicationManagementAPIImpl implements ApplicationManagementAPI {
|
|||||||
.uploadImageArtifacts(applicationUUID, iconFileStream, bannerFileStream, attachments);
|
.uploadImageArtifacts(applicationUUID, iconFileStream, bannerFileStream, attachments);
|
||||||
return Response.status(Response.Status.OK)
|
return Response.status(Response.Status.OK)
|
||||||
.entity("Successfully updated artifacts for the application " + applicationUUID).build();
|
.entity("Successfully updated artifacts for the application " + applicationUUID).build();
|
||||||
} catch (ApplicationManagementException e) {
|
|
||||||
String msg = "Error occurred while updating the artifact for the application " + applicationUUID;
|
|
||||||
log.error(msg, e);
|
|
||||||
return APIUtil.getResponse(e, Response.Status.BAD_REQUEST);
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error("Exception while trying to read icon, banner files for the application " + applicationUUID);
|
log.error("Exception while trying to read icon, banner files for the application " + applicationUUID);
|
||||||
return APIUtil.getResponse(new ApplicationManagementException(
|
return APIUtil.getResponse(new ApplicationManagementException(
|
||||||
"Exception while trying to read icon, banner files for the application " +
|
"Exception while trying to read icon, banner files for the application " +
|
||||||
applicationUUID, e), Response.Status.BAD_REQUEST);
|
applicationUUID, e), Response.Status.BAD_REQUEST);
|
||||||
|
} catch (ResourceManagementException e) {
|
||||||
|
log.error("Error occurred while uploading the image artifacts of the application with the uuid "
|
||||||
|
+ applicationUUID, e);
|
||||||
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -328,6 +339,9 @@ public class ApplicationManagementAPIImpl implements ApplicationManagementAPI {
|
|||||||
String msg = "Error occurred while deleting the application: " + uuid;
|
String msg = "Error occurred while deleting the application: " + uuid;
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
|
} catch (ApplicationStorageManagementException e) {
|
||||||
|
log.error("Error occurred while deleteing the image artifacts of the application with the uuid " + uuid, e);
|
||||||
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -358,6 +372,10 @@ public class ApplicationManagementAPIImpl implements ApplicationManagementAPI {
|
|||||||
log.error(errorMessage, e);
|
log.error(errorMessage, e);
|
||||||
return APIUtil.getResponse(new ApplicationManagementException(errorMessage, e),
|
return APIUtil.getResponse(new ApplicationManagementException(errorMessage, e),
|
||||||
Response.Status.INTERNAL_SERVER_ERROR);
|
Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
|
} catch (ResourceManagementException e) {
|
||||||
|
log.error("Error occurred while uploading the releases artifacts of the application with the uuid "
|
||||||
|
+ applicationUUID + " for the release " + applicationRelease.getVersionName(), e);
|
||||||
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -394,6 +412,10 @@ public class ApplicationManagementAPIImpl implements ApplicationManagementAPI {
|
|||||||
return APIUtil.getResponse(new ApplicationManagementException(
|
return APIUtil.getResponse(new ApplicationManagementException(
|
||||||
"Error while updating the release artifacts of the application with UUID "
|
"Error while updating the release artifacts of the application with UUID "
|
||||||
+ applicationUUID), Response.Status.INTERNAL_SERVER_ERROR);
|
+ applicationUUID), Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
|
} catch (ResourceManagementException e) {
|
||||||
|
log.error("Error occurred while updating the releases artifacts of the application with the uuid "
|
||||||
|
+ applicationUUID + " for the release " + applicationRelease.getVersionName(), e);
|
||||||
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -470,6 +492,10 @@ public class ApplicationManagementAPIImpl implements ApplicationManagementAPI {
|
|||||||
} catch (ApplicationManagementException e) {
|
} catch (ApplicationManagementException e) {
|
||||||
log.error("Error while deleting application release with the application UUID " + applicationUUID, e);
|
log.error("Error while deleting application release with the application UUID " + applicationUUID, e);
|
||||||
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
|
} catch (ApplicationStorageManagementException e) {
|
||||||
|
log.error("Error occurred while deleting the releases artifacts of the application with the uuid "
|
||||||
|
+ applicationUUID + " for the release " + version, e);
|
||||||
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -19,13 +19,20 @@ package org.wso2.carbon.device.application.mgt.api.services.impl;
|
|||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.apache.cxf.jaxrs.ext.multipart.Attachment;
|
||||||
|
import org.apache.cxf.jaxrs.ext.multipart.Multipart;
|
||||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
import org.wso2.carbon.device.application.mgt.api.APIUtil;
|
import org.wso2.carbon.device.application.mgt.api.APIUtil;
|
||||||
import org.wso2.carbon.device.application.mgt.api.services.PlatformManagementAPI;
|
import org.wso2.carbon.device.application.mgt.api.services.PlatformManagementAPI;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.ImageArtifact;
|
||||||
import org.wso2.carbon.device.application.mgt.common.Platform;
|
import org.wso2.carbon.device.application.mgt.common.Platform;
|
||||||
import org.wso2.carbon.device.application.mgt.common.exception.PlatformManagementException;
|
import org.wso2.carbon.device.application.mgt.common.exception.PlatformManagementException;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.exception.PlatformStorageManagementException;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.exception.ResourceManagementException;
|
||||||
import org.wso2.carbon.device.application.mgt.core.exception.PlatformManagementDAOException;
|
import org.wso2.carbon.device.application.mgt.core.exception.PlatformManagementDAOException;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.validation.constraints.Size;
|
import javax.validation.constraints.Size;
|
||||||
@ -118,6 +125,8 @@ public class PlatformManagementAPIImpl implements PlatformManagementAPI {
|
|||||||
if (platform == null) {
|
if (platform == null) {
|
||||||
return Response.status(Response.Status.NOT_FOUND).entity("Platform not found").build();
|
return Response.status(Response.Status.NOT_FOUND).entity("Platform not found").build();
|
||||||
}
|
}
|
||||||
|
ImageArtifact icon = APIUtil.getPlatformStorageManager().getIcon(id);
|
||||||
|
|
||||||
return Response.status(Response.Status.OK).entity(platform).build();
|
return Response.status(Response.Status.OK).entity(platform).build();
|
||||||
} catch (PlatformManagementDAOException e) {
|
} catch (PlatformManagementDAOException e) {
|
||||||
log.error("Error while trying the get the platform with the identifier : " + id + " for the tenant :"
|
log.error("Error while trying the get the platform with the identifier : " + id + " for the tenant :"
|
||||||
@ -127,17 +136,26 @@ public class PlatformManagementAPIImpl implements PlatformManagementAPI {
|
|||||||
log.error("Error while trying the get the platform with the identifier : " + id + " for the tenant :"
|
log.error("Error while trying the get the platform with the identifier : " + id + " for the tenant :"
|
||||||
+ tenantId, e);
|
+ tenantId, e);
|
||||||
return APIUtil.getResponse(e, Response.Status.NOT_FOUND);
|
return APIUtil.getResponse(e, Response.Status.NOT_FOUND);
|
||||||
|
} catch (PlatformStorageManagementException e) {
|
||||||
|
log.error("Platform Storage Management Exception while trying to update the icon for the platform : " +
|
||||||
|
id + " for the tenant : " + tenantId, e);
|
||||||
|
return APIUtil.getResponse(e, Response.Status.NOT_FOUND);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@POST
|
@POST
|
||||||
@Override
|
@Override
|
||||||
public Response addPlatform(Platform platform) {
|
public Response addPlatform(@Multipart("platform") Platform platform, @Multipart("icon")Attachment icon) {
|
||||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||||
try {
|
try {
|
||||||
if (platform != null) {
|
if (platform != null) {
|
||||||
if (platform.validate()) {
|
if (platform.validate()) {
|
||||||
APIUtil.getPlatformManager().register(tenantId, platform);
|
APIUtil.getPlatformManager().register(tenantId, platform);
|
||||||
|
|
||||||
|
if (icon != null) {
|
||||||
|
InputStream iconFileStream = icon.getDataHandler().getInputStream();
|
||||||
|
APIUtil.getPlatformStorageManager().uploadIcon(platform.getIdentifier(), iconFileStream);
|
||||||
|
}
|
||||||
return Response.status(Response.Status.CREATED).build();
|
return Response.status(Response.Status.CREATED).build();
|
||||||
} else {
|
} else {
|
||||||
return APIUtil
|
return APIUtil
|
||||||
@ -152,20 +170,41 @@ public class PlatformManagementAPIImpl implements PlatformManagementAPI {
|
|||||||
log.error("Platform Management Exception while trying to add the platform with identifier : " + platform
|
log.error("Platform Management Exception while trying to add the platform with identifier : " + platform
|
||||||
.getIdentifier() + " for the tenant : " + tenantId, e);
|
.getIdentifier() + " for the tenant : " + tenantId, e);
|
||||||
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error("IO Exception while trying to save platform icon for the platform : " + platform.getIdentifier(),
|
||||||
|
e);
|
||||||
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
|
} catch (ResourceManagementException e) {
|
||||||
|
log.error("Storage Exception while trying to save platform icon for the platform : " + platform
|
||||||
|
.getIdentifier(), e);
|
||||||
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@PUT
|
@PUT
|
||||||
@Path("/{identifier}")
|
@Path("/{identifier}")
|
||||||
@Override
|
@Override
|
||||||
public Response updatePlatform(Platform platform, @PathParam("identifier") @Size(max = 45) String id) {
|
public Response updatePlatform(@Multipart("platform") Platform platform, @Multipart("icon") Attachment
|
||||||
|
icon, @PathParam("identifier") @Size(max = 45) String id) {
|
||||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||||
try {
|
try {
|
||||||
APIUtil.getPlatformManager().update(tenantId, id, platform);
|
APIUtil.getPlatformManager().update(tenantId, id, platform);
|
||||||
|
if (icon != null) {
|
||||||
|
InputStream iconFileStream = icon.getDataHandler().getInputStream();
|
||||||
|
APIUtil.getPlatformStorageManager().uploadIcon(platform.getIdentifier(), iconFileStream);
|
||||||
|
}
|
||||||
return Response.status(Response.Status.OK).build();
|
return Response.status(Response.Status.OK).build();
|
||||||
} catch (PlatformManagementException e) {
|
} catch (PlatformManagementException e) {
|
||||||
log.error("Error while updating the platform - " + id + " for tenant domain - " + tenantId, e);
|
log.error("Error while updating the platform - " + id + " for tenant domain - " + tenantId, e);
|
||||||
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error("IO Exception while trying to update the platform icon for the platform : " + platform
|
||||||
|
.getIdentifier(), e);
|
||||||
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
|
} catch (ResourceManagementException e) {
|
||||||
|
log.error("Storage Exception while trying to update the platform icon for the platform : " + platform
|
||||||
|
.getIdentifier(), e);
|
||||||
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,12 +214,17 @@ public class PlatformManagementAPIImpl implements PlatformManagementAPI {
|
|||||||
public Response removePlatform(@PathParam("identifier") @Size(max = 45) String id) {
|
public Response removePlatform(@PathParam("identifier") @Size(max = 45) String id) {
|
||||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||||
try {
|
try {
|
||||||
|
APIUtil.getPlatformStorageManager().deleteIcon(id);
|
||||||
APIUtil.getPlatformManager().unregister(tenantId, id, false);
|
APIUtil.getPlatformManager().unregister(tenantId, id, false);
|
||||||
return Response.status(Response.Status.OK).build();
|
return Response.status(Response.Status.OK).build();
|
||||||
} catch (PlatformManagementException e) {
|
} catch (PlatformManagementException e) {
|
||||||
log.error("Platform Management Exception while trying to un-register the platform with the identifier : "
|
log.error("Platform Management Exception while trying to un-register the platform with the identifier : "
|
||||||
+ id + " for the tenant : " + tenantId, e);
|
+ id + " for the tenant : " + tenantId, e);
|
||||||
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
|
} catch (PlatformStorageManagementException e) {
|
||||||
|
log.error("Platform Storage Management Exception while trying to delete the icon of the platform with "
|
||||||
|
+ "identifier for the tenant :" + tenantId, e);
|
||||||
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,9 +249,9 @@ public class PlatformManagementAPIImpl implements PlatformManagementAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Path("tags")
|
@Path("tags/{name}")
|
||||||
@Override
|
@Override
|
||||||
public Response getPlatformTags(@QueryParam("name") String name) {
|
public Response getPlatformTags(@PathParam("name") String name) {
|
||||||
if (name == null || name.isEmpty() || name.length() < 3) {
|
if (name == null || name.isEmpty() || name.length() < 3) {
|
||||||
return APIUtil.getResponse("In order to get platform tags, it is required to pass the first 3 "
|
return APIUtil.getResponse("In order to get platform tags, it is required to pass the first 3 "
|
||||||
+ "characters of the platform tag name", Response.Status.INTERNAL_SERVER_ERROR);
|
+ "characters of the platform tag name", Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
|
|||||||
@ -52,17 +52,17 @@ public class SubscriptionManagementAPIImpl implements SubscriptionManagementAPI{
|
|||||||
Object result;
|
Object result;
|
||||||
SubscriptionManager subscriptionManager = APIUtil.getSubscriptionManager();
|
SubscriptionManager subscriptionManager = APIUtil.getSubscriptionManager();
|
||||||
try {
|
try {
|
||||||
String applicationUUID = installationDetails.getApplicationUUID();
|
String applicationUUTD = installationDetails.getApplicationUUID();
|
||||||
String versionName = installationDetails.getVersionName();
|
String versionName = installationDetails.getVersionName();
|
||||||
if (!installationDetails.getDeviceIdentifiers().isEmpty()) {
|
if (!installationDetails.getDeviceIdentifiers().isEmpty()) {
|
||||||
List<DeviceIdentifier> deviceList = installationDetails.getDeviceIdentifiers();
|
List<DeviceIdentifier> deviceList = installationDetails.getDeviceIdentifiers();
|
||||||
result = subscriptionManager.installApplicationForDevices(applicationUUID, versionName, deviceList);
|
result = subscriptionManager.installApplicationForDevices(applicationUUTD, versionName, deviceList);
|
||||||
} else if (!installationDetails.getUserNameList().isEmpty()) {
|
} else if (!installationDetails.getUserNameList().isEmpty()) {
|
||||||
List<String> userList = installationDetails.getUserNameList();
|
List<String> userList = installationDetails.getUserNameList();
|
||||||
result = subscriptionManager.installApplicationForUsers(applicationUUID, userList);
|
result = subscriptionManager.installApplicationForUsers(applicationUUTD, userList);
|
||||||
} else if (!installationDetails.getRoleNameList().isEmpty()) {
|
} else if (!installationDetails.getRoleNameList().isEmpty()) {
|
||||||
List<String> roleList = installationDetails.getRoleNameList();
|
List<String> roleList = installationDetails.getRoleNameList();
|
||||||
result = subscriptionManager.installApplicationForRoles(applicationUUID, roleList);
|
result = subscriptionManager.installApplicationForRoles(applicationUUTD, roleList);
|
||||||
} else {
|
} else {
|
||||||
result = "Missing request data!";
|
result = "Missing request data!";
|
||||||
return Response.status(Response.Status.BAD_REQUEST).entity(result).build();
|
return Response.status(Response.Status.BAD_REQUEST).entity(result).build();
|
||||||
|
|||||||
@ -60,6 +60,8 @@ public class Platform {
|
|||||||
|
|
||||||
private boolean defaultTenantMapping;
|
private boolean defaultTenantMapping;
|
||||||
|
|
||||||
|
private ImageArtifact icon;
|
||||||
|
|
||||||
public Platform(Platform platform) {
|
public Platform(Platform platform) {
|
||||||
this.id = platform.getId();
|
this.id = platform.getId();
|
||||||
this.name = platform.getName();
|
this.name = platform.getName();
|
||||||
@ -180,6 +182,10 @@ public class Platform {
|
|||||||
return !(name == null || identifier == null);
|
return !(name == null || identifier == null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setIcon(ImageArtifact icon) {
|
||||||
|
this.icon = icon;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a property of a {@link Platform}.
|
* Represents a property of a {@link Platform}.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -22,7 +22,7 @@ package org.wso2.carbon.device.application.mgt.common.exception;
|
|||||||
/**
|
/**
|
||||||
* Represents the exception thrown during storing and retrieving the artifacts.
|
* Represents the exception thrown during storing and retrieving the artifacts.
|
||||||
*/
|
*/
|
||||||
public class ApplicationStorageManagementException extends ApplicationManagementException {
|
public class ApplicationStorageManagementException extends ResourceManagementException {
|
||||||
public ApplicationStorageManagementException(String message, Throwable ex) {
|
public ApplicationStorageManagementException(String message, Throwable ex) {
|
||||||
super(message, ex);
|
super(message, ex);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* 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.exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents the exception thrown during storing and retrieving those artifacts.
|
||||||
|
*/
|
||||||
|
public class PlatformStorageManagementException extends ResourceManagementException {
|
||||||
|
public PlatformStorageManagementException(String message, Throwable ex) {
|
||||||
|
super(message, ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PlatformStorageManagementException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* 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.exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents the exception that will be thrown when there is an issue while managing the resources.
|
||||||
|
*/
|
||||||
|
public class ResourceManagementException extends Exception {
|
||||||
|
ResourceManagementException(String message, Throwable ex) {
|
||||||
|
super(message, ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ResourceManagementException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -21,6 +21,7 @@ package org.wso2.carbon.device.application.mgt.common.services;
|
|||||||
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.ImageArtifact;
|
import org.wso2.carbon.device.application.mgt.common.ImageArtifact;
|
||||||
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.ResourceManagementException;
|
||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -38,7 +39,7 @@ public interface ApplicationStorageManager {
|
|||||||
* @throws ApplicationStorageManagementException Application Storage Management Exception.
|
* @throws ApplicationStorageManagementException Application Storage Management Exception.
|
||||||
*/
|
*/
|
||||||
public void uploadImageArtifacts(String applicationUUID, InputStream iconFile, InputStream bannerFile,
|
public void uploadImageArtifacts(String applicationUUID, InputStream iconFile, InputStream bannerFile,
|
||||||
List<InputStream> screenshots) throws ApplicationStorageManagementException;
|
List<InputStream> screenshots) throws ResourceManagementException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* To upload release artifacts for an Application.
|
* To upload release artifacts for an Application.
|
||||||
@ -47,8 +48,8 @@ public interface ApplicationStorageManager {
|
|||||||
* @param binaryFile Binary File for the release.
|
* @param binaryFile Binary File for the release.
|
||||||
* @throws ApplicationStorageManagementException Application Storage Management Exception.
|
* @throws ApplicationStorageManagementException Application Storage Management Exception.
|
||||||
*/
|
*/
|
||||||
public void uploadReleaseArtifacts(String applicationUUID, String versionName, InputStream binaryFile) throws
|
public void uploadReleaseArtifacts(String applicationUUID, String versionName, InputStream binaryFile)
|
||||||
ApplicationStorageManagementException;
|
throws ResourceManagementException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* To get released artifacts for the particular version of the application.
|
* To get released artifacts for the particular version of the application.
|
||||||
|
|||||||
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* 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.services;
|
||||||
|
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.ImageArtifact;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.exception.PlatformStorageManagementException;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.exception.ResourceManagementException;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class manages all the storage related requirements of Platform.
|
||||||
|
*/
|
||||||
|
public interface PlatformStorageManager {
|
||||||
|
/**
|
||||||
|
* To upload image artifacts related with an Application.
|
||||||
|
*
|
||||||
|
* @param platformIdentifier Identifier of the platform
|
||||||
|
* @param iconFile Icon File input stream
|
||||||
|
* @throws PlatformStorageManagementException Platform Storage Management Exception.
|
||||||
|
*/
|
||||||
|
public void uploadIcon(String platformIdentifier, InputStream iconFile) throws ResourceManagementException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To get the icon for a particular platform.
|
||||||
|
*
|
||||||
|
* @param platformIdentifier Identifier of the platform.
|
||||||
|
* @return the icon for the given platform.
|
||||||
|
*/
|
||||||
|
public ImageArtifact getIcon(String platformIdentifier) throws PlatformStorageManagementException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To delete the icon of a particular platform
|
||||||
|
*
|
||||||
|
* @param platformIdentifier Identifier of the platform to which delete icon.
|
||||||
|
* @throws PlatformStorageManagementException PlatformStorageManagement Exception.
|
||||||
|
*/
|
||||||
|
public void deleteIcon(String platformIdentifier) throws PlatformStorageManagementException;
|
||||||
|
}
|
||||||
@ -77,7 +77,8 @@
|
|||||||
org.wso2.carbon.ndatasource.core,
|
org.wso2.carbon.ndatasource.core,
|
||||||
org.wso2.carbon,
|
org.wso2.carbon,
|
||||||
org.apache.commons.io,
|
org.apache.commons.io,
|
||||||
org.apache.commons.codec.binary;version="${commons-codec.wso2.osgi.version.range}"
|
org.apache.commons.codec.binary;version="${commons-codec.wso2.osgi.version.range}",
|
||||||
|
org.wso2.carbon.base
|
||||||
</Import-Package>
|
</Import-Package>
|
||||||
<Export-Package>
|
<Export-Package>
|
||||||
!org.wso2.carbon.device.application.mgt.core.internal.*,
|
!org.wso2.carbon.device.application.mgt.core.internal.*,
|
||||||
|
|||||||
@ -87,7 +87,8 @@ public class Extension {
|
|||||||
VisibilityTypeManager,
|
VisibilityTypeManager,
|
||||||
SubscriptionManager,
|
SubscriptionManager,
|
||||||
VisibilityManager,
|
VisibilityManager,
|
||||||
ApplicationStorageManager
|
ApplicationStorageManager,
|
||||||
|
PlatformStorageManager
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -19,8 +19,6 @@
|
|||||||
|
|
||||||
package org.wso2.carbon.device.application.mgt.core.impl;
|
package org.wso2.carbon.device.application.mgt.core.impl;
|
||||||
|
|
||||||
import org.apache.commons.codec.binary.Base64;
|
|
||||||
import org.apache.commons.io.IOUtils;
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
@ -30,6 +28,7 @@ import org.wso2.carbon.device.application.mgt.common.ImageArtifact;
|
|||||||
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.ApplicationStorageManagementException;
|
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationStorageManagementException;
|
||||||
import org.wso2.carbon.device.application.mgt.common.exception.DBConnectionException;
|
import org.wso2.carbon.device.application.mgt.common.exception.DBConnectionException;
|
||||||
|
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.services.ApplicationStorageManager;
|
import org.wso2.carbon.device.application.mgt.common.services.ApplicationStorageManager;
|
||||||
import org.wso2.carbon.device.application.mgt.core.dao.common.DAOFactory;
|
import org.wso2.carbon.device.application.mgt.core.dao.common.DAOFactory;
|
||||||
@ -37,18 +36,18 @@ import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManageme
|
|||||||
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.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.application.mgt.core.util.Constants;
|
||||||
|
import org.wso2.carbon.device.application.mgt.core.util.StorageManagementUtil;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.nio.file.Files;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.wso2.carbon.device.application.mgt.core.util.StorageManagementUtil.saveFile;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class contains the default concrete implementation of ApplicationStorage Management.
|
* This class contains the default concrete implementation of ApplicationStorage Management.
|
||||||
*/
|
*/
|
||||||
@ -70,7 +69,7 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uploadImageArtifacts(String applicationUUID, InputStream iconFileStream, InputStream bannerFileStream,
|
public void uploadImageArtifacts(String applicationUUID, InputStream iconFileStream, InputStream bannerFileStream,
|
||||||
List<InputStream> screenShotStreams) throws ApplicationStorageManagementException {
|
List<InputStream> screenShotStreams) throws ResourceManagementException {
|
||||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||||
Application application = validateApplication(applicationUUID);
|
Application application = validateApplication(applicationUUID);
|
||||||
String artifactDirectoryPath = storagePath + application.getId();
|
String artifactDirectoryPath = storagePath + application.getId();
|
||||||
@ -78,7 +77,7 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
|
|||||||
log.debug("Artifact Directory Path for saving the artifacts related with application " + applicationUUID
|
log.debug("Artifact Directory Path for saving the artifacts related with application " + applicationUUID
|
||||||
+ " is " + artifactDirectoryPath);
|
+ " is " + artifactDirectoryPath);
|
||||||
}
|
}
|
||||||
createArtifactDirectory(artifactDirectoryPath);
|
StorageManagementUtil.createArtifactDirectory(artifactDirectoryPath);
|
||||||
if (iconFileStream != null) {
|
if (iconFileStream != null) {
|
||||||
try {
|
try {
|
||||||
saveFile(iconFileStream, artifactDirectoryPath + File.separator + Constants.IMAGE_ARTIFACTS[0]);
|
saveFile(iconFileStream, artifactDirectoryPath + File.separator + Constants.IMAGE_ARTIFACTS[0]);
|
||||||
@ -155,15 +154,14 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void uploadReleaseArtifacts(String applicationUUID, String versionName, InputStream binaryFile)
|
public void uploadReleaseArtifacts(String applicationUUID, String versionName, InputStream binaryFile)
|
||||||
throws ApplicationStorageManagementException {
|
throws ResourceManagementException {
|
||||||
Application application = validateApplication(applicationUUID);
|
Application application = validateApplication(applicationUUID);
|
||||||
String artifactDirectoryPath = storagePath + application.getId();
|
String artifactDirectoryPath = storagePath + application.getId();
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled())
|
||||||
log.debug("Artifact Directory Path for saving the application release related artifacts related with "
|
log.debug("Artifact Directory Path for saving the application release related artifacts related with "
|
||||||
+ "application " + applicationUUID + " is " + artifactDirectoryPath);
|
+ "application " + applicationUUID + " is " + artifactDirectoryPath);
|
||||||
}
|
|
||||||
|
|
||||||
createArtifactDirectory(artifactDirectoryPath);
|
StorageManagementUtil.createArtifactDirectory(artifactDirectoryPath);
|
||||||
if (binaryFile != null) {
|
if (binaryFile != null) {
|
||||||
try {
|
try {
|
||||||
saveFile(binaryFile, artifactDirectoryPath + File.separator + versionName);
|
saveFile(binaryFile, artifactDirectoryPath + File.separator + versionName);
|
||||||
@ -207,7 +205,7 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
|
|||||||
File artifactDirectory = new File(artifactDirectoryPath);
|
File artifactDirectory = new File(artifactDirectoryPath);
|
||||||
|
|
||||||
if (artifactDirectory.exists()) {
|
if (artifactDirectory.exists()) {
|
||||||
deleteDir(artifactDirectory);
|
StorageManagementUtil.deleteDir(artifactDirectory);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -219,14 +217,14 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
|
|||||||
File artifact = new File(artifactPath);
|
File artifact = new File(artifactPath);
|
||||||
|
|
||||||
if (artifact.exists()) {
|
if (artifact.exists()) {
|
||||||
deleteDir(artifact);
|
StorageManagementUtil.deleteDir(artifact);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteAllApplicationReleaseArtifacts(String applicationUUID) throws
|
public void deleteAllApplicationReleaseArtifacts(String applicationUUID) throws
|
||||||
ApplicationStorageManagementException {
|
ApplicationStorageManagementException {
|
||||||
Application application = validateApplication(applicationUUID);
|
validateApplication(applicationUUID);
|
||||||
try {
|
try {
|
||||||
List<ApplicationRelease> applicationReleases = DataHolder.getInstance().getReleaseManager()
|
List<ApplicationRelease> applicationReleases = DataHolder.getInstance().getReleaseManager()
|
||||||
.getReleases(applicationUUID);
|
.getReleases(applicationUUID);
|
||||||
@ -256,12 +254,7 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
|
|||||||
"Image artifact " + name + " does not exist for the " + "application with UUID " + applicationUUID);
|
"Image artifact " + name + " does not exist for the " + "application with UUID " + applicationUUID);
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
ImageArtifact imageArtifact = new ImageArtifact();
|
return StorageManagementUtil.createImageArtifact(imageFile, imageArtifactPath);
|
||||||
imageArtifact.setName(imageFile.getName());
|
|
||||||
imageArtifact.setType(Files.probeContentType(imageFile.toPath()));
|
|
||||||
byte[] imageBytes = IOUtils.toByteArray(new FileInputStream(imageArtifactPath));
|
|
||||||
imageArtifact.setEncodedImage(Base64.encodeBase64URLSafeString(imageBytes));
|
|
||||||
return imageArtifact;
|
|
||||||
} catch (FileNotFoundException e) {
|
} catch (FileNotFoundException e) {
|
||||||
throw new ApplicationStorageManagementException(
|
throw new ApplicationStorageManagementException(
|
||||||
"File not found exception while trying to get the image artifact " + name + " for the "
|
"File not found exception while trying to get the image artifact " + name + " for the "
|
||||||
@ -273,61 +266,6 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* To save a file in a given location.
|
|
||||||
*
|
|
||||||
* @param inputStream Stream of the file.
|
|
||||||
* @param path Path the file need to be saved in.
|
|
||||||
*/
|
|
||||||
private void saveFile(InputStream inputStream, String path) throws IOException {
|
|
||||||
OutputStream outStream = null;
|
|
||||||
try {
|
|
||||||
byte[] buffer = new byte[inputStream.available()];
|
|
||||||
inputStream.read(buffer);
|
|
||||||
outStream = new FileOutputStream(new File(path));
|
|
||||||
outStream.write(buffer);
|
|
||||||
} finally {
|
|
||||||
if (inputStream != null) {
|
|
||||||
inputStream.close();
|
|
||||||
}
|
|
||||||
if (outStream != null) {
|
|
||||||
outStream.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method is responsible for creating artifact parent directories in the given path.
|
|
||||||
*
|
|
||||||
* @param artifactDirectoryPath Path for the artifact directory.
|
|
||||||
* @throws ApplicationStorageManagementException Application Storage Management Exception.
|
|
||||||
*/
|
|
||||||
private void createArtifactDirectory(String artifactDirectoryPath) throws ApplicationStorageManagementException {
|
|
||||||
File artifactDirectory = new File(artifactDirectoryPath);
|
|
||||||
|
|
||||||
if (!artifactDirectory.exists()) {
|
|
||||||
if (!artifactDirectory.mkdirs()) {
|
|
||||||
throw new ApplicationStorageManagementException(
|
|
||||||
"Cannot create directories in the path to save the application related artifacts");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* To delete a directory recursively
|
|
||||||
*
|
|
||||||
* @param artifactDirectory Artifact Directory that need to be deleted.
|
|
||||||
*/
|
|
||||||
private void deleteDir(File artifactDirectory) {
|
|
||||||
File[] contents = artifactDirectory.listFiles();
|
|
||||||
if (contents != null) {
|
|
||||||
for (File file : contents) {
|
|
||||||
deleteDir(file);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
artifactDirectory.delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* To validate the image artifact names.
|
* To validate the image artifact names.
|
||||||
* @param name Name of the image artifact.
|
* @param name Name of the image artifact.
|
||||||
@ -354,7 +292,7 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
|
|||||||
* could not be found.
|
* could not be found.
|
||||||
*/
|
*/
|
||||||
private Application validateApplication(String uuid) throws ApplicationStorageManagementException {
|
private Application validateApplication(String uuid) throws ApplicationStorageManagementException {
|
||||||
Application application = null;
|
Application application;
|
||||||
try {
|
try {
|
||||||
application = DataHolder.getInstance().getApplicationManager().getApplication(uuid);
|
application = DataHolder.getInstance().getApplicationManager().getApplication(uuid);
|
||||||
} catch (ApplicationManagementException e) {
|
} catch (ApplicationManagementException e) {
|
||||||
|
|||||||
@ -0,0 +1,166 @@
|
|||||||
|
/*
|
||||||
|
* 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.core.impl;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.wso2.carbon.base.MultitenantConstants;
|
||||||
|
import org.wso2.carbon.context.CarbonContext;
|
||||||
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.ImageArtifact;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.Platform;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationStorageManagementException;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.exception.PlatformManagementException;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.exception.PlatformStorageManagementException;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.exception.ResourceManagementException;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.services.PlatformManager;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.services.PlatformStorageManager;
|
||||||
|
import org.wso2.carbon.device.application.mgt.core.internal.DataHolder;
|
||||||
|
import org.wso2.carbon.device.application.mgt.core.util.Constants;
|
||||||
|
import org.wso2.carbon.device.application.mgt.core.util.StorageManagementUtil;
|
||||||
|
import org.wso2.carbon.utils.multitenancy.MultitenantUtils;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
import static org.wso2.carbon.device.application.mgt.core.util.StorageManagementUtil.saveFile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is the concrete implementation of {@link PlatformStorageManager}
|
||||||
|
*/
|
||||||
|
public class PlatformStorageManagerImpl implements PlatformStorageManager {
|
||||||
|
private static final Log log = LogFactory.getLog(ApplicationStorageManagerImpl.class);
|
||||||
|
private String storagePath;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This creates a new instance of PlatformStorageManager.
|
||||||
|
* @param storagePath Storage path to store the artifacts related with platform.
|
||||||
|
*/
|
||||||
|
public PlatformStorageManagerImpl(String storagePath) {
|
||||||
|
this.storagePath = storagePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uploadIcon(String platformIdentifier, InputStream iconFileStream) throws ResourceManagementException {
|
||||||
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||||
|
Platform platform = validatePlatform(tenantId, platformIdentifier);
|
||||||
|
|
||||||
|
if (platform.isFileBased()) {
|
||||||
|
throw new ApplicationStorageManagementException("Icons for the file based platforms need to be added "
|
||||||
|
+ "directly to the deployment location inside icon folder");
|
||||||
|
}
|
||||||
|
if (platform.isShared() && tenantId != MultitenantConstants.SUPER_TENANT_ID) {
|
||||||
|
throw new PlatformStorageManagementException("Platform " + platformIdentifier + " is a share platform from "
|
||||||
|
+ "super-tenant. Only the super-tenant users can modify it");
|
||||||
|
}
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Artifact Directory Path for saving the artifacts related with application "
|
||||||
|
+ platformIdentifier + " is " + storagePath);
|
||||||
|
}
|
||||||
|
StorageManagementUtil.createArtifactDirectory(storagePath);
|
||||||
|
if (iconFileStream != null) {
|
||||||
|
try {
|
||||||
|
saveFile(iconFileStream, storagePath + File.separator + platform.getId());
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new ApplicationStorageManagementException(
|
||||||
|
"IO Exception while saving the icon file in the server for the platform "
|
||||||
|
+ platformIdentifier, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ImageArtifact getIcon(String platformIdentifier) throws PlatformStorageManagementException {
|
||||||
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||||
|
Platform platform = validatePlatform(tenantId, platformIdentifier);
|
||||||
|
String imageArtifactPath = storagePath + platform.getId();
|
||||||
|
File imageFile = null;
|
||||||
|
|
||||||
|
if (platform.isFileBased()) {
|
||||||
|
imageFile = new File(MultitenantUtils.getAxis2RepositoryPath(CarbonContext.getThreadLocalCarbonContext().
|
||||||
|
getTenantId()) + Constants.PLATFORMS_DEPLOYMENT_DIR_NAME + File.separator
|
||||||
|
+ Constants.IMAGE_ARTIFACTS[0] + File.separator + platformIdentifier);
|
||||||
|
} else {
|
||||||
|
imageFile = new File(imageArtifactPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!imageFile.exists()) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
return StorageManagementUtil.createImageArtifact(imageFile, imageArtifactPath);
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
throw new PlatformStorageManagementException(
|
||||||
|
"File not found exception while trying to get the icon for the " + "platform "
|
||||||
|
+ platformIdentifier, e);
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new PlatformStorageManagementException(
|
||||||
|
"IO Exception while trying to detect the file type of the platform icon of "
|
||||||
|
+ platformIdentifier, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteIcon(String platformIdentifier) throws PlatformStorageManagementException {
|
||||||
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||||
|
Platform platform = validatePlatform(tenantId, platformIdentifier);
|
||||||
|
String imageArtifactPath = storagePath + platform.getId();
|
||||||
|
|
||||||
|
if (platform.isShared() && tenantId != MultitenantConstants.SUPER_TENANT_ID) {
|
||||||
|
throw new PlatformStorageManagementException("Platform " + platformIdentifier + " is a share platform from "
|
||||||
|
+ "super-tenant. Only the super-tenant users can modify it");
|
||||||
|
}
|
||||||
|
if (platform.isFileBased()) {
|
||||||
|
throw new PlatformStorageManagementException("Platform " + platformIdentifier + " is a file based one. "
|
||||||
|
+ "Please remove the relevant icon file directly from file system.");
|
||||||
|
}
|
||||||
|
|
||||||
|
File imageFile = new File(imageArtifactPath);
|
||||||
|
if (imageFile.exists()) {
|
||||||
|
imageFile.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To validate the platform, whether the given identifier has a valid platform.
|
||||||
|
*
|
||||||
|
* @param tenantId ID of the tenant
|
||||||
|
* @param identifier Identifier of the platform
|
||||||
|
* @return Platform related with the particular identifier.
|
||||||
|
*/
|
||||||
|
private Platform validatePlatform(int tenantId, String identifier) throws PlatformStorageManagementException {
|
||||||
|
Platform platform;
|
||||||
|
try {
|
||||||
|
PlatformManager platformManager = DataHolder.getInstance().getPlatformManager();
|
||||||
|
platform = platformManager.getPlatform(tenantId, identifier);
|
||||||
|
} catch (PlatformManagementException e) {
|
||||||
|
throw new PlatformStorageManagementException("Platform Management Exception while getting the platform "
|
||||||
|
+ "related with the identifier " + identifier);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (platform == null) {
|
||||||
|
throw new PlatformStorageManagementException("Platform does not exist with the identifier " + identifier);
|
||||||
|
}
|
||||||
|
return platform;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -19,6 +19,7 @@ package org.wso2.carbon.device.application.mgt.core.impl;
|
|||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
import org.wso2.carbon.device.application.mgt.common.DeviceIdentifier;
|
import org.wso2.carbon.device.application.mgt.common.DeviceIdentifier;
|
||||||
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.services.SubscriptionManager;
|
import org.wso2.carbon.device.application.mgt.common.services.SubscriptionManager;
|
||||||
@ -40,6 +41,7 @@ import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the default implementation for the Subscription Manager.
|
* This is the default implementation for the Subscription Manager.
|
||||||
@ -61,9 +63,13 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|||||||
org.wso2.carbon.device.mgt.common.DeviceIdentifier deviceIdentifier = new org.wso2.carbon.device.mgt
|
org.wso2.carbon.device.mgt.common.DeviceIdentifier deviceIdentifier = new org.wso2.carbon.device.mgt
|
||||||
.common.DeviceIdentifier(device.getId(), device.getType());
|
.common.DeviceIdentifier(device.getId(), device.getType());
|
||||||
try {
|
try {
|
||||||
DeviceManagementProviderService dmpService = DataHolder.getInstance().getDeviceManagementService();
|
DeviceManagementDAOFactory.openConnection();
|
||||||
if (!dmpService.isEnrolled(deviceIdentifier)) {
|
// todo: replace this with boolean:deviceExsits(deviceId) operation
|
||||||
log.error("Device with ID: " + device.getId() + " is not enrolled to install the application.");
|
Map<Integer, Device> currentDevices = DeviceManagementDAOFactory.getDeviceDAO().getDevice(deviceIdentifier);
|
||||||
|
DeviceManagementDAOFactory.closeConnection();
|
||||||
|
|
||||||
|
if (currentDevices.isEmpty()) {
|
||||||
|
log.error("Device with ID: " + device.getId() + " not found to install the application.");
|
||||||
} else {
|
} else {
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("Installing application to : " + device.getId());
|
log.debug("Installing application to : " + device.getId());
|
||||||
@ -90,8 +96,10 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|||||||
// DAOFactory.getSubscriptionDAO().addDeviceApplicationMapping(device.getId(), applicationUUID, false);
|
// DAOFactory.getSubscriptionDAO().addDeviceApplicationMapping(device.getId(), applicationUUID, false);
|
||||||
failedDeviceList.remove(device);
|
failedDeviceList.remove(device);
|
||||||
}
|
}
|
||||||
} catch (DeviceManagementException | OperationManagementException | InvalidDeviceException e) {
|
} catch (DeviceManagementException | DeviceManagementDAOException | OperationManagementException | InvalidDeviceException | SQLException e) {
|
||||||
throw new ApplicationManagementException("Failed to install application " + applicationUUID + " on device " + deviceIdentifier, e);
|
throw new ApplicationManagementException("Failed to install application " + applicationUUID + " on device " + deviceIdentifier, e);
|
||||||
|
} finally {
|
||||||
|
DeviceManagementDAOFactory.closeConnection();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return failedDeviceList;
|
return failedDeviceList;
|
||||||
@ -102,14 +110,15 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|||||||
throws ApplicationManagementException {
|
throws ApplicationManagementException {
|
||||||
log.info("Install application: " + applicationUUID + " to: " + userList.size() + " users.");
|
log.info("Install application: " + applicationUUID + " to: " + userList.size() + " users.");
|
||||||
List<DeviceIdentifier> deviceList = new ArrayList<>();
|
List<DeviceIdentifier> deviceList = new ArrayList<>();
|
||||||
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||||
for (String user : userList) {
|
for (String user : userList) {
|
||||||
try {
|
try {
|
||||||
List<Device> devicesOfUser = DataHolder.getInstance().getDeviceManagementService().getDevicesOfUser(user);
|
List<Device> devicesOfUser = DeviceManagementDAOFactory.getDeviceDAO().getDevicesOfUser(user, tenantId);
|
||||||
for (Device device : devicesOfUser) {
|
for (Device device : devicesOfUser) {
|
||||||
deviceList.add(new DeviceIdentifier(device
|
deviceList.add(new DeviceIdentifier(device
|
||||||
.getDeviceIdentifier(), device.getType()));
|
.getDeviceIdentifier(), device.getType()));
|
||||||
}
|
}
|
||||||
} catch (DeviceManagementException e) {
|
} catch (DeviceManagementDAOException e) {
|
||||||
log.error("Error when extracting the device list from user[" + user + "].", e);
|
log.error("Error when extracting the device list from user[" + user + "].", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,15 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.wso2.carbon.device.application.mgt.core.internal;
|
package org.wso2.carbon.device.application.mgt.core.internal;
|
||||||
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationManager;
|
import org.wso2.carbon.device.application.mgt.common.services.*;
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationReleaseManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationStorageManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.CategoryManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.CommentsManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.LifecycleStateManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.PlatformManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.SubscriptionManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.VisibilityManager;
|
|
||||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||||
import org.wso2.carbon.user.core.service.RealmService;
|
import org.wso2.carbon.user.core.service.RealmService;
|
||||||
|
|
||||||
@ -57,6 +49,8 @@ public class DataHolder {
|
|||||||
|
|
||||||
private ApplicationStorageManager applicationStorageManager;
|
private ApplicationStorageManager applicationStorageManager;
|
||||||
|
|
||||||
|
private PlatformStorageManager platformStorageManager;
|
||||||
|
|
||||||
private static final DataHolder applicationMgtDataHolder = new DataHolder();
|
private static final DataHolder applicationMgtDataHolder = new DataHolder();
|
||||||
|
|
||||||
private DataHolder() {
|
private DataHolder() {
|
||||||
@ -154,4 +148,8 @@ public class DataHolder {
|
|||||||
public ApplicationStorageManager getApplicationStorageManager() {
|
public ApplicationStorageManager getApplicationStorageManager() {
|
||||||
return applicationStorageManager;
|
return applicationStorageManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setPlatformStorageManager(PlatformStorageManager platformStorageManager) {
|
||||||
|
this.platformStorageManager = platformStorageManager;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,15 +23,7 @@ import org.apache.commons.logging.LogFactory;
|
|||||||
import org.osgi.framework.BundleContext;
|
import org.osgi.framework.BundleContext;
|
||||||
import org.osgi.service.component.ComponentContext;
|
import org.osgi.service.component.ComponentContext;
|
||||||
import org.wso2.carbon.device.application.mgt.common.exception.InvalidConfigurationException;
|
import org.wso2.carbon.device.application.mgt.common.exception.InvalidConfigurationException;
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationManager;
|
import org.wso2.carbon.device.application.mgt.common.services.*;
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationReleaseManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationStorageManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.CategoryManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.CommentsManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.LifecycleStateManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.PlatformManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.SubscriptionManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.VisibilityManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.core.config.ConfigurationManager;
|
import org.wso2.carbon.device.application.mgt.core.config.ConfigurationManager;
|
||||||
import org.wso2.carbon.device.application.mgt.core.dao.common.DAOFactory;
|
import org.wso2.carbon.device.application.mgt.core.dao.common.DAOFactory;
|
||||||
import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManagementDAOException;
|
import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManagementDAOException;
|
||||||
@ -115,6 +107,11 @@ public class ServiceComponent {
|
|||||||
DataHolder.getInstance().setApplicationStorageManager(applicationStorageManager);
|
DataHolder.getInstance().setApplicationStorageManager(applicationStorageManager);
|
||||||
bundleContext.registerService(ApplicationStorageManager.class.getName(), applicationStorageManager, null);
|
bundleContext.registerService(ApplicationStorageManager.class.getName(), applicationStorageManager, null);
|
||||||
|
|
||||||
|
PlatformStorageManager platformStorageManager = ApplicationManagementUtil
|
||||||
|
.getPlatformStorageManagerInstance();
|
||||||
|
DataHolder.getInstance().setPlatformStorageManager(platformStorageManager);
|
||||||
|
bundleContext.registerService(PlatformStorageManager.class.getName(), platformStorageManager, null);
|
||||||
|
|
||||||
bundleContext.registerService(Axis2ConfigurationContextObserver.class.getName(),
|
bundleContext.registerService(Axis2ConfigurationContextObserver.class.getName(),
|
||||||
new PlatformManagementAxis2ConfigurationObserverImpl(), null);
|
new PlatformManagementAxis2ConfigurationObserverImpl(), null);
|
||||||
|
|
||||||
|
|||||||
@ -21,15 +21,7 @@ package org.wso2.carbon.device.application.mgt.core.util;
|
|||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.wso2.carbon.device.application.mgt.common.exception.InvalidConfigurationException;
|
import org.wso2.carbon.device.application.mgt.common.exception.InvalidConfigurationException;
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationManager;
|
import org.wso2.carbon.device.application.mgt.common.services.*;
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationReleaseManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.ApplicationStorageManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.CategoryManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.CommentsManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.LifecycleStateManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.PlatformManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.SubscriptionManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.VisibilityManager;
|
|
||||||
import org.wso2.carbon.device.application.mgt.core.config.ConfigurationManager;
|
import org.wso2.carbon.device.application.mgt.core.config.ConfigurationManager;
|
||||||
import org.wso2.carbon.device.application.mgt.core.config.Extension;
|
import org.wso2.carbon.device.application.mgt.core.config.Extension;
|
||||||
|
|
||||||
@ -99,6 +91,14 @@ public class ApplicationManagementUtil {
|
|||||||
return getInstance(extension, ApplicationStorageManager.class);
|
return getInstance(extension, ApplicationStorageManager.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static PlatformStorageManager getPlatformStorageManagerInstance() throws
|
||||||
|
InvalidConfigurationException {
|
||||||
|
ConfigurationManager configurationManager = ConfigurationManager.getInstance();
|
||||||
|
Extension extension = configurationManager.getExtension(Extension.Name.PlatformStorageManager);
|
||||||
|
return getInstance(extension, PlatformStorageManager.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private static <T> T getInstance(Extension extension, Class<T> cls) throws InvalidConfigurationException {
|
private static <T> T getInstance(Extension extension, Class<T> cls) throws InvalidConfigurationException {
|
||||||
try {
|
try {
|
||||||
Class theClass = Class.forName(extension.getClassName());
|
Class theClass = Class.forName(extension.getClassName());
|
||||||
|
|||||||
@ -0,0 +1,86 @@
|
|||||||
|
package org.wso2.carbon.device.application.mgt.core.util;
|
||||||
|
|
||||||
|
import org.apache.commons.codec.binary.Base64;
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.ImageArtifact;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationStorageManagementException;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.exception.ResourceManagementException;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
|
||||||
|
public class StorageManagementUtil {
|
||||||
|
/**
|
||||||
|
* This method is responsible for creating artifact parent directories in the given path.
|
||||||
|
*
|
||||||
|
* @param artifactDirectoryPath Path for the artifact directory.
|
||||||
|
* @throws ApplicationStorageManagementException Application Storage Management Exception.
|
||||||
|
*/
|
||||||
|
public static void createArtifactDirectory(String artifactDirectoryPath) throws ResourceManagementException {
|
||||||
|
File artifactDirectory = new File(artifactDirectoryPath);
|
||||||
|
|
||||||
|
if (!artifactDirectory.exists()) {
|
||||||
|
if (!artifactDirectory.mkdirs()) {
|
||||||
|
throw new ResourceManagementException(
|
||||||
|
"Cannot create directories in the path to save the application related artifacts");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To delete a directory recursively
|
||||||
|
*
|
||||||
|
* @param artifactDirectory Artifact Directory that need to be deleted.
|
||||||
|
*/
|
||||||
|
public static void deleteDir(File artifactDirectory) {
|
||||||
|
File[] contents = artifactDirectory.listFiles();
|
||||||
|
if (contents != null) {
|
||||||
|
for (File file : contents) {
|
||||||
|
deleteDir(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
artifactDirectory.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To save a file in a given location.
|
||||||
|
*
|
||||||
|
* @param inputStream Stream of the file.
|
||||||
|
* @param path Path the file need to be saved in.
|
||||||
|
*/
|
||||||
|
public static void saveFile(InputStream inputStream, String path) throws IOException {
|
||||||
|
OutputStream outStream = null;
|
||||||
|
try {
|
||||||
|
byte[] buffer = new byte[inputStream.available()];
|
||||||
|
inputStream.read(buffer);
|
||||||
|
outStream = new FileOutputStream(new File(path));
|
||||||
|
outStream.write(buffer);
|
||||||
|
} finally {
|
||||||
|
if (inputStream != null) {
|
||||||
|
inputStream.close();
|
||||||
|
}
|
||||||
|
if (outStream != null) {
|
||||||
|
outStream.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To create {@link ImageArtifact}.
|
||||||
|
*
|
||||||
|
* @param imageFile Image File.
|
||||||
|
* @param imageArtifactPath Path of the image artifact file.
|
||||||
|
* @return Image Artifact.
|
||||||
|
* @throws IOException IO Exception.
|
||||||
|
*/
|
||||||
|
public static ImageArtifact createImageArtifact(File imageFile, String imageArtifactPath) throws IOException {
|
||||||
|
ImageArtifact imageArtifact = new ImageArtifact();
|
||||||
|
imageArtifact.setName(imageFile.getName());
|
||||||
|
imageArtifact.setType(Files.probeContentType(imageFile.toPath()));
|
||||||
|
byte[] imageBytes = IOUtils.toByteArray(new FileInputStream(imageArtifactPath));
|
||||||
|
imageArtifact.setEncodedImage(Base64.encodeBase64URLSafeString(imageBytes));
|
||||||
|
return imageArtifact;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -46,9 +46,6 @@
|
|||||||
<Extension name="VisibilityManager">
|
<Extension name="VisibilityManager">
|
||||||
<ClassName>org.wso2.carbon.device.application.mgt.core.impl.VisibilityManagerImpl</ClassName>
|
<ClassName>org.wso2.carbon.device.application.mgt.core.impl.VisibilityManagerImpl</ClassName>
|
||||||
</Extension>
|
</Extension>
|
||||||
<Extension name="VisibilityTypeManager">
|
|
||||||
<ClassName>org.wso2.carbon.device.application.mgt.core.impl.VisibilityTypeManagerImpl</ClassName>
|
|
||||||
</Extension>
|
|
||||||
<Extension name="ApplicationStorageManager">
|
<Extension name="ApplicationStorageManager">
|
||||||
<ClassName>org.wso2.carbon.device.application.mgt.core.impl.ApplicationStorageManagerImpl</ClassName>
|
<ClassName>org.wso2.carbon.device.application.mgt.core.impl.ApplicationStorageManagerImpl</ClassName>
|
||||||
<Parameters>
|
<Parameters>
|
||||||
@ -56,5 +53,11 @@
|
|||||||
<Parameter name="MaxScreenShotCount">6</Parameter>
|
<Parameter name="MaxScreenShotCount">6</Parameter>
|
||||||
</Parameters>
|
</Parameters>
|
||||||
</Extension>
|
</Extension>
|
||||||
|
<Extension name="PlatformStorageManager">
|
||||||
|
<ClassName>org.wso2.carbon.device.application.mgt.core.impl.PlatformStorageManagerImpl</ClassName>
|
||||||
|
<Parameters>
|
||||||
|
<Parameter name="StoragePath">repository/resources/platforms</Parameter>
|
||||||
|
</Parameters>
|
||||||
|
</Extension>
|
||||||
</Extensions>
|
</Extensions>
|
||||||
</ApplicationManagementConfiguration>
|
</ApplicationManagementConfiguration>
|
||||||
Loading…
Reference in New Issue
Block a user