cancel
Showing results for 
Search instead for 
Did you mean: 

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

jhoueix
Champ in-the-making
Champ in-the-making
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 3

pdubois
Champ on-the-rise
Champ on-the-rise
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
Champ on-the-rise
Champ on-the-rise
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
Champ in-the-making
Champ in-the-making
Merci, c'est ce que j'ai utilisé et ça fonctionne.
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.