[RESOLU] Problème WebScript

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

[RESOLU] Problème WebScript

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
jayjayecl
Active Member II

Re: [RESOLU] Problème WebScript

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
Member II

Re: [RESOLU] Problème WebScript

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.