001/** 002 * 003 * Copyright (c) 2014, the Railo Company Ltd. All rights reserved. 004 * 005 * This library is free software; you can redistribute it and/or 006 * modify it under the terms of the GNU Lesser General Public 007 * License as published by the Free Software Foundation; either 008 * version 2.1 of the License, or (at your option) any later version. 009 * 010 * This library is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 013 * Lesser General Public License for more details. 014 * 015 * You should have received a copy of the GNU Lesser General Public 016 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 017 * 018 **/ 019package lucee.runtime.type.scope; 020 021import java.io.UnsupportedEncodingException; 022import java.util.Iterator; 023 024import javax.servlet.ServletInputStream; 025 026import lucee.runtime.PageContext; 027import lucee.runtime.dump.DumpData; 028import lucee.runtime.dump.DumpProperties; 029import lucee.runtime.exp.PageException; 030import lucee.runtime.listener.ApplicationContext; 031import lucee.runtime.op.Duplicator; 032import lucee.runtime.type.Collection; 033import lucee.runtime.type.dt.DateTime; 034import lucee.runtime.type.util.StructSupport; 035 036import org.apache.commons.fileupload.disk.DiskFileItem; 037 038public final class UrlFormImpl extends StructSupport implements URLForm { 039 040 private static final long serialVersionUID = -5709431392572723178L; 041 042 private final FormImpl form; 043 private final URLImpl url; 044 private boolean isInit; 045 046 public UrlFormImpl(FormImpl form, URLImpl url) { 047 this.form=form; 048 this.url=url; 049 } 050 051 @Override 052 public void initialize(PageContext pc) { 053 if(isInit) return; 054 isInit=true; 055 form.initialize(pc); 056 url.initialize(pc); 057 form.addRaw(pc.getApplicationContext(),url.getRaw()); 058 } 059 060 public void reinitialize(ApplicationContext ac) { 061 form.reinitialize(ac); 062 url.reinitialize(ac); 063 } 064 065 @Override 066 public void release() { 067 isInit=false; 068 form.release(); 069 url.release(); 070 } 071 072 @Override 073 public void release(PageContext pc) { 074 isInit=false; 075 form.release(pc); 076 url.release(pc); 077 } 078 079 @Override 080 public String getEncoding() { 081 return form.getEncoding(); 082 } 083 084 @Override 085 public void setEncoding(ApplicationContext ac, String encoding)throws UnsupportedEncodingException { 086 form.setEncoding(ac,encoding); 087 } 088 089 @Override 090 public int getType() { 091 return form.getType(); 092 } 093 094 @Override 095 public String getTypeAsString() { 096 return form.getTypeAsString(); 097 } 098 099 @Override 100 public boolean isInitalized() { 101 return isInit; 102 } 103 104 @Override 105 public void clear() { 106 form.clear(); 107 url.clear(); 108 } 109 110 @Override 111 public boolean containsKey(Collection.Key key) { 112 return form.containsKey(key); 113 } 114 115 @Override 116 public Object get(Collection.Key key) throws PageException { 117 return form.get(key); 118 } 119 120 @Override 121 public Object get(Collection.Key key, Object defaultValue) { 122 return form.get(key, defaultValue); 123 } 124 125 @Override 126 public Iterator<Collection.Key> keyIterator() { 127 return form.keyIterator(); 128 } 129 130 @Override 131 public Iterator<String> keysAsStringIterator() { 132 return form.keysAsStringIterator(); 133 } 134 135 @Override 136 public Iterator<Entry<Key, Object>> entryIterator() { 137 return form.entryIterator(); 138 } 139 140 @Override 141 public Iterator<Object> valueIterator() { 142 return form.valueIterator(); 143 } 144 145 @Override 146 public Collection.Key[] keys() { 147 return form.keys(); 148 } 149 150 @Override 151 public Object remove(Collection.Key key) throws PageException { 152 return form.remove(key); 153 } 154 155 @Override 156 public Object removeEL(Collection.Key key) { 157 return form.removeEL(key); 158 } 159 160 @Override 161 public Object set(Collection.Key key, Object value) throws PageException { 162 return form.set(key, value); 163 } 164 165 @Override 166 public Object setEL(Collection.Key key, Object value) { 167 return form.setEL(key, value); 168 } 169 170 @Override 171 public int size() { 172 return form.size(); 173 } 174 175 @Override 176 public DumpData toDumpData(PageContext pageContext, int maxlevel, DumpProperties dp) { 177 return form.toDumpData(pageContext, maxlevel,dp); 178 } 179 180 @Override 181 public boolean castToBooleanValue() throws PageException { 182 return form.castToBooleanValue(); 183 } 184 185 @Override 186 public Boolean castToBoolean(Boolean defaultValue) { 187 return form.castToBoolean(defaultValue); 188 } 189 190 @Override 191 public DateTime castToDateTime() throws PageException { 192 return form.castToDateTime(); 193 } 194 195 @Override 196 public DateTime castToDateTime(DateTime defaultValue) { 197 return form.castToDateTime(defaultValue); 198 } 199 200 @Override 201 public double castToDoubleValue() throws PageException { 202 return form.castToDoubleValue(); 203 } 204 205 @Override 206 public double castToDoubleValue(double defaultValue) { 207 return form.castToDoubleValue(defaultValue); 208 } 209 210 @Override 211 public String castToString() throws PageException { 212 return form.castToString(); 213 } 214 215 @Override 216 public String castToString(String defaultValue) { 217 return form.castToString(defaultValue); 218 } 219 220 221 @Override 222 public int compareTo(boolean b) throws PageException { 223 return form.compareTo(b); 224 } 225 226 @Override 227 public int compareTo(DateTime dt) throws PageException { 228 return form.compareTo(dt); 229 } 230 231 @Override 232 public int compareTo(double d) throws PageException { 233 return form.compareTo(d); 234 } 235 236 @Override 237 public int compareTo(String str) throws PageException { 238 return form.compareTo(str); 239 } 240 241 public DiskFileItem getFileUpload(String key) { 242 return form.getFileUpload(key); 243 } 244 245 @Override 246 public PageException getInitException() { 247 return form.getInitException(); 248 } 249 250 @Override 251 public Collection duplicate(boolean deepCopy) { 252 return (Collection) Duplicator.duplicate(form,deepCopy); 253 } 254 255 @Override 256 public void setScriptProtecting(ApplicationContext ac,boolean b) { 257 form.setScriptProtecting(ac,b); 258 } 259 260 @Override 261 public boolean containsValue(Object value) { 262 return form.containsValue(value); 263 } 264 265 @Override 266 public java.util.Collection<Object> values() { 267 return form.values(); 268 } 269 270 @Override 271 public FormItem getUploadResource(String key) { 272 return form.getUploadResource(key); 273 } 274 275 @Override 276 public FormItem[] getFileItems() { 277 return form.getFileItems(); 278 } 279 280 public FormImpl getForm() { 281 return form; 282 } 283 284 public URLImpl getURL() { 285 return url; 286 } 287 288 @Override 289 public ServletInputStream getInputStream() { 290 return form.getInputStream(); 291 } 292}