CID-1114601/CID-1114602 Fix ignored return values and remove duplicate code

This commit is contained in:
Hugo Trippaers 2014-11-18 15:05:09 +01:00
parent 7e58a278a0
commit 22ad646aca

View File

@ -29,12 +29,10 @@ import javax.naming.ConfigurationException;
import org.apache.log4j.Logger;
import com.cloud.exception.InternalErrorException;
import com.cloud.storage.Storage.ImageFormat;
import com.cloud.storage.StorageLayer;
import com.cloud.utils.NumbersUtil;
import com.cloud.utils.component.AdapterBase;
import com.cloud.utils.exception.CloudRuntimeException;
/**
* VhdProcessor processes the downloaded template for VHD. It
@ -54,92 +52,60 @@ public class VhdProcessor extends AdapterBase implements Processor {
private byte[][] citrixCreatorApp = { {0x74, 0x61, 0x70, 0x00}, {0x43, 0x54, 0x58, 0x53}}; /*"tap ", and "CTXS"*/
@Override
public FormatInfo process(String templatePath, ImageFormat format, String templateName) throws InternalErrorException {
public FormatInfo process(String templatePath, ImageFormat format, String templateName) {
if (format != null) {
s_logger.debug("We currently don't handle conversion from " + format + " to VHD.");
return null;
}
String vhdPath = templatePath + File.separator + templateName + "." + ImageFormat.VHD.getFileExtension();
if (!_storage.exists(vhdPath)) {
s_logger.debug("Unable to find the vhd file: " + vhdPath);
return null;
}
File vhdFile = _storage.getFile(vhdPath);
FormatInfo info = new FormatInfo();
info.format = ImageFormat.VHD;
info.filename = templateName + "." + ImageFormat.VHD.getFileExtension();
File vhdFile = _storage.getFile(vhdPath);
info.size = _storage.getSize(vhdPath);
FileInputStream strm = null;
byte[] currentSize = new byte[8];
byte[] creatorApp = new byte[4];
try {
strm = new FileInputStream(vhdFile);
long skipped = strm.skip(info.size - vhdFooterSize + vhdFooterCreatorAppOffset);
if (skipped == -1) {
throw new InternalErrorException("Unexpected end-of-file");
}
long read = strm.read(creatorApp);
if (read == -1) {
throw new InternalErrorException("Unexpected end-of-file");
}
skipped = strm.skip(vhdFooterCurrentSizeOffset - vhdFooterCreatorVerOffset);
if (skipped == -1) {
throw new InternalErrorException("Unexpected end-of-file");
}
read = strm.read(currentSize);
if (read == -1) {
throw new InternalErrorException("Unexpected end-of-file");
}
info.virtualSize = getVirtualSize(vhdFile);
} catch (IOException e) {
s_logger.warn("Unable to read vhd file " + vhdPath, e);
throw new InternalErrorException("Unable to read vhd file " + vhdPath + ": " + e, e);
} finally {
if (strm != null) {
try {
strm.close();
} catch (IOException e) {
}
}
s_logger.error("Unable to get the virtual size for " + vhdPath);
return null;
}
//imageSignatureCheck(creatorApp);
long templateSize = NumbersUtil.bytesToLong(currentSize);
info.virtualSize = templateSize;
return info;
}
@Override
public long getVirtualSize(File file) {
FileInputStream strm = null;
public long getVirtualSize(File file) throws IOException {
byte[] currentSize = new byte[8];
byte[] creatorApp = new byte[4];
try {
strm = new FileInputStream(file);
strm.skip(file.length() - vhdFooterSize + vhdFooterCreatorAppOffset);
strm.read(creatorApp);
strm.skip(vhdFooterCurrentSizeOffset - vhdFooterCreatorVerOffset);
strm.read(currentSize);
} catch (Exception e) {
s_logger.warn("Unable to read vhd file " + file.getAbsolutePath(), e);
throw new CloudRuntimeException("Unable to read vhd file " + file.getAbsolutePath() + ": " + e);
} finally {
if (strm != null) {
try {
strm.close();
} catch (IOException e) {
}
try (FileInputStream strm = new FileInputStream(file)) {
long skipped = strm.skip(file.length() - vhdFooterSize + vhdFooterCreatorAppOffset);
if (skipped == -1) {
throw new IOException("Unexpected end-of-file");
}
long read = strm.read(creatorApp);
if (read == -1) {
throw new IOException("Unexpected end-of-file");
}
skipped = strm.skip(vhdFooterCurrentSizeOffset - vhdFooterCreatorVerOffset);
if (skipped == -1) {
throw new IOException("Unexpected end-of-file");
}
read = strm.read(currentSize);
if (read == -1) {
throw new IOException("Unexpected end-of-file");
}
}
long templateSize = NumbersUtil.bytesToLong(currentSize);
return templateSize;
return NumbersUtil.bytesToLong(currentSize);
}
@Override