cancel
Showing results for 
Search instead for 
Did you mean: 

CMIS

dineshnk
Champ in-the-making
Champ in-the-making
When i am trying to upload doc from my Application.It gives below exception

org.apache.chemistry.opencmis.commons.exceptions.CmisStorageException: Expected 68307 bytes but retrieved 0 bytes!
        at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.convertStatusCode(AbstractAtomPubService.java:485)
        at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.post(AbstractAtomPubService.java:629)
        at org.apache.chemistry.opencmis.client.bindings.spi.atompub.ObjectServiceImpl.createDocument(ObjectServiceImpl.java:119)
        at org.apache.chemistry.opencmis.client.runtime.SessionImpl.createDocument(SessionImpl.java:751)
        at org.apache.chemistry.opencmis.client.runtime.FolderImpl.createDocument(FolderImpl.java:95)
        at org.apache.chemistry.opencmis.client.runtime.FolderImpl.createDocument(FolderImpl.java:469)


Can somebody help me on this, what is the reason for this?

3 REPLIES 3

jpotts
World-Class Innovator
World-Class Innovator
Please post the code that makes the call so we'll have a chance at helping you.

Jeff

dineshnk
Champ in-the-making
Champ in-the-making
Full Exception trace of the above issue:

org.apache.chemistry.opencmis.commons.exceptions.CmisStorageException: Expected 68307 bytes but retrieved 0 bytes!
   at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.convertStatusCode(AbstractAtomPubService.java:485)
   at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.put(AbstractAtomPubService.java:653)
   at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.put(AbstractAtomPubService.java:640)
   at org.apache.chemistry.opencmis.client.bindings.spi.atompub.VersioningServiceImpl.checkIn(VersioningServiceImpl.java:164)
   at org.apache.chemistry.opencmis.client.runtime.DocumentImpl.checkIn(DocumentImpl.java:274)
   at org.alfresco.cmis.client.impl.AlfrescoDocumentImpl.checkIn(AlfrescoDocumentImpl.java:82)
   at org.apache.chemistry.opencmis.client.runtime.DocumentImpl.checkIn(DocumentImpl.java:528)
   at com.mps.document.repository.DocumentRepositoryHandler.checkinFile(DocumentRepositoryHandler.java:503)
   at com.mps.document.repository.DocumentRepositoryHandler.checkinFile(DocumentRepositoryHandler.java:476)
   at com.mps.document.repository.DocumentRepository.createFile(DocumentRepository.java:144)
   at com.mps.ui.util.DocumentUploadServlet.doPost(DocumentUploadServlet.java:192)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
   at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
   at com.googlecode.webutilities.filters.CompressionFilter.doFilter(CompressionFilter.java:112)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
   at com.mps.ui.security.filters.AuthenticationFilter.doFilter(AuthenticationFilter.java:62)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
   at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930)
   at java.lang.Thread.run(Thread.java:744)
   
   Below is the code snippets:
   
   /**

   public static String createFile(String fileName, String fileDescription, InputStream fIO, String parentFolderId, Map<String, String> properties) {

      if(null == sessionFactory) {
         setupSession();
      }

      Session session = sessionFactory.createSession(sessionParams);

      Folder parentFolder = (Folder) session.getObject(parentFolderId);

      String mimeType = MimeType.getDefault().value();
      ContentStream contentStream = session.getObjectFactory().createContentStream(fileName, -1, mimeType, fIO);

      if(null == properties) {
         properties = new HashMap<String, String>();
         properties.put(PropertyIds.OBJECT_TYPE_ID, "D:gk:doc,P:cm:titled");
      } else {
         if(!properties.containsKey(PropertyIds.OBJECT_TYPE_ID)) {
            properties.put(PropertyIds.OBJECT_TYPE_ID, "D:gk:doc,P:cm:titled");
         }
      }
      properties.put(PropertyIds.NAME, fileName);
      properties.put("cm:description", fileDescription);

      Document doc = parentFolder.createDocument(properties, contentStream, VersioningState.MAJOR);

      String docId = doc.getProperty("cmis:versionSeriesId").getValue();
      if(LOGGER.isDebugEnabled()) {
         LOGGER.debug(String.format("Created file %s with ID: %s", fileName, docId));
      }

      return docId;
   }

   
   /** This method we are ussing to checkin the checked out file with a different version
   
   public static String checkinFile(String fileId, InputStream io, Map<String, String> properties) {

      if(null == sessionFactory) {
         setupSession();
      }

      Session session = sessionFactory.createSession(sessionParams);

      String newId = fileId;

      Document doc = (Document) session.getObject(fileId);
      if(null != doc) {
         String fileName = doc.getName();

         String mimeType = MimeType.getDefault().value();

         ContentStream contentStream = session.getObjectFactory().createContentStream(fileName, -1, mimeType, io);

         ObjectId newObjId = doc.checkIn(true, properties, contentStream, "Replaced document");
         if(null != newObjId) {
            Document newDoc = (Document) session.getObject(newObjId);
            newId = newDoc.getProperty("cmis:versionSeriesId").getValue();
         }
      }

      return newId;
   }
   
   
   I am using:
   chemistry-opencmis 0.10.0 version
   and alfresco-opencmis-extension 0.7 version.

kaynezhang
World-Class Innovator
World-Class Innovator
Please try to compute content stream length first and pass it createContentStream instead of passing -1

  ByteArrayOutputStream bytestream = new ByteArrayOutputStream(); 
   int ch; 
   while ((ch = io.read()) != -1) { 
    bytestream.write(ch); 
   } 
   byte buf[] = bytestream.toByteArray(); 
   bytestream.close(); 
   int length =buf.length;
ContentStream contentStream = session.getObjectFactory().createContentStream(fileName, length, mimeType, io);