1 10 package org.mmbase.bridge.jsp.taglib; 11 12 import org.mmbase.bridge.jsp.taglib.util.Attribute; 13 import javax.servlet.jsp.JspTagException ; 14 import javax.servlet.jsp.PageContext ; 15 import java.util.Locale ; 16 import org.mmbase.util.functions.Parameter; 17 import org.mmbase.util.functions.Parameters; 18 19 import org.mmbase.bridge.Node; 20 import org.mmbase.bridge.Cloud; 21 22 import org.mmbase.util.logging.Logger; 23 import org.mmbase.util.logging.Logging; 24 33 34 public abstract class NodeReferrerTag extends CloudReferrerTag { 35 36 private static final Logger log = Logging.getLoggerInstance(NodeReferrerTag.class); 37 protected Attribute parentNodeId = Attribute.NULL; 38 private Attribute element = Attribute.NULL; 39 44 public void setElement(String e) throws JspTagException { 45 element = getAttribute(e); 46 } 47 48 49 54 55 public void setNode(String node) throws JspTagException { 56 parentNodeId = getAttribute(node); 57 } 58 59 64 public NodeProvider findNodeProvider() throws JspTagException { 65 return (NodeProvider) findParentTag(NodeProvider.class, (String ) parentNodeId.getValue(this)); 66 } 67 72 public NodeProvider findNodeProvider(boolean throwexception) throws JspTagException { 73 return (NodeProvider) findParentTag(NodeProvider.class, (String ) parentNodeId.getValue(this), throwexception); 74 } 75 76 80 81 protected Node getNode() throws JspTagException { 82 Node node = findNodeProvider().getNodeVar(); 83 if (node != null && element != Attribute.NULL) { 84 node = node.getNodeValue(element.getString(this)); 85 } 86 return node; 87 } 88 public Cloud getCloudVar() throws JspTagException { 89 NodeProvider np = findNodeProvider(false); 90 if (np != null) { 91 Node n = np.getNodeVar(); 92 if (n != null) return n.getCloud(); 93 } 94 return super.getCloudVar(); 95 } 96 97 98 protected void fillStandardParameters(Parameters p) throws JspTagException { 99 super.fillStandardParameters(p); 100 NodeProvider np = findNodeProvider(false); 101 if (np != null) { 102 Node node = np.getNodeVar(); 103 Cloud cloud = node.getCloud(); 104 p.setIfDefined(Parameter.CLOUD, cloud); 105 p.setIfDefined(Parameter.USER, cloud.getUser()); 106 107 } 108 } 109 110 public Locale getLocale() throws JspTagException { 111 LocaleTag localeTag = (LocaleTag)findParentTag(LocaleTag.class, null, false); 112 if (localeTag != null) { 113 Locale locale = localeTag.getLocale(); 114 if (locale != null) { 115 return locale; 116 } 117 } 118 CloudProvider cp = findCloudProvider(false); 119 if (cp != null) { 120 return getCloudVar().getLocale(); 121 } 122 NodeProvider np = findNodeProvider(false); 123 if (np != null) { 124 return np.getNodeVar().getCloud().getLocale(); 125 } 126 Locale loc = (Locale ) pageContext.getAttribute(LocaleTag.KEY, LocaleTag.SCOPE); 127 if (loc != null) return loc; 128 return getCloudContext().getDefaultLocale(); 129 } 130 131 } 132 | Popular Tags |