}
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) {
throw new CascadingIOException("Could not commit the transaction",cme);
}
} catch (SlideException se) {
try {
m_nat.rollback();
} catch (Exception rbe) {
this.logger.warn("Could not rollback the transaction.",rbe);
}
throw new CascadingIOException("Could not create source",se);
}
} catch (Exception e) {
if (e instanceof IOException) {
throw (IOException) e;
}
throw new CascadingIOException("Could not create source", e);
} finally {
this.isClosed = true;
}
}