cancel
Showing results for 
Search instead for 
Did you mean: 

Subir contenido por Web Service en 4.2

magarcia_sm
Star Contributor
Star Contributor
Buenos días

Estamos haciendo una migración de código de Alfresco 3.0 a Alfresco 4.2. Una de las partes que nos queda por hacer es un cliente Java que sube desde cada pc de los usuarios contenido al respositorio de Alfresco utilizando los webservices de la API de java que hay en la versión 3.0

Este es el código que tenemos,donde lo que hacemos es introducir un fichero que queremos subir, al mismo tiempo que le añadimos un aspecto con sus respectivos valores (Versión 3.0)


ParentReference parentReference = new ParentReference(store, uuid, null, ASSOC_CONTAINS,
                       "{" + Constants.NAMESPACE_CONTENT_MODEL + "}" + name);
              
               // Define the content format for the content we are adding
               ContentFormat contentFormat = new ContentFormat("image/tiff", "UTF-8");
              
      
               NamedValue[] propertiesNV = new NamedValue[] { new NamedValue() };
               propertiesNV[0].setName("{http://www.alfresco.org/model/content/1.0}name");
               propertiesNV[0].setValue(name);
      
                      CMLCreate create = new CMLCreate("1", parentReference, null, null, null, Constants.TYPE_CONTENT, propertiesNV);
               NamedValue propAspect1 = Utils.createNamedValue(PROP_APPLY_OCR,
                     properties.getProperty("ocr"));
               NamedValue propAspect2 = Utils.createNamedValue(PROP_CIF_EMPRESA,
                     properties.getProperty("cif"));
               NamedValue propAspect3 = Utils.createNamedValue(PROP_USER_NAME,
                     properties.getProperty("user"));
               NamedValue[] aspectProps = new NamedValue[] {propAspect1, propAspect2, propAspect3};
               CMLAddAspect addAspect = new CMLAddAspect(ASPECT_OCR, aspectProps, null, "1");
               CML cml = new CML();
               cml.setCreate(new CMLCreate[]{create});
               cml.setAddAspect(new CMLAddAspect[]{addAspect});
      
         UpdateResult[] result = WebServiceFactory.getRepositoryService().update(cml);
             

               Reference newContentNode = result[0].getDestination();
               System.out.println("Ref new node " + newContentNode.getPath());
              
               FileInputStream fileInputStream = new FileInputStream(files.get(i));
               byte[] bytes = ContentUtils.convertToByteArray(fileInputStream);
             
               System.out.println("Add content. Bytes size " + bytes.length);
               Content content = contentService.write(newContentNode, Constants.PROP_CONTENT, bytes, contentFormat);
           
      
              
               System.out.println("Saved!!!! " + content.getUrl());



El problema es que cuando intentamos utilizar este código ahora con la versión 4.2f de Alfresco, nos da este error.


The Web Script /alfresco/api/RepositoryService has responded with a status of 404 - Not Found.

404 Description:   Requested resource is not available.

Message:   01050008 Script url network does not map to a Web Script.

Exception:   org.springframework.extensions.webscripts.WebScriptException - 01050008 Script url network does not map to a Web Script.


Y el error se produce justo cuando llamamos a la línea



UpdateResult[] result = WebServiceFactory.getRepositoryService().update(cml);


Alguna idea o enlace que explique cómo relizar esto ahora con la 4.2f

Gracias
14 REPLIES 14

angelborroy
Community Manager Community Manager
Community Manager
El problema ocurre en esta línea:
240:    checkMandatoryProperties(action, getActionDefinition());


Puedes solucionarlo de dos maneras:
1) Sobreescribiendo en tu clase el método
public void execute(Action action, NodeRef actionedUponNodeRef)
para que no realice la validación
2) Sobreescriendo en tu clase el método
public ActionDefinition getActionDefinition()
para incorporarle el parámetro
script-ref
Hyland Developer Evangelist

Perdona por seguir dándote la lata…

He sobrescrito el metodo <java>public void execute(Action action, NodeRef actionedUponNodeRef)</java> como me has dicho y comentado la linea
<java>checkMandatoryProperties(action, getActionDefinition());</java> pero me sigue dando el mismo error.
Debuggeando he comprobado que se llama al método <java>public void execute(Action action, NodeRef actionedUponNodeRef)</java> de la clase <java>ActionExecuterAbstractBase</java> antes
que al que he sobrescrito, y avanzando si que después entra en el que he sobrescrito.

No se si el error vendrá de ahí, de que no está ejecutando mi método sobrescrito de primeras… Smiley Frustrated

angelborroy
Community Manager Community Manager
Community Manager
¿Cómo lo has sobrescrito? ¿Has utilizado @Override con la misma notación del método?
Hyland Developer Evangelist

Si, en mi clase ProcessFraActionExecuter tal cual así


@Override
    public void execute(Action action, NodeRef actionedUponNodeRef) {

        // Check the mandatory properties
        //checkMandatoryProperties(action, getActionDefinition());

        // Only execute the action if this action is read only or the actioned upon node reference doesn't
        // have a lock applied for this user.
        boolean nodeIsLockedForThisUser = false;

        // null nodeRefs can't be locked and some actions can be run against 'null' nodes.
        // non-existent nodes can't be locked.
        if (!ignoreLock && actionedUponNodeRef != null && mlAwareNodeService.exists(actionedUponNodeRef)) {
            nodeIsLockedForThisUser = LockUtils.isLockedAndReadOnly(actionedUponNodeRef, lockService);
        }

        if (!nodeIsLockedForThisUser) {
            // Execute the implementation
            executeImpl(action, actionedUponNodeRef);
        } else {
            if (logger.isWarnEnabled() == true) {
                logger.warn("Action (" + action.getActionDefinitionName() +
                        ") ignored because actioned upon node (" + actionedUponNodeRef +
                        ") is locked.");
            }
        }
    }

angelborroy
Community Manager Community Manager
Community Manager
Puedes incluir trazas dentro de ese método para verificar si el problema está en otro punto. En principio, si entra por aquí debería funcionar según se espera.
Hyland Developer Evangelist
Getting started

Tags


Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.