Problema codigo para mover nodo

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

Problema codigo para mover nodo

Hola de nuevo.

Tengo un problema si alguien pudiera guiarme un poco lo agradecería mucho.

Tengo un método que al ejecutarse mueve un archivo pdf a otro espacio, en este caso sería una factura que se rechaza y va a un espacio rechazadas, pero no lo hace. Os pongo el código del método a ver si podeis tener alguna idea de qué esta mal.

public void rechazarFactura(){
         String stringQuery = PathRechazadasSpace;
         NodeRef espaciodeRechazadas;

         StoreRef storeRef_aux = StoreRef.STORE_REF_WORKSPACE_SPACESSTORE;
         ResultSet results_aux = services.getSearchService()
               .query(storeRef_aux,
                     services.getSearchService().LANGUAGE_LUCENE,
                     stringQuery);
                espaciodeRechazadas = (results_aux.getNodeRefs().get(0));
      System.out.println(espaciodeRechazadas);
         try {
            System.out.println("nodeRef del Archivo "+editableNode.getNodeRef());
            
            filefolder.move(editableNode.getNodeRef(), espaciodeRechazadas, null);
            System.out.println("Intenta mover el archvio");
            
            } catch (FileExistsException e) {
            
                  e.printStackTrace();
            } catch (org.alfresco.service.cmr.model.FileNotFoundException e) {
                  e.printStackTrace();
            }
         }   


y os paso también el log con el fallo.

02-sep-2009 17:01:46 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() para servlet Faces Servlet lanz� excepci�n
java.lang.NullPointerException
   at org.alfresco.sample.Revision_facturas_Dialog.rechazarFactura(Revision_facturas_Dialog.java:1904)
   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.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
   at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:61)
   at javax.faces.component.UICommand.broadcast(UICommand.java:109)
   at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:97)
   at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:171)
   at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
   at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
   at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.alfresco.web.app.servlet.AuthenticationFilter.doFilter(AuthenticationFilter.java:81)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
   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:286)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
   at java.lang.Thread.run(Thread.java:619)

La línea 1904 donde dice que da el eror es esta
filefolder.move(editableNode.getNodeRef(), espaciodeRechazadas, null);

Gracias a todos de nuevo
5 Replies
mrey
Member II

Re: Problema codigo para mover nodo

Arreglado, error de novato.
FileFolderServices estaba declarado como fileFolderService, y yo lo usaba como filefolder. Perdón por las molestias.

Pero ya aprovechando, expongo otra duda.

En otro método, que en este caso es el que acepta las facturas, usando la misma sintaxis de búsqueda, no funciona.
Cuando acepto un archivo, lo muevo a un espacio de aceptadas, ahi lo guarda en un espacio con nombre de año, si no existe ese espacio lo crea.
Cuando intento comprobar si existe ese espacio, es cuando el metodo da error.

private boolean ComprobarEspacioAnho(String espacioanho) {

               
               String stringQuery = PathAceptadasSpace2 + "/cm:" + espacioanho + "\""
                     + " +TYPE:\"" + ContentModel.TYPE_FOLDER + "\"";
               System.out.println("Path del espacio acepatadas + espacio año "+stringQuery);
               StoreRef storeRef_aux = StoreRef.STORE_REF_WORKSPACE_SPACESSTORE;
               System.out.println("Ya paso del StoreRef");
               System.out.println("paso 1 "+services.getSearchService());
               
               services.getSearchService();
               ResultSet results_aux = services.getSearchService()
                     .query(storeRef_aux,
                           SearchService.LANGUAGE_LUCENE,
                           stringQuery);
               System.out.println("Ya paso del Resultset");
               System.out.println("Store Ref del espacio año "+results_aux);
               if (results_aux.getNodeRefs().size() > 0) {
                  System.out.println("Encontro un espacio año");
                  return true;
               } else {
                  System.out.println("no lo encontro");
                  return false;
                  
               }

            }


El error viene en esta línea

ResultSet results_aux = services.getSearchService().query(storeRef_aux, SearchService.LANGUAGE_LUCENE, stringQuery);

y en el error me dice:
javax.faces.FacesException: Error calling action method of component with id dialog:dialog-body:titleLink1
caused by:
javax.faces.el.EvaluationException: Exception while invoking expression #{DialogManager.bean.aceptarFactura}
caused by:
net.sf.acegisecurity.BadCredentialsException: Bad credentials presented

¿Alguna idea?

Muchas gracias de nuevo
pjcaracuel_2349
Active Member II

Re: Problema codigo para mover nodo

Buenas,

Se me ocurre que puede ser un problema de las credenciales del usuario que ejecuta el ¿¿¿webscript?????

Te adjunto un post que puede ser significativo:
http://forums.alfresco.com/en/viewtopic.php?f=12&t=11970

Saludos
mrey
Member II

Re: Problema codigo para mover nodo

Hola de nuevo. Gracias por la respuesta.


El método es un actionlink que ejecuta un dialog. Cuando pulso el botón aceptar, mueve el documento al espacio aceptadas, saca el año de uno de los metadatos, y busca un espacio que tenga de nombre ese año, y si no lo hay lo crea, y lo mismo con el mes. Si hago que el método solo mueva el documento, sin hacer comprobaciones, tampoco funciona.

Este es el método que solo mueve el archivo
 public void aceptarFactura(){
         String stringQuery = PathAceptadasSpace;
      

      StoreRef storeRef_aux = StoreRef.STORE_REF_WORKSPACE_SPACESSTORE;
      ResultSet results_aux = services.getSearchService().query(storeRef_aux,services.getSearchService().LANGUAGE_LUCENE,stringQuery);
      NodeRef espaciodeAceptadas = (results_aux.getNodeRefs().get(0));
      System.out.println(espaciodeAceptadas);
      try {
         this.fileFolderService.move(editableNode.getNodeRef(),
               espaciodeAceptadas, null);
      } catch (FileExistsException e) {
         e.printStackTrace();
      } catch (org.alfresco.service.cmr.model.FileNotFoundException e) {
         e.printStackTrace();
      }
   }

y me da este error
javax.faces.FacesException: Error calling action method of component with id dialog:dialog-body:titleLink1
caused by:
javax.faces.el.EvaluationException: Exception while invoking expression #{DialogManager.bean.aceptarFactura}
caused by:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

No se si me expliqué bien.

De todos modos muchas gracias.
pjcaracuel_2349
Active Member II

Re: Problema codigo para mover nodo

Si te explicas bien, pero puedes poner el codigo donde defines el actionLink??

Gracias
mrey
Member II

Re: Problema codigo para mover nodo

Gracias por la ayuda. Ya está solucionado, resulta que al crear el espacio le daba el nombre del año, en número, y parece que a alfresco no le gustan los nombres con números, asi que probando a darle al nombre una letra delante, por ejemplo, A_2009, la cosa se soluciona.

Gracias por tu tiempo y tu interés, que ya sabemos que el tiempo es dinero .


Gracias y un saludo.