Carga de archivos con aspectos via CMIS

cancel
Showing results for 
Search instead for 
Did you mean: 
cavila_g
Member II

Carga de archivos con aspectos via CMIS

Intentando evitar el problema que tiene alfresco en la carga de archivos encontré el servicio CMIS que expone alfresco, asi que me dispuse a enviar archivos por medio de ese servlet, ahora todo funciona de maravilla hasta que tuve que enviar un esquema de aspectos dentro del archivo xml que recibe dicho servlet.
Mi problema es que no consigo hacer que el archivo tome los aspectos y propiedades que le estoy enviando en el xml.

Este es el codigo que tengo en este momento:

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.Collection;

import org.apache.xml.security.utils.Base64;

import eu.medsea.mimeutil.MimeType;
import eu.medsea.mimeutil.MimeUtil;
import eu.medsea.mimeutil.MimeUtil2;

public class TestCMIS {

   /**
       * @param args
       */
      public static void main(String[] args) {
         try {
            TestCMIS poc = new TestCMIS("admin", "password", new URL("http://localhost:8083/alfresco/service/cmis/p/TEST/children"),
                  new File("D:\\alfrescotest.txt"));
            poc.createContent();
         } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
         }
      }

      private URL url;

      private File file;

      private static final String mensaje = "<entry xmlns=\"http://www.w3.org/2005/Atom\" xmlns:app=\"http://www.w3.org/2007/app\""
          + " xmlns:cmisra=\"http://docs.oasis-open.org/ns/cmis/restatom/200908/\""
          + " xmlns:cmis=\"http://docs.oasis-open.org/ns/cmis/core/200908/\" xmlns:alf=\"http://www.alfresco.org\""
          + " xmlnsSmiley Surprisedpensearch=\"http://a9.com/-/spec/opensearch/1.1/\">\n"
            + "\t<title>FILE_NAME</title>\n"
            + "\t<content type=\"MIME_TYPE\"><![CDATA[CONTENT]]></content>\n"
            + "\t<cmisSmiley Surprisedbject>\n"
            + "\t\t\t<alf:setAspects>\n"
          + "\t\t\t\t<alf:aspectsToAdd>P:cm:titled</alf:aspectsToAdd>\n"
          + "\t\t\t\t<alfSmiley Tongueroperties>\n"
          + "\t\t\t\t\t<cmisSmiley TongueropertyString propertyDefinitionId=\"cm:title\" displayName=\"Title\" queryName=\"cm:title\">\n"
          + "\t\t\t\t\t   <cmis:value>titulo</cmis:value>\n"
          + "\t\t\t\t\t</cmisSmiley TongueropertyString>\n"
          + "\t\t\t\t</alfSmiley Tongueroperties>\n"
          + "\t\t\t</alf:setAspects>\n"
            + "\t\t<cmisSmiley Tongueroperties>\n"
            + "\t\t\t<cmisSmiley TongueropertyString cmis:name=\"ObjectTypeId\"><cmis:value>document</cmis:value></cmisSmiley TongueropertyString>\n"
          
            + "\t\t</cmisSmiley Tongueroperties>\n" + "\t</cmisSmiley Surprisedbject>\n" + "</entry>\n";
      private String usuario;

      private String password;

      public TestCMIS(String usuario, String password, URL url, File file) {
         super();
         this.usuario = usuario;
         this.password = password;
         this.url = url;
         this.file = file;
      }

      @SuppressWarnings("unchecked")
      private void createContent() throws IOException {
        
         FileInputStream fis = new FileInputStream(file);
         DataInputStream dis = new DataInputStream(fis);
         // Create the byte array to hold the data
         byte[] bytes = new byte[(int) file.length()];
         dis.readFully(bytes);
        
         Collection<MimeType> mimeTypes = MimeUtil.getMimeTypes(file);
         MimeType mimeType = MimeUtil.getMostSpecificMimeType(mimeTypes);
         if(mimeType == null) mimeType = MimeUtil2.UNKNOWN_MIME_TYPE;
        
         System.out.println("Content mime type is: " + mimeType.toString());
        
         String datos = TestCMIS.mensaje;
         datos = datos.replaceFirst("FILE_NAME", file.getName());
         datos = datos.replaceFirst("MIME_TYPE", mimeType.toString());
         datos = datos.replaceFirst("CONTENT", Base64.encode(bytes));
        
         String auth = Base64.encode((usuario + ":" + password).getBytes());

         URLConnection conn = url.openConnection();
         conn.setDoOutput(true);
         conn.setRequestProperty("Authorization", "Basic " + auth);
         conn.setRequestProperty("Content-Type", "application/atom+xml;type=entry");
         File file = new File("out1.xml");
         FileOutputStream fos = new FileOutputStream(file);

         OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());

         fos.write(datos.getBytes());
         out.write(datos);
         out.close();

         // A ver que nos cuentan.
         String decodedString;

         BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

         while ((decodedString = in.readLine()) != null) {
            System.out.println(decodedString);
         }
         in.close();

      }

}

Espero me puedan dar una mano porque no tengo idea de que estoy haciendo mal para que no m tome siquierea ese aspecto que es propio de alfresco.

gracias
1 Reply
cristinamr
Advanced

Re: Carga de archivos con aspectos via CMIS

Buenas.

Podrías pegarnos el error que te da el afresco (entre los tags
)?

Es para saber qué ocurre  :wink:

Un saludo.
--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc