You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2003/07/18 16:41:46 UTC

cvs commit: cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/coplet/impl DefaultCopletFactory.java

cziegeler    2003/07/18 07:41:46

  Modified:    src/blocks/portal/conf portal.xconf
               src/blocks/portal/java/org/apache/cocoon/portal/layout/impl
                        DefaultLayoutFactory.java
               src/blocks/portal/java/org/apache/cocoon/portal/source
                        CopletSourceFactory.java
               src/blocks/portal/samples/skins/common/styles window.xsl
               src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl
                        SizingAspect.java TabContentAspect.java
                        RemovableAspect.java FullScreenCopletAspect.java
                        AbstractCompositeAspect.java
               src/blocks/portal/java/org/apache/cocoon/portal/acting
                        LoginAction.java LogoutAction.java
               src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/impl
                        DefaultLinkRenderer.java AbstractRenderer.java
               src/blocks/portal/java/org/apache/cocoon/portal/event/aspect/impl
                        AbstractContentEventAspect.java
                        ActionCounterEventAspect.java
                        FullScreenCopletEventAspect.java
               src/blocks/portal/java/org/apache/cocoon/portal/profile
                        ProfileManager.java
               src/blocks/portal/java/org/apache/cocoon/portal/profile/impl
                        AbstractProfileManager.java
                        StaticProfileManager.java
                        AbstractUserProfileManager.java
               src/blocks/portal/java/org/apache/cocoon/portal
                        PortalManager.java PortalService.java
               src/blocks/portal/java/org/apache/cocoon/portal/transformation
                        AbstractCopletTransformer.java
               src/blocks/portal/java/org/apache/cocoon/portal/impl
                        PortalManagerImpl.java PortalServiceImpl.java
               src/blocks/portal/samples/skins/basic/styles window.xsl
               src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input
                        CopletModule.java
               src/blocks/portal/java/org/apache/cocoon/portal/coplet/impl
                        DefaultCopletFactory.java
  Added:       src/blocks/portal/conf portal.samplesxconf
                        authportal.samplesxconf
               src/blocks/portal/java/org/apache/cocoon/portal
                        PortalComponentManager.java
               src/blocks/portal/java/org/apache/cocoon/portal/impl
                        DefaultPortalComponentManager.java
  Log:
  Changing component handling in the portal
  Fixing full-screen coplet bug
  Separating sample configuration from framework configuration
  
  Revision  Changes    Path
  1.20      +6 -135    cocoon-2.1/src/blocks/portal/conf/portal.xconf
  
  Index: portal.xconf
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/conf/portal.xconf,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- portal.xconf	10 Jul 2003 13:17:06 -0000	1.19
  +++ portal.xconf	18 Jul 2003 14:41:44 -0000	1.20
  @@ -19,17 +19,19 @@
       </event-aspects>
    </component>
   
  - <component class="org.apache.cocoon.portal.profile.impl.AuthenticationProfileManager" logger="portal" role="org.apache.cocoon.portal.profile.ProfileManager">
  - </component>
  -
    <component class="org.apache.cocoon.portal.impl.PortalManagerImpl" logger="portal" role="org.apache.cocoon.portal.PortalManager"/>
   
  - <component class="org.apache.cocoon.portal.impl.PortalServiceImpl" logger="portal" role="org.apache.cocoon.portal.PortalService"/>
  + <component class="org.apache.cocoon.portal.impl.PortalServiceImpl" logger="portal" role="org.apache.cocoon.portal.PortalService">
  +   <portals>
  +     <!-- Configure your portals here: -->
  +   </portals>
  + </component>
   
    <component class="org.apache.cocoon.portal.impl.DefaultLinkService" logger="portal" role="org.apache.cocoon.portal.LinkService"/>
   
    <component class="org.apache.cocoon.portal.event.impl.DefaultEventConverter" logger="portal" role="org.apache.cocoon.portal.event.EventConverter">
    </component>
  +
    <!-- Coplet Adapter configuration -->
    <component class="org.apache.cocoon.components.ExtendedComponentSelector" role="org.apache.cocoon.portal.coplet.adapter.CopletAdapterSelector">
        <coplet-adapter name="uri" class="org.apache.cocoon.portal.coplet.adapter.impl.URICopletAdapter" logger="portal"/>
  @@ -61,69 +63,6 @@
       <aspect name="xslt" class="org.apache.cocoon.portal.layout.renderer.aspect.impl.XSLTAspect"/>
    </component>
   
  - <!-- Renderer configuration -->
  - <component class="org.apache.cocoon.components.ExtendedComponentSelector" role="org.apache.cocoon.portal.layout.renderer.RendererSelector">
  -     <renderer name="column" class="org.apache.cocoon.portal.layout.renderer.impl.AspectRenderer" logger="portal" >
  -         <aspects>
  -             <aspect type="xslt">
  -                 <parameter name="style" value="{global:skin}styles/column.xsl"/>
  -             </aspect>
  -             <aspect type="composite-content">
  -                 <parameter name="tag-name" value="column-layout"/>
  -             </aspect>
  -         </aspects>
  -     </renderer>
  -     <renderer name="row" class="org.apache.cocoon.portal.layout.renderer.impl.AspectRenderer" logger="portal" >
  -         <aspects>
  -             <aspect type="xslt">
  -                 <parameter name="style" value="{global:skin}styles/row.xsl"/>
  -             </aspect>
  -             <aspect type="composite-content">
  -                 <parameter name="tag-name" value="row-layout"/>
  -             </aspect>
  -         </aspects>
  -     </renderer>
  -     <renderer name="tab" class="org.apache.cocoon.portal.layout.renderer.impl.AspectRenderer" logger="portal" >
  -         <aspects>
  -             <aspect type="xslt">
  -                 <parameter name="style" value="{global:skin}styles/tab.xsl"/>
  -             </aspect>
  -             <aspect type="tab-content">
  -                 <parameter name="tag-name" value="tab-layout"/>
  -                 <parameter name="store"    value="session"/>
  -             </aspect>
  -         </aspects>
  -     </renderer>
  -     <renderer name="window" class="org.apache.cocoon.portal.layout.renderer.impl.AspectRenderer" logger="portal" >
  -         <aspects>
  -             <aspect type="xslt">
  -                 <parameter name="style" value="{global:skin}styles/window.xsl"/>
  -             </aspect>
  -             <aspect type="window">
  -                 <parameter name="tag-name" value="window"/>
  -             </aspect>
  -             <aspect type="coplet-removing"/>
  -             <aspect type="coplet-full-screen"/>
  -             <aspect type="coplet-sizing"/>
  -             <aspect type="coplet-cinclude"/>
  -         </aspects>
  -     </renderer>
  -     <renderer name="frame" class="org.apache.cocoon.portal.layout.renderer.impl.AspectRenderer" logger="portal" >
  -         <aspects>
  -             <aspect type="frame">
  -                 <parameter name="store" value="request"/>
  -             </aspect>
  -         </aspects>
  -     </renderer>
  -     <renderer name="nowindow" class="org.apache.cocoon.portal.layout.renderer.impl.AspectRenderer" logger="portal" >
  -         <aspects>
  -             <aspect type="coplet"/>
  -         </aspects>
  -     </renderer>
  -     <renderer name="link" class="org.apache.cocoon.portal.layout.renderer.impl.DefaultLinkRenderer" logger="portal"/>
  - </component>
  - 
  -
    <!-- Aspect Storage configuration -->
    <component class="org.apache.cocoon.components.ExtendedComponentSelector" 
               role="org.apache.cocoon.portal.aspect.AspectDataStoreSelector">
  @@ -131,74 +70,6 @@
       <store name="session" class="org.apache.cocoon.portal.aspect.impl.SessionAspectDataStore"/>
       <store name="persistent" class="org.apache.cocoon.portal.aspect.impl.PersistentAspectDataStore"/>
    </component>
  -
  -<!-- Layout factory configuration -->
  -<component class="org.apache.cocoon.portal.layout.impl.DefaultLayoutFactory"
  -           role="org.apache.cocoon.portal.layout.LayoutFactory">
  -    <layouts>
  -        <layout name="column" 
  -                class="org.apache.cocoon.portal.layout.impl.CompositeLayout">
  -            <renderers default="column">
  -                <renderer name="column"/>
  -            </renderers>
  -        </layout>
  -        <layout name="row" 
  -                class="org.apache.cocoon.portal.layout.impl.CompositeLayout">
  -            <renderers default="row">
  -                <renderer name="row"/>
  -            </renderers>
  -        </layout>
  -        <layout name="tab" 
  -                class="org.apache.cocoon.portal.layout.impl.CompositeLayout">
  -            <renderers default="tab">
  -                <renderer name="tab"/>
  -            </renderers>
  -        </layout>
  -        <layout name="frame" 
  -                class="org.apache.cocoon.portal.layout.impl.FrameLayout"
  -                create-id="true">
  -            <renderers default="frame">
  -                <renderer name="frame"/>
  -            </renderers>
  -        </layout>
  -        <layout name="coplet" 
  -                class="org.apache.cocoon.portal.layout.impl.CopletLayout">
  -            <renderers default="window">
  -                <renderer name="window"/>
  -            </renderers>
  -        </layout>
  -    </layouts>
  -</component>
  -
  -<!-- Coplet factory configuration -->
  -<component class="org.apache.cocoon.portal.coplet.impl.DefaultCopletFactory"
  -           role="org.apache.cocoon.portal.coplet.CopletFactory">
  -    <coplets>
  -        <coplet name="standard"
  -                class="org.apache.cocoon.portal.coplet.CopletData">
  -            <coplet-data-aspects>
  -                <aspect name="sizable"
  -                        class="java.lang.Boolean"
  -                        store="persistent"
  -                        auto-create="true"
  -                        value="true"/>
  -                <aspect name="mandatory"
  -                        class="java.lang.Boolean"
  -                        store="persistent"
  -                        auto-create="true"
  -                        value="false"/>
  -            </coplet-data-aspects>
  -            
  -            <coplet-instance-data-aspects>
  -                <aspect name="size"
  -                        class="java.lang.Integer"
  -                        store="session"
  -                        auto-create="true"
  -                        value="1"/>
  -            </coplet-instance-data-aspects>
  -        </coplet>
  -    </coplets>
  -</component>
   
   <component class="org.apache.cocoon.components.persistance.CastorSourceConverter" role="org.apache.cocoon.components.persistance.CastorSourceConverter">
    	<mapping-source source="layout">context://samples/portal/profiles/mapping/layout.xml</mapping-source>
  
  
  
  1.1                  cocoon-2.1/src/blocks/portal/conf/portal.samplesxconf
  
  Index: portal.samplesxconf
  ===================================================================
  <?xml version="1.0"?>
  
  <samplesxconf xpath="/cocoon" unless="component[@role='org.apache.cocoon.portal.profile.ProfileManager']">
  
   <component class="org.apache.cocoon.portal.profile.impl.AuthenticationProfileManager" logger="portal" role="org.apache.cocoon.portal.profile.ProfileManager/Auth">
   </component>
  
   <!-- Renderer configuration -->
   <component class="org.apache.cocoon.components.ExtendedComponentSelector" role="org.apache.cocoon.portal.layout.renderer.RendererSelector">
       <renderer name="column" class="org.apache.cocoon.portal.layout.renderer.impl.AspectRenderer" logger="portal" >
           <aspects>
               <aspect type="xslt">
                   <parameter name="style" value="{global:skin}styles/column.xsl"/>
               </aspect>
               <aspect type="composite-content">
                   <parameter name="tag-name" value="column-layout"/>
               </aspect>
           </aspects>
       </renderer>
       <renderer name="row" class="org.apache.cocoon.portal.layout.renderer.impl.AspectRenderer" logger="portal" >
           <aspects>
               <aspect type="xslt">
                   <parameter name="style" value="{global:skin}styles/row.xsl"/>
               </aspect>
               <aspect type="composite-content">
                   <parameter name="tag-name" value="row-layout"/>
               </aspect>
           </aspects>
       </renderer>
       <renderer name="tab" class="org.apache.cocoon.portal.layout.renderer.impl.AspectRenderer" logger="portal" >
           <aspects>
               <aspect type="xslt">
                   <parameter name="style" value="{global:skin}styles/tab.xsl"/>
               </aspect>
               <aspect type="tab-content">
                   <parameter name="tag-name" value="tab-layout"/>
                   <parameter name="store"    value="session"/>
               </aspect>
           </aspects>
       </renderer>
       <renderer name="window" class="org.apache.cocoon.portal.layout.renderer.impl.AspectRenderer" logger="portal" >
           <aspects>
               <aspect type="xslt">
                   <parameter name="style" value="{global:skin}styles/window.xsl"/>
               </aspect>
               <aspect type="window">
                   <parameter name="tag-name" value="window"/>
               </aspect>
               <aspect type="coplet-removing"/>
               <aspect type="coplet-full-screen"/>
               <aspect type="coplet-sizing"/>
               <aspect type="coplet-cinclude"/>
           </aspects>
       </renderer>
       <renderer name="frame" class="org.apache.cocoon.portal.layout.renderer.impl.AspectRenderer" logger="portal" >
           <aspects>
               <aspect type="frame">
                   <parameter name="store" value="request"/>
               </aspect>
           </aspects>
       </renderer>
       <renderer name="nowindow" class="org.apache.cocoon.portal.layout.renderer.impl.AspectRenderer" logger="portal" >
           <aspects>
               <aspect type="coplet"/>
           </aspects>
       </renderer>
       <renderer name="link" class="org.apache.cocoon.portal.layout.renderer.impl.DefaultLinkRenderer" logger="portal"/>
   </component>
   
  <!-- Layout factory configuration -->
  <component class="org.apache.cocoon.portal.layout.impl.DefaultLayoutFactory"
             role="org.apache.cocoon.portal.layout.LayoutFactory">
      <layouts>
          <layout name="column" 
                  class="org.apache.cocoon.portal.layout.impl.CompositeLayout">
              <renderers default="column">
                  <renderer name="column"/>
              </renderers>
          </layout>
          <layout name="row" 
                  class="org.apache.cocoon.portal.layout.impl.CompositeLayout">
              <renderers default="row">
                  <renderer name="row"/>
              </renderers>
          </layout>
          <layout name="tab" 
                  class="org.apache.cocoon.portal.layout.impl.CompositeLayout">
              <renderers default="tab">
                  <renderer name="tab"/>
              </renderers>
          </layout>
          <layout name="frame" 
                  class="org.apache.cocoon.portal.layout.impl.FrameLayout"
                  create-id="true">
              <renderers default="frame">
                  <renderer name="frame"/>
              </renderers>
          </layout>
          <layout name="coplet" 
                  class="org.apache.cocoon.portal.layout.impl.CopletLayout">
              <renderers default="window">
                  <renderer name="window"/>
              </renderers>
          </layout>
      </layouts>
  </component>
  
  <!-- Coplet factory configuration -->
  <component class="org.apache.cocoon.portal.coplet.impl.DefaultCopletFactory"
             role="org.apache.cocoon.portal.coplet.CopletFactory">
      <coplets>
          <coplet name="standard"
                  class="org.apache.cocoon.portal.coplet.CopletData">
              <coplet-data-aspects>
                  <aspect name="sizable"
                          class="java.lang.Boolean"
                          store="persistent"
                          auto-create="true"
                          value="true"/>
                  <aspect name="mandatory"
                          class="java.lang.Boolean"
                          store="persistent"
                          auto-create="true"
                          value="false"/>
              </coplet-data-aspects>
              
              <coplet-instance-data-aspects>
                  <aspect name="size"
                          class="java.lang.Integer"
                          store="session"
                          auto-create="true"
                          value="1"/>
              </coplet-instance-data-aspects>
          </coplet>
      </coplets>
  </component>
  
  </samplesxconf>
  
  
  
  1.1                  cocoon-2.1/src/blocks/portal/conf/authportal.samplesxconf
  
  Index: authportal.samplesxconf
  ===================================================================
  <?xml version="1.0"?>
  
  <samplesxconf xpath="/cocoon/*[@role='org.apache.cocoon.portal.PortalService']/portals" unless="portal[@name='portal']">
  
   <portal name="portal">
     <profile-manager>org.apache.cocoon.portal.profile.ProfileManager/Auth</profile-manager>
   </portal>
  
  </samplesxconf>
  
  
  
  1.13      +53 -43    cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutFactory.java
  
  Index: DefaultLayoutFactory.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutFactory.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- DefaultLayoutFactory.java	14 Jun 2003 17:55:43 -0000	1.12
  +++ DefaultLayoutFactory.java	18 Jul 2003 14:41:44 -0000	1.13
  @@ -70,6 +70,8 @@
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.avalon.framework.thread.ThreadSafe;
   import org.apache.cocoon.ProcessingException;
  +import org.apache.cocoon.portal.PortalComponentManager;
  +import org.apache.cocoon.portal.PortalService;
   import org.apache.cocoon.portal.aspect.AspectDataHandler;
   import org.apache.cocoon.portal.aspect.AspectDataStore;
   import org.apache.cocoon.portal.aspect.AspectDescription;
  @@ -82,12 +84,11 @@
   import org.apache.cocoon.portal.event.LayoutEvent;
   import org.apache.cocoon.portal.event.Subscriber;
   import org.apache.cocoon.portal.event.impl.LayoutRemoveEvent;
  -import org.apache.cocoon.portal.layout.*;
  +import org.apache.cocoon.portal.layout.CompositeLayout;
   import org.apache.cocoon.portal.layout.Item;
   import org.apache.cocoon.portal.layout.Layout;
   import org.apache.cocoon.portal.layout.LayoutFactory;
   import org.apache.cocoon.portal.layout.renderer.Renderer;
  -import org.apache.cocoon.portal.profile.ProfileManager;
   import org.apache.cocoon.util.ClassUtils;
   
   /**
  @@ -116,6 +117,8 @@
       
       protected ComponentManager manager;
       
  +    protected Configuration[] layoutsConf;
  +    
       /** 
        * Configure a layout
        */
  @@ -162,32 +165,26 @@
               }
           }
           // now query all configured renderers for their aspects
  -        ComponentSelector rendererSelector = null;
  +        PortalService service = null;
           try {
  -            rendererSelector = (ComponentSelector)this.manager.lookup(Renderer.ROLE+"Selector");
  +            service = (PortalService)this.manager.lookup(PortalService.ROLE);
  +            PortalComponentManager pcManager = service.getComponentManager();
               
               Iterator rendererIterator = desc.getRendererNames();
               while (rendererIterator.hasNext()) {
                   final String rendererName = (String)rendererIterator.next();
  -                Renderer renderer = null;
  -                try { 
  -                    renderer = (Renderer) rendererSelector.select( rendererName );
  -                    
  -                    Iterator aspectIterator = renderer.getAspectDescriptions();
  -                    while (aspectIterator.hasNext()) {
  -                        final AspectDescription adesc = (AspectDescription) aspectIterator.next();
  -                        desc.addAspectDescription( adesc );
  -                    }
  -                } catch (ComponentException ce ) {
  -                    throw new ConfigurationException("Unable to lookup renderer '" + rendererName + "'", ce);
  -                } finally {
  -                    rendererSelector.release( renderer );
  +                Renderer renderer = pcManager.getRenderer( rendererName );
  +                
  +                Iterator aspectIterator = renderer.getAspectDescriptions();
  +                while (aspectIterator.hasNext()) {
  +                    final AspectDescription adesc = (AspectDescription) aspectIterator.next();
  +                    desc.addAspectDescription( adesc );
                   }
               }
           } catch (ComponentException ce ) {
               throw new ConfigurationException("Unable to lookup renderer selector.", ce);
           } finally {
  -            this.manager.release( rendererSelector );
  +            this.manager.release( service );
           }
           
           // set the aspect data handler
  @@ -201,17 +198,33 @@
        */
       public void configure(Configuration configuration) 
       throws ConfigurationException {
  -        final Configuration[] layoutsConf = configuration.getChild("layouts").getChildren("layout");
  -        if ( layoutsConf != null ) {
  -            for(int i=0; i < layoutsConf.length; i++ ) {
  -                this.configureLayout( layoutsConf[i] );
  +        this.layoutsConf = configuration.getChild("layouts").getChildren("layout");
  +    }
  +
  +    protected void init() {
  +        // FIXME when we switch to another container we can remove
  +        //        the lazy evaluation
  +        if ( this.layoutsConf != null ) {
  +            synchronized (this) {
  +                if ( this.layoutsConf != null ) {
  +                    for(int i=0; i < layoutsConf.length; i++ ) {
  +                        try {
  +                            this.configureLayout( layoutsConf[i] );
  +                        } catch (ConfigurationException ce) {
  +                            throw new CascadingRuntimeException("Unable to configure layout.", ce);
  +                        }
  +                    }
  +                    this.layoutsConf = null;
  +                }
               }
           }
       }
  -
  +    
       public void prepareLayout(Layout layout) 
       throws ProcessingException {
           if ( layout != null ) {
  +            
  +            this.init();
        
               final String layoutName = layout.getName();
               if ( layoutName == null ) {
  @@ -240,6 +253,8 @@
   
       public Layout newInstance(String layoutName) 
       throws ProcessingException {
  +        this.init();
  +        
           Object[] o = (Object[]) this.layouts.get( layoutName );
               
           if ( o == null ) {
  @@ -265,19 +280,20 @@
           layout.setDescription( layoutDescription );
           layout.setAspectDataHandler((AspectDataHandler)o[1]);
   
  -        ProfileManager profileManager = null;
  +        PortalService service = null;
           try {
  -            profileManager = (ProfileManager)this.manager.lookup(ProfileManager.ROLE);
  -            profileManager.register(layout);
  +            service = (PortalService)this.manager.lookup(PortalService.ROLE);
  +            service.getComponentManager().getProfileManager().register(layout);
           } catch (ComponentException ce) {
               throw new ProcessingException("Unable to lookup profile manager.", ce);
           } finally {
  -            this.manager.release( profileManager );
  +            this.manager.release( service );
           }
           return layout;
       }
       
       public List getLayoutDescriptions() {
  +        this.init();
           return this.descriptions;
       }
   
  @@ -356,6 +372,7 @@
       public void remove(Layout layout) 
       throws ProcessingException {
           if ( layout != null ) {
  +            this.init();
               if ( layout instanceof CompositeLayout ) {
                   Iterator itemIterator = ((CompositeLayout)layout).getItems().iterator();
                   while ( itemIterator.hasNext() ) {
  @@ -367,25 +384,18 @@
                   parent.getParent().removeItem( parent );
               }
               
  -            if ( layout instanceof CopletLayout ) {
  -                CopletFactory factory = null;
  -                try {
  -                    factory = (CopletFactory)this.manager.lookup(CopletFactory.ROLE);
  +            PortalService service = null;
  +            try {
  +                service = (PortalService)this.manager.lookup(PortalService.ROLE);
  +                if ( layout instanceof CopletLayout ) {
  +                    CopletFactory factory = service.getComponentManager().getCopletFactory();
                       factory.remove( ((CopletLayout)layout).getCopletInstanceData());
  -                } catch (ComponentException ce) {
  -                    throw new ProcessingException("Unable to lookup coplet factory.", ce);
  -                } finally {
  -                    this.manager.release( (Component)factory );
                   }
  -            }
  -            ProfileManager profileManager = null;
  -            try {
  -                profileManager = (ProfileManager)this.manager.lookup(ProfileManager.ROLE);
  -                profileManager.unregister(layout);
  +                service.getComponentManager().getProfileManager().unregister(layout);
               } catch (ComponentException ce) {
  -                throw new ProcessingException("Unable to lookup profile manager.", ce);
  +                throw new ProcessingException("Unable to lookup portal service.", ce);
               } finally {
  -                this.manager.release( profileManager );
  +                this.manager.release( service );
               }
           }
       }
  
  
  
  1.4       +6 -6      cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/source/CopletSourceFactory.java
  
  Index: CopletSourceFactory.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/source/CopletSourceFactory.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- CopletSourceFactory.java	10 Jun 2003 06:15:42 -0000	1.3
  +++ CopletSourceFactory.java	18 Jul 2003 14:41:44 -0000	1.4
  @@ -59,8 +59,8 @@
   import org.apache.avalon.framework.component.Composable;
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.avalon.framework.thread.ThreadSafe;
  +import org.apache.cocoon.portal.PortalService;
   import org.apache.cocoon.portal.coplet.CopletInstanceData;
  -import org.apache.cocoon.portal.profile.ProfileManager;
   import org.apache.excalibur.source.Source;
   import org.apache.excalibur.source.SourceException;
   import org.apache.excalibur.source.SourceFactory;
  @@ -102,11 +102,11 @@
               protocol = location.substring(0, position);
               location = location.substring(position+2);
           }
  -        ProfileManager profileManager = null;
  +        PortalService service = null;
           CopletInstanceData coplet = null;
           try {
  -            profileManager = (ProfileManager)this.manager.lookup(ProfileManager.ROLE);
  -            coplet = profileManager.getCopletInstanceData(location);
  +            service = (PortalService)this.manager.lookup(PortalService.ROLE);
  +            coplet = service.getComponentManager().getProfileManager().getCopletInstanceData(location);
               CopletSource copletSource =
                   new CopletSource(uri, protocol,
                                    coplet);
  @@ -115,7 +115,7 @@
           } catch (ComponentException ce) {
               throw new SourceException("Unable to lookup profile manager.", ce);
           } finally {
  -            this.manager.release(profileManager);
  +            this.manager.release(service);
           }
   	}
   
  
  
  
  1.5       +1 -1      cocoon-2.1/src/blocks/portal/samples/skins/common/styles/window.xsl
  
  Index: window.xsl
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/samples/skins/common/styles/window.xsl,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- window.xsl	25 Jun 2003 08:23:16 -0000	1.4
  +++ window.xsl	18 Jul 2003 14:41:44 -0000	1.5
  @@ -34,7 +34,7 @@
   			</font>
   	    </td>
   		<td align="right" bgColor="{$bgColor}">
  -			<xsl:if test="fullscreen-uri">
  +			<xsl:if test="fullscreen-uri and not(maximize-uri)">
   				<a href="{fullscreen-uri}">
   	  			    <img src="customize.gif" border="0" alt="Full Screen"/>
   	  			</a>
  
  
  
  1.5       +3 -3      cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/SizingAspect.java
  
  Index: SizingAspect.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/SizingAspect.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SizingAspect.java	26 May 2003 13:18:19 -0000	1.4
  +++ SizingAspect.java	18 Jul 2003 14:41:44 -0000	1.5
  @@ -92,12 +92,12 @@
   
               if ( !size.equals(SizingStatus.STATUS_MINIMIZED)) {
                   event = new ChangeCopletInstanceAspectDataEvent(cid, "size", SizingStatus.STATUS_MINIMIZED);
  -                XMLUtils.createElement(handler, "minimize-uri", service.getLinkService().getLinkURI(event));
  +                XMLUtils.createElement(handler, "minimize-uri", service.getComponentManager().getLinkService().getLinkURI(event));
               }
   
               if ( !size.equals(SizingStatus.STATUS_MAXIMIZED)) {
                   event = new ChangeCopletInstanceAspectDataEvent(cid, "size", SizingStatus.STATUS_MAXIMIZED);
  -                XMLUtils.createElement(handler, "maximize-uri", service.getLinkService().getLinkURI(event));
  +                XMLUtils.createElement(handler, "maximize-uri", service.getComponentManager().getLinkService().getLinkURI(event));
               }
               if (size != SizingStatus.STATUS_MINIMIZED) {
                   context.invokeNext(layout, service, handler);
  
  
  
  1.9       +2 -2      cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/TabContentAspect.java
  
  Index: TabContentAspect.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/TabContentAspect.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- TabContentAspect.java	15 Jun 2003 16:56:09 -0000	1.8
  +++ TabContentAspect.java	18 Jul 2003 14:41:44 -0000	1.9
  @@ -120,7 +120,7 @@
                           attributes.addCDATAAttribute("selected", "true");
                       } else {
                           ChangeAspectDataEvent event = new ChangeAspectDataEvent(tabLayout, "tab", new Integer(j));
  -                        attributes.addCDATAAttribute("parameter", portalService.getLinkService().getLinkURI(event));
  +                        attributes.addCDATAAttribute("parameter", portalService.getComponentManager().getLinkService().getLinkURI(event));
                       }
                       XMLUtils.startElement(handler, "named-item", attributes);
                       if (j == selected) {
  
  
  
  1.5       +2 -2      cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/RemovableAspect.java
  
  Index: RemovableAspect.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/RemovableAspect.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- RemovableAspect.java	26 May 2003 13:18:19 -0000	1.4
  +++ RemovableAspect.java	18 Jul 2003 14:41:45 -0000	1.5
  @@ -84,7 +84,7 @@
           Boolean mandatory = (Boolean)cid.getCopletData().getAspectData("mandatory");
           if ( !mandatory.booleanValue() ) {
               LayoutRemoveEvent lre = new LayoutRemoveEvent(layout);
  -            XMLUtils.createElement(handler, "remove-uri", service.getLinkService().getLinkURI(lre));
  +            XMLUtils.createElement(handler, "remove-uri", service.getComponentManager().getLinkService().getLinkURI(lre));
           }
           context.invokeNext(layout, service, handler);
   	}
  
  
  
  1.3       +4 -5      cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/FullScreenCopletAspect.java
  
  Index: FullScreenCopletAspect.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/FullScreenCopletAspect.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FullScreenCopletAspect.java	6 Jun 2003 11:33:39 -0000	1.2
  +++ FullScreenCopletAspect.java	18 Jul 2003 14:41:45 -0000	1.3
  @@ -80,13 +80,12 @@
           
           CopletInstanceData cid = ((CopletLayout)layout).getCopletInstanceData();
   
  -        Layout fullScreenLayout = (Layout)service.getTemporaryAttribute("DEFAULT_LAYOUT");
  +        final Layout fullScreenLayout = (Layout)service.getComponentManager().getProfileManager().getEntryLayout();
           if ( fullScreenLayout != null && fullScreenLayout.equals( layout )) {
  -            FullScreenCopletEvent event = new FullScreenCopletEvent( cid, null );
  -            XMLUtils.createElement(handler, "fullscreen-uri", service.getLinkService().getRefreshLinkURI());
  +            XMLUtils.createElement(handler, "fullscreen-uri", service.getComponentManager().getLinkService().getRefreshLinkURI());
           } else {
               FullScreenCopletEvent event = new FullScreenCopletEvent( cid, layout );
  -            XMLUtils.createElement(handler, "fullscreen-uri", service.getLinkService().getLinkURI(event));
  +            XMLUtils.createElement(handler, "fullscreen-uri", service.getComponentManager().getLinkService().getLinkURI(event));
           }
   
           context.invokeNext(layout, service, handler);
  
  
  
  1.3       +3 -22     cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java
  
  Index: AbstractCompositeAspect.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AbstractCompositeAspect.java	19 May 2003 12:50:59 -0000	1.2
  +++ AbstractCompositeAspect.java	18 Jul 2003 14:41:45 -0000	1.3
  @@ -52,8 +52,6 @@
   
   import java.util.Iterator;
   
  -import org.apache.avalon.framework.CascadingRuntimeException;
  -import org.apache.avalon.framework.component.ComponentException;
   import org.apache.avalon.framework.component.ComponentSelector;
   import org.apache.cocoon.portal.PortalService;
   import org.apache.cocoon.portal.layout.CompositeLayout;
  @@ -105,25 +103,8 @@
       protected void processLayout(Layout layout, PortalService service, ContentHandler handler) throws SAXException {
           final String rendererName = layout.getRendererName();
           Renderer renderer = null;
  -        try {
  -            renderer = (Renderer) this.getRenderSelector().select(rendererName);
  -            renderer.toSAX(layout, service, handler);
  -        } catch (ComponentException ce) {
  -            throw new SAXException("Unable to lookup renderer for role " + rendererName, ce);
  -        } finally {
  -            this.getRenderSelector().release(renderer);
  -        }
  -    }
  -
  -    protected ComponentSelector getRenderSelector() {
  -        if ( null == this.rendererSelector ) {
  -            try {
  -                this.rendererSelector = (ComponentSelector) this.manager.lookup(Renderer.ROLE + "Selector");
  -            } catch (ComponentException local) {
  -                throw new CascadingRuntimeException("Unable to lookup component selector for portal layout selector.", local);
  -            }
  -        }
  -        return this.rendererSelector;
  +        renderer = service.getComponentManager().getRenderer(rendererName);
  +        renderer.toSAX(layout, service, handler);
       }
   
       /**
  
  
  
  1.2       +2 -12     cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/acting/LoginAction.java
  
  Index: LoginAction.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/acting/LoginAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- LoginAction.java	28 May 2003 07:14:41 -0000	1.1
  +++ LoginAction.java	18 Jul 2003 14:41:45 -0000	1.2
  @@ -52,7 +52,6 @@
   
   import java.util.Map;
   
  -import org.apache.avalon.framework.component.Component;
   import org.apache.avalon.framework.component.ComponentException;
   import org.apache.avalon.framework.parameters.ParameterException;
   import org.apache.avalon.framework.parameters.Parameters;
  @@ -62,7 +61,6 @@
   import org.apache.cocoon.environment.Redirector;
   import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.portal.PortalService;
  -import org.apache.cocoon.portal.profile.ProfileManager;
   
   /**
    * This action logs the user into the portal
  @@ -91,21 +89,13 @@
           try {
               service = (PortalService)this.manager.lookup(PortalService.ROLE);
               service.setPortalName(par.getParameter("portal-name"));
  +            service.getComponentManager().getProfileManager().login();
           } catch (ParameterException pe) {
               throw new ProcessingException("Parameter portal-name is required.");
           } catch (ComponentException ce) {
               throw new ProcessingException("Unable to lookup portal service.", ce);
           } finally {
               this.manager.release(service);
  -        }
  -
  -        // login
  -        ProfileManager profileManager = null;
  -        try {
  -            profileManager = (ProfileManager) this.manager.lookup(ProfileManager.ROLE);
  -            profileManager.login();
  -        } finally {
  -            this.manager.release( (Component)profileManager );
           }
   
           if (this.getLogger().isDebugEnabled() ) {
  
  
  
  1.2       +2 -12     cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/acting/LogoutAction.java
  
  Index: LogoutAction.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/acting/LogoutAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- LogoutAction.java	28 May 2003 07:14:41 -0000	1.1
  +++ LogoutAction.java	18 Jul 2003 14:41:45 -0000	1.2
  @@ -52,7 +52,6 @@
   
   import java.util.Map;
   
  -import org.apache.avalon.framework.component.Component;
   import org.apache.avalon.framework.component.ComponentException;
   import org.apache.avalon.framework.parameters.ParameterException;
   import org.apache.avalon.framework.parameters.Parameters;
  @@ -62,7 +61,6 @@
   import org.apache.cocoon.environment.Redirector;
   import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.portal.PortalService;
  -import org.apache.cocoon.portal.profile.ProfileManager;
   
   /**
    *  This action logs the current user out of the portal
  @@ -91,21 +89,13 @@
           try {
               service = (PortalService)this.manager.lookup(PortalService.ROLE);
               service.setPortalName(par.getParameter("portal-name"));
  +            service.getComponentManager().getProfileManager().logout();
           } catch (ParameterException pe) {
               throw new ProcessingException("Parameter portal-name is required.");
           } catch (ComponentException ce) {
               throw new ProcessingException("Unable to lookup portal service.", ce);
           } finally {
               this.manager.release(service);
  -        }
  -
  -        // logout
  -        ProfileManager profileManager = null;
  -        try {
  -            profileManager = (ProfileManager) this.manager.lookup(ProfileManager.ROLE);
  -            profileManager.logout();
  -        } finally {
  -            this.manager.release( (Component)profileManager );
           }
   
           if (this.getLogger().isDebugEnabled() ) {
  
  
  
  1.3       +9 -19     cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/impl/DefaultLinkRenderer.java
  
  Index: DefaultLinkRenderer.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/impl/DefaultLinkRenderer.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefaultLinkRenderer.java	10 Jul 2003 13:16:59 -0000	1.2
  +++ DefaultLinkRenderer.java	18 Jul 2003 14:41:45 -0000	1.3
  @@ -50,11 +50,9 @@
   */
   package org.apache.cocoon.portal.layout.renderer.impl;
   
  -import org.apache.avalon.framework.component.ComponentException;
   import org.apache.cocoon.portal.PortalService;
   import org.apache.cocoon.portal.layout.Layout;
   import org.apache.cocoon.portal.layout.impl.LinkLayout;
  -import org.apache.cocoon.portal.profile.ProfileManager;
   import org.xml.sax.ContentHandler;
   import org.xml.sax.SAXException;
   
  @@ -71,22 +69,14 @@
       public void process(Layout layout, PortalService service, ContentHandler handler)
       throws SAXException {
           if (layout instanceof LinkLayout) {
  -            ProfileManager profileManager = null;
  -            try {
  -                profileManager = (ProfileManager)this.componentManager.lookup(ProfileManager.ROLE);
  -                String layoutKey = (String)layout.getAspectData("link-layout-key");
  -				String layoutId = (String)layout.getAspectData("link-layout-id");
  -                if ( layoutKey == null && layoutId == null){
  -					// get default values
  -					layoutKey = ((LinkLayout)layout).getLayoutKey();
  -					layoutId = ((LinkLayout)layout).getLayoutId();
  -				}
  -                this.processLayout(profileManager.getPortalLayout(layoutKey, layoutId), service, handler);
  -            } catch (ComponentException ce) {
  -                throw new SAXException("Unable to lookup profile manager.", ce);
  -            } finally {
  -                this.componentManager.release(profileManager);
  -            }
  +            String layoutKey = (String)layout.getAspectData("link-layout-key");
  +			String layoutId = (String)layout.getAspectData("link-layout-id");
  +            if ( layoutKey == null && layoutId == null){
  +				// get default values
  +				layoutKey = ((LinkLayout)layout).getLayoutKey();
  +				layoutId = ((LinkLayout)layout).getLayoutId();
  +			}
  +            this.processLayout(service.getComponentManager().getProfileManager().getPortalLayout(layoutKey, layoutId), service, handler);
           } else {
               throw new SAXException("Wrong layout type, LinkLayout expected: " + layout.getClass().getName());
           }        
  
  
  
  1.4       +3 -21     cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/impl/AbstractRenderer.java
  
  Index: AbstractRenderer.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/impl/AbstractRenderer.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AbstractRenderer.java	14 Jun 2003 17:55:43 -0000	1.3
  +++ AbstractRenderer.java	18 Jul 2003 14:41:45 -0000	1.4
  @@ -56,7 +56,6 @@
   import javax.xml.transform.sax.SAXResult;
   import javax.xml.transform.sax.TransformerHandler;
   
  -import org.apache.avalon.framework.CascadingRuntimeException;
   import org.apache.avalon.framework.activity.Disposable;
   import org.apache.avalon.framework.component.ComponentException;
   import org.apache.avalon.framework.component.ComponentManager;
  @@ -157,27 +156,10 @@
       protected void processLayout(Layout layout, PortalService service, ContentHandler handler) throws SAXException {
           final String rendererName = layout.getRendererName();
           Renderer renderer = null;
  -        try {
  -            renderer = (Renderer) this.getRenderSelector().select(rendererName);
  -            renderer.toSAX(layout, service, handler);
  -        } catch (ComponentException ce) {
  -            throw new SAXException("Unable to lookup renderer for role " + rendererName, ce);
  -        } finally {
  -            this.getRenderSelector().release(renderer);
  -        }
  +        renderer = service.getComponentManager().getRenderer(rendererName);
  +        renderer.toSAX(layout, service, handler);
       }
   
  -    protected ComponentSelector getRenderSelector() {
  -        if ( null == this.rendererSelector ) {
  -            try {
  -                this.rendererSelector = (ComponentSelector) this.componentManager.lookup(Renderer.ROLE + "Selector");
  -            } catch (ComponentException local) {
  -                throw new CascadingRuntimeException("Unable to lookup component selector for portal layout selector.", local);
  -            }
  -        }
  -        return this.rendererSelector;
  -    }
  -        
       protected abstract void process(Layout layout, PortalService service, ContentHandler handler) throws SAXException;
   
       /**
  
  
  
  1.2       +6 -14     cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/event/aspect/impl/AbstractContentEventAspect.java
  
  Index: AbstractContentEventAspect.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/event/aspect/impl/AbstractContentEventAspect.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractContentEventAspect.java	14 Jul 2003 10:12:14 -0000	1.1
  +++ AbstractContentEventAspect.java	18 Jul 2003 14:41:45 -0000	1.2
  @@ -65,7 +65,6 @@
   import org.apache.cocoon.portal.event.aspect.EventAspect;
   import org.apache.cocoon.portal.event.aspect.EventAspectContext;
   import org.apache.cocoon.portal.layout.Layout;
  -import org.apache.cocoon.portal.profile.ProfileManager;
   
   /**
    *
  @@ -99,17 +98,10 @@
        * values and invokes {@link #publish(Publisher, Layout, String[])}.
        * @param values The values contained in the request
        */
  -    protected void publish(Publisher publisher, String[] values) {
  -        ProfileManager profileManager = null;
  -        try {
  -            profileManager = (ProfileManager)this.manager.lookup(ProfileManager.ROLE);
  -            Layout layout = profileManager.getPortalLayout(values[0], values[1] );
  -            if ( layout != null ) {
  -                this.publish( publisher, layout, values);
  -            }
  -        } catch (ComponentException ignore) {
  -        } finally {
  -            this.manager.release( profileManager );
  +    protected void publish( PortalService service, Publisher publisher, String[] values) {
  +        Layout layout = service.getComponentManager().getProfileManager().getPortalLayout(values[0], values[1] );
  +        if ( layout != null ) {
  +            this.publish( publisher, layout, values);
           }
       }
       
  @@ -154,7 +146,7 @@
                               tokenNumber = tokenNumber + 1;
                           } 
                       
  -                        this.publish( publisher, eventValues );
  +                        this.publish( service, publisher, eventValues );
   
                       } else {
                           this.getLogger().warn("Data for Event is not set correctly");
  
  
  
  1.2       +2 -2      cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/event/aspect/impl/ActionCounterEventAspect.java
  
  Index: ActionCounterEventAspect.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/event/aspect/impl/ActionCounterEventAspect.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ActionCounterEventAspect.java	7 May 2003 06:22:27 -0000	1.1
  +++ ActionCounterEventAspect.java	18 Jul 2003 14:41:45 -0000	1.2
  @@ -113,7 +113,7 @@
                   context.invokeNext( service );
               }
           }
  -        service.getLinkService().addParameterToLink( requestParameterName, String.valueOf(actionCount));        
  +        service.getComponentManager().getLinkService().addParameterToLink( requestParameterName, String.valueOf(actionCount));        
   	}
   
   
  
  
  
  1.3       +6 -7      cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/event/aspect/impl/FullScreenCopletEventAspect.java
  
  Index: FullScreenCopletEventAspect.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/event/aspect/impl/FullScreenCopletEventAspect.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FullScreenCopletEventAspect.java	10 Jul 2003 13:17:03 -0000	1.2
  +++ FullScreenCopletEventAspect.java	18 Jul 2003 14:41:45 -0000	1.3
  @@ -69,7 +69,6 @@
   import org.apache.cocoon.portal.event.aspect.EventAspectContext;
   import org.apache.cocoon.portal.event.impl.FullScreenCopletEvent;
   import org.apache.cocoon.portal.layout.Layout;
  -import org.apache.cocoon.portal.profile.ProfileManager;
   
   /**
    *
  @@ -105,7 +104,7 @@
                       publisher.publish(e);
                       FullScreenCopletEvent fsce = (FullScreenCopletEvent)e;
                       if ( fsce.getLayout() != null) {
  -                        service.getLinkService().addEventToLink( e );
  +                        service.getComponentManager().getLinkService().addEventToLink( e );
                       }
                   }
               }
  @@ -135,14 +134,14 @@
           FullScreenCopletEvent e = (FullScreenCopletEvent) event;
           final Layout startingLayout = e.getLayout();
           if ( null != startingLayout ) {
  -            ProfileManager profileManager = null;
  +            PortalService portalService = null;
               try {
  -                profileManager = (ProfileManager) this.manager.lookup(ProfileManager.ROLE);
  -                profileManager.setEntryLayout( startingLayout );
  +                portalService = (PortalService) this.manager.lookup(PortalService.ROLE);
  +                portalService.getComponentManager().getProfileManager().setEntryLayout( startingLayout );
               } catch (ComponentException ce) {
                   // ignore
               } finally {
  -                this.manager.release(profileManager);
  +                this.manager.release(portalService);
               }
           }
       }
  
  
  
  1.7       +2 -1      cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java
  
  Index: ProfileManager.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ProfileManager.java	10 Jul 2003 13:17:04 -0000	1.6
  +++ ProfileManager.java	18 Jul 2003 14:41:45 -0000	1.7
  @@ -87,6 +87,7 @@
        * FIXME this is for the full-screen function
        */
       void setEntryLayout(Layout object);
  +    Layout getEntryLayout();
       
       /**
        * Change the default layout key for most functions
  
  
  
  1.2       +29 -1     cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java
  
  Index: AbstractProfileManager.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractProfileManager.java	10 Jul 2003 13:17:00 -0000	1.1
  +++ AbstractProfileManager.java	18 Jul 2003 14:41:45 -0000	1.2
  @@ -57,6 +57,7 @@
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.avalon.framework.thread.ThreadSafe;
   import org.apache.cocoon.portal.PortalService;
  +import org.apache.cocoon.portal.layout.Layout;
   import org.apache.cocoon.portal.profile.ProfileManager;
   
   /**
  @@ -127,5 +128,32 @@
       
       public void logout() {
       }
  +
  +    public void setEntryLayout(Layout object) {
  +        String layoutKey = this.getDefaultLayoutKey();
  +        PortalService service = null;
  +        try {
  +            service = (PortalService) this.manager.lookup(PortalService.ROLE);
  +            service.setTemporaryAttribute("DEFAULT_LAYOUT:" + layoutKey, object);
  +        } catch (ComponentException e) {
  +            throw new CascadingRuntimeException("Unable to lookup service manager.", e);
  +        } finally {
  +            this.manager.release(service);
  +        }
  +    }
  +
  +    public Layout getEntryLayout() {
  +        String layoutKey = this.getDefaultLayoutKey();
  +        PortalService service = null;
  +        try {
  +            service = (PortalService) this.manager.lookup(PortalService.ROLE);
  +            return (Layout)service.getTemporaryAttribute("DEFAULT_LAYOUT:" + layoutKey);
  +        } catch (ComponentException e) {
  +            throw new CascadingRuntimeException("Unable to lookup service manager.", e);
  +        } finally {
  +            this.manager.release(service);
  +        }
  +    }
  +
       
   }
  
  
  
  1.6       +3 -19     cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java
  
  Index: StaticProfileManager.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- StaticProfileManager.java	11 Jul 2003 07:49:57 -0000	1.5
  +++ StaticProfileManager.java	18 Jul 2003 14:41:45 -0000	1.6
  @@ -96,7 +96,6 @@
        * @see org.apache.cocoon.portal.profile.ProfileManager#getPortalLayout(String, String)
        */
       public Layout getPortalLayout(String layoutKey, String layoutID) {
  -        LayoutFactory factory = null;
           PortalService service = null;
           ProfileLS adapter = null;
           try {
  @@ -169,7 +168,7 @@
               service.setAttribute(serviceKey + "defaultKey", layout.getId());
               cacheLayouts(layouts, layout);
   
  -            factory = (LayoutFactory) this.manager.lookup(LayoutFactory.ROLE);
  +            LayoutFactory factory = service.getComponentManager().getLayoutFactory();
               factory.prepareLayout(layout);
   
               // store the new values in the service
  @@ -187,8 +186,7 @@
               return (Layout) layouts.get(layoutID);
   
           } catch (Exception ce) {
  -            // TODO
  -            throw new CascadingRuntimeException("Arg", ce);
  +            throw new CascadingRuntimeException("Unable to get layout.", ce);
           } finally {
               this.manager.release(service);
               this.manager.release((Component)adapter);
  @@ -272,20 +270,6 @@
           } catch (ComponentException e) {
               throw new CascadingRuntimeException(
                   "Unable to lookup portal service.",
  -                e);
  -        } finally {
  -            this.manager.release(service);
  -        }
  -    }
  -
  -    public void setEntryLayout(Layout object) {
  -        PortalService service = null;
  -        try {
  -            service = (PortalService) this.manager.lookup(PortalService.ROLE);
  -            service.setTemporaryAttribute("DEFAULT_LAYOUT", object);
  -        } catch (ComponentException e) {
  -            throw new CascadingRuntimeException(
  -                "Unable to lookup service manager.",
                   e);
           } finally {
               this.manager.release(service);
  
  
  
  1.2       +5 -23     cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java
  
  Index: AbstractUserProfileManager.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractUserProfileManager.java	10 Jul 2003 13:17:00 -0000	1.1
  +++ AbstractUserProfileManager.java	18 Jul 2003 14:41:45 -0000	1.2
  @@ -57,7 +57,6 @@
   import java.util.Map;
   
   import org.apache.avalon.framework.CascadingRuntimeException;
  -import org.apache.avalon.framework.component.Component;
   import org.apache.avalon.framework.component.ComponentException;
   import org.apache.avalon.framework.component.ComponentSelector;
   import org.apache.cocoon.ProcessingException;
  @@ -298,32 +297,18 @@
           }
       }
   
  -    public void setEntryLayout(Layout object) {
  -        String layoutKey = this.getDefaultLayoutKey();
  -        PortalService service = null;
  -        try {
  -            service = (PortalService) this.manager.lookup(PortalService.ROLE);
  -            service.setTemporaryAttribute("DEFAULT_LAYOUT:" + layoutKey, object);
  -        } catch (ComponentException e) {
  -            throw new CascadingRuntimeException("Unable to lookup service manager.", e);
  -        } finally {
  -            this.manager.release(service);
  -        }
  -    }
  -
       /* (non-Javadoc)
        * @see org.apache.cocoon.portal.profile.ProfileManager#getPortalLayout(java.lang.String, java.lang.String)
        */
       public Layout getPortalLayout(String layoutKey, String layoutID) {
           PortalService service = null;
  -        LayoutFactory factory = null;
  -        CopletFactory copletFactory = null;
           ComponentSelector adapterSelector = null;
           
           try {
               service = (PortalService) this.manager.lookup(PortalService.ROLE);
  -            factory = (LayoutFactory) this.manager.lookup(LayoutFactory.ROLE);
  -            copletFactory = (CopletFactory) this.manager.lookup(CopletFactory.ROLE);
  +            LayoutFactory factory = service.getComponentManager().getLayoutFactory();
  +            CopletFactory copletFactory = service.getComponentManager().getCopletFactory();
  +            
               adapterSelector = (ComponentSelector)this.manager.lookup(CopletAdapter.ROLE+"Selector");
               
               if ( null == layoutKey ) {
  @@ -358,12 +343,9 @@
               
               return layout;
           } catch (Exception ce) {
  -            // TODO
  -            throw new CascadingRuntimeException("Arg", ce);
  +            throw new CascadingRuntimeException("Exception during loading of profile.", ce);
           } finally {
               this.manager.release(service);
  -            this.manager.release((Component)factory);
  -            this.manager.release((Component)copletFactory);
               this.manager.release(adapterSelector);
           }
       }
  
  
  
  1.2       +8 -2      cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/PortalManager.java
  
  Index: PortalManager.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/PortalManager.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PortalManager.java	7 May 2003 06:22:28 -0000	1.1
  +++ PortalManager.java	18 Jul 2003 14:41:45 -0000	1.2
  @@ -57,7 +57,13 @@
   import org.xml.sax.SAXException;
   
   /**
  - *
  + * This is the main component that has currently two actions:
  + * Invoke the request processing using the {@link #process()} method,
  + * this starts the event handling for the current request (evaluating
  + * request parameters etc.)
  + * The section method {@link #showPortal(ContentHandler, Parameters)}
  + * starts rendering the portal.
  + * 
    * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
    * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
    * 
  
  
  
  1.2       +42 -4     cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/PortalService.java
  
  Index: PortalService.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/PortalService.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PortalService.java	7 May 2003 06:22:27 -0000	1.1
  +++ PortalService.java	18 Jul 2003 14:41:45 -0000	1.2
  @@ -55,7 +55,11 @@
   import org.apache.avalon.framework.component.Component;
   
   /**
  - *
  + * This is the central component in the portal. It holds the configuration
  + * of the portal, the current name etc.
  + * The main use of this component is to get the {@link PortalComponentManager}
  + * to get all the other portal components.
  + * 
    * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
    * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
    * 
  @@ -69,24 +73,58 @@
       
       void setPortalName(String value);
       
  +    /**
  +     * Return the value of an attribute
  +     * @param key The key of the attribute
  +     * @return The value of the attribute or null.
  +     */
       Object getAttribute(String key);
       
  +    /**
  +     * Set an attribute
  +     * @param key    The key of the attribute
  +     * @param value  The new value
  +     */
       void setAttribute(String key, Object value);
       
  +    /**
  +     * Remove an attribute
  +     * @param key The key of the attribute
  +     */
       void removeAttribute(String key);
       
  +    /**
  +     * Return the names of all attributes
  +     */
       Iterator getAttributeNames();
       
  +    /**
  +     * Return the value of a temporary attribute
  +     * @param key The key of the attribute
  +     * @return The value of the attribute or null.
  +     */
       Object getTemporaryAttribute(String key);
       
  +    /**
  +     * Set a temporary attribute
  +     * @param key    The key of the attribute
  +     * @param value  The new value
  +     */
       void setTemporaryAttribute(String key, Object value);
       
  +    /**
  +     * Remove a temporary attribute
  +     * @param key The key of the attribute
  +     */
       void removeTemporaryAttribute(String key);
       
  +    /**
  +     * Return the names of all temporary attributes
  +     */
       Iterator getTemporaryAttributeNames();
   
       /**
  -     * Get the link service
  +     * Return the component manager for the current portal
        */
  -    LinkService getLinkService();
  +    PortalComponentManager getComponentManager();
   }
  
  
  
  1.1                  cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/PortalComponentManager.java
  
  Index: PortalComponentManager.java
  ===================================================================
  /*
  
   ============================================================================
                     The Apache Software License, Version 1.1
   ============================================================================
  
   Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved.
  
   Redistribution and use in source and binary forms, with or without modifica-
   tion, are permitted provided that the following conditions are met:
  
   1. Redistributions of  source code must  retain the above copyright  notice,
      this list of conditions and the following disclaimer.
  
   2. Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
  
   3. The end-user documentation included with the redistribution, if any, must
      include  the following  acknowledgment:  "This product includes  software
      developed  by the  Apache Software Foundation  (http://www.apache.org/)."
      Alternately, this  acknowledgment may  appear in the software itself,  if
      and wherever such third-party acknowledgments normally appear.
  
   4. The names "Apache Cocoon" and  "Apache Software Foundation" must  not  be
      used to  endorse or promote  products derived from  this software without
      prior written permission. For written permission, please contact
      apache@apache.org.
  
   5. Products  derived from this software may not  be called "Apache", nor may
      "Apache" appear  in their name,  without prior written permission  of the
      Apache Software Foundation.
  
   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
   APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
   INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
   DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
   OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
   ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
   (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
   This software  consists of voluntary contributions made  by many individuals
   on  behalf of the Apache Software  Foundation and was  originally created by
   Stefano Mazzocchi  <st...@apache.org>. For more  information on the Apache
   Software Foundation, please see <http://www.apache.org/>.
  
  */
  package org.apache.cocoon.portal;
  
  import org.apache.cocoon.portal.coplet.CopletFactory;
  import org.apache.cocoon.portal.layout.LayoutFactory;
  import org.apache.cocoon.portal.layout.renderer.Renderer;
  import org.apache.cocoon.portal.profile.ProfileManager;
  
  /**
   * This component provides access to all other components used
   * throughout the portal.
   * Any component in the portal should never lookup these components
   * itself, but use this component manager instead.
   * 
   * This manager allows to run differently configured portals in Cocoon
   * at the same time. This component can't be looked up using the
   * usual Avalon mechanisms, it has to be get by the {@link PortalService}.
   * 
   * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
   * 
   * @version CVS $Id: PortalComponentManager.java,v 1.1 2003/07/18 14:41:45 cziegeler Exp $
   */
  public interface PortalComponentManager {
  
      /**
       * Get the link service
       */
      LinkService getLinkService();
      
      /**
       * Get the current profile manager
       */
      ProfileManager getProfileManager();
      
      /**
       * Get the renderer 
       */
      Renderer getRenderer(String hint);
      
      /**
       * Get the coplet factory
       */
      CopletFactory getCopletFactory();
      
      /**
       * Get the layout factory
       */
      LayoutFactory getLayoutFactory();
  }
  
  
  
  1.3       +7 -10     cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/transformation/AbstractCopletTransformer.java
  
  Index: AbstractCopletTransformer.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/transformation/AbstractCopletTransformer.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AbstractCopletTransformer.java	27 May 2003 11:54:17 -0000	1.2
  +++ AbstractCopletTransformer.java	18 Jul 2003 14:41:46 -0000	1.3
  @@ -58,7 +58,6 @@
   import org.apache.cocoon.portal.Constants;
   import org.apache.cocoon.portal.PortalService;
   import org.apache.cocoon.portal.coplet.CopletInstanceData;
  -import org.apache.cocoon.portal.profile.ProfileManager;
   import org.apache.cocoon.transformation.AbstractSAXTransformer;
   import org.xml.sax.SAXException;
   
  @@ -94,9 +93,10 @@
   
       protected CopletInstanceData getCopletInstanceData() 
       throws SAXException {
  -        ProfileManager profileManager = null;
  +        PortalService portalService = null;
           try {
  -            profileManager = (ProfileManager)this.manager.lookup(ProfileManager.ROLE);
  +
  +            portalService = (PortalService)this.manager.lookup(PortalService.ROLE);
   
               // determine coplet id
               String copletId = null;            
  @@ -108,12 +108,9 @@
                       copletId = this.parameters.getParameter(COPLET_ID_PARAM);
                           
                       // set portal name
  -                    PortalService portalService = null;
                       try {
  -                        portalService = (PortalService)this.manager.lookup(PortalService.ROLE);
                           portalService.setPortalName(this.parameters.getParameter(PORTAL_NAME_PARAM));
                       } finally {
  -                        this.manager.release(portalService);
                       }
                   } catch (ParameterException e) {
                       throw new SAXException("copletId and portalName must be passed as parameter or in the object model within the parent context.");
  @@ -124,7 +121,7 @@
               }
   
   
  -            CopletInstanceData object = profileManager.getCopletInstanceData( copletId );
  +            CopletInstanceData object = portalService.getComponentManager().getProfileManager().getCopletInstanceData( copletId );
                   
               if (object == null) {
                   throw new SAXException("Could not find coplet instance data for " + copletId);
  @@ -132,9 +129,9 @@
                   
               return object;
           } catch (ComponentException e) {
  -            throw new SAXException("Error getting profile manager.", e);
  +            throw new SAXException("Error getting portal service.", e);
           } finally {
  -            this.manager.release(profileManager);
  +            this.manager.release( portalService );
           }
       }
   }
  
  
  
  1.5       +10 -24    cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/impl/PortalManagerImpl.java
  
  Index: PortalManagerImpl.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/impl/PortalManagerImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- PortalManagerImpl.java	10 Jul 2003 13:17:02 -0000	1.4
  +++ PortalManagerImpl.java	18 Jul 2003 14:41:46 -0000	1.5
  @@ -52,7 +52,6 @@
   
   import org.apache.avalon.framework.component.ComponentException;
   import org.apache.avalon.framework.component.ComponentManager;
  -import org.apache.avalon.framework.component.ComponentSelector;
   import org.apache.avalon.framework.component.Composable;
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.avalon.framework.parameters.Parameters;
  @@ -63,7 +62,6 @@
   import org.apache.cocoon.portal.event.EventManager;
   import org.apache.cocoon.portal.layout.Layout;
   import org.apache.cocoon.portal.layout.renderer.Renderer;
  -import org.apache.cocoon.portal.profile.ProfileManager;
   import org.xml.sax.ContentHandler;
   import org.xml.sax.SAXException;
   
  @@ -78,18 +76,18 @@
   	extends AbstractLogEnabled
   	implements PortalManager, Composable, ThreadSafe {
   
  -    private ComponentManager componentManager;
  +    private ComponentManager manager;
           
       public void process()
       throws ProcessingException {
           EventManager eventManager = null;
           try {
  -            eventManager = (EventManager)this.componentManager.lookup(EventManager.ROLE);
  +            eventManager = (EventManager)this.manager.lookup(EventManager.ROLE);
               eventManager.processEvents();
           } catch (ComponentException ce) {
               throw new ProcessingException("Unable to lookup portal service.", ce);
           } finally {
  -            this.componentManager.release(eventManager);
  +            this.manager.release(eventManager);
           }
       }
   
  @@ -101,32 +99,20 @@
   //        final boolean useContentDeliverer = (parameters == null ? true :
   //                                               parameters.getParameterAsBoolean("use-content-deliverer", true));
           
  -        ProfileManager profileManager = null;
  -        ComponentSelector rendererSelector = null;
  -        Renderer portalLayoutRenderer = null;
           PortalService service = null;
           try {
  -            service = (PortalService)this.componentManager.lookup(PortalService.ROLE);
  -            profileManager = (ProfileManager)this.componentManager.lookup(ProfileManager.ROLE);
  -            Layout portalLayout = profileManager.getPortalLayout(null, null);
  +            service = (PortalService)this.manager.lookup(PortalService.ROLE);
  +            Layout portalLayout = service.getComponentManager().getProfileManager().getPortalLayout(null, null);
   
  -            rendererSelector = (ComponentSelector)this.componentManager.lookup(Renderer.ROLE+"Selector");
  -            portalLayoutRenderer = (Renderer)rendererSelector.select(portalLayout.getRendererName());       
  +            Renderer portalLayoutRenderer = service.getComponentManager().getRenderer( portalLayout.getRendererName());       
   
               contentHandler.startDocument();
               portalLayoutRenderer.toSAX(portalLayout, service, contentHandler);
               contentHandler.endDocument();
           } catch (ComponentException ce) {
  -            throw new SAXException("Unable to lookup profile manager.", ce);
  +            throw new SAXException("Unable to lookup portal service.", ce);
           } finally {
  -            if ( null != portalLayoutRenderer) {
  -                rendererSelector.release(portalLayoutRenderer);
  -            }
  -            this.componentManager.release(rendererSelector);
  -            if (null != profileManager) {
  -                this.componentManager.release(profileManager);
  -            }
  -            this.componentManager.release(service);
  +            this.manager.release(service);
           }
   	}
   
  @@ -135,7 +121,7 @@
   	 */
   	public void compose(ComponentManager componentManager)
   		throws ComponentException {
  -        this.componentManager = componentManager;
  +        this.manager = componentManager;
   	}
   
   }
  
  
  
  1.6       +68 -20    cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java
  
  Index: PortalServiceImpl.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PortalServiceImpl.java	11 Jul 2003 11:06:22 -0000	1.5
  +++ PortalServiceImpl.java	18 Jul 2003 14:41:46 -0000	1.6
  @@ -52,18 +52,19 @@
   
   import java.io.IOException;
   import java.util.*;
  -import java.util.ArrayList;
  -import java.util.Collections;
  -import java.util.HashMap;
  -import java.util.Iterator;
  -import java.util.List;
  -import java.util.Map;
   
   import org.apache.avalon.excalibur.pool.Recyclable;
  -import org.apache.avalon.framework.CascadingRuntimeException;
  +import org.apache.avalon.framework.activity.Disposable;
   import org.apache.avalon.framework.component.ComponentException;
   import org.apache.avalon.framework.component.ComponentManager;
   import org.apache.avalon.framework.component.Composable;
  +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.container.ContainerUtil;
  +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.logger.AbstractLogEnabled;
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.components.RequestLifecycleComponent;
  @@ -71,7 +72,7 @@
   import org.apache.cocoon.environment.Session;
   import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.portal.Constants;
  -import org.apache.cocoon.portal.LinkService;
  +import org.apache.cocoon.portal.PortalComponentManager;
   import org.apache.cocoon.portal.PortalService;
   import org.xml.sax.SAXException;
   
  @@ -91,11 +92,16 @@
       implements Composable,
                   RequestLifecycleComponent, 
                   PortalService, 
  -                Recyclable {
  +                Contextualizable,
  +                Recyclable,
  +                Disposable,
  +                Configurable {
   
  +    protected Context context;
  +    
       protected Map objectModel;
  +   
       protected Map temporaryAttributes = new HashMap();
  -    protected LinkService linkService;
       
       protected ComponentManager manager;
   
  @@ -103,6 +109,10 @@
   
       protected String attributePrefix;
       
  +    protected PortalComponentManager portalComponentManager;
  +    
  +    protected Map portalComponentManagers = new HashMap();
  +    
       public void compose(ComponentManager componentManager) throws ComponentException {
           this.manager = componentManager;
       }
  @@ -127,6 +137,10 @@
       public void setPortalName(String value) {
           this.portalName = value;
           this.attributePrefix = this.getClass().getName() + '/' + this.portalName + '/';
  +        this.portalComponentManager = (PortalComponentManager) this.portalComponentManagers.get(this.portalName);
  +        if ( this.portalComponentManager == null ) {
  +            throw new RuntimeException("Portal '"+this.portalName+"' is not configured.");
  +        }
       }
   
       /* (non-Javadoc)
  @@ -135,8 +149,7 @@
       public void recycle() {
           this.portalName = null;
           this.temporaryAttributes.clear();
  -        this.manager.release( this.linkService );
  -        this.linkService = null;
  +        this.portalComponentManager = null;
       }
   
       public Object getAttribute(String key) {
  @@ -194,18 +207,53 @@
           return this.temporaryAttributes.keySet().iterator();
       }
   
  +
       /**
  -     * Get the link service
  +     * Return the component manager for the current portal
  +     */
  +    public PortalComponentManager getComponentManager() {
  +        return this.portalComponentManager;
  +    }
  +
  +    /* (non-Javadoc)
  +     * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
  +     */
  +    public void contextualize(Context context) throws ContextException {
  +        this.context = context;
  +    }
  +
  +    /* (non-Javadoc)
  +     * @see org.apache.avalon.framework.activity.Disposable#dispose()
  +     */
  +    public void dispose() {
  +        final Iterator i = this.portalComponentManagers.values().iterator();
  +        while ( i.hasNext() ) {
  +            ContainerUtil.dispose( i.next() );
  +        }
  +        this.portalComponentManagers.clear();       
  +    }
  +
  +    /* (non-Javadoc)
  +     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
        */
  -    public LinkService getLinkService() {
  -        if ( null == this.linkService ) {
  +    public void configure(Configuration config) throws ConfigurationException {
  +        final Configuration[] portals = config.getChild("portals").getChildren("portal");
  +        for(int i=0; i < portals.length; i++ ) {
  +            final Configuration current = portals[i];
  +            final String name = current.getAttribute("name");
               try {
  -                this.linkService = (LinkService)this.manager.lookup( LinkService.ROLE);
  -            } catch (ComponentException e) {
  -                throw new CascadingRuntimeException("Unable to lookup link service.", e);
  +                PortalComponentManager c = new DefaultPortalComponentManager();
  +                this.portalComponentManagers.put( name, c );
  +                ContainerUtil.enableLogging( c, this.getLogger() );
  +                ContainerUtil.contextualize( c, this.context );
  +                ContainerUtil.compose( c, this.manager );
  +                ContainerUtil.configure( c, current );
  +                ContainerUtil.initialize( c );
  +            } catch (Exception e) {
  +                throw new ConfigurationException("Unable to setup new portal component manager for portal " + name, e);
               }
  +            
           }
  -        return this.linkService;
       }
   
   }
  
  
  
  1.1                  cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultPortalComponentManager.java
  
  Index: DefaultPortalComponentManager.java
  ===================================================================
  /*
  
   ============================================================================
                     The Apache Software License, Version 1.1
   ============================================================================
  
   Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved.
  
   Redistribution and use in source and binary forms, with or without modifica-
   tion, are permitted provided that the following conditions are met:
  
   1. Redistributions of  source code must  retain the above copyright  notice,
      this list of conditions and the following disclaimer.
  
   2. Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
  
   3. The end-user documentation included with the redistribution, if any, must
      include  the following  acknowledgment:  "This product includes  software
      developed  by the  Apache Software Foundation  (http://www.apache.org/)."
      Alternately, this  acknowledgment may  appear in the software itself,  if
      and wherever such third-party acknowledgments normally appear.
  
   4. The names "Apache Cocoon" and  "Apache Software Foundation" must  not  be
      used to  endorse or promote  products derived from  this software without
      prior written permission. For written permission, please contact
      apache@apache.org.
  
   5. Products  derived from this software may not  be called "Apache", nor may
      "Apache" appear  in their name,  without prior written permission  of the
      Apache Software Foundation.
  
   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
   APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
   INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
   DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
   OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
   ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
   (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
   This software  consists of voluntary contributions made  by many individuals
   on  behalf of the Apache Software  Foundation and was  originally created by
   Stefano Mazzocchi  <st...@apache.org>. For more  information on the Apache
   Software Foundation, please see <http://www.apache.org/>.
  
  */
  package org.apache.cocoon.portal.impl;
  
  import java.util.HashMap;
  import java.util.Iterator;
  import java.util.Map;
  
  import org.apache.avalon.framework.CascadingRuntimeException;
  import org.apache.avalon.framework.activity.Disposable;
  import org.apache.avalon.framework.component.Component;
  import org.apache.avalon.framework.component.ComponentException;
  import org.apache.avalon.framework.component.ComponentManager;
  import org.apache.avalon.framework.component.ComponentSelector;
  import org.apache.avalon.framework.component.Composable;
  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.logger.AbstractLogEnabled;
  import org.apache.avalon.framework.thread.ThreadSafe;
  import org.apache.cocoon.portal.LinkService;
  import org.apache.cocoon.portal.PortalComponentManager;
  import org.apache.cocoon.portal.coplet.CopletFactory;
  import org.apache.cocoon.portal.layout.LayoutFactory;
  import org.apache.cocoon.portal.layout.renderer.Renderer;
  import org.apache.cocoon.portal.profile.ProfileManager;
  
  /**
   * Default {@link PortalComponentManager} implementation
   * 
   * @see org.apache.cocoon.portal.PortalComponentManager
   * 
   * TODO Handle non ThreadSafe components
   * 
   * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
   * 
   * @version CVS $Id: DefaultPortalComponentManager.java,v 1.1 2003/07/18 14:41:46 cziegeler Exp $
   */
  public class DefaultPortalComponentManager
      extends AbstractLogEnabled
      implements PortalComponentManager, Composable, Disposable, ThreadSafe, Configurable {
  
      protected ComponentManager manager;
  
      protected LinkService linkService;
  
      protected ProfileManager profileManager;
  
      protected String profileManagerRole;
      
      protected String linkServiceRole;
      
      protected String rendererSelectorRole;
      
      protected ComponentSelector rendererSelector;
      
      protected Map renderers;
      
      protected String copletFactoryRole;
      
      protected String layoutFactoryRole;
      
      protected CopletFactory copletFactory;
      
      protected LayoutFactory layoutFactory;
      
      /* (non-Javadoc)
       * @see org.apache.avalon.framework.component.Composable#compose(org.apache.avalon.framework.component.ComponentManager)
       */
      public void compose(ComponentManager manager) throws ComponentException {
          this.manager = manager;
      }
  
      /* (non-Javadoc)
       * @see org.apache.cocoon.portal.PortalComponentManager#getLinkService()
       */
      public LinkService getLinkService() {
          if ( null == this.linkService ) {
              try {
                  this.linkService = (LinkService)this.manager.lookup( this.linkServiceRole );
              } catch (ComponentException e) {
                  throw new CascadingRuntimeException("Unable to lookup link service with role " + this.linkServiceRole, e);
              }
          }
          return this.linkService;
      }
  
      /* (non-Javadoc)
       * @see org.apache.cocoon.portal.PortalComponentManager#getProfileManager()
       */
      public ProfileManager getProfileManager() {
          if ( null == this.profileManager ) {
              try {
                  this.profileManager = (ProfileManager)this.manager.lookup( this.profileManagerRole );
              } catch (ComponentException e) {
                  throw new CascadingRuntimeException("Unable to lookup profile manager with role " + this.profileManagerRole, e);
              }
          }
          return this.profileManager;
      }
  
      /* (non-Javadoc)
       * @see org.apache.avalon.framework.activity.Disposable#dispose()
       */
      public void dispose() {
          if ( this.manager != null ) {
              if ( this.rendererSelector != null) {
                  Iterator i = this.renderers.values().iterator();
                  while ( i.hasNext() ) {
                      this.rendererSelector.release( (Component) i.next());
                  }
                  this.manager.release( this.rendererSelector );
                  this.rendererSelector = null;
                  this.renderers = null;
              }
              this.manager.release( this.profileManager );
              this.manager.release( this.linkService );
              this.manager = null;
              this.profileManager = null;
              this.linkService = null;
              this.manager.release( (Component)this.copletFactory );
              this.manager.release( (Component)this.layoutFactory );
              this.copletFactory = null;
              this.layoutFactory = null;
          }
  
      }
  
      /* (non-Javadoc)
       * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
       */
      public void configure(Configuration config) throws ConfigurationException {
          this.profileManagerRole = config.getChild("profile-manager").getValue(ProfileManager.ROLE);
          this.linkServiceRole = config.getChild("link-service").getValue(LinkService.ROLE);
          this.rendererSelectorRole = config.getChild("renderer-selector").getValue(Renderer.ROLE+"Selector");
          this.copletFactoryRole = config.getChild("coplet-factory").getValue(CopletFactory.ROLE);
          this.layoutFactoryRole = config.getChild("layout-factory").getValue(LayoutFactory.ROLE);
      }
  
      /* (non-Javadoc)
       * @see org.apache.cocoon.portal.PortalComponentManager#getRenderer(java.lang.String)
       */
      public Renderer getRenderer(String hint) {
          if ( rendererSelector == null ) {
              try {
                  this.rendererSelector = (ComponentSelector)this.manager.lookup( this.rendererSelectorRole );
              } catch (ComponentException e) {
                  throw new CascadingRuntimeException("Unable to lookup renderer selector with role " + this.rendererSelectorRole, e);
              }
              this.renderers = new HashMap();
          }
          Renderer o = (Renderer) this.renderers.get( hint );
          if ( o == null ) {
              try {
                  o = (Renderer) this.rendererSelector.select( hint );
                  this.renderers.put( hint, o );
              } catch (ComponentException e) {
                  throw new CascadingRuntimeException("Unable to lookup renderer with hint " + hint, e);
              }
          }
          return o;
      }
  
      /* (non-Javadoc)
       * @see org.apache.cocoon.portal.PortalComponentManager#getCopletFactory()
       */
      public CopletFactory getCopletFactory() {
          if ( null == this.copletFactory ) {
              try {
                  this.copletFactory = (CopletFactory)this.manager.lookup( this.copletFactoryRole);
              } catch (ComponentException e) {
                  throw new CascadingRuntimeException("Unable to lookup coplet factory with role " + this.copletFactoryRole, e);
              }
          }
          return this.copletFactory;
      }
  
      /* (non-Javadoc)
       * @see org.apache.cocoon.portal.PortalComponentManager#getLayoutFactory()
       */
      public LayoutFactory getLayoutFactory() {
          if ( null == this.layoutFactory ) {
              try {
                  this.layoutFactory = (LayoutFactory)this.manager.lookup( this.layoutFactoryRole);
              } catch (ComponentException e) {
                  throw new CascadingRuntimeException("Unable to lookup layout factory with role " + this.copletFactoryRole, e);
              }
          }
          return this.layoutFactory;
      }
  
  }
  
  
  
  1.2       +1 -1      cocoon-2.1/src/blocks/portal/samples/skins/basic/styles/window.xsl
  
  Index: window.xsl
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/samples/skins/basic/styles/window.xsl,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- window.xsl	25 Jun 2003 08:23:16 -0000	1.1
  +++ window.xsl	18 Jul 2003 14:41:46 -0000	1.2
  @@ -33,7 +33,7 @@
   			</font>
   	    </td>
   		<td align="right" bgColor="{$bgColor}">
  -			<xsl:if test="fullscreen-uri">
  +			<xsl:if test="fullscreen-uri and not(maximize-uri)">
   				<a href="{fullscreen-uri}">
   	  			    <img src="customize.gif" border="0" alt="Full Screen"/>
   	  			</a>
  
  
  
  1.4       +7 -13     cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/CopletModule.java
  
  Index: CopletModule.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/CopletModule.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- CopletModule.java	10 Jul 2003 13:17:03 -0000	1.3
  +++ CopletModule.java	18 Jul 2003 14:41:46 -0000	1.4
  @@ -64,7 +64,6 @@
   import org.apache.cocoon.environment.ObjectModelHelper;
   import org.apache.cocoon.portal.Constants;
   import org.apache.cocoon.portal.PortalService;
  -import org.apache.cocoon.portal.profile.ProfileManager;
   import org.apache.commons.jxpath.JXPathContext;
   
   /**
  @@ -116,9 +115,10 @@
        */
   	public Object getAttribute(String name, Configuration modeConf, Map objectModel) 
       throws ConfigurationException {
  -        ProfileManager profileManager = null;
  +        PortalService portalService = null;
           try {
  -            profileManager = (ProfileManager)this.manager.lookup(ProfileManager.ROLE);
  +
  +            portalService = (PortalService)this.manager.lookup(PortalService.ROLE);
   
               // determine coplet id
               String copletId = null;            
  @@ -129,20 +129,14 @@
                   copletId = (String)objectModel.get(Constants.COPLET_ID_KEY);
                   
                   // set portal name
  -                PortalService portalService = null;
  -                try {
  -                    portalService = (PortalService)this.manager.lookup(PortalService.ROLE);
  -                    portalService.setPortalName((String)objectModel.get(Constants.PORTAL_NAME_KEY));
  -                } finally {
  -                    this.manager.release(portalService);
  -                }
  +                portalService.setPortalName((String)objectModel.get(Constants.PORTAL_NAME_KEY));
               }
               
               if (copletId == null) {
                   throw new ConfigurationException("copletId must be passed in the object model either directly (e.g. by using ObjectModelAction) or within the parent context.");
               }
               
  -            JXPathContext jxpathContext = JXPathContext.newContext(profileManager.getCopletInstanceData(copletId));
  +            JXPathContext jxpathContext = JXPathContext.newContext(portalService.getComponentManager().getProfileManager().getCopletInstanceData(copletId));
               Object value = jxpathContext.getValue(name);
                   
               if (value == null) {
  @@ -154,7 +148,7 @@
           } catch (ComponentException e) {
               throw new ConfigurationException("ComponentException ", e);
           } finally {
  -            this.manager.release(profileManager);
  +            this.manager.release(portalService);
           }
   	}
   
  
  
  
  1.7       +11 -11    cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/coplet/impl/DefaultCopletFactory.java
  
  Index: DefaultCopletFactory.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/coplet/impl/DefaultCopletFactory.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- DefaultCopletFactory.java	14 Jun 2003 17:55:43 -0000	1.6
  +++ DefaultCopletFactory.java	18 Jul 2003 14:41:46 -0000	1.7
  @@ -67,6 +67,7 @@
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.avalon.framework.thread.ThreadSafe;
   import org.apache.cocoon.ProcessingException;
  +import org.apache.cocoon.portal.PortalService;
   import org.apache.cocoon.portal.aspect.AspectDataHandler;
   import org.apache.cocoon.portal.aspect.AspectDataStore;
   import org.apache.cocoon.portal.aspect.AspectDescription;
  @@ -76,7 +77,6 @@
   import org.apache.cocoon.portal.coplet.CopletFactory;
   import org.apache.cocoon.portal.coplet.CopletInstanceData;
   import org.apache.cocoon.portal.coplet.adapter.CopletAdapter;
  -import org.apache.cocoon.portal.profile.ProfileManager;
   
   /**
    * This factory is for creating and managing coplet objects
  @@ -181,14 +181,14 @@
               this.manager.release( adapterSelector );
           }
           
  -        ProfileManager profileManager = null;
  +        PortalService service = null;
           try {
  -            profileManager = (ProfileManager)this.manager.lookup(ProfileManager.ROLE);
  -            profileManager.register(instance);
  +            service = (PortalService)this.manager.lookup(PortalService.ROLE);
  +            service.getComponentManager().getProfileManager().register(instance);
           } catch (ComponentException ce) {
               throw new ProcessingException("Unable to lookup profile manager.", ce);
           } finally {
  -            this.manager.release( profileManager );
  +            this.manager.release( service );
           }
           return instance;
       }
  @@ -283,14 +283,14 @@
                   this.manager.release( adapterSelector );
               }
               
  -            ProfileManager profileManager = null;
  +            PortalService service = null;
               try {
  -                profileManager = (ProfileManager)this.manager.lookup(ProfileManager.ROLE);
  -                profileManager.unregister(copletInstanceData);
  +                service = (PortalService)this.manager.lookup(PortalService.ROLE);
  +                service.getComponentManager().getProfileManager().unregister(copletInstanceData);
               } catch (ComponentException ce) {
  -                throw new ProcessingException("Unable to lookup profile manager.", ce);
  +                throw new ProcessingException("Unable to lookup portal service.", ce);
               } finally {
  -                this.manager.release( profileManager );
  +                this.manager.release( service );
               }
           }
       }