You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by ra...@apache.org on 2003/12/01 23:57:15 UTC

cvs commit: jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages p001.psml

raphael     2003/12/01 14:57:15

  Modified:    portal/src/java/org/apache/jetspeed/aggregator Tag:
                        aggregation_1-branch Aggregator.java
                        ContentDispatcher.java PageAggregator.java
                        PortletRenderer.java
               portal/src/java/org/apache/jetspeed/aggregator/impl Tag:
                        aggregation_1-branch ContentDispatcherImpl.java
                        HttpBufferedResponse.java PortletRendererImpl.java
                        RenderingJob.java Worker.java WorkerMonitor.java
               portal/src/java/org/apache/jetspeed/engine/servlet Tag:
                        aggregation_1-branch ServletRequestImpl.java
               portal/src/java/org/apache/jetspeed/request Tag:
                        aggregation_1-branch JetspeedRequestContext.java
                        RequestContext.java
               portal/src/webapp/WEB-INF/conf Tag: aggregation_1-branch
                        jetspeed.properties
               portal/src/webapp/WEB-INF/pages Tag: aggregation_1-branch
                        p001.psml
  Added:       portal/src/java/org/apache/jetspeed/aggregator Tag:
                        aggregation_1-branch ContentDispatcherCtrl.java
  Log:
  - fix basic sequential aggregation
  - enable debug testing
  - first take on tackling parallel rendering issues
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.2.2.1   +4 -7      jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/Aggregator.java
  
  Index: Aggregator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/Aggregator.java,v
  retrieving revision 1.2
  retrieving revision 1.2.2.1
  diff -u -r1.2 -r1.2.2.1
  --- Aggregator.java	18 Oct 2003 19:53:32 -0000	1.2
  +++ Aggregator.java	1 Dec 2003 22:57:14 -0000	1.2.2.1
  @@ -53,15 +53,12 @@
    */
   package org.apache.jetspeed.aggregator;
   
  -
  -
  -
   import org.apache.jetspeed.cps.CommonService;
   import org.apache.jetspeed.exception.JetspeedException;
   import org.apache.jetspeed.request.RequestContext;
   
   /**
  - * This service handles the generation of unique identifiers
  + * This service handles the generation of first step of agregation process
    *
    * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
    * @version $Id$
  @@ -74,8 +71,8 @@
        * Builds the portlet set defined in the context into a portlet tree.
        *
        * @return Unique Portlet Entity ID
  -     */    
  +     */
       public void build(RequestContext context)
           throws JetspeedException;
  -    
  +
   }
  
  
  
  1.1.2.3   +1 -5      jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/Attic/ContentDispatcher.java
  
  Index: ContentDispatcher.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/Attic/ContentDispatcher.java,v
  retrieving revision 1.1.2.2
  retrieving revision 1.1.2.3
  diff -u -r1.1.2.2 -r1.1.2.3
  --- ContentDispatcher.java	30 Nov 2003 15:30:32 -0000	1.1.2.2
  +++ ContentDispatcher.java	1 Dec 2003 22:57:14 -0000	1.1.2.3
  @@ -78,8 +78,4 @@
        * hold until it's completely rendered.
        */
       public void include(Fragment fragment, HttpServletRequest req, HttpServletResponse rsp);
  -
  -    public void notify(ObjectID oid);
  -
  -    public HttpServletResponse register(PortletWindow window, RequestContext request);
   }
  
  
  
  1.1.2.2   +107 -52   jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/Attic/PageAggregator.java
  
  Index: PageAggregator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/Attic/PageAggregator.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- PageAggregator.java	30 Nov 2003 16:33:17 -0000	1.1.2.1
  +++ PageAggregator.java	1 Dec 2003 22:57:14 -0000	1.1.2.2
  @@ -78,11 +78,33 @@
   public class PageAggregator extends BaseCommonService implements Aggregator
   {
       private final static Log log = LogFactory.getLog(PageAggregator.class);
  +    private final static String DEFAULT_STRATEGY = "strategy.default";
  +
  +    public final static int STRATEGY_SEQUENTIAL = 0;
  +    public final static int STRATEGY_PARALLEL = 1;
  +    private final static String CONFIG_STRATEGY_SEQUENTIAL = "sequential";
  +    private final static String CONFIG_STRATEGY_PARALLEL = "parallel";
  +    private int strategy = STRATEGY_SEQUENTIAL;
   
       /**
        */
       public void init() throws CPSInitializationException
       {
  +        if (isInitialized())
  +        {
  +            return;
  +        }
  +
  +        try
  +        {
  +            initConfiguration();
  +        }
  +        catch (Exception e)
  +        {
  +            log.error("Aggregator: Failed to load Service: " + e);
  +            e.printStackTrace();
  +        }
  +
           setInit(true);
       }
   
  @@ -92,6 +114,19 @@
       {
       }
   
  +    private void initConfiguration() throws CPSInitializationException
  +    {
  +        String defaultStrategy = getConfiguration().getString(DEFAULT_STRATEGY, CONFIG_STRATEGY_SEQUENTIAL);
  +        if (defaultStrategy.equals(CONFIG_STRATEGY_SEQUENTIAL))
  +        {
  +            strategy = STRATEGY_SEQUENTIAL;
  +        }
  +        else if (defaultStrategy.equals(CONFIG_STRATEGY_PARALLEL))
  +        {
  +            strategy = STRATEGY_PARALLEL;
  +        }
  +    }
  +
       /**
        * Builds the portlet set defined in the context into a portlet tree.
        *
  @@ -101,29 +136,37 @@
           throws JetspeedException
       {
   
  -        ProfilerService profiler = (ProfilerService)CommonPortletServices.getPortalService(ProfilerService.SERVICE_NAME);
           PortletRenderer renderer = (PortletRenderer)CommonPortletServices.getPortalService(PortletRenderer.SERVICE_NAME);
  +/*
  +        ProfilerService profiler = (ProfilerService)CommonPortletServices.getPortalService(ProfilerService.SERVICE_NAME);
   
           // retrieve page associated to profile
  -        ProfileLocator locator = null;
  +        Page page = null;
  +
           try
           {
  -             locator = profiler.getProfile(context);
  +            if (context.getPage()!=null)
  +            {
  +                page = context.getPage();
  +            }
  +            else
  +            {
  +                page = profiler.getPage(profiler.getProfile(context));
  +                context.setPage(page);
  +            }
           }
           catch (Exception e)
           {
               throw new JetspeedException("Failed to get Locator from ProfilerService");
           }
   
  -        Page page = profiler.getPage(locator);
           if (null == page)
           {
  -            throw new JetspeedException("Failed to find PSML Page for locator" + locator);
  +            throw new JetspeedException("Failed to find Page for " + profiler.getProfile(context));
           }
  -
  -        //
  -        // Now prepare the state machine initial variables
  -        //
  +*/
  +        //DEBUG CODE: use this to test a specific page
  +        Page page = org.apache.jetspeed.services.page.PageManager.getPage("p001");
   
           //Set default acl
           String acl = page.getAcl();
  @@ -132,15 +175,6 @@
               //TBD get system default acl;
           }
   
  -        // Set default skin for the request in the request attributes
  -        String skin = null;
  -        if (page.getDefaultSkin()!=null)
  -        {
  -            skin = page.getDefaultSkin();
  -        }
  -
  -        context.getRequest().setAttribute("page.skin",skin);
  -
           // Initialize fragment
           Stack stack = new Stack();
           Fragment currentFragment = page.getRootFragment();
  @@ -152,59 +186,80 @@
   
           if (checkAccess(context,(currentFragment.getAcl()!=null)?currentFragment.getAcl():acl, "render"))
           {
  -            // push the children frgaments on the delayed rendering stack
  -            // root fragement is always treated synchronously
  -            for(Iterator i = currentFragment.getFragments().iterator(); i.hasNext();)
  +            if (strategy == STRATEGY_PARALLEL)
               {
  -                Fragment f = (Fragment)i.next();
  -
  -                if (!f.getState().equals("hidden"))
  +                // initializes the rendering stack with root children
  +                // root fragement is always treated synchronously
  +                for(Iterator i = currentFragment.getFragments().iterator(); i.hasNext();)
                   {
  -                    stack.push(i.next());
  -                }
  -            }
  -
  -            // Walk through the Fragment tree, and start rendering "portlet" type
  -            // fragment
  -            while (!stack.isEmpty())
  -            {
  -                currentFragment = (Fragment)stack.pop();
  +                    Fragment f = (Fragment)i.next();
   
  -                if (checkAccess(context,
  -                                ((currentFragment.getAcl()!=null)?currentFragment.getAcl():acl),
  -                                "render"))
  -                {
  -                    if (currentFragment.getType().equals("portlet"))
  +                    if (!"hidden".equals(f.getState()))
                       {
  -                        renderer.render(currentFragment,context);
  +                        stack.push(f);
                       }
  +                }
  +
  +                // Walk through the Fragment tree, and start rendering "portlet" type
  +                // fragment
  +                while (!stack.isEmpty())
  +                {
  +                    currentFragment = (Fragment)stack.pop();
   
  -                    // push the children frgaments on the rendering stack
  -                    for(Iterator i = currentFragment.getFragments().iterator(); i.hasNext();)
  +                    if (checkAccess(context,
  +                                    ((currentFragment.getAcl()!=null)?currentFragment.getAcl():acl),
  +                                    "render"))
                       {
  -                        Fragment f = (Fragment)i.next();
  +                        if (currentFragment.getType().equals("portlet"))
  +                        {
  +                            renderer.render(currentFragment,context);
  +                        }
   
  -                        if (!f.getState().equals("hidden"))
  +                        // push the children frgaments on the rendering stack
  +                        for(Iterator i = currentFragment.getFragments().iterator(); i.hasNext();)
                           {
  -                            stack.push(i.next());
  +                            Fragment f = (Fragment)i.next();
  +
  +                            if (!"hidden".equals(f.getState()))
  +                            {
  +                                stack.push(f);
  +                            }
                           }
                       }
  -                }
  -                else
  -                {
  -                    // Display an access denied message
  +                    else
  +                    {
  +                        log.warn("Access denied RENDER fragment "+currentFragment);
  +                    }
                   }
               }
   
  +            // Retrieves the content dispatcher appropriate for sequential
  +            // or parallel rendering
  +
  +            ContentDispatcher dispatcher = renderer.getDispatcher(context,(strategy==STRATEGY_PARALLEL));
  +
  +/*
               // Now synchronously trigger the rendering of the whole page
               renderer.renderNow(page.getRootFragment(),context);
  +*/
  +
  +            // DEBUG Testing: Use ContentDispatcher to display all children
  +            // of root fragment
  +
  +            for(Iterator i = page.getRootFragment().getFragments().iterator(); i.hasNext();)
  +            {
  +                Fragment f = (Fragment)i.next();
  +
  +                if (!"hidden".equals(f.getState()))
  +                {
  +                    dispatcher.include(f,context.getRequest(),context.getResponse());
  +                }
  +            }
           }
           else
           {
  -            // generate access denied error message
  +            log.warn("Access denied RENDER page "+page);
           }
  -
  -        context.getRequest().removeAttribute("page.skin");
       }
   
       public boolean checkAccess(RequestContext context, String acl, String action)
  
  
  
  1.1.2.2   +11 -3     jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/Attic/PortletRenderer.java
  
  Index: PortletRenderer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/Attic/PortletRenderer.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- PortletRenderer.java	29 Nov 2003 23:00:01 -0000	1.1.2.1
  +++ PortletRenderer.java	1 Dec 2003 22:57:14 -0000	1.1.2.2
  @@ -53,6 +53,8 @@
    */
   package org.apache.jetspeed.aggregator;
   
  +import javax.servlet.http.HttpServletRequest;
  +import javax.servlet.http.HttpServletResponse;
   import org.apache.jetspeed.cps.CommonService;
   import org.apache.jetspeed.om.page.Fragment;
   import org.apache.jetspeed.request.RequestContext;
  @@ -69,7 +71,7 @@
   public interface PortletRenderer extends CommonService
   {
       /** The name of this service */
  -    public String SERVICE_NAME = "renderer";
  +    public String SERVICE_NAME = "PortletRenderer";
   
       /**
           Render the specified Page fragment.
  @@ -77,6 +79,12 @@
        */
       public void renderNow(Fragment fragment, RequestContext request);
   
  +    /**
  +        Render the specified Page fragment.
  +        Result is returned in the PortletResponse.
  +     */
  +    public void renderNow(Fragment fragment, HttpServletRequest request, HttpServletResponse response);
  +
       /** Render the specified Page fragment.
           The method returns before rendering is complete, rendered content can be
           accessed through the ContentDispatcher
  @@ -86,6 +94,6 @@
       /**
        * Retrieve the ContentDispatcher for the specified request
        */
  -    public ContentDispatcher getDispatcher(RequestContext request);
  +    public ContentDispatcher getDispatcher(RequestContext request, boolean isParallel);
   
   }
  
  
  
  No                   revision
  
  Index: PortletRenderer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/Attic/PortletRenderer.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- PortletRenderer.java	29 Nov 2003 23:00:01 -0000	1.1.2.1
  +++ PortletRenderer.java	1 Dec 2003 22:57:14 -0000	1.1.2.2
  @@ -53,6 +53,8 @@
    */
   package org.apache.jetspeed.aggregator;
   
  +import javax.servlet.http.HttpServletRequest;
  +import javax.servlet.http.HttpServletResponse;
   import org.apache.jetspeed.cps.CommonService;
   import org.apache.jetspeed.om.page.Fragment;
   import org.apache.jetspeed.request.RequestContext;
  @@ -69,7 +71,7 @@
   public interface PortletRenderer extends CommonService
   {
       /** The name of this service */
  -    public String SERVICE_NAME = "renderer";
  +    public String SERVICE_NAME = "PortletRenderer";
   
       /**
           Render the specified Page fragment.
  @@ -77,6 +79,12 @@
        */
       public void renderNow(Fragment fragment, RequestContext request);
   
  +    /**
  +        Render the specified Page fragment.
  +        Result is returned in the PortletResponse.
  +     */
  +    public void renderNow(Fragment fragment, HttpServletRequest request, HttpServletResponse response);
  +
       /** Render the specified Page fragment.
           The method returns before rendering is complete, rendered content can be
           accessed through the ContentDispatcher
  @@ -86,6 +94,6 @@
       /**
        * Retrieve the ContentDispatcher for the specified request
        */
  -    public ContentDispatcher getDispatcher(RequestContext request);
  +    public ContentDispatcher getDispatcher(RequestContext request, boolean isParallel);
   
   }
  
  
  
  No                   revision
  
  Index: PortletRenderer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/Attic/PortletRenderer.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- PortletRenderer.java	29 Nov 2003 23:00:01 -0000	1.1.2.1
  +++ PortletRenderer.java	1 Dec 2003 22:57:14 -0000	1.1.2.2
  @@ -53,6 +53,8 @@
    */
   package org.apache.jetspeed.aggregator;
   
  +import javax.servlet.http.HttpServletRequest;
  +import javax.servlet.http.HttpServletResponse;
   import org.apache.jetspeed.cps.CommonService;
   import org.apache.jetspeed.om.page.Fragment;
   import org.apache.jetspeed.request.RequestContext;
  @@ -69,7 +71,7 @@
   public interface PortletRenderer extends CommonService
   {
       /** The name of this service */
  -    public String SERVICE_NAME = "renderer";
  +    public String SERVICE_NAME = "PortletRenderer";
   
       /**
           Render the specified Page fragment.
  @@ -77,6 +79,12 @@
        */
       public void renderNow(Fragment fragment, RequestContext request);
   
  +    /**
  +        Render the specified Page fragment.
  +        Result is returned in the PortletResponse.
  +     */
  +    public void renderNow(Fragment fragment, HttpServletRequest request, HttpServletResponse response);
  +
       /** Render the specified Page fragment.
           The method returns before rendering is complete, rendered content can be
           accessed through the ContentDispatcher
  @@ -86,6 +94,6 @@
       /**
        * Retrieve the ContentDispatcher for the specified request
        */
  -    public ContentDispatcher getDispatcher(RequestContext request);
  +    public ContentDispatcher getDispatcher(RequestContext request, boolean isParallel);
   
   }
  
  
  
  1.1.2.1   +84 -0     jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/Attic/ContentDispatcherCtrl.java
  
  
  
  
  No                   revision
  No                   revision
  1.1.2.3   +51 -13    jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/impl/Attic/ContentDispatcherImpl.java
  
  Index: ContentDispatcherImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/impl/Attic/ContentDispatcherImpl.java,v
  retrieving revision 1.1.2.2
  retrieving revision 1.1.2.3
  diff -u -r1.1.2.2 -r1.1.2.3
  --- ContentDispatcherImpl.java	30 Nov 2003 15:30:33 -0000	1.1.2.2
  +++ ContentDispatcherImpl.java	1 Dec 2003 22:57:14 -0000	1.1.2.3
  @@ -63,6 +63,9 @@
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
   import org.apache.jetspeed.aggregator.ContentDispatcher;
  +import org.apache.jetspeed.aggregator.ContentDispatcherCtrl;
  +import org.apache.jetspeed.aggregator.PortletRenderer;
  +import org.apache.jetspeed.cps.CommonPortletServices;
   import org.apache.jetspeed.om.page.Fragment;
   import org.apache.jetspeed.request.RequestContext;
   import org.apache.jetspeed.util.JetspeedObjectID;
  @@ -77,13 +80,24 @@
    * @author <a href="mailto:raphael@apache.org">Rapha�l Luta</a>
    * @version $Id$
    */
  -public class ContentDispatcherImpl implements ContentDispatcher
  +public class ContentDispatcherImpl implements ContentDispatcher, ContentDispatcherCtrl
   {
       /** Commons logging */
       protected final static Log log = LogFactory.getLog(ContentDispatcherImpl.class);
   
       private Map contents = new Hashtable();
   
  +    private boolean isParallel = true;
  +
  +    public ContentDispatcherImpl()
  +    {
  +    }
  +
  +    public ContentDispatcherImpl(boolean isParallel)
  +    {
  +        this.isParallel = isParallel;
  +    }
  +
       /**
        * Include in the provided PortletResponse output stream the rendered content
        * of the request fragment.
  @@ -94,6 +108,17 @@
       {
           ObjectID oid = JetspeedObjectID.createFromString(fragment.getId());
   
  +        log.debug("Including content for OID "+ oid);
  +
  +        // If we work synchronously, call Renderer.renderNow
  +        if (!isParallel)
  +        {
  +            log.debug("Synchronous rendering for OID "+ oid);
  +            PortletRenderer renderer = (PortletRenderer)CommonPortletServices.getPortalService(PortletRenderer.SERVICE_NAME);
  +            renderer.renderNow(fragment,req,rsp);
  +            return;
  +        }
  +
           PortletContent content = (PortletContent)contents.get(oid);
   
           if (content!=null)
  @@ -102,7 +127,7 @@
               {
                   if (!content.isComplete())
                   {
  -                    log.debug("Waiting for content of fragment "+oid);
  +                    log.debug("Waiting for content OID "+oid);
                       try
                       {
                           content.wait();
  @@ -110,37 +135,39 @@
                       catch (InterruptedException e)
                       {
                       }
  -                    log.debug("Been notified that content "+oid+" is complete");
  +                    log.debug("Been notified that OID "+oid+" is complete");
                   }
  +                log.debug("Content OID "+oid+": "+new String(content.toByteArray()));
               }
   
               try
               {
                   try
                   {
  -                    rsp.getWriter().write(new String(content.toByteArray(),
  -                                                     rsp.getCharacterEncoding())
  -                                         );
  -
  +                    rsp.getWriter().write(content.toString(rsp.getCharacterEncoding()));
                   }
                   catch (IllegalStateException e)
                   {
  -                    rsp.getOutputStream().write(content.toByteArray());
  +                    content.writeTo(rsp.getOutputStream());
                   }
               }
               catch (Exception e)
               {
  -                log.error("Unable to include content "+oid+" in response object", e);
  +                log.error("Unable to include content OID "+oid+" in response object", e);
               }
               finally
               {
                   synchronized(contents)
                   {
  -                    log.debug("Removing content "+oid);
  +                    log.debug("Removing content OID "+oid);
                       contents.remove(oid);
                   }
               }
           }
  +        else
  +        {
  +            log.debug("Content is null for OID "+oid);
  +        }
       }
   
       public void notify(ObjectID oid)
  @@ -151,13 +178,14 @@
           {
               synchronized (content)
               {
  +                log.debug("Notifying complete OID "+oid);
                   content.setComplete(true);
                   content.notifyAll();
               }
           }
       }
   
  -    public HttpServletResponse register(PortletWindow window, RequestContext request)
  +    public HttpServletResponse getResponseForWindow(PortletWindow window, RequestContext request)
       {
           PortletContent myContent = new PortletContent();
   
  @@ -166,7 +194,7 @@
               contents.put(window.getId(),myContent);
           }
   
  -        return new HttpBufferedResponse(request.getResponseForWindow(window),
  +        return new HttpBufferedResponse(request.getResponse(),
                                           myContent.getOutputStream());
       }
   
  @@ -183,6 +211,16 @@
           public ServletOutputStream getOutputStream()
           {
               return os;
  +        }
  +
  +        public String toString(String enc) throws java.io.UnsupportedEncodingException
  +        {
  +            return os.toString(enc);
  +        }
  +
  +        public void writeTo(java.io.OutputStream out) throws java.io.IOException
  +        {
  +            os.writeTo(out);
           }
   
           public byte[] toByteArray()
  
  
  
  1.1.2.2   +38 -0     jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/impl/Attic/HttpBufferedResponse.java
  
  Index: HttpBufferedResponse.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/impl/Attic/HttpBufferedResponse.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- HttpBufferedResponse.java	30 Nov 2003 15:30:33 -0000	1.1.2.1
  +++ HttpBufferedResponse.java	1 Dec 2003 22:57:14 -0000	1.1.2.2
  @@ -57,6 +57,8 @@
   import java.io.PrintWriter;
   import java.io.UnsupportedEncodingException;
   
  +import org.apache.commons.logging.Log;
  +import org.apache.commons.logging.LogFactory;
   import javax.servlet.ServletOutputStream;
   import javax.servlet.http.HttpServletResponse;
   
  @@ -65,6 +67,9 @@
       private boolean usingWriter;
       private boolean usingStream;
   
  +    /** Commons logging */
  +    protected final static Log log = LogFactory.getLog(HttpBufferedResponse.class);
  +
       private ServletOutputStream wrappedStream;
       private PrintWriter wrappedWriter;
   
  @@ -84,6 +89,7 @@
   
           usingStream = true;
   
  +        log.debug("getOutputStream: "+wrappedStream);
           return wrappedStream;
       }
   
  @@ -100,8 +106,40 @@
           }
   
           usingWriter = true;
  +        log.debug("getWriter: "+wrappedWriter+ " bytes "
  +                    +((org.apache.jetspeed.util.ByteArrayServletOutputStream)wrappedStream).toByteArray().length);
   
           return wrappedWriter;
       }
   
  +
  +    public void setBufferSize(int size)
  +    {
  +        log.debug("setBufferSize");
  +        // ignore
  +    }
  +
  +    public int getBufferSize()
  +    {
  +        log.debug("getBufferSize");
  +        return 0;
  +    }
  +
  +    public void flushBuffer() throws IOException
  +    {
  +        log.debug("flushBuffer");
  +        wrappedStream.flush();
  +    }
  +
  +    public boolean isCommitted()
  +    {
  +        log.debug("isCommitted");
  +        return false;
  +    }
  +
  +    public void reset()
  +    {
  +        log.debug("reset");
  +        ((org.apache.jetspeed.util.ByteArrayServletOutputStream)wrappedStream).reset();
  +    }
   }
  
  
  
  1.1.2.4   +119 -20   jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/impl/Attic/PortletRendererImpl.java
  
  Index: PortletRendererImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/impl/Attic/PortletRendererImpl.java,v
  retrieving revision 1.1.2.3
  retrieving revision 1.1.2.4
  diff -u -r1.1.2.3 -r1.1.2.4
  --- PortletRendererImpl.java	30 Nov 2003 16:33:17 -0000	1.1.2.3
  +++ PortletRendererImpl.java	1 Dec 2003 22:57:14 -0000	1.1.2.4
  @@ -61,6 +61,7 @@
   import org.apache.fulcrum.InitializationException;
   import org.apache.jetspeed.aggregator.PortletRenderer;
   import org.apache.jetspeed.aggregator.ContentDispatcher;
  +import org.apache.jetspeed.aggregator.ContentDispatcherCtrl;
   import org.apache.jetspeed.aggregator.PortletWindowFactory;
   import org.apache.jetspeed.container.PortletContainerFactory;
   import org.apache.jetspeed.cps.BaseCommonService;
  @@ -69,11 +70,13 @@
   import org.apache.jetspeed.om.page.Fragment;
   import org.apache.jetspeed.request.RequestContext;
   import org.apache.jetspeed.services.entity.PortletEntityAccess;
  +import org.apache.jetspeed.services.registry.JetspeedPortletRegistry;
   import org.apache.jetspeed.util.JetspeedObjectID;
   import org.apache.pluto.PortletContainer;
   import org.apache.pluto.PortletContainerException;
   import org.apache.pluto.om.common.ObjectID;
   import org.apache.pluto.om.entity.PortletEntity;
  +import org.apache.pluto.om.portlet.PortletDefinition;
   import org.apache.pluto.om.window.PortletWindow;
   
   /**
  @@ -92,12 +95,27 @@
   
       private WorkerMonitor monitor;
   
  +    private PortletContainer container = null;
   
       /**
        */
       public void init() throws InitializationException
       {
           this.monitor = new WorkerMonitor();
  +        this.monitor.init();
  +
  +        try
  +        {
  +            this.container = PortletContainerFactory.getPortletContainer();
  +        }
  +        catch (PortletContainerException e)
  +        {
  +            e.printStackTrace();
  +            log.error("Failed to get PortletContainer: " + e);
  +            return;
  +        }
  +
  +        setInit(true);
       }
   
       /**
  @@ -112,18 +130,6 @@
        */
       public void renderNow(Fragment fragment, RequestContext request)
       {
  -        PortletContainer container;
  -        try
  -        {
  -            container = PortletContainerFactory.getPortletContainer();
  -        }
  -        catch (PortletContainerException e)
  -        {
  -            e.printStackTrace();
  -            log.error("Failed to get PortletContainer: " + e);
  -            return;
  -        }
  -
           //
           // create the portlet window and render the portlet
           //
  @@ -131,9 +137,26 @@
           try
           {
               ObjectID oid = JetspeedObjectID.createFromString(fragment.getId());
  -
               PortletEntity portletEntity = PortletEntityAccess.getEntity(oid);
  -            PortletWindow portletWindow = PortletWindowFactory.getWindow(portletEntity, oid);
  +            PortletWindow portletWindow = null;
  +
  +            if (portletEntity==null)
  +            {
  +                PortletDefinition portletDefinition = JetspeedPortletRegistry.getPortletDefinitionByUniqueName(fragment.getName());
  +                if (portletDefinition == null)
  +                {
  +                    log.error("Failed to load: " + fragment.getName() + " from registry");
  +                }
  +                portletWindow = PortletWindowFactory.getWindow(portletDefinition, fragment.getName());
  +
  +                // fix id
  +                fragment.setId(portletWindow.getId().toString());
  +                oid = portletWindow.getId();
  +            }
  +            else
  +            {
  +                portletWindow = PortletWindowFactory.getWindow(portletEntity, oid);
  +            }
   
               servletRequest = request.getRequestForWindow(portletWindow);
               HttpServletResponse servletResponse = request.getResponseForWindow(portletWindow);
  @@ -156,6 +179,48 @@
           }
       }
   
  +    /**
  +        Render the specified Page fragment.
  +        Result is returned in the PortletResponse.
  +     */
  +    public void renderNow(Fragment fragment, HttpServletRequest request, HttpServletResponse response)
  +    {
  +        //
  +        // create the portlet window and render the portlet
  +        //
  +        try
  +        {
  +            ObjectID oid = JetspeedObjectID.createFromString(fragment.getId());
  +            PortletEntity portletEntity = PortletEntityAccess.getEntity(oid);
  +            PortletWindow portletWindow = null;
  +
  +            if (portletEntity==null)
  +            {
  +                PortletDefinition portletDefinition = JetspeedPortletRegistry.getPortletDefinitionByUniqueName(fragment.getName());
  +                if (portletDefinition == null)
  +                {
  +                    log.error("Failed to load: " + fragment.getName() + " from registry");
  +                }
  +                portletWindow = PortletWindowFactory.getWindow(portletDefinition, fragment.getName());
  +
  +                // fix id
  +                fragment.setId(portletWindow.getId().toString());
  +                oid = portletWindow.getId();
  +            }
  +            else
  +            {
  +                portletWindow = PortletWindowFactory.getWindow(portletEntity, oid);
  +            }
  +
  +            container.renderPortlet(portletWindow, request, response);
  +        }
  +        catch (Throwable t)
  +        {
  +            t.printStackTrace();
  +            log.error("Failed to service portlet, portlet exception: " + t);
  +        }
  +    }
  +
       /** Render the specified Page fragment.
           The method returns before rendering is complete, rendered content can be
           accessed through the ContentDispatcher
  @@ -166,15 +231,35 @@
   
           ObjectID oid = JetspeedObjectID.createFromString(fragment.getId());
           PortletEntity portletEntity = PortletEntityAccess.getEntity(oid);
  -        PortletWindow portletWindow = PortletWindowFactory.getWindow(portletEntity, oid);
  -        ContentDispatcher dispatcher = getDispatcher(request);
  +        PortletWindow portletWindow = null;
  +
  +        if (portletEntity==null)
  +        {
  +            PortletDefinition portletDefinition = JetspeedPortletRegistry.getPortletDefinitionByUniqueName(fragment.getName());
  +            if (portletDefinition == null)
  +            {
  +                log.error("Failed to load: " + fragment.getName() + " from registry");
  +            }
  +            portletWindow = PortletWindowFactory.getWindow(portletDefinition, fragment.getName());
  +
  +            // fix id
  +            fragment.setId(portletWindow.getId().toString());
  +            oid = portletWindow.getId();
  +        }
  +        else
  +        {
  +            portletWindow = PortletWindowFactory.getWindow(portletEntity, oid);
  +        }
  +
  +        ContentDispatcherCtrl dispatcher = getDispatcherCtrl(request,true);
   
           HttpServletRequest servletRequest = request.getRequestForWindow(portletWindow);
  -        HttpServletResponse servletResponse = dispatcher.register(portletWindow, request);
  +        HttpServletResponse servletResponse = dispatcher.getResponseForWindow(portletWindow, request);
   
           servletRequest.setAttribute("page.fragment",fragment);
   
           rJob.setWindow(portletWindow);
  +        rJob.setContainer(this.container);
           rJob.setRequest(servletRequest);
           rJob.setResponse(servletResponse);
           rJob.setDispatcher(dispatcher);
  @@ -185,9 +270,23 @@
       /**
        * Retrieve the ContentDispatcher for the specified request
        */
  -    public ContentDispatcher getDispatcher(RequestContext request)
  +    public ContentDispatcher getDispatcher(RequestContext request, boolean isParallel)
       {
  -        return new ContentDispatcherImpl();
  +        return (ContentDispatcher)getDispatcherCtrl(request,isParallel);
  +    }
  +
  +    /**
  +     * Retrieve the ContentDispatcherCtrl for the specified request
  +     */
  +    protected ContentDispatcherCtrl getDispatcherCtrl(RequestContext request, boolean isParallel)
  +    {
  +        if (request.getRequest().getAttribute("dispatcher")==null)
  +        {
  +            log.debug("Creating a new dispatcher and binding to request "+request.getRequest());
  +            request.getRequest().setAttribute("dispatcher",new ContentDispatcherImpl(isParallel));
  +        }
  +
  +        return (ContentDispatcherCtrl)request.getRequest().getAttribute("dispatcher");
       }
   
   }
  
  
  
  1.1.2.3   +20 -25    jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/impl/Attic/RenderingJob.java
  
  Index: RenderingJob.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/impl/Attic/RenderingJob.java,v
  retrieving revision 1.1.2.2
  retrieving revision 1.1.2.3
  diff -u -r1.1.2.2 -r1.1.2.3
  --- RenderingJob.java	30 Nov 2003 16:33:17 -0000	1.1.2.2
  +++ RenderingJob.java	1 Dec 2003 22:57:14 -0000	1.1.2.3
  @@ -59,11 +59,9 @@
   
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  -import org.apache.jetspeed.aggregator.ContentDispatcher;
  -import org.apache.jetspeed.container.PortletContainerFactory;
  +import org.apache.jetspeed.aggregator.ContentDispatcherCtrl;
   import org.apache.jetspeed.exception.JetspeedException;
   import org.apache.pluto.PortletContainer;
  -import org.apache.pluto.PortletContainerException;
   import org.apache.pluto.om.common.ObjectID;
   import org.apache.pluto.om.entity.PortletEntity;
   import org.apache.pluto.om.window.PortletWindow;
  @@ -85,7 +83,8 @@
       private PortletWindow window = null;
       private HttpServletRequest request = null;
       private HttpServletResponse response = null;
  -    private ContentDispatcher dispatcher = null;
  +    private ContentDispatcherCtrl dispatcher = null;
  +    private PortletContainer container = null;
   
       public void setWindow(PortletWindow window)
       {
  @@ -117,47 +116,43 @@
           return this.response;
       }
   
  -    public void setDispatcher(ContentDispatcher dispatcher)
  +    public void setDispatcher(ContentDispatcherCtrl dispatcher)
       {
           this.dispatcher = dispatcher;
       }
   
  -    public ContentDispatcher getDispatcher()
  +    public ContentDispatcherCtrl getDispatcher()
       {
           return this.dispatcher;
       }
   
  +    public void setContainer(PortletContainer container)
  +    {
  +        this.container = container;
  +    }
  +
  +    public PortletContainer getContainer()
  +    {
  +        return this.container;
  +    }
  +
       /**
        * Checks if queue is empty, if not try to empty it by calling
        * the WorkerMonitor. When done, pause until next scheduled scan.
        */
       public void run()
       {
  -        PortletContainer container;
  -        try
  -        {
  -            container = PortletContainerFactory.getPortletContainer();
  -        }
  -        catch (PortletContainerException e)
  -        {
  -            e.printStackTrace();
  -            log.error("Failed to get PortletContainer: " + e);
  -            return;
  -        }
  -
           try
           {
  +            log.debug("Rendering OID "+this.window.getId()+" "+ this.request +" "+this.response);
               container.renderPortlet(this.window, this.request, this.response);
  +            log.debug("Notifying dispatcher OID "+this.window.getId());
  +            this.response.flushBuffer();
               dispatcher.notify(this.window.getId());
           }
           catch (Throwable t)
           {
  -            t.printStackTrace();
  -            log.error("Failed to service portlet, portlet exception: " + t);
  -        }
  -        finally
  -        {
  -            this.request.removeAttribute("page.fragment");
  +            log.error("Error rendering portlet OID " + this.window.getId(),t);
           }
       }
   }
  
  
  
  1.1.2.3   +2 -1      jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/impl/Attic/Worker.java
  
  Index: Worker.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/impl/Attic/Worker.java,v
  retrieving revision 1.1.2.2
  retrieving revision 1.1.2.3
  diff -u -r1.1.2.2 -r1.1.2.3
  --- Worker.java	30 Nov 2003 15:30:33 -0000	1.1.2.2
  +++ Worker.java	1 Dec 2003 22:57:14 -0000	1.1.2.3
  @@ -176,6 +176,7 @@
               {
                   try
                   {
  +                    log.debug("Processing job for window :" + ((RenderingJob)job).getWindow().getId());
                       this.job.run();
                   }
                   catch (Throwable t)
  
  
  
  1.1.2.3   +12 -5     jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/impl/Attic/WorkerMonitor.java
  
  Index: WorkerMonitor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/impl/Attic/WorkerMonitor.java,v
  retrieving revision 1.1.2.2
  retrieving revision 1.1.2.3
  diff -u -r1.1.2.2 -r1.1.2.3
  --- WorkerMonitor.java	30 Nov 2003 15:30:33 -0000	1.1.2.2
  +++ WorkerMonitor.java	1 Dec 2003 22:57:14 -0000	1.1.2.3
  @@ -80,13 +80,13 @@
       private static long sCount = 0;
   
       /** Minimum number of wokers to create */
  -    private int minWorkers = 10;
  +    private int minWorkers = 5;
   
       /** Maximum number of workers */
       private int maxWorkers = 50;
   
       /** Minimum amount of spare workers */
  -    private int spareWorkers = 5;
  +    private int spareWorkers = 3;
   
       /** Maximum of job processed by a worker before being released */
       private int maxJobsPerWorker = 10;
  @@ -102,6 +102,13 @@
   
       public void init()
       {
  +        addWorkers(this.minWorkers);
  +        setQueue(new FIFOQueue());
  +    }
  +
  +    public void setQueue(Queue queue)
  +    {
  +        this.queue = queue;
       }
   
       /**
  @@ -125,7 +132,7 @@
   
               for (int i = 0; i < wCount; ++i)
               {
  -                Worker worker = new Worker(this, this.tg, "WORKER_" + sCount++);
  +                Worker worker = new Worker(this, this.tg, "WORKER_" + (++sCount));
                   worker.start();
                   workers.push(worker);
               }
  @@ -198,7 +205,7 @@
   
           synchronized (worker)
           {
  -            if (worker.getJobCount()<this.maxJobsPerWorker)
  +            if ((worker.getJobCount()<this.maxJobsPerWorker)&&(queue.size()>0))
               {
                   worker.setJob((RenderingJob)queue.pop());
                   return;
  
  
  
  No                   revision
  No                   revision
  1.4.2.1   +6 -6      jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/engine/servlet/ServletRequestImpl.java
  
  Index: ServletRequestImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/engine/servlet/ServletRequestImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.4.2.1
  diff -u -r1.4 -r1.4.2.1
  --- ServletRequestImpl.java	21 Oct 2003 21:52:02 -0000	1.4
  +++ ServletRequestImpl.java	1 Dec 2003 22:57:14 -0000	1.4.2.1
  @@ -67,7 +67,7 @@
   import org.apache.pluto.om.window.PortletWindow;
   
   /**
  - * This request wrappers the servlet request and is used 
  + * This request wrappers the servlet request and is used
    * within the container to communicate to the invoked servlet.
    *
    * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
  @@ -88,7 +88,7 @@
   
           this.portletWindow = window;
           // control = new PortalControlParameter(new PortalURLImpl(servletRequest));
  -		control = new PortalControlParameter(Jetspeed.getCurrentRequestContext().getRequestedPortalURL());
  +        control = new PortalControlParameter(Jetspeed.getCurrentRequestContext().getRequestedPortalURL());
   
       }
   
  @@ -97,7 +97,7 @@
           return (HttpServletRequest) super.getRequest();
       }
   
  -    //	HttpServletRequestWrapper overlay
  +    //  HttpServletRequestWrapper overlay
   
       public String getContentType()
       {
  @@ -109,7 +109,7 @@
           return contentType;
       }
   
  -    //	ServletRequestWrapper overlay
  +    //  ServletRequestWrapper overlay
   
       public String getParameter(String name)
       {
  @@ -136,7 +136,7 @@
   
               }
   
  -            //get request params      
  +            //get request params
               String pid = control.getPIDValue();
               String wid = portletWindow.getId().toString();
               if (pid.equals(wid))
  
  
  
  No                   revision
  No                   revision
  1.4.2.1   +36 -24    jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContext.java
  
  Index: JetspeedRequestContext.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContext.java,v
  retrieving revision 1.4
  retrieving revision 1.4.2.1
  diff -u -r1.4 -r1.4.2.1
  --- JetspeedRequestContext.java	23 Oct 2003 01:45:24 -0000	1.4
  +++ JetspeedRequestContext.java	1 Dec 2003 22:57:14 -0000	1.4.2.1
  @@ -59,6 +59,7 @@
   
   import org.apache.jetspeed.PortalContext;
   import org.apache.jetspeed.om.profile.Profile;
  +import org.apache.jetspeed.om.page.Page;
   import org.apache.jetspeed.services.factory.FactoryManager;
   import org.apache.jetspeed.capability.CapabilityMap;
   import org.apache.jetspeed.engine.core.PortalControlParameter;
  @@ -72,8 +73,8 @@
   
   /**
    * Jetspeed Request Context is associated with each portal request.
  - * The request holds the contextual information shared amongst components 
  - * in the portal, accessed through a common valve pipeline. 
  + * The request holds the contextual information shared amongst components
  + * in the portal, accessed through a common valve pipeline.
    *
    * @author <a href="mailto:david@bluesunrise.com">David Sean Taylor</a>
    * @version $Id$
  @@ -85,6 +86,7 @@
       private HttpServletResponse response;
       private ServletConfig config;
       private Profile profile;
  +    private Page page;
       private PortletDefinition portletDefinition;
   
       private CapabilityMap capabilityMap;
  @@ -98,7 +100,7 @@
   
       /**
        * Create a new Request Context
  -     * 
  +     *
        * @param pc
        * @param request
        * @param response
  @@ -125,8 +127,8 @@
   
       /**
        * The servlet request can always get you back to the Request Context if you need it
  -     * This static accessor provides this capability 
  -     * 
  +     * This static accessor provides this capability
  +     *
        * @param request
        * @return RequestContext
        */
  @@ -165,6 +167,16 @@
           this.profile = profile;
       }
   
  +    public Page getPage()
  +    {
  +        return this.page;
  +    }
  +
  +    public void setPage(Page page)
  +    {
  +        this.page = page;
  +    }
  +
       public PortletDefinition getPortletDefinition()
       {
           return portletDefinition;
  @@ -176,8 +188,8 @@
       }
   
       /** Set the capabilityMap. Used by the CapabilityValve
  -       * 
  -       * @param capabilityMap 
  +       *
  +       * @param capabilityMap
          */
       public void setCapabilityMap(CapabilityMap map)
       {
  @@ -185,7 +197,7 @@
       }
   
       /** get the Capability Map
  -     * 
  +     *
        */
       public CapabilityMap getCapabilityMap()
       {
  @@ -193,8 +205,8 @@
       }
   
       /** Set the Mimetype. Used by the CapabilityValve
  -     * 
  -     * @param mimeType 
  +     *
  +     * @param mimeType
        */
       public void setMimeType(String mimeType)
       {
  @@ -202,7 +214,7 @@
       }
   
       /** get the mimeType for the request
  -     * 
  +     *
        */
       public String getMimeType()
       {
  @@ -210,8 +222,8 @@
       }
   
       /** Set the mediaType. Used by the CapabilityValve
  -     * 
  -     * @param mediaType 
  +     *
  +     * @param mediaType
        */
       public void setMediaType(String mediaType)
       {
  @@ -219,7 +231,7 @@
       }
   
       /** get the Media Type
  -     * 
  +     *
        */
       public String getMediaType()
       {
  @@ -249,7 +261,7 @@
   
       /**
        * Sets the target Portlet Action Window
  -     * 
  +     *
        * @param window
        */
       public void setActionWindow(PortletWindow portletWindow)
  @@ -259,8 +271,8 @@
   
       /**
        * get the character encoding
  -     * 
  -     * 
  +     *
  +     *
        */
       public String getCharacterEncoding()
       {
  @@ -269,19 +281,19 @@
   
       /**
        * set character encoding
  -     * 
  -     * @param enc 
  +     *
  +     * @param enc
        */
       public void setCharacterEncoding(String enc)
       {
           this.encoding = enc;
       }
   
  -    /** 
  +    /**
        * <p>
        * getRequestForWindow
        * </p>
  -     * 
  +     *
        * @see org.apache.jetspeed.request.RequestContext#getRequestForWindow(org.apache.pluto.om.window.PortletWindow)
        * @param window
        * @return
  @@ -294,11 +306,11 @@
           return requestWrapper;
       }
   
  -    /** 
  +    /**
        * <p>
        * getResponseForWindow
        * </p>
  -     * 
  +     *
        * @see org.apache.jetspeed.request.RequestContext#getResponseForWindow(org.apache.pluto.om.window.PortletWindow)
        * @param window
        * @return
  
  
  
  1.3.2.2   +16 -1     jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/request/RequestContext.java
  
  Index: RequestContext.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/request/RequestContext.java,v
  retrieving revision 1.3.2.1
  retrieving revision 1.3.2.2
  diff -u -r1.3.2.1 -r1.3.2.2
  --- RequestContext.java	29 Nov 2003 23:00:01 -0000	1.3.2.1
  +++ RequestContext.java	1 Dec 2003 22:57:14 -0000	1.3.2.2
  @@ -62,6 +62,7 @@
   import org.apache.jetspeed.engine.core.PortalControlParameter;
   import org.apache.jetspeed.engine.core.PortalURL;
   import org.apache.jetspeed.om.profile.Profile;
  +import org.apache.jetspeed.om.page.Page;
   import org.apache.pluto.om.window.PortletWindow;
   
   /**
  @@ -118,6 +119,20 @@
        * @param profile The target profile
        */
       public void setProfile(Profile profile);
  +
  +    /**
  +     * Gets the target page for this request
  +     *
  +     * @return Page
  +     */
  +    public Page getPage();
  +
  +    /**
  +     * Sets the target page  for this request
  +     *
  +     * @param page The target page
  +     */
  +    public void setPage(Page page);
   
       /**
        * Set the capabilityMap. Used by the CapabilityValve
  
  
  
  No                   revision
  No                   revision
  1.11.2.1  +9 -3      jakarta-jetspeed-2/portal/src/webapp/WEB-INF/conf/jetspeed.properties
  
  Index: jetspeed.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/conf/jetspeed.properties,v
  retrieving revision 1.11
  retrieving revision 1.11.2.1
  diff -u -r1.11 -r1.11.2.1
  --- jetspeed.properties	28 Nov 2003 21:51:50 -0000	1.11
  +++ jetspeed.properties	1 Dec 2003 22:57:15 -0000	1.11.2.1
  @@ -104,8 +104,9 @@
   # -------------------------------------------------------------------
   #  E N G I N E
   # -------------------------------------------------------------------
  -services.Aggregator.classname=org.apache.jetspeed.aggregator.BasicAggregator
  +services.Aggregator.classname=org.apache.jetspeed.aggregator.PageAggregator
   services.Aggregator.strategy.default=sequential
  +services.PortletRenderer.classname=org.apache.jetspeed.aggregator.impl.PortletRendererImpl
   
   # -------------------------------------------------------------------
   #  I D  G E N E R A T O R
  @@ -303,4 +304,9 @@
   # -------------------------------------------------------------------
   # services.PageManager.classname = org.apache.jetspeed.services.page.impl.DatabasePageManagerService
   
  -
  +# -------------------------------------------------------------------
  +# Page Registry (Castor based)            
  +# -------------------------------------------------------------------
  +# services.PageRegistry.classname=org.apache.jetspeed.services.page.impl.CastorXmlPageRegistryService
  +# services.PageRegistry.file=/WEB-INF/pages/pages.xreg
  +# services.PageRegistry.mapping=/WEB-INF/conf/pageregistry-mapping.xml
  \ No newline at end of file
  
  
  
  No                   revision
  No                   revision
  1.1.2.1   +5 -5      jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/p001.psml
  
  Index: p001.psml
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/p001.psml,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- p001.psml	8 Aug 2003 22:05:55 -0000	1.1
  +++ p001.psml	1 Dec 2003 22:57:15 -0000	1.1.2.1
  @@ -9,19 +9,19 @@
     <fragment id="f001" type="layout" name="TwoColumns">
       <fragment id="pe001" type="portlet" name="HelloPortlet">
         <property layout="TwoColumns" name="row" value="0" />
  -      <property layout="TwoColumns" name="column" value="0" />      
  +      <property layout="TwoColumns" name="column" value="0" />
       </fragment>
       <fragment id="pe002" type="portlet" name="JMXPortlet">
         <property layout="TwoColumns" name="row" value="0" />
  -      <property layout="TwoColumns" name="column" value="1" />      
  +      <property layout="TwoColumns" name="column" value="1" />
       </fragment>
  -    <fragment id="pe003" type="portlet" name="CustomerList">
  +    <fragment id="pe003" type="portlet" name="PreferencePortlet">
         <property layout="TwoColumns" name="row" value="1" />
  -      <property layout="TwoColumns" name="column" value="0" />      
  +      <property layout="TwoColumns" name="column" value="0" />
       </fragment>
       <fragment id="pe004" type="portlet" name="CustomerInfo">
         <property layout="TwoColumns" name="row" value="1" />
  -      <property layout="TwoColumns" name="column" value="1" />      
  +      <property layout="TwoColumns" name="column" value="1" />
       </fragment>
     </fragment>
   </page>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org