private void assertThatContentStreamIsSameAs(
      Document document, ContentStream stream, String hash) {
    ContentStream contentStream = document.getContentStream();
    assertThat(contentStream.getMimeType()).isEqualTo(stream.getMimeType()); // OK
    assertThat(contentStream.getFileName()).isEqualTo(stream.getFileName()); // OK
    assertThat(document.getContentStreamLength()).isEqualTo(stream.getLength());
    // ContentStream lenghts are accessible in the document, not needed in the stream itself.
    assertThat(contentStream.getBigLength()).isNull();
    assertThat(contentStream.getLength()).isEqualTo(-1);

    assertThat(contentStream.getStream()).hasContentEqualTo(stream.getStream()); // OK

    // All of those are MISSING
    assertThat(document.getContentStreamId()).isEqualTo(hash);
    assertThat(document.getContentStreamFileName()).isEqualTo(stream.getFileName());
    assertThat(document.getContentStreamLength()).isEqualTo(stream.getLength());
    assertThat(document.getContentStreamMimeType()).isEqualTo(stream.getMimeType());
  }
Пример #2
0
  @Override
  public ContentStream setContent(StoredObject so, ContentStream contentStream) {
    if (so instanceof Content) {
      ContentStreamDataImpl newContent;
      Content content = (Content) so;

      if (null == contentStream) {
        newContent = null;
      } else {
        boolean useFakeContentStore =
            so.getTypeId().equals(DefaultTypeSystemCreator.BIG_CONTENT_FAKE_TYPE);
        newContent =
            new ContentStreamDataImpl(
                MAX_CONTENT_SIZE_KB == null ? 0 : MAX_CONTENT_SIZE_KB, useFakeContentStore);
        String fileName = contentStream.getFileName();
        if (null == fileName || fileName.length() <= 0) {
          fileName = so.getName(); // use name of document as fallback
        }
        newContent.setFileName(fileName);
        String mimeType = contentStream.getMimeType();
        if (null == mimeType || mimeType.length() <= 0) {
          mimeType = "application/octet-stream"; // use as fallback
        }
        newContent.setMimeType(mimeType);
        newContent.setLastModified(new GregorianCalendar());
        try {
          newContent.setContent(contentStream.getStream());
        } catch (IOException e) {
          throw new CmisRuntimeException("Failed to get content from InputStream", e);
        }
      }
      content.setContent(newContent);
      return newContent;

    } else {
      throw new CmisInvalidArgumentException(
          "Cannot set content, object does not implement interface Content.");
    }
  }