use of org.alfresco.rest.framework.core.exceptions.InsufficientStorageException in project alfresco-remote-api by Alfresco.
the class NodesImpl method writeContent.
private void writeContent(NodeRef nodeRef, String fileName, InputStream stream, boolean guessEncoding) {
try {
ContentWriter writer = contentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true);
String mimeType = mimetypeService.guessMimetype(fileName);
if ((mimeType != null) && (!mimeType.equals(MimetypeMap.MIMETYPE_BINARY))) {
// quick/weak guess based on file extension
writer.setMimetype(mimeType);
} else {
// stronger guess based on file stream
writer.guessMimetype(fileName);
}
InputStream is = null;
if (guessEncoding) {
is = new BufferedInputStream(stream);
is.mark(1024);
writer.setEncoding(guessEncoding(is, mimeType, false));
try {
is.reset();
} catch (IOException ioe) {
if (logger.isWarnEnabled()) {
logger.warn("Failed to reset stream after trying to guess encoding: " + ioe.getMessage());
}
}
} else {
is = stream;
}
writer.putContent(is);
} catch (ContentQuotaException cqe) {
throw new InsufficientStorageException();
} catch (ContentLimitViolationException clv) {
throw new RequestEntityTooLargeException(clv.getMessage());
} catch (ContentIOException cioe) {
if (cioe.getCause() instanceof NodeLockedException) {
throw (NodeLockedException) cioe.getCause();
}
throw cioe;
}
}
use of org.alfresco.rest.framework.core.exceptions.InsufficientStorageException in project records-management by Alfresco.
the class FilePlanComponentsApiUtils method writeContent.
/**
* Write content to file
*
* @param nodeRef the node to write the content to
* @param fileName the name of the file (used for guessing the file's mimetype)
* @param stream the input stream to write
* @param guessEncoding whether to guess stream encoding
*/
public void writeContent(NodeRef nodeRef, String fileName, InputStream stream, boolean guessEncoding) {
try {
ContentWriter writer = contentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true);
String mimeType = mimetypeService.guessMimetype(fileName);
if ((mimeType != null) && (!mimeType.equals(MimetypeMap.MIMETYPE_BINARY))) {
// quick/weak guess based on file extension
writer.setMimetype(mimeType);
} else {
// stronger guess based on file stream
writer.guessMimetype(fileName);
}
InputStream is = null;
if (guessEncoding) {
is = new BufferedInputStream(stream);
is.mark(1024);
writer.setEncoding(guessEncoding(is, mimeType, false));
try {
is.reset();
} catch (IOException ioe) {
if (LOGGER.isWarnEnabled()) {
LOGGER.warn("Failed to reset stream after trying to guess encoding: " + ioe.getMessage());
}
}
} else {
is = stream;
}
writer.putContent(is);
} catch (ContentQuotaException cqe) {
throw new InsufficientStorageException();
} catch (ContentLimitViolationException clv) {
throw new RequestEntityTooLargeException(clv.getMessage());
} catch (ContentIOException cioe) {
if (cioe.getCause() instanceof NodeLockedException) {
throw (NodeLockedException) cioe.getCause();
}
throw cioe;
}
}
use of org.alfresco.rest.framework.core.exceptions.InsufficientStorageException in project alfresco-remote-api by Alfresco.
the class ExceptionResolverTests method testMatchException.
// 04180006 Authentication failed for Web Script org/alfresco/api/ResourceWebScript.get
@Test
public void testMatchException() {
ErrorResponse response = assistant.resolveException(new ApiException(null));
assertNotNull(response);
// default to INTERNAL_SERVER_ERROR
assertEquals(500, response.getStatusCode());
response = assistant.resolveException(new InvalidArgumentException(null));
// default to STATUS_BAD_REQUEST
assertEquals(400, response.getStatusCode());
response = assistant.resolveException(new InvalidQueryException(null));
// default to STATUS_BAD_REQUEST
assertEquals(400, response.getStatusCode());
response = assistant.resolveException(new NotFoundException(null));
// default to STATUS_NOT_FOUND
assertEquals(404, response.getStatusCode());
response = assistant.resolveException(new EntityNotFoundException(null));
// default to STATUS_NOT_FOUND
assertEquals(404, response.getStatusCode());
response = assistant.resolveException(new RelationshipResourceNotFoundException(null, null));
// default to STATUS_NOT_FOUND
assertEquals(404, response.getStatusCode());
response = assistant.resolveException(new PermissionDeniedException(null));
// default to STATUS_FORBIDDEN
assertEquals(403, response.getStatusCode());
response = assistant.resolveException(new UnsupportedResourceOperationException(null));
// default to STATUS_METHOD_NOT_ALLOWED
assertEquals(405, response.getStatusCode());
response = assistant.resolveException(new DeletedResourceException(null));
// default to STATUS_METHOD_NOT_ALLOWED
assertEquals(405, response.getStatusCode());
response = assistant.resolveException(new ConstraintViolatedException(null));
// default to STATUS_CONFLICT
assertEquals(409, response.getStatusCode());
response = assistant.resolveException(new StaleEntityException(null));
// default to STATUS_CONFLICT
assertEquals(409, response.getStatusCode());
// Try a random exception
response = assistant.resolveException(new FormNotFoundException(null));
// default to INTERNAL_SERVER_ERROR
assertEquals(500, response.getStatusCode());
response = assistant.resolveException(new InsufficientStorageException(null));
assertEquals(507, response.getStatusCode());
response = assistant.resolveException(new IntegrityException(null));
assertEquals(422, response.getStatusCode());
}
Aggregations