cancel
Showing results for 
Search instead for 
Did you mean: 

[RESOLU] Problème WebScript

salah
Champ in-the-making
Champ in-the-making
Bonjour à tous.

Je suis débutant, j'essaie dans le cadre de mon stage de fin d'études de développer une application connectée à Alfresco, pour gérer différents documents de normes de facteurs humains (ergonomie, erreurs humaines…) pour la maintenance d'avions.

Je me suis inspiré du projet Opsoro pour développer mon interface, avec une arborescence pour les documents, un moteur de recherche etc…. Et en ce moment je suis entrain de m'attaquer aux webscripts, dont je n'ai pas encore bien cerné le fonctionnement.

J'ai un webscript simple pour commencer, qui doit récupérer la liste des documents stockés dans company_home sous forme de XML. mon webscript est bien installé, en allant sur localhost:8090/alfresco/service/ mon webscript apparait, mais quand je regarde dans GET /alfresco/service …le fichier XML généré ne contient qu'une seule balise, <items-list/> , alors que je devrais avoir un résultat comme ça :

<items-list>
<item name="Espace invité"/>
<item name="Dictionnaire de données"/>
<item name="Sites"/>
<item name="Espaces Utilisateurs"/>
<item name="Human Factors"/>
</items-list>

Je ne sais pas du tout pourquoi j'ai ce résultat.

Voici le code de ma classe Java.

import java.io.IOException;
import java.io.OutputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.alfresco.model.ContentModel;
import org.alfresco.service.cmr.model.FileFolderService;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.cmr.search.ResultSet;
import org.alfresco.service.cmr.search.SearchService;
import org.springframework.extensions.webscripts.AbstractWebScript;
import org.springframework.extensions.webscripts.Format;
import org.springframework.extensions.webscripts.WebScriptException;
import org.springframework.extensions.webscripts.WebScriptRequest;
import org.springframework.extensions.webscripts.WebScriptResponse;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class getdocument extends AbstractWebScript

{
    /**
     * Content type.
     */
    private static final String CONTENT_TYPE = Format.XML.mimetype() + ";charset=UTF-8";

    @Override
    public void execute(WebScriptRequest req, WebScriptResponse res) throws IOException
    {
        // TODO Auto-generated method stub
        String request = "PATH:\"/app:company_home/*\"";

        ResultSet resulset = searchService.query(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE,
            SearchService.LANGUAGE_LUCENE, request);

        try
        {
            res.setContentType(CONTENT_TYPE);
            OutputStream out = res.getOutputStream();

            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

            // root elements
            Document doc = docBuilder.newDocument();
            Element rootElement = doc.createElement("items-list");
            doc.appendChild(rootElement);

            for (NodeRef iNoderNodeRef : resulset.getNodeRefs())
            {
                Element elt = doc.createElement("item");
                elt.setAttribute("name", (String) nodeService.getProperty(iNoderNodeRef, ContentModel.PROP_NAME));
                rootElement.appendChild(elt);
            }

            // write the content on the XML stream
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource source = new DOMSource(doc);
            StreamResult result = new StreamResult(out);

            transformer.transform(source, result);
        }
        catch (ParserConfigurationException pce)
        {
            throw new WebScriptException("exception", pce);
        }
        catch (TransformerException tfe)
        {
            throw new WebScriptException("exception", tfe);
        }

    }

    private NodeService nodeService;
    private SearchService searchService;
    private FileFolderService fileFolderService;

    /**
     * @return the nodeService
     */
    public NodeService getNodeService()
    {
        return nodeService;
    }

    /**
     * @param nodeService
     *            the nodeService to set
     */
    public void setNodeService(NodeService nodeService)
    {
        this.nodeService = nodeService;
    }

    /**
     * @return the searchService
     */
    public SearchService getSearchService()
    {
        return searchService;
    }

    /**
     * @param searchService
     *            the searchService to set
     */
    public void setSearchService(SearchService searchService)
    {
        this.searchService = searchService;
    }

    /**
     * @return the fileFolderService
     */
    public FileFolderService getFileFolderService()
    {
        return fileFolderService;
    }

    /**
     * @param fileFolderService
     *            the fileFolderService to set
     */
    public void setFileFolderService(FileFolderService fileFolderService)
    {
        this.fileFolderService = fileFolderService;
    }

}

Merci beaucoup pour votre aide.
2 REPLIES 2

jayjayecl
Confirmed Champ
Confirmed Champ
Bonjour,

Avez-vous débuggué votre classe java pour identifier d'où vient l'erreur ?
Voir : http://alfresco-france.blogspot.fr/search/label/Debug

salah
Champ in-the-making
Champ in-the-making
Merci pour votre réponse.

J'ai finalement réglé le problème. J'avais une requête Lucene alors que mon Alfresco utilisait Solr. J'ai donc remis Lucene dans alfresco.global-proprieties et ça marche maintenant.
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.