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/11 12:08:23 UTC

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

cziegeler    2003/07/11 03:08:23

  Modified:    src/blocks/portal/java/org/apache/cocoon/portal/aspect/impl
                        SessionAspectDataStore.java
  Log:
  Reducing lookups
  
  Revision  Changes    Path
  1.5       +19 -20    cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/aspect/impl/SessionAspectDataStore.java
  
  Index: SessionAspectDataStore.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/aspect/impl/SessionAspectDataStore.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SessionAspectDataStore.java	26 May 2003 09:52:59 -0000	1.4
  +++ SessionAspectDataStore.java	11 Jul 2003 10:08:23 -0000	1.5
  @@ -50,9 +50,6 @@
   */
   package org.apache.cocoon.portal.aspect.impl;
   
  -import java.util.HashMap;
  -import java.util.Map;
  -
   import org.apache.avalon.framework.component.Component;
   import org.apache.avalon.framework.context.Context;
   import org.apache.avalon.framework.context.ContextException;
  @@ -60,7 +57,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.environment.Session;
   import org.apache.cocoon.portal.aspect.AspectDataStore;
   import org.apache.cocoon.portal.aspect.Aspectalizable;
   
  @@ -77,27 +74,29 @@
       
       protected Context context;
       
  -    protected Map getMap(Aspectalizable owner) {
  -        final Request request = ContextHelper.getRequest(this.context);
  -        Map componentMap = (Map)request.getSession().getAttribute(this.getClass().getName());
  -        if ( componentMap == null) {
  -            componentMap = new HashMap(3);
  -            request.getSession().setAttribute(this.getClass().getName(), componentMap);
  -        }
  -        Map ownerMap = (Map)componentMap.get( owner );
  -        if ( ownerMap == null ) {
  -            ownerMap = new HashMap(3);
  -            componentMap.put( owner, ownerMap );
  -        }
  -        return ownerMap;
  +    protected String getKey(Aspectalizable owner, String aspectName) {
  +        StringBuffer buffer = new StringBuffer(this.getClass().getName());
  +        buffer.append('/');
  +        buffer.append(owner.getClass().getName());
  +        buffer.append('/');
  +        buffer.append(owner.hashCode());
  +        buffer.append('/');
  +        buffer.append(aspectName);
  +        return buffer.toString();
       }
       
       public Object getAspectData(Aspectalizable owner, String aspectName) {
  -        return this.getMap(owner).get( aspectName );
  +        final Session session = ContextHelper.getRequest(this.context).getSession();
  +        return session.getAttribute( this.getKey( owner, aspectName ) );
       }
       
       public void setAspectData(Aspectalizable owner, String aspectName, Object data) {
  -        this.getMap(owner).put(aspectName, data);
  +        final Session session = ContextHelper.getRequest(this.context).getSession();
  +        if ( data == null ) {
  +            session.removeAttribute( this.getKey( owner, aspectName) );
  +        } else {
  +            session.setAttribute( this.getKey( owner, aspectName), data );
  +        }
       }
   
       public boolean isPersistent() {