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; }