Merge pull request #970 from Megala21/appm_new

Changing the image to return base64 format of the image
feature/appm-store/pbac
sinthuja 7 years ago committed by GitHub
commit f56b77e42c

@ -651,7 +651,7 @@ public interface ApplicationManagementAPI {
@GET @GET
@Path("/image-artifacts/{uuid}") @Path("/image-artifacts/{uuid}")
@Produces(MediaType.APPLICATION_OCTET_STREAM) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
@ApiOperation( @ApiOperation(
consumes = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,

@ -29,6 +29,7 @@ import org.wso2.carbon.device.application.mgt.common.Application;
import org.wso2.carbon.device.application.mgt.common.ApplicationList; import org.wso2.carbon.device.application.mgt.common.ApplicationList;
import org.wso2.carbon.device.application.mgt.common.ApplicationRelease; import org.wso2.carbon.device.application.mgt.common.ApplicationRelease;
import org.wso2.carbon.device.application.mgt.common.Filter; 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.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.services.ApplicationManager; import org.wso2.carbon.device.application.mgt.common.services.ApplicationManager;
@ -452,7 +453,7 @@ public class ApplicationManagementAPIImpl implements ApplicationManagementAPI {
@Override @Override
@GET @GET
@Path("/image-artifacts/{uuid}") @Path("/image-artifacts/{uuid}")
@Produces(MediaType.APPLICATION_OCTET_STREAM) @Produces(MediaType.APPLICATION_JSON)
public Response getApplicationImageArtifacts(@PathParam("uuid") String applicationUUID, public Response getApplicationImageArtifacts(@PathParam("uuid") String applicationUUID,
@QueryParam("name") String name, @QueryParam("count") int count) { @QueryParam("name") String name, @QueryParam("count") int count) {
if (name == null || name.isEmpty()) { if (name == null || name.isEmpty()) {
@ -461,10 +462,8 @@ public class ApplicationManagementAPIImpl implements ApplicationManagementAPI {
} }
ApplicationStorageManager applicationStorageManager = APIUtil.getApplicationStorageManager(); ApplicationStorageManager applicationStorageManager = APIUtil.getApplicationStorageManager();
try { try {
InputStream imageArtifact = applicationStorageManager.getImageArtifact(applicationUUID, name, count); ImageArtifact imageArtifact = applicationStorageManager.getImageArtifact(applicationUUID, name, count);
FileStreamingOutput fileStreamingOutput = new FileStreamingOutput(imageArtifact); Response.ResponseBuilder response = Response.status(Response.Status.OK).entity(imageArtifact);
Response.ResponseBuilder response = Response.status(Response.Status.OK).entity(fileStreamingOutput);
response.header("Content-Disposition", "attachment; filename=\"" + name + "\"");
return response.build(); return response.build();
} catch (ApplicationStorageManagementException e) { } catch (ApplicationStorageManagementException e) {
log.error("Application Storage Management Exception while getting the image artifact " + name + " of " log.error("Application Storage Management Exception while getting the image artifact " + name + " of "

@ -0,0 +1,54 @@
/*
* 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;
/**
* This represents a image artifact of a application. Icon, Screen-shot or Banner.
* It consists of a name, type and base64 encoded string format of the image.
*/
public class ImageArtifact {
private String name;
private String type;
private String encodedImage;
public String getType() {
return type;
}
public String getEncodedImage() {
return encodedImage;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setType(String type) {
this.type = type;
}
public void setEncodedImage(String encodedImage) {
this.encodedImage = encodedImage;
}
}

@ -19,6 +19,7 @@
package org.wso2.carbon.device.application.mgt.common.services; 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.ApplicationStorageManagementException; import org.wso2.carbon.device.application.mgt.common.exception.ApplicationStorageManagementException;
import java.io.InputStream; import java.io.InputStream;
@ -93,6 +94,6 @@ public interface ApplicationStorageManager {
* @return the relevant image artifact. * @return the relevant image artifact.
* @throws ApplicationStorageManagementException Application Storage Management Exception. * @throws ApplicationStorageManagementException Application Storage Management Exception.
*/ */
public InputStream getImageArtifact(String applicationUUID, String name, int count) throws public ImageArtifact getImageArtifact(String applicationUUID, String name, int count) throws
ApplicationStorageManagementException; ApplicationStorageManagementException;
} }

@ -75,7 +75,9 @@
org.wso2.carbon.user.core.*, org.wso2.carbon.user.core.*,
org.wso2.carbon.user.api.*, org.wso2.carbon.user.api.*,
org.wso2.carbon.ndatasource.core, org.wso2.carbon.ndatasource.core,
org.wso2.carbon org.wso2.carbon,
org.apache.commons.io,
org.apache.commons.codec.binary;version=${commons-codec.wso2.osgi.version.range}
</Import-Package> </Import-Package>
<Export-Package> <Export-Package>
!org.wso2.carbon.device.application.mgt.core.internal.*, !org.wso2.carbon.device.application.mgt.core.internal.*,

@ -19,11 +19,14 @@
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;
import org.wso2.carbon.device.application.mgt.common.Application; import org.wso2.carbon.device.application.mgt.common.Application;
import org.wso2.carbon.device.application.mgt.common.ApplicationRelease; import org.wso2.carbon.device.application.mgt.common.ApplicationRelease;
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;
@ -42,6 +45,7 @@ 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.io.OutputStream;
import java.nio.file.Files;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@ -207,7 +211,7 @@ public class ApplicationStorageManagerImpl implements ApplicationStorageManager
} }
@Override @Override
public InputStream getImageArtifact(String applicationUUID, String name, int count) throws public ImageArtifact getImageArtifact(String applicationUUID, String name, int count) throws
ApplicationStorageManagementException { ApplicationStorageManagementException {
Application application = validateApplication(applicationUUID); Application application = validateApplication(applicationUUID);
validateImageArtifactNames(name); validateImageArtifactNames(name);
@ -222,11 +226,19 @@ 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 {
return new FileInputStream(imageArtifactPath); 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;
} 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 "
+ "application " + applicationUUID, e); + "application " + applicationUUID, e);
} catch (IOException e) {
throw new ApplicationStorageManagementException("IO Exception while trying to detect the image "
+ "artifact " + name + " for the application " + applicationUUID, e);
} }
} }
} }

@ -28,7 +28,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>org.wso2.carbon.device.application.mgt.publisher.ui</artifactId> <artifactId>org.wso2.carbon.device.application.mgt.publisher.ui</artifactId>
<version>3.0.46-SNAPSHOT</version> <version>3.0.46-SNAPSHOT</version>
<packaging>war</packaging> <packaging>pom</packaging>
<name>WSO2 Carbon - Application Management Publisher UI</name> <name>WSO2 Carbon - Application Management Publisher UI</name>
<description>WSO2 Carbon - Application Management Publisher UI React Application</description> <description>WSO2 Carbon - Application Management Publisher UI React Application</description>
<url>http://wso2.org</url> <url>http://wso2.org</url>

Loading…
Cancel
Save