super.close();
byte[] bytes = new byte[0]; // must be initialized
try {
NodeRevisionContent content = new NodeRevisionContent();
bytes = toByteArray();
content.setContent(bytes);
if (m_descriptor == null) {
m_descriptor = new NodeRevisionDescriptor(0);
m_descriptor.setName(getName());
}
m_descriptor.setContentLength(bytes.length);
m_descriptor.setLastModified(new Date());
m_nat.begin();
if (m_version == null) {
m_content.create(m_slideToken,m_uri,m_descriptor,null);
}
m_content.store(m_slideToken,m_uri,m_descriptor,content);
try {
m_nat.commit();
} catch (Exception cme) {
throw new CascadingIOException("Could not commit the transaction",cme);
}
} catch (ObjectNotFoundException e) {
// Todo : Check to see if parent exists
SubjectNode subject = new SubjectNode();
try {
// Creating an object
m_structure.create(m_slideToken,subject,m_uri);
} catch (SlideException se) {
throw new CascadingIOException(se);
}
NodeRevisionDescriptor descriptor = new NodeRevisionDescriptor(bytes.length);
descriptor.setResourceType("");
descriptor.setSource("");
descriptor.setContentLanguage("en");
descriptor.setContentLength(bytes.length);
String contentType = null;
try {
contentType = ((org.apache.cocoon.environment.Context)
m_context.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT)).getMimeType(m_path);
} catch (ContextException ce) {
this.logger.warn("Could not get context to determine the mime type.");
}
if (contentType == null) {
contentType = "application/octet-stream";
}
descriptor.setContentType(contentType);
descriptor.setLastModified(new Date());
descriptor.setOwner(m_slideToken.getCredentialsToken().getPublicCredentials());
NodeRevisionContent content = new NodeRevisionContent();
content.setContent(bytes);
try {
m_content.create(m_slideToken,m_uri,descriptor,content);
try {
m_nat.commit();
} catch (Exception cme) {