001 package org.trails.page;
002
003 import org.apache.hivemind.util.Defense;
004 import org.apache.tapestry.event.PageEvent;
005 import org.apache.tapestry.callback.ICallback;
006 import org.apache.tapestry.IRequestCycle;
007
008 /**
009 * A page which has a model object.
010 *
011 * @author Chris Nelson
012 */
013 public abstract class ModelPage extends TrailsPage implements IModelPage
014 {
015
016 public void pushCallback()
017 {
018 ICallback callback = callbackToThisPage();
019 if (getCallbackStack() != null && (getCallbackStack().isEmpty() || !getCallbackStack().peek().equals(callback)))
020 {
021 getCallbackStack().push(callback);
022 }
023 }
024
025 protected abstract ICallback callbackToThisPage();
026
027 public void pageBeginRender(PageEvent event)
028 {
029 super.pageBeginRender(event);
030 Defense.notNull(getModel(), "model");
031 Defense.notNull(isModelNew(), "modelNew");
032 }
033
034 }