m_manager = controller.getComponentController();
m_componentController = controller.getComponentController();
    public ComponentHandler(       Logger logger, CompositionController controller, ClassLoader classloader,       URI uri, ComponentProfile profile, Component parent )       throws ComponentException, PartHandlerNotFoundException, DelegationException    {        super();        if( null != parent )        {            addShutdownHook( this );        }        m_logger = logger;        m_controller = controller;        m_classloader = classloader;        m_profile = profile;        m_uri = uri;        m_parent = parent;        m_manager = controller.getComponentController();        m_class = loadComponentClass( classloader, profile );        m_type = Type.loadType( m_class );        m_lifestyle = profile.getLifestylePolicy();        m_interfaces = loadServiceClasses( classloader, m_type );        m_parts = new PartsTable( this );        m_context = new ContextMap( this, parent );        m_graph = resolveStateGraph( m_class );        m_state = m_graph;        m_configuration = m_profile.getConfiguration();        m_parameters = m_profile.getParameters();        //        // Get the set of parts within this part and add them as nested models         // within this model.        //        PartReference[] parts = profile.getParts();        for( int i=0; i<parts.length; i++ )        {            PartReference reference = parts[i];            String key = reference.getKey();            Part part = reference.getPart();            Component component = getPartsTable().addComponent( key, part );            m_dependencies.add( component );        }        //        // Build the context model.  The initial population of the context         // model is establised by reading in the set of PartReference instances        // contained within the ContextDirective.  Each part reference is located        // using a context entry key.  The part reference holds the part         // that will be used to construct a context entry.  The context         // entry getValue() operation is used to resolve the         // context value accessible via the context key.        //        ContextDirective context = profile.getContextDirective();        EntryDescriptor[] entries = m_type.getContext().getEntries();        for( int i=0; i<entries.length; i++ )        {            EntryDescriptor entry = entries[i];            final String key = entry.getKey();            PartReference reference = context.getPartReference( key );            if( null == reference )            {                if( entry.isRequired() )                {                    final String error =                      "Unresolved context entry."                      + "\nComponent: " + getURI()                      + "\nContext Key: " + key;                    throw new ComponentRuntimeException( error );                }            }            else            {                Part part = reference.getPart();                getContextMap().addEntry( key, part );            }        }    }