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 2005/09/26 13:07:42 UTC

svn commit: r291597 - in /cocoon/blocks: portal-sample/trunk/java/org/apache/cocoon/portal/coplets/basket/ portal-sample/trunk/java/org/apache/cocoon/portal/coplets/basket/events/ portal/trunk/java/org/apache/cocoon/portal/coplet/adapter/impl/

Author: cziegeler
Date: Mon Sep 26 04:07:33 2005
New Revision: 291597

URL: http://svn.apache.org/viewcvs?rev=291597&view=rev
Log:
Consider coplet attributes for global caching
Fix some java docs

Modified:
    cocoon/blocks/portal-sample/trunk/java/org/apache/cocoon/portal/coplets/basket/BasketManager.java
    cocoon/blocks/portal-sample/trunk/java/org/apache/cocoon/portal/coplets/basket/BasketManagerImpl.java
    cocoon/blocks/portal-sample/trunk/java/org/apache/cocoon/portal/coplets/basket/events/CleanBriefcaseEvent.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/coplet/adapter/impl/CachingURICopletAdapter.java

Modified: cocoon/blocks/portal-sample/trunk/java/org/apache/cocoon/portal/coplets/basket/BasketManager.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/java/org/apache/cocoon/portal/coplets/basket/BasketManager.java?rev=291597&r1=291596&r2=291597&view=diff
==============================================================================
--- cocoon/blocks/portal-sample/trunk/java/org/apache/cocoon/portal/coplets/basket/BasketManager.java (original)
+++ cocoon/blocks/portal-sample/trunk/java/org/apache/cocoon/portal/coplets/basket/BasketManager.java Mon Sep 26 04:07:33 2005
@@ -77,7 +77,7 @@
 
     /**
      * Return all configured actions for a basket - this is a list of 
-     * {@link #ActionInfo}s.
+     * {@link ActionInfo}s.
      */
     List getBasketActions();
 
@@ -88,7 +88,7 @@
     
     /**
      * Return all configured actions for a briefcase - this is a list of 
-     * {@link #ActionInfo}s.
+     * {@link ActionInfo}s.
      */
     List getBriefcaseActions();
 

Modified: cocoon/blocks/portal-sample/trunk/java/org/apache/cocoon/portal/coplets/basket/BasketManagerImpl.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/java/org/apache/cocoon/portal/coplets/basket/BasketManagerImpl.java?rev=291597&r1=291596&r2=291597&view=diff
==============================================================================
--- cocoon/blocks/portal-sample/trunk/java/org/apache/cocoon/portal/coplets/basket/BasketManagerImpl.java (original)
+++ cocoon/blocks/portal-sample/trunk/java/org/apache/cocoon/portal/coplets/basket/BasketManagerImpl.java Mon Sep 26 04:07:33 2005
@@ -250,7 +250,6 @@
     /**
      * Show one item of the basket
      * @param event  The event triggering the action
-     * @param basket The basket
      */
     protected void processShowItemEvent(ShowItemEvent event) {
         if ( event.getItem() instanceof ContentItem ) {

Modified: cocoon/blocks/portal-sample/trunk/java/org/apache/cocoon/portal/coplets/basket/events/CleanBriefcaseEvent.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/java/org/apache/cocoon/portal/coplets/basket/events/CleanBriefcaseEvent.java?rev=291597&r1=291596&r2=291597&view=diff
==============================================================================
--- cocoon/blocks/portal-sample/trunk/java/org/apache/cocoon/portal/coplets/basket/events/CleanBriefcaseEvent.java (original)
+++ cocoon/blocks/portal-sample/trunk/java/org/apache/cocoon/portal/coplets/basket/events/CleanBriefcaseEvent.java Mon Sep 26 04:07:33 2005
@@ -35,7 +35,7 @@
     /**
      * Constructor
      * One briefcase will be cleaned
-     * @param briefcaseId The briefcase
+     * @param briefcase The briefcase
      */
     public CleanBriefcaseEvent(Briefcase briefcase) {
         super(briefcase);

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/coplet/adapter/impl/CachingURICopletAdapter.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/coplet/adapter/impl/CachingURICopletAdapter.java?rev=291597&r1=291596&r2=291597&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/coplet/adapter/impl/CachingURICopletAdapter.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/coplet/adapter/impl/CachingURICopletAdapter.java Mon Sep 26 04:07:33 2005
@@ -1,12 +1,12 @@
 /*
  * Copyright 1999-2002,2004-2005 The Apache Software Foundation.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -15,6 +15,12 @@
  */
 package org.apache.cocoon.portal.coplet.adapter.impl;
 
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.ProcessingException;
@@ -26,6 +32,7 @@
 import org.apache.cocoon.portal.coplet.CopletInstanceData;
 import org.apache.cocoon.portal.event.CopletInstanceEvent;
 import org.apache.cocoon.portal.event.impl.ChangeCopletInstanceAspectDataEvent;
+import org.apache.cocoon.util.NetUtils;
 import org.apache.excalibur.source.SourceValidity;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
@@ -52,6 +59,10 @@
     /** The configuration name for using the global cache. */
     public static final String CONFIGURATION_CACHE_GLOBAL= "cache-global";
 
+    /** The configuration name for querying instance attributes to generate the key
+     * for the global cache. */
+    public static final String CONFIGURATION_CACHE_GLOBAL_USE_ATTRIBUTES= "cache-global-use-attributes";
+
     /** The configuration name for ignoring sizing events to clear the cache. */
     public static final String CONFIGURATION_IGNORE_SIZING_EVENTS = "ignore-sizing-events";
 
@@ -211,6 +222,64 @@
      * Build the key for the global cache.
      */
     protected String getCacheKey(CopletInstanceData coplet, String uri) {
-        return "coplet:" + coplet.getCopletData().getId() + '/' + uri;
+        final Boolean useAttributes = (Boolean)this.getConfiguration(coplet,
+                                                            CONFIGURATION_CACHE_GLOBAL_USE_ATTRIBUTES,
+                                                            Boolean.FALSE);
+        if ( !useAttributes.booleanValue() ) {
+            return "coplet:" + coplet.getCopletData().getId() + '/' + uri;
+        }
+        final StringBuffer buffer = new StringBuffer("coplet:");
+        buffer.append(coplet.getCopletData().getId());
+        buffer.append('/');
+        buffer.append(uri);
+        boolean hasParams = false;
+        // first add attributes:
+        // sort the keys
+        List keyList = new ArrayList(coplet.getAttributes().keySet());
+        Collections.sort(keyList);
+        Iterator i = keyList.iterator();
+        while ( i.hasNext() ) {
+            final Object name = i.next();
+            final Object value = coplet.getAttribute(name.toString());
+            if ( hasParams ) {
+                buffer.append('&');
+            } else {
+                buffer.append('?');
+                hasParams = true;
+            }
+            buffer.append(name.toString());
+            buffer.append('=');
+            if ( value != null ) {
+                try {
+                    buffer.append(NetUtils.encode(value.toString(), "utf-8"));
+                } catch (UnsupportedEncodingException ignore) {
+                    // we ignore this
+                }
+            }
+        }
+        // second add temporary attributes
+        keyList = new ArrayList(coplet.getTemporaryAttributes().keySet());
+        Collections.sort(keyList);
+        i = keyList.iterator();
+        while ( i.hasNext() ) {
+            final Object name = i.next();
+            final Object value = coplet.getTemporaryAttribute(name.toString());
+            if ( hasParams ) {
+                buffer.append('&');
+            } else {
+                buffer.append('?');
+                hasParams = true;
+            }
+            buffer.append(name.toString());
+            buffer.append('=');
+            if ( value != null ) {
+                try {
+                    buffer.append(NetUtils.encode(value.toString(), "utf-8"));
+                } catch (UnsupportedEncodingException ignore) {
+                    // we ignore this
+                }
+            }
+        }
+        return buffer.toString();            
     }
 }