No encuentra la carpeta donde guardar el documento
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-16-2015 07:44 AM
He cambiado algo el código que tenia para trabajar con Alfresco, ya que tenía problemas cuando queria guardar un documento en una carpeta ya existente en el proyecto.
Con la modificación actual he dejado el código tal que así:
public String uploadFile(String idfolder, byte[] bytes, String fileName, String contentType) { String idDoc = null; // properties Folder folder = (Folder) session.getObject(idfolder); Map<String, Object> newDocProps = new HashMap<String, Object>(); newDocProps.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document"); newDocProps.put(PropertyIds.NAME, fileName); ContentStream contentStream = new ContentStreamImpl(fileName, BigInteger.valueOf(bytes.length), contentType, new ByteArrayInputStream(bytes)); try { // create the file Document doc = folder.createDocument(newDocProps, contentStream, VersioningState.NONE); idDoc = doc.getId(); } catch (CmisConstraintException e) { System.out.println("No se pudo crear el archivo"); } return idDoc; }
En la línea siguiente: Folder folder = (Folder) session.getObject(idfolder), idFolder contiene /carpetaDeseada/, que ya esta creada en alfresco, pero obtengo el siguiente error llegado a ese punto.
ADVERTENCIA: /subir.xhtml @98,49 fileUploadListener="#{documentoMBean.handleFileUpload}": org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException: Object not found:
javax.el.ELException: /subir.xhtml @98,49 fileUploadListener="#{documentoMBean.handleFileUpload}": org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException: Object not found:
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111)
at org.primefaces.component.fileupload.FileUpload.broadcast(FileUpload.java:310)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:755)
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931)
at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at alfresco.HibernateSessionRequestFilter.doFilter(HibernateSessionRequestFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException: Object not found:
at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.convertStatusCode(AbstractAtomPubService.java:484)
at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.read(AbstractAtomPubService.java:645)
at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.getObjectInternal(AbstractAtomPubService.java:868)
at org.apache.chemistry.opencmis.client.bindings.spi.atompub.ObjectServiceImpl.getObject(ObjectServiceImpl.java:626)
at org.apache.chemistry.opencmis.client.runtime.SessionImpl.getObject(SessionImpl.java:519)
at org.apache.chemistry.opencmis.client.runtime.SessionImpl.getObject(SessionImpl.java:497)
at alfresco.DocumentoManagedBean.uploadFile(DocumentoManagedBean.java:357)
at alfresco.DocumentoManagedBean.handleFileUpload(DocumentoManagedBean.java:493)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
… 27 more
16-jun-2015 13:41:43 com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
GRAVE: org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException: Object not found:
at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.convertStatusCode(AbstractAtomPubService.java:484)
at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.read(AbstractAtomPubService.java:645)
at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.getObjectInternal(AbstractAtomPubService.java:868)
at org.apache.chemistry.opencmis.client.bindings.spi.atompub.ObjectServiceImpl.getObject(ObjectServiceImpl.java:626)
at org.apache.chemistry.opencmis.client.runtime.SessionImpl.getObject(SessionImpl.java:519)
at org.apache.chemistry.opencmis.client.runtime.SessionImpl.getObject(SessionImpl.java:497)
at alfresco.DocumentoManagedBean.uploadFile(DocumentoManagedBean.java:357)
at alfresco.DocumentoManagedBean.handleFileUpload(DocumentoManagedBean.java:493)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at org.primefaces.component.fileupload.FileUpload.broadcast(FileUpload.java:310)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:755)
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931)
at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at alfresco.HibernateSessionRequestFilter.doFilter(HibernateSessionRequestFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:662)
¿Algunda sugerencia? Yo solo quiero poder almacenar un documento en un fichero ya existente.
Un saludo!!
- Labels:
-
Archive
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-16-2015 12:23 PM
No veo nada fuera de lo normal, podrías imprimir que contiene la variable folder una vez se ejecuta esta línea? :
Folder folder = (Folder) session.getObject(idfolder);
Por cierto, échale un vistazo a esta documentación, esta muy bien.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-16-2015 12:35 PM
public void handleFileUpload(FileUploadEvent event) throws IOException { this.file = event.getFile(); fichero = event.getFile().getContents();/* Byte */ nombreFichero = file.getFileName(); tipoFichero = file.getContentType(); directorioAlfrescoDocumento= "/carpetaDeseada/"; Controller(); /*me conecto con alfresco*/ idDocumentoEnAlfresco = uploadFile(directorioAlfrescoDocumento, fichero, nombreFichero,tipoFichero);}public String uploadFile(String idfolder, byte[] bytes, String fileName, String contentType) { String idDoc = null; // properties Folder folder = (Folder) session.getObject(idfolder); /*error*/ Map<String, Object> newDocProps = new HashMap<String, Object>(); newDocProps.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document"); newDocProps.put(PropertyIds.NAME, fileName); ContentStream contentStream = new ContentStreamImpl(fileName, BigInteger.valueOf(bytes.length), contentType, new ByteArrayInputStream(bytes)); try { // create the file Document doc = folder.createDocument(newDocProps, contentStream, VersioningState.NONE); idDoc = doc.getId(); } catch (CmisConstraintException e) { System.out.println("No se pudo crear el archivo"); } return idDoc; }
Voy a ver la documentación para buscar una solución.
Gracias!!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-17-2015 03:32 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-17-2015 03:29 AM
Para entender la nomenclatura puedes usar el cliente http://chemistry.apache.org/java/developing/tools/dev-tools-workbench.html
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-17-2015 04:51 AM
String path = "/User Homes/folder"CmisObject object = getSession().getObjectByPath(path);String id = object.getId();
Lo tienes en la página que te pasé más arriba 😃
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-17-2015 06:49 AM
String path = "/index/2015/"; CmisObject object = session.getObjectByPath(path); //Sera carpeta ¿? if (object instanceof Folder) { // Nombre del documento String name = file.getFileName(); String type = file.getContentType(); byte[] data2 = fichero; Map<String, Object> properties2 = new HashMap<String, Object>(); properties2.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document"); properties2.put(PropertyIds.NAME, name); // Se carga el contenido en un ContentStream InputStream stream = new ByteArrayInputStream(data2); ContentStream contentStream = new ContentStreamImpl(name, BigInteger.valueOf(data2.length),type, stream); // Se crea el documento Document newDoc = ((Folder) object).createDocument(properties2, contentStream, VersioningState.MAJOR);
Otra pregunta Cristina. ¿Como puedo obtener la URL de ese documento que acabo de subir?
Me imagino que tendré que obtener el fichero que esta almacenado en Alfresco, después pasarlo a Byte y devolverlo a mi aplicacion web para su descarga.
¿Es correcto mi planteamiento?
Muchas Gracias!!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-17-2015 08:57 AM
urlElemento=newDoc.getContentUrl();
Gracias!!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-17-2015 09:00 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-19-2015 03:47 AM
Estos días he estado probado la forma de poder acceder al fichero que tengo almacenado en Alfresco, desde una URL en la que no me pidan las credenciales de acceso (User/Password). He estado leyendo y no me queda claro si es posible obtener el fichero de esta forma, así que os pido consejo sobre la forma de solventar mi requerimiento.
Un saludo y muchas gracias.
