/**
* Converts a CMIS exception to the appropriate Web Service exception.
*/
protected CmisException convertException(Exception ex) {
CmisFaultType fault = new CmisFaultType();
fault.setMessage("Unknown exception");
fault.setCode(BigInteger.ZERO);
fault.setType(EnumServiceException.RUNTIME);
if (ex != null) {
fault.setMessage(ex.getMessage());
if (ex instanceof CmisBaseException) {
fault.setCode(((CmisBaseException) ex).getCode());
}
if (ex instanceof CmisConstraintException) {
fault.setType(EnumServiceException.CONSTRAINT);
} else if (ex instanceof CmisContentAlreadyExistsException) {
fault.setType(EnumServiceException.CONTENT_ALREADY_EXISTS);
} else if (ex instanceof CmisFilterNotValidException) {
fault.setType(EnumServiceException.FILTER_NOT_VALID);
} else if (ex instanceof CmisInvalidArgumentException) {
fault.setType(EnumServiceException.INVALID_ARGUMENT);
} else if (ex instanceof CmisNameConstraintViolationException) {
fault.setType(EnumServiceException.NAME_CONSTRAINT_VIOLATION);
} else if (ex instanceof CmisNotSupportedException) {
fault.setType(EnumServiceException.NOT_SUPPORTED);
} else if (ex instanceof CmisObjectNotFoundException) {
fault.setType(EnumServiceException.OBJECT_NOT_FOUND);
} else if (ex instanceof CmisPermissionDeniedException) {
fault.setType(EnumServiceException.PERMISSION_DENIED);
} else if (ex instanceof CmisStorageException) {
fault.setType(EnumServiceException.STORAGE);
} else if (ex instanceof CmisStreamNotSupportedException) {
fault.setType(EnumServiceException.STREAM_NOT_SUPPORTED);
} else if (ex instanceof CmisUpdateConflictException) {
fault.setType(EnumServiceException.UPDATE_CONFLICT);
} else if (ex instanceof CmisVersioningException) {
fault.setType(EnumServiceException.VERSIONING);
}
Node node = ExceptionHelper.getStacktraceAsNode(ex);
if (node != null) {
fault.getAny().add(node);
}
}
return new CmisException(fault.getMessage(), fault, ex);
}