Problème lors de création d'un espace via l'API Alfresco

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

Problème lors de création d'un espace via l'API Alfresco

Bonjour à tous!

J'essaye actuellement de modifier la fonctionnalité d'import des espaces et des utilisateurs à partir d'un annuaire LDAP afin qu'ils correspondent à mes besoins.

J'essaye donc pour l'instant d'effectuer quelques tests qui consistent à créer un espace de test, comme le présente le code suivant (inspiré de d'un des exemple fournis dans le code source Alfresco).


  public static void createSpace () {
    try{
       System.out.println("\nCREATION SPACE");
        // initialise app content
        ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();
        // get registry of services
        ServiceRegistry serviceRegistry = (ServiceRegistry) ctx.getBean(ServiceRegistry.SERVICE_REGISTRY);
           doExample(serviceRegistry);
    }catch (Throwable e) {
         System.out.println("\nErreur: "+e.getMessage());
    }
  }
   
    private static void doExample(ServiceRegistry serviceRegistry) throws Exception {
       // authenticate
        AuthenticationService authenticationService = serviceRegistry.getAuthenticationService();
        authenticationService.authenticate("admin", "admin".toCharArray());
       
        // locate the company home node
        SearchService searchService = serviceRegistry.getSearchService();
        StoreRef storeRef = new StoreRef(StoreRef.PROTOCOL_WORKSPACE, "SpacesStore");
        ResultSet resultSet = searchService.query(storeRef, SearchService.LANGUAGE_LUCENE, "PATH:\"/app:company_home\"");
        NodeRef companyHome = resultSet.getNodeRef(0);

        // create new content node within company home
       
        // assign name
        String name = "Foundation API sample (" + System.currentTimeMillis() + ")";
        Map<QName, Serializable> contentProps = new HashMap<QName, Serializable>();
        contentProps.put(ContentModel.PROP_NAME, name);

        // create content node
        NodeService nodeService = serviceRegistry.getNodeService();
        ChildAssociationRef association = nodeService.createNode(companyHome,
              ContentModel.ASSOC_CONTAINS,
              QName.createQName(NamespaceService.CONTENT_MODEL_PREFIX, name),
                ContentModel.TYPE_CONTENT,
                contentProps);
        NodeRef content = association.getChildRef();
       
        // add titled aspect (for Web Client display)
        Map<QName, Serializable> titledProps = new HashMap<QName, Serializable>();
        titledProps.put(ContentModel.PROP_TITLE, name);
        titledProps.put(ContentModel.PROP_DESCRIPTION, name);
        nodeService.addAspect(content, ContentModel.ASPECT_TITLED, titledProps);
       
        // write some content to new node

        ContentService contentService = serviceRegistry.getContentService();
        ContentWriter writer = contentService.getWriter(content, ContentModel.PROP_CONTENT, true);
        writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
        writer.setEncoding("UTF-8");
        String text = "The quick brown fox jumps over the lazy dog";
        writer.putContent(text);
    }

La méthode createSpace() est appelé lors de l'import des données du LDAP. Malheureusement cette méthode ne fonctionne pas. En effet, la ligne "ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();" bloque étrangeemnt, et le reste de la fonction n'est jamais appelé.

Quelqu'un sait il comment faire pour récupérer le contexte correctement? Ou alors y a t il un autre moyen de créer des espaces dans Alfresco?

Merci d'avance de vos réponse!
3 Replies
pdubois
Active Member

Re: Problème lors de création d'un espace via l'API Alfresco

Bonjour,

je ne suis pas certain de comprendre le but général et la relation avec LDAP?
Meci d'expliciter un peut plus.

Cordiallement.
rivarola
Active Member

Re: Problème lors de création d'un espace via l'API Alfresco

Ton code n'essaie pas de créer un espace mais un contenu (TYPE_CONTENT). Le plus simple serait d'utiliser la méthode create du FileFolderService pour créer un espace. Il y a juste 3 paramètres (le parent, le nom, le type -> cm:folder dans ton cas) et il gère des contraintes d'intégrité en plus.
jhoueix
Member II

Re: Problème lors de création d'un espace via l'API Alfresco

Merci, c'est ce que j'ai utilisé et ça fonctionne.