public void write(Object value, OutputStream output, Operation operation) throws IOException {
// grab the coverage
GridCoverage2D coverage = (GridCoverage2D) value;
// grab the format
GetCoverageType getCoverage = (GetCoverageType) operation.getParameters()[0];
String format = getCoverage.getFormat();
if (format == null) {
format = "image/tiff";
}
// extract additional extensions
final Map<String, String> encodingParameters = new HashMap<String, String>();
final ExtensionType extension = getCoverage.getExtension();
if (extension != null) {
final EList<ExtensionItemType> extensions = extension.getContents();
for (ExtensionItemType ext : extensions) {
encodingParameters.put(ext.getName(), ext.getSimpleContent());
}
}
// grab the delegate
CoverageResponseDelegate delegate = responseFactory.encoderFor(format);
// use javamail classes to actually encode the document
try {
MimeMultipart multipart = new MimeMultipart();
multipart.setSubType("related");
String fileName = "/coverages/" + getCoverage.getCoverageId() + "." + delegate.getFileExtension(format);
// coverages xml structure, which is very close to the DescribeFeatureType output
BodyPart coveragesPart = new MimeBodyPart();
FileReference reference = new FileReference(fileName, delegate.getMimeType(format), delegate.getConformanceClass(format));
final CoverageData coveragesData = new CoverageData(coverage, reference, envelopeDimensionsMapper);