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}