Changeset 30381

Show
Ignore:
Timestamp:
02/20/08 21:12:09 (9 months ago)
Author:
gracinet
Message:

NXP-2098: made a new constructor using schema name only but
needing to look up Schema Manager

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • org.nuxeo.ecm.platform/branches/5.1/nuxeo-platform-directory-core/src/main/java/org/nuxeo/ecm/directory/memory/MemoryDirectory.java

    r30374 r30381  
    2020package org.nuxeo.ecm.directory.memory; 
    2121 
     22import java.util.Collection; 
     23import java.util.HashSet; 
    2224import java.util.Map; 
    2325import java.util.Set; 
    2426 
     27import org.nuxeo.ecm.core.schema.SchemaManager; 
     28import org.nuxeo.ecm.core.schema.TypeService; 
     29import org.nuxeo.ecm.core.schema.types.Field; 
     30import org.nuxeo.ecm.core.schema.types.Schema; 
    2531import org.nuxeo.ecm.directory.AbstractDirectory; 
     32import org.nuxeo.ecm.directory.DirectoryException; 
    2633import org.nuxeo.ecm.directory.IdGenerator; 
    2734import org.nuxeo.ecm.directory.Session; 
     35import org.nuxeo.runtime.api.Framework; 
    2836 
    2937/** 
     
    4654 
    4755    public MemoryDirectorySession session; 
     56 
     57    public MemoryDirectory(String name, String schema, String idField, String passwordField) throws DirectoryException { 
     58        this(name, schema, new HashSet<String>(), idField, passwordField); 
     59 
     60        SchemaManager sm = getSchemaManager(); 
     61        Schema sch = sm.getSchema(schema); 
     62        if (sch == null) { 
     63            throw new DirectoryException("Unknown schema :" + schema); 
     64        } 
     65        Collection<Field> fields = sch.getFields(); 
     66        for (Field f: fields) { 
     67            schemaSet.add(f.getName().getLocalName()); 
     68        } 
     69 
     70    } 
     71 
     72    public SchemaManager getSchemaManager() throws DirectoryException { 
     73        SchemaManager sm = null; 
     74        try { 
     75            sm = Framework.getService(SchemaManager.class); 
     76        } catch (Exception e) { 
     77            throw new DirectoryException("Unable to look up Core Type Service"); 
     78        } 
     79        if (sm == null) { 
     80            throw new DirectoryException("Unable to look up type service"); 
     81        } 
     82        return sm; 
     83    } 
    4884 
    4985    public MemoryDirectory(String name, String schemaName, Set<String> schemaSet, 
  • org.nuxeo.ecm.platform/branches/5.1/nuxeo-platform-directory-core/src/test/java/org/nuxeo/ecm/directory/memory/TestMemoryDirectory.java

    r30374 r30381  
    6565        deployBundle("org.nuxeo.ecm.core.schema"); 
    6666 
    67         // XXX GR fair enough, but why not using an xsd file? 
    68         SchemaImpl sch = new SchemaImpl(SCHEMA_NAME); 
    69         sch.addField(QName.valueOf("i"), new TypeRef<Type>(SchemaNames.BUILTIN, StringType.ID)); 
    70         sch.addField(QName.valueOf("pw"), new TypeRef<Type>(SchemaNames.BUILTIN, StringType.ID)); 
    71         sch.addField(QName.valueOf("a"), new TypeRef<Type>(SchemaNames.BUILTIN, StringType.ID)); 
    72         sch.addField(QName.valueOf("b"), new TypeRef<Type>(SchemaNames.BUILTIN, StringType.ID)); 
    73         sch.addField(QName.valueOf("x"), new TypeRef<Type>(SchemaNames.BUILTIN, StringType.ID)); 
    74         Framework.getService(SchemaManager.class).registerSchema(sch); 
     67        createSchema(); 
    7568 
    7669        Set<String> schemaSet = new HashSet<String>(Arrays.asList("i", "pw", 
     
    8881    } 
    8982 
     83    public void createSchema() throws Exception { 
     84        // XXX GR fair enough, but why not using an xsd file? 
     85        SchemaImpl sch = new SchemaImpl(SCHEMA_NAME); 
     86        sch.addField(QName.valueOf("i"), new TypeRef<Type>(SchemaNames.BUILTIN, StringType.ID)); 
     87        sch.addField(QName.valueOf("pw"), new TypeRef<Type>(SchemaNames.BUILTIN, StringType.ID)); 
     88        sch.addField(QName.valueOf("a"), new TypeRef<Type>(SchemaNames.BUILTIN, StringType.ID)); 
     89        sch.addField(QName.valueOf("b"), new TypeRef<Type>(SchemaNames.BUILTIN, StringType.ID)); 
     90        sch.addField(QName.valueOf("x"), new TypeRef<Type>(SchemaNames.BUILTIN, StringType.ID)); 
     91        Framework.getService(SchemaManager.class).registerSchema(sch); 
     92    } 
     93 
     94    public void testSchemaIntrospection() throws Exception { 
     95        MemoryDirectory md = new MemoryDirectory("adir", SCHEMA_NAME, "i", "pw"); 
     96        assertEquals(new HashSet<String>(Arrays.asList("i", "pw", "a", "b", "x")), 
     97                md.schemaSet); 
     98    } 
     99 
    90100    public void testCreate() throws Exception { 
    91101        // created in setUp