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.providerContext;
06:
07: import javax.servlet.jsp.JspException;
08: import java.util.Map;
09: import java.util.List;
10:
11: import com.sun.portal.providers.Provider;
12: import com.sun.portal.providers.context.ProviderContext;
13: import com.sun.portal.providers.context.ProviderContextException;
14:
15: import com.sun.portal.desktop.taglib.DesktopTaglibException;
16:
17: public class SetCollectionPropertyTag extends
18: BaseProviderContextTagSupport {
19: private String m_key = null;
20: private String m_value_raw = null;
21: private List m_pflist = null;
22:
23: public void setKey(String key) throws DesktopTaglibException {
24: m_key = resolveParameter(key).toString();
25: }
26:
27: public void setValue(String value) throws DesktopTaglibException {
28: m_value_raw = value;
29: if (!isContextVariable(value)) {
30: throw new DesktopTaglibException(
31: DesktopTaglibException.INVALID_PARAMETER,
32: m_value_raw);
33: }
34: }
35:
36: public void setPfList(String pflist) throws DesktopTaglibException {
37: if (!isContextVariable(pflist)) {
38: throw new DesktopTaglibException(
39: DesktopTaglibException.INVALID_PARAMETER, pflist);
40: }
41: try {
42: m_pflist = (List) resolveParameter(pflist);
43: } catch (ClassCastException cce) {
44: throw new DesktopTaglibException(
45: DesktopTaglibException.INVALID_PARAMETER, pflist);
46: }
47: }
48:
49: public int doStartTag() throws JspException {
50: ProviderContext pc = getCurrentProviderContext();
51: Object val = resolveParameter(m_value_raw);
52: Provider p = getCurrentObj();
53: try {
54: if (val instanceof Map) {
55: if (m_pflist == null) {
56: pc.setCollectionProperty(p.getName(), m_key,
57: (Map) val);
58: } else {
59: pc.setCollectionProperty(p.getName(), m_key,
60: (Map) val, m_pflist);
61: }
62: } else if (val instanceof List) {
63: if (m_pflist == null) {
64: pc.setCollectionProperty(p.getName(), m_key,
65: (List) val);
66: } else {
67: pc.setCollectionProperty(p.getName(), m_key,
68: (List) val, m_pflist);
69: }
70: } else {
71: throw new DesktopTaglibException(
72: DesktopTaglibException.INVALID_PARAMETER,
73: m_value_raw);
74: }
75: } catch (ProviderContextException pce) {
76: throw new DesktopTaglibException(pce);
77: }
78:
79: return SKIP_BODY;
80: }
81: }
|