mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge pull request #1023 from Megala21/migrate_application
Adding support for platform icon addition
This commit is contained in:
commit
c0e2c3c2b9
@ -22,14 +22,13 @@ 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;
|
||||||
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.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;
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.LifecycleStateManager;
|
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.PlatformManager;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.services.PlatformStorageManager;
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.SubscriptionManager;
|
import org.wso2.carbon.device.application.mgt.common.services.SubscriptionManager;
|
||||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
|
||||||
|
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
|
|
||||||
@ -47,6 +46,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 +147,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,11 +211,8 @@ 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 = false) Attachment iconFile
|
||||||
value = "The payload of the platform",
|
|
||||||
required = true)
|
|
||||||
Platform platform
|
|
||||||
);
|
);
|
||||||
|
|
||||||
@PUT
|
@PUT
|
||||||
@ -343,7 +342,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 +373,46 @@ 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
|
||||||
|
);
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Path("/{identifier}/icon")
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
@Consumes(MediaType.MULTIPART_FORM_DATA)
|
||||||
|
@ApiOperation(
|
||||||
|
consumes = MediaType.MULTIPART_FORM_DATA,
|
||||||
|
produces = MediaType.APPLICATION_JSON,
|
||||||
|
httpMethod = "POST",
|
||||||
|
value = "Update Platform icon",
|
||||||
|
notes = "This will update the platform icon",
|
||||||
|
tags = "Platform Management",
|
||||||
|
extensions = {
|
||||||
|
@Extension(properties = {
|
||||||
|
@ExtensionProperty(name = SCOPE, value = "perm:platform:update")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@ApiResponses(
|
||||||
|
value = {
|
||||||
|
@ApiResponse(
|
||||||
|
code = 200,
|
||||||
|
message = "OK. \n Successfully updated the platform icon"),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 400,
|
||||||
|
message = "Bad Request. \n Invalid request parameters passed."),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 500,
|
||||||
|
message = "Internal Server Error. \n Error occurred while updating the platform icon.",
|
||||||
|
response = ErrorResponse.class)
|
||||||
|
})
|
||||||
|
Response updatePlatformIcon(
|
||||||
|
@ApiParam(
|
||||||
|
name = "identifier",
|
||||||
|
required = true)
|
||||||
|
@PathParam("identifier")
|
||||||
|
@Size(max = 45)
|
||||||
|
String identifier,
|
||||||
|
@Multipart(value = "icon") Attachment iconFile
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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,21 @@ 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.common.services.PlatformStorageManager;
|
||||||
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;
|
||||||
@ -54,6 +62,7 @@ public class PlatformManagementAPIImpl implements PlatformManagementAPI {
|
|||||||
@Override
|
@Override
|
||||||
public Response getPlatforms(@QueryParam("status") String status, @QueryParam("tag") String tag) {
|
public Response getPlatforms(@QueryParam("status") String status, @QueryParam("tag") String tag) {
|
||||||
int tenantID = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
int tenantID = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||||
|
PlatformStorageManager platformStorageManager = APIUtil.getPlatformStorageManager();
|
||||||
|
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("API request received for getting the platforms with the status " + status);
|
log.debug("API request received for getting the platforms with the status " + status);
|
||||||
@ -85,25 +94,25 @@ public class PlatformManagementAPIImpl implements PlatformManagementAPI {
|
|||||||
} else {
|
} else {
|
||||||
results = platforms;
|
results = platforms;
|
||||||
}
|
}
|
||||||
|
if (results != null) {
|
||||||
if (tag != null) {
|
for (Platform platform : results) {
|
||||||
if (results != null) {
|
if (tag == null || tag.isEmpty() || (platform.getTags() != null && platform.getTags()
|
||||||
for (Platform platform : results) {
|
.contains(tag))) {
|
||||||
if (platform.getTags() != null && platform.getTags().contains(tag)) {
|
platform.setIcon(platformStorageManager.getIcon(platform.getIdentifier()));
|
||||||
filteredPlatforms.add(platform);
|
filteredPlatforms.add(platform);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
if (log.isDebugEnabled()) {
|
||||||
filteredPlatforms = results;
|
log.debug("Number of platforms with the status " + status + " : " + results.size());
|
||||||
}
|
}
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("Number of platforms with the status " + status + " : " + results.size());
|
|
||||||
}
|
}
|
||||||
return Response.status(Response.Status.OK).entity(filteredPlatforms).build();
|
return Response.status(Response.Status.OK).entity(filteredPlatforms).build();
|
||||||
} catch (PlatformManagementException e) {
|
} catch (PlatformManagementException e) {
|
||||||
log.error("Error while getting the platforms for tenant - " + tenantID, e);
|
log.error("Error while getting the platforms for 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("Error while getting platform icons for the tenant : " + tenantID, e);
|
||||||
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,6 +127,10 @@ 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);
|
||||||
|
if (icon != null) {
|
||||||
|
platform.setIcon(icon);
|
||||||
|
}
|
||||||
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 +140,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 get 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,6 +174,14 @@ 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,11 +205,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(
|
||||||
+ id + " for the tenant : " + tenantId, e);
|
"Platform Management Exception while trying to un-register the platform with the identifier : " + id
|
||||||
|
+ " for the tenant : " + tenantId, e);
|
||||||
|
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);
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -205,9 +241,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);
|
||||||
@ -221,4 +257,28 @@ public class PlatformManagementAPIImpl implements PlatformManagementAPI {
|
|||||||
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Path("{identifier}/icon")
|
||||||
|
@Override
|
||||||
|
public Response updatePlatformIcon(@PathParam("identifier") String identifier, @Multipart("icon") Attachment
|
||||||
|
icon) {
|
||||||
|
try {
|
||||||
|
if (icon != null) {
|
||||||
|
InputStream iconFileStream = icon.getDataHandler().getInputStream();
|
||||||
|
APIUtil.getPlatformStorageManager().uploadIcon(identifier, iconFileStream);
|
||||||
|
return Response.status(Response.Status.OK)
|
||||||
|
.entity("Icon file is successfully updated for the platform :" + identifier).build();
|
||||||
|
} else {
|
||||||
|
return Response.status(Response.Status.BAD_REQUEST).entity("Icon file is not provided to update")
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
} catch (ResourceManagementException e) {
|
||||||
|
log.error("Resource Management exception while trying to update the icon for the platform " + identifier);
|
||||||
|
return APIUtil.getResponse(e, Response.Status.INTERNAL_SERVER_ERROR);
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error("IO exception while trying to update the icon for the platform " + identifier);
|
||||||
|
return APIUtil.getResponse(e, 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,167 @@
|
|||||||
|
/*
|
||||||
|
* 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 shared 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 shared 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -25,6 +25,7 @@ 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.CommentsManager;
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.LifecycleStateManager;
|
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.PlatformManager;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.services.PlatformStorageManager;
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.SubscriptionManager;
|
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.common.services.VisibilityManager;
|
||||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||||
@ -57,6 +58,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 +157,12 @@ public class DataHolder {
|
|||||||
public ApplicationStorageManager getApplicationStorageManager() {
|
public ApplicationStorageManager getApplicationStorageManager() {
|
||||||
return applicationStorageManager;
|
return applicationStorageManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setPlatformStorageManager(PlatformStorageManager platformStorageManager) {
|
||||||
|
this.platformStorageManager = platformStorageManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PlatformStorageManager getPlatformStorageManager() {
|
||||||
|
return platformStorageManager;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,13 +30,13 @@ 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.CommentsManager;
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.LifecycleStateManager;
|
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.PlatformManager;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.services.PlatformStorageManager;
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.SubscriptionManager;
|
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.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;
|
||||||
import org.wso2.carbon.device.application.mgt.core.util.ApplicationManagementUtil;
|
import org.wso2.carbon.device.application.mgt.core.util.ApplicationManagementUtil;
|
||||||
import org.wso2.carbon.device.application.mgt.core.util.Constants;
|
|
||||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||||
import org.wso2.carbon.ndatasource.core.DataSourceService;
|
import org.wso2.carbon.ndatasource.core.DataSourceService;
|
||||||
import org.wso2.carbon.user.core.service.RealmService;
|
import org.wso2.carbon.user.core.service.RealmService;
|
||||||
@ -115,6 +115,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);
|
||||||
|
|
||||||
|
|||||||
@ -28,6 +28,7 @@ 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.CommentsManager;
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.LifecycleStateManager;
|
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.PlatformManager;
|
||||||
|
import org.wso2.carbon.device.application.mgt.common.services.PlatformStorageManager;
|
||||||
import org.wso2.carbon.device.application.mgt.common.services.SubscriptionManager;
|
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.common.services.VisibilityManager;
|
||||||
import org.wso2.carbon.device.application.mgt.core.config.ConfigurationManager;
|
import org.wso2.carbon.device.application.mgt.core.config.ConfigurationManager;
|
||||||
@ -99,6 +100,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,109 @@
|
|||||||
|
/*
|
||||||
|
* 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.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.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
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