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: package org.apache.pluto.core;
18:
19: import org.apache.pluto.PortletContainer;
20: import org.apache.pluto.PortletWindow;
21:
22: /**
23: * <font style="color: red">Whenever possible,
24: * use of this class should be avoided. It is intended for
25: * use by objects which can NOT be instantiated and managed
26: * by the container.
27: * </font>
28: *
29: * Provides static access to the currently executing container.
30: * This is critical for instance of the PortletContext and PortletConfig
31: * to be able to access container specific services.
32: *
33: *
34: * @since 1.1
35: *
36: */
37: public class ContainerInvocation {
38:
39: private static final InheritableThreadLocal CONTAINERS = new InheritableThreadLocal();
40:
41: /**
42: * Retrieve the container which is currently
43: * executing.
44: *
45: * @return the currently executing portlet container.
46: */
47: public static ContainerInvocation getInvocation() {
48: return (ContainerInvocation) CONTAINERS.get();
49: }
50:
51: /**
52: * Set the container currently under execution.
53: *
54: * @param container the container invoked
55: * @param window used in the invocation
56: */
57: public static void setInvocation(PortletContainer container,
58: PortletWindow window) {
59: CONTAINERS.set(new ContainerInvocation(window, container));
60: }
61:
62: public static void clearInvocation() {
63: CONTAINERS.set(null);
64: }
65:
66: private PortletWindow window;
67: private PortletContainer container;
68:
69: public ContainerInvocation(PortletWindow window,
70: PortletContainer container) {
71: this .window = window;
72: this .container = container;
73: }
74:
75: public PortletWindow getPortletWindow() {
76: return window;
77: }
78:
79: public void setWindow(PortletWindow window) {
80: this .window = window;
81: }
82:
83: public PortletContainer getPortletContainer() {
84: return container;
85: }
86:
87: public void setContainer(PortletContainer container) {
88: this.container = container;
89: }
90: }
|