AnsweredAssumed Answered

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

Question asked by jhoueix on Jan 15, 2008
Latest reply on Jan 29, 2008 by jhoueix
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!

Outcomes