01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: *
17: * $Header:$
18: */
19: package org.apache.beehive.netui.pageflow;
20:
21: import org.apache.beehive.controls.api.context.ControlContainerContext;
22:
23: import javax.servlet.http.HttpServletRequest;
24: import javax.servlet.http.HttpServletResponse;
25: import javax.servlet.ServletContext;
26:
27: public interface PageFlowControlContainer {
28: /**
29: * This method will ensure that a page flow's <code>ControlContainerContext</code> exists, and
30: * will make make sure that the begin context is called. Once this is called, you must insure that
31: * the endContext method is called. This is typically called when a page flow instance is being created.
32: * If a Control bean is created programmatically in a page flow using
33: * {@link java.beans.Beans#instantiate(ClassLoader, String)},
34: * without <code>@Control</code> annotations, you must call this method on the page flow object before
35: * the bean is instantiated.
36: * @param pfmo
37: * @param request
38: * @param response
39: * @param servletContext
40: */
41: void createAndBeginControlBeanContext(PageFlowManagedObject pfmo,
42: HttpServletRequest request, HttpServletResponse response,
43: ServletContext servletContext);
44:
45: /**
46: * This will return the page flows <code>ControlContainerContext</code>. This call should be made after
47: * either the <code>createAndBeginControlBeanContext</code> or <code>beginContextOnPageFlow</code> has
48: * been called.
49: * @param pfmo
50: * @return Returns the ControlContainerContext for the page flow. This may return null if the page flow
51: * currently doesn't have a ControlContainerContext context.
52: */
53: ControlContainerContext getControlContainerContext(
54: PageFlowManagedObject pfmo);
55:
56: /**
57: * This method will perform the beginContext() on any and all <code>ControlContainerContext</code> objects
58: * that are managed by the page flow runtime. If you call this, you must call the
59: * <code>endContextOnPageFlow</code> method is also called. The implementation may hold locks on the
60: * control container and not calling the endContext may result in hangs and deadlocks.
61: * @param pfmo
62: * @param request
63: * @param response
64: * @param servletContext
65: */
66: void beginContextOnPageFlow(PageFlowManagedObject pfmo,
67: HttpServletRequest request, HttpServletResponse response,
68: ServletContext servletContext);
69:
70: /**
71: * This method will perform the endContext() on any and all <code>ControlContainerContext</code> objects
72: * that are managed by the page flow runtime.
73: * @param flowController
74: */
75: void endContextOnPageFlow(PageFlowManagedObject flowController);
76: }
|