proyal 2002/07/31 13:37:27 Added: phyre/src/java/org/apache/avalon/phyre/container Container.roles ContentPanelHelper.java DefaultPhyreContainer.java DefaultSubContext.java NavigationPanelHelper.java PhyreContainer.java SubContext.java Log: Phyre container. Revision Changes Path 1.1 jakarta-avalon-apps/phyre/src/java/org/apache/avalon/phyre/container/Container.roles Index: Container.roles =================================================================== <?xml version="1.0"?> <roles> <role name="navigation-component"> <component shorthand="context-navigation" class="org.apache.avalon.phyre.panels.ContextNavigationPanel" handler="org.apache.excalibur.fortress.handler.ThreadSafeComponentHandler"/> </role> <role name="content-component"> <component shorthand="mbean-panel" class="org.apache.avalon.phyre.panels.MBeanPanel" handler="org.apache.excalibur.fortress.handler.FactoryComponentHandler"/> <component shorthand="grid-panel" class="org.apache.avalon.phyre.panels.grid.GridPanel" handler="org.apache.excalibur.fortress.handler.FactoryComponentHandler"/> <component shorthand="panel" class="org.apache.avalon.phyre.panels.LogEnabledJPanel" handler="org.apache.excalibur.fortress.handler.FactoryComponentHandler"/> </role> <role name="org.apache.avalon.phyre.actions.ActionFactory"> <component shorthand="action-factory" class="org.apache.avalon.phyre.actions.DefaultActionFactory" handler="org.apache.excalibur.fortress.handler.ThreadSafeComponentHandler"/> </role> <role name="org.apache.avalon.phyre.container.SubContext"> <component shorthand="subcontext" class="org.apache.avalon.phyre.container.DefaultSubContext" handler="org.apache.excalibur.fortress.handler.ThreadSafeComponentHandler"/> </role> </roles> 1.1 jakarta-avalon-apps/phyre/src/java/org/apache/avalon/phyre/container/ContentPanelHelper.java Index: ContentPanelHelper.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE.txt file. */ package org.apache.avalon.phyre.container; import java.awt.Component; /** * @author <a href="mailto:[EMAIL PROTECTED]">Peter Royal</a> */ public interface ContentPanelHelper { String CONTEXT = "content-panel-helper"; void setContentPanel( final Component panel ); } 1.1 jakarta-avalon-apps/phyre/src/java/org/apache/avalon/phyre/container/DefaultPhyreContainer.java Index: DefaultPhyreContainer.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE.txt file. */ package org.apache.avalon.phyre.container; import java.awt.Component; import org.apache.avalon.framework.context.Context; import org.apache.avalon.framework.context.ContextException; import org.apache.avalon.framework.service.ServiceException; import org.apache.excalibur.fortress.container.DefaultContainer; import org.apache.excalibur.fortress.handler.ComponentHandler; /** * @author <a href="mailto:[EMAIL PROTECTED]">Peter Royal</a> */ public class DefaultPhyreContainer extends DefaultContainer implements PhyreContainer { private NavigationPanelHelper m_navigationPanelHelper; private ContentPanelHelper m_contentPanelHelper; public void contextualize( Context containerContext ) throws ContextException { super.contextualize( containerContext ); m_navigationPanelHelper = ( NavigationPanelHelper ) containerContext.get( NavigationPanelHelper.CONTEXT ); m_contentPanelHelper = ( ContentPanelHelper ) containerContext.get( ContentPanelHelper.CONTEXT ); } // public void initialize() throws Exception // { // super.initialize(); // // m_navigationPanelHelper.setNavigationPanel( getNavigationComponent() ); // m_contentPanelHelper.setContentPanel( getDefaultContentComponent() ); // } public Component getDefaultContentComponent() throws ServiceException { return getComponent( CONTENT_ROLE, "default" ); } private Component getComponent( final String role, final String hint ) throws ServiceException { final ComponentHandler handler = ( ComponentHandler ) get( role, hint ); try { if( !handler.isInitialized() ) { handler.initialize(); } return ( Component ) handler.get(); } catch( Exception e ) { throw new ServiceException( role, "Could not return a reference to the Component", e ); } } public Component getNavigationComponent() throws ServiceException { return getComponent( NAVIGATION_ROLE, null ); } } 1.1 jakarta-avalon-apps/phyre/src/java/org/apache/avalon/phyre/container/DefaultSubContext.java Index: DefaultSubContext.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE.txt file. */ package org.apache.avalon.phyre.container; import javax.management.MBeanAttributeInfo; import org.apache.avalon.framework.activity.Disposable; import org.apache.avalon.framework.configuration.Configurable; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; import org.apache.avalon.framework.context.Context; import org.apache.avalon.framework.context.ContextException; import org.apache.avalon.framework.context.Contextualizable; import org.apache.avalon.framework.context.DefaultContext; import org.apache.avalon.framework.logger.AbstractLogEnabled; import org.apache.avalon.framework.service.ServiceException; import org.apache.avalon.framework.service.ServiceManager; import org.apache.avalon.framework.service.Serviceable; import org.apache.avalon.phyre.mbean.MBeanAccessor; import org.apache.excalibur.fortress.ContainerManager; import org.apache.excalibur.fortress.DefaultContainerManager; import org.apache.excalibur.fortress.util.ContextBuilder; import org.apache.excalibur.fortress.util.ContextManager; /** * @author <a href="mailto:[EMAIL PROTECTED]">Peter Royal</a> */ public class DefaultSubContext extends AbstractLogEnabled implements SubContext, Contextualizable, Configurable, Serviceable, Disposable { private Context m_context; private ServiceManager m_manager; private NavigationPanelHelper m_navPanelHelper; private ContentPanelHelper m_contentPanelHelper; private String m_configLocation; private ContextManager m_contextManager; private ContainerManager m_containerManager; public void contextualize( Context context ) throws ContextException { m_context = context; m_contentPanelHelper = ( ContentPanelHelper ) context.get( ContentPanelHelper.CONTEXT ); } public void service( ServiceManager manager ) throws ServiceException { m_manager = manager; m_navPanelHelper = ( NavigationPanelHelper ) manager.lookup( PhyreContainer.NAVIGATION_ROLE ); } public void configure( Configuration configuration ) throws ConfigurationException { m_configLocation = configuration.getChild( "config" ).getValue(); } private Context createContext( final MBeanAccessor contextMBean ) throws Exception { final DefaultContext ctx = new DefaultContext( m_context ); if( null != contextMBean ) { final MBeanAttributeInfo[] infos = contextMBean.info().getAttributes(); for( int i = 0; i < infos.length; i++ ) { ctx.put( infos[i].getName(), contextMBean.get( infos[i].getName() ) ); } } ctx.put( NavigationPanelHelper.CONTEXT, m_navPanelHelper ); ctx.makeReadOnly(); return ctx; } private Context createContainerContext( final Context parent ) { final ContextBuilder builder = new ContextBuilder( parent ); builder.setServiceManager( m_manager ); builder.setContainerConfiguration( m_configLocation ); return builder.getContext(); } public void load( final MBeanAccessor contextMBean ) throws Exception { dispose(); m_contextManager = new ContextManager( createContainerContext( createContext( contextMBean ) ), getLogger() ); m_contextManager.initialize(); m_containerManager = new DefaultContainerManager( m_contextManager, getLogger() ); m_containerManager.initialize(); final PhyreContainer container = ( PhyreContainer ) m_containerManager.getContainer(); m_navPanelHelper.setNavigationPanel( container.getNavigationComponent() ); m_contentPanelHelper.setContentPanel( container.getDefaultContentComponent() ); } public void dispose() { if( m_containerManager != null ) { m_containerManager.dispose(); } if( m_contextManager != null ) { m_contextManager.dispose(); } } } 1.1 jakarta-avalon-apps/phyre/src/java/org/apache/avalon/phyre/container/NavigationPanelHelper.java Index: NavigationPanelHelper.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE.txt file. */ package org.apache.avalon.phyre.container; import java.awt.Component; /** * @author <a href="mailto:[EMAIL PROTECTED]">Peter Royal</a> */ public interface NavigationPanelHelper { String CONTEXT = "navigation-panel-helper"; void setNavigationPanel( final Component panel ); } 1.1 jakarta-avalon-apps/phyre/src/java/org/apache/avalon/phyre/container/PhyreContainer.java Index: PhyreContainer.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE.txt file. */ package org.apache.avalon.phyre.container; import java.awt.Component; import org.apache.avalon.framework.service.ServiceException; /** * @author <a href="mailto:[EMAIL PROTECTED]">Peter Royal</a> */ public interface PhyreContainer { String NAVIGATION_ROLE = "navigation-component"; String CONTENT_ROLE = "content-component"; Component getNavigationComponent() throws ServiceException; Component getDefaultContentComponent() throws ServiceException; } 1.1 jakarta-avalon-apps/phyre/src/java/org/apache/avalon/phyre/container/SubContext.java Index: SubContext.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE.txt file. */ package org.apache.avalon.phyre.container; import org.apache.avalon.phyre.mbean.MBeanAccessor; /** * @author <a href="mailto:[EMAIL PROTECTED]">Peter Royal</a> */ public interface SubContext { String ROLE = SubContext.class.getName(); void load( final MBeanAccessor contextMBean ) throws Exception; }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>