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/06/01 21:30:36 UTC

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

cziegeler    2003/06/01 12:30:36

  Modified:    src/blocks/portal/java/org/apache/cocoon/portal/impl
                        DefaultLinkService.java
  Log:
  Fixing uri bug: set base of uri to 'portal request'
  
  Revision  Changes    Path
  1.5       +18 -6     cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java
  
  Index: DefaultLinkService.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DefaultLinkService.java	28 May 2003 13:47:30 -0000	1.4
  +++ DefaultLinkService.java	1 Jun 2003 19:30:36 -0000	1.5
  @@ -53,7 +53,6 @@
   import java.util.ArrayList;
   import java.util.Iterator;
   import java.util.List;
  -import java.util.Map;
   
   import org.apache.avalon.framework.activity.Disposable;
   import org.apache.avalon.framework.component.ComponentException;
  @@ -65,6 +64,7 @@
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.avalon.framework.thread.ThreadSafe;
   import org.apache.cocoon.components.ContextHelper;
  +import org.apache.cocoon.environment.Request;
   import org.apache.cocoon.portal.LinkService;
   import org.apache.cocoon.portal.event.ComparableEvent;
   import org.apache.cocoon.portal.event.Event;
  @@ -98,11 +98,23 @@
       // FIXME - comparable events are not completly implemented yet
       
       protected Info getInfo() {
  -        final Map objectModel = ContextHelper.getObjectModel(this.context);
  -        Info info = (Info)objectModel.get(DefaultLinkService.class.getName());
  +        // TODO - add portal name to allow several portals at the same time
  +        final Request request = ContextHelper.getRequest( this.context );
  +        Info info = (Info)request.getAttribute(DefaultLinkService.class.getName());
           if ( info == null ) {
  -            info = new Info();
  -            objectModel.put(DefaultLinkService.class.getName(), info);
  +            synchronized ( this ) {
  +                info = (Info)request.getAttribute(DefaultLinkService.class.getName());
  +                if ( info == null ) {
  +                    info = new Info();
  +                    request.setAttribute(DefaultLinkService.class.getName(), info);
  +                    String baseURI = request.getSitemapURI();
  +                    final int pos = baseURI.lastIndexOf('/');
  +                    if ( pos != -1 ) {
  +                        baseURI = baseURI.substring(pos+1);
  +                    }
  +                    info.linkBase.append(baseURI);
  +                }
  +            }
           }
           return info;
       }