| 1 16 package org.outerj.daisy.frontend.util; 17 18 import org.apache.cocoon.components.flow.apples.AppleController; 19 import org.apache.cocoon.components.flow.apples.AppleRequest; 20 import org.apache.cocoon.components.flow.apples.AppleResponse; 21 import org.apache.cocoon.components.flow.apples.StatelessAppleController; 22 import org.apache.cocoon.environment.Request; 23 import org.apache.avalon.framework.context.Contextualizable; 24 import org.apache.avalon.framework.context.Context; 25 import org.apache.avalon.framework.context.ContextException; 26 import org.outerj.daisy.frontend.WikiHelper; 27 import EDU.oswego.cs.dl.util.concurrent.Mutex; 28 29 32 public abstract class AbstractDaisyApple implements AppleController, Contextualizable { 33 private Mutex mutex = new Mutex(); 34 private String mountPoint; 35 private String layoutType; 36 private String skin; 37 private String continuationId; 38 private Context context; 39 40 public void contextualize(Context context) throws ContextException { 41 this.context = context; 42 if (!(this instanceof StatelessAppleController)) 43 continuationId = (String )context.get("continuation-id"); 44 } 45 46 public final void process(AppleRequest appleRequest, AppleResponse appleResponse) throws Exception { 47 if (needsMutex()) 48 mutex.attempt(10000); 49 try { 50 Request request = appleRequest.getCocoonRequest(); 51 mountPoint = WikiHelper.getMountPoint(request); 52 layoutType = WikiHelper.getLayoutType(request); 53 skin = WikiHelper.getSkin(request); 54 55 processInternal(appleRequest, appleResponse); 56 } finally { 57 if (needsMutex()) 58 mutex.release(); 59 } 60 } 61 62 protected abstract void processInternal(AppleRequest appleRequest, AppleResponse appleResponse) throws Exception ; 63 64 protected String getMountPoint() { 65 return mountPoint; 66 } 67 68 protected String getLayoutType() { 69 return layoutType; 70 } 71 72 protected String getLayoutType(String defaultLayoutType) { 73 if (layoutType == null) 74 return defaultLayoutType; 75 else 76 return layoutType; 77 } 78 79 protected String getSkin() { 80 return skin; 81 } 82 83 protected String getContinuationId() { 84 return continuationId; 85 } 86 87 protected boolean needsMutex() { 88 return !(this instanceof StatelessAppleController); 89 } 90 91 protected Context getContext() { 92 return context; 93 } 94 } 95 | Popular Tags |