1 34 35 package com.micronova.jsp.tag; 36 37 import com.micronova.util.*; 38 import java.util.*; 39 import javax.servlet.jsp.*; 40 import java.lang.reflect.*; 41 import java.util.regex.*; 42 43 public class ELMap extends MapBean 44 { 45 public static final String PAGECONTEXT = "pageContext"; 46 public static final String ENVVAR = "_"; 47 public static final String KEY = "key"; 48 public static final String VALUE = "value"; 49 public static final String GET = "get"; 50 public static final String PUT = "put"; 51 public static final String GETCODEC = "getCodec"; 52 public static final String PUTCODEC = "putCodec"; 53 54 protected PageContext _pageContext; 55 protected NestedMap _environment; 56 57 public ELMap(PageContext pageContext, Object environmentSource) throws Exception 58 { 59 super(); 60 61 _pageContext = pageContext; 62 _environment = new NestedMap(environmentSource); 63 } 64 65 66 67 public Object getObject(Object client, Object key) 68 { 69 Object envVar = null; 70 PageContext pageContext = _pageContext; 71 72 try 73 { 74 NestedMap environment = _environment; 75 76 envVar = EL.getPageAttribute(pageContext, ENVVAR); 77 78 EL.setPageAttribute(pageContext, ENVVAR, environment); 79 80 String getCodec = EL.replaceEvalEscape(environment.getString(GETCODEC)); 81 environment.put(KEY, key); 82 83 return EL.applyCodec(pageContext, getCodec, environment); 84 } 85 catch (Exception e) 86 { 87 throw new RuntimeException (e); 88 } 89 finally 90 { 91 if (envVar != null) 92 { 93 EL.setPageAttribute(pageContext, ENVVAR, envVar); 94 } 95 } 96 } 97 98 99 100 public Object putObject(Object client, Object key, Object value) 101 { 102 103 Object envVar = null; 104 PageContext pageContext = _pageContext; 105 106 try 107 { 108 NestedMap environment = _environment; 109 110 envVar = EL.getPageAttribute(pageContext, ENVVAR); 111 112 EL.setPageAttribute(pageContext, ENVVAR, environment); 113 114 String putCodec = EL.replaceEvalEscape(environment.getString(PUTCODEC)); 115 environment.put(KEY, key); 116 environment.put(VALUE, value); 117 118 return EL.applyCodec(pageContext, putCodec, environment); 119 } 120 catch (Exception e) 121 { 122 throw new RuntimeException (e); 123 } 124 finally 125 { 126 if (envVar != null) 127 { 128 EL.setPageAttribute(pageContext, ENVVAR, envVar); 129 } 130 } 131 } 132 } 133 | Popular Tags |