01: /*
02: * Copyright 2001 Sun Microsystems, Inc. All rights reserved.
03: * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to license terms.
04: */
05: package com.sun.portal.desktop.taglib.containerProviderContext;
06:
07: import java.util.logging.Level;
08: import java.util.logging.Logger;
09:
10: import javax.servlet.jsp.JspException;
11: import javax.servlet.http.HttpServletRequest;
12:
13: import com.sun.portal.desktop.context.ContextException;
14: import com.sun.portal.providers.context.ContainerProviderContext;
15: import com.sun.portal.providers.context.ProviderContext;
16: import com.sun.portal.providers.Provider;
17: import com.sun.portal.providers.ProviderException;
18: import com.sun.portal.providers.containers.JSPContainerProviderAdapter;
19: import com.sun.portal.desktop.taglib.BaseDesktopTagSupport;
20: import com.sun.portal.desktop.taglib.DesktopTaglibException;
21: import com.sun.portal.log.common.PortalLogger;
22:
23: public class ObtainChannelFromContainerTag extends
24: BaseDesktopTagSupport {
25:
26: private String mChannel;
27: private static Logger logger = PortalLogger
28: .getLogger(ObtainChannelFromContainerTag.class);
29:
30: public void setChannel(String channel) {
31: this .mChannel = channel;
32: }
33:
34: public int doStartTag() throws JspException {
35: String channelName = (String) resolveParameter(mChannel);
36: if (channelName == null || channelName.length() == 0) {
37: throw new DesktopTaglibException(
38: DesktopTaglibException.INVALID_PARAMETER, "channel");
39: } else {
40: Provider p = null;
41:
42: if (getCurrentObjType() != CONTAINER) {
43: throw new DesktopTaglibException(
44: DesktopTaglibException.INVALID_TAG_SEQUENCE,
45: "obtainChannelFromContainer");
46: }
47:
48: try {
49: JSPContainerProviderAdapter container = (JSPContainerProviderAdapter) getContainer();
50: ContainerProviderContext cpc = container
51: .getContainerProviderContext();
52: p = cpc
53: .getProvider((HttpServletRequest) pageContext
54: .getRequest(), container.getName(),
55: channelName);
56: if (p == null) {
57: if (logger.isLoggable(Level.SEVERE))
58: logger.log(Level.SEVERE, "PSDT_CSPDTC0001",
59: channelName);
60: return SKIP_BODY;
61: }
62: } catch (ProviderException pe) {
63: throw new DesktopTaglibException(pe);
64: }
65:
66: setCurrentProvider(p);
67: saveDesktopTaglibContext();
68: }
69:
70: return EVAL_BODY_INCLUDE;
71: }
72:
73: public int doEndTag() throws JspException {
74: setCurrentProvider(null);
75: saveDesktopTaglibContext();
76: return EVAL_PAGE;
77: }
78: }
|