1 16 17 package org.apache.cocoon.components.modules.output; 18 19 import java.util.Map ; 20 21 import org.apache.avalon.framework.configuration.Configuration; 22 import org.apache.cocoon.environment.ObjectModelHelper; 23 import org.apache.cocoon.environment.Request; 24 25 35 public class RequestAttributeMap extends AbstractOutputModule implements OutputModule { 36 37 public final String PREFIX = "org.apache.cocoon.components.modules.output.OutputModule"; 38 public final String TRANS_PREFIX = "org.apache.cocoon.components.modules.output.OutputModule.RequestAttributeMap.transient"; 39 40 50 public void setAttribute( Configuration modeConf, Map objectModel, String name, Object value ) { 51 if (getLogger().isDebugEnabled()) 52 getLogger().debug("setting transient ['"+name+"'] to ['"+value+"']"); 53 super.transientSetAttribute(objectModel, TRANS_PREFIX, name, value ); 54 } 55 56 57 66 public void rollback( Configuration modeConf, Map objectModel, Exception e ) { 67 if (getLogger().isDebugEnabled()) 68 getLogger().debug("rolling back"); 69 super.rollback(objectModel, TRANS_PREFIX); 70 } 71 72 73 77 public void commit( Configuration modeConf, Map objectModel ) { 78 if (getLogger().isDebugEnabled()) 79 getLogger().debug("prepare commit"); 80 Map aMap = super.prepareCommit(objectModel,TRANS_PREFIX); 81 if (aMap == null) { 82 return; 84 } 85 86 String prefix = (String ) this.settings.get("key-prefix", PREFIX); 87 Request request = ObjectModelHelper.getRequest(objectModel); 88 Object temp = request.getAttribute(prefix); 89 Map old = null; 90 if (temp == null) { 91 old = aMap; 92 } else { 93 old = (Map ) temp; 94 old.putAll(aMap); 95 } 96 request.setAttribute(prefix, old); 97 if (getLogger().isDebugEnabled()) 98 getLogger().debug("done commit to ['"+prefix+"']"); 99 } 100 101 } 102 | Popular Tags |