001    /**
002     * 
003     */
004    package railo.runtime.type.scope;
005    
006    import java.io.UnsupportedEncodingException;
007    import java.util.Iterator;
008    
009    import javax.servlet.ServletInputStream;
010    
011    import org.apache.commons.fileupload.disk.DiskFileItem;
012    
013    import railo.runtime.PageContext;
014    import railo.runtime.dump.DumpData;
015    import railo.runtime.dump.DumpProperties;
016    import railo.runtime.exp.PageException;
017    import railo.runtime.listener.ApplicationContext;
018    import railo.runtime.op.Duplicator;
019    import railo.runtime.type.Collection;
020    import railo.runtime.type.dt.DateTime;
021    import railo.runtime.type.util.StructSupport;
022    
023    /**
024     * 
025     */
026    public final class UrlFormImpl extends StructSupport implements URLForm {
027    
028            private static final long serialVersionUID = -5709431392572723178L;
029    
030            private FormImpl form;
031            private URLImpl url;
032            private boolean isInit;
033    
034            public UrlFormImpl(FormImpl form, URLImpl url) {
035                    this.form=form;
036                    this.url=url;
037            }
038            
039            @Override
040            public void initialize(PageContext pc) {
041                    if(isInit) return;
042                    isInit=true;
043                    form.initialize(pc);
044                    url.initialize(pc);
045                    //print.ln(">>>"+List.arrayToList(url.keys(),","));
046                    form.addRaw(pc.getApplicationContext(),url.getRaw());
047                    
048                    /*String[] keys = url.keys();
049                    for(int i=0;i<keys.length;i++) {
050                            form.setEL(keys[i], url.get(keys[i],null));
051                    }*/
052            }
053            
054            @Override
055            public void release() {
056                    isInit=false;
057                    form.release();
058                    url.release();
059            }
060            
061            @Override
062            public void release(PageContext pc) {
063                    isInit=false;
064                    form.release(pc);
065                    url.release(pc);
066            }
067    
068            @Override
069            public String getEncoding() {
070                    return form.getEncoding();
071            }
072    
073            @Override
074            public void setEncoding(ApplicationContext ac, String encoding)throws UnsupportedEncodingException {
075                    form.setEncoding(ac,encoding);
076            }
077    
078            @Override
079            public int getType() {
080                    return form.getType();
081            }
082    
083            @Override
084            public String getTypeAsString() {
085                    return form.getTypeAsString();
086            }
087    
088            @Override
089            public boolean isInitalized() {
090                    return isInit;
091            }
092    
093            @Override
094            public void clear() {
095                    form.clear();
096                    url.clear();
097            }
098    
099            @Override
100            public boolean containsKey(Collection.Key key) {
101                    return form.containsKey(key);
102            }
103    
104            @Override
105            public Object get(Collection.Key key) throws PageException {
106                    return form.get(key);
107            }
108    
109            @Override
110            public Object get(Collection.Key key, Object defaultValue) {
111                    return form.get(key, defaultValue);
112            }
113    
114            @Override
115            public Iterator<Collection.Key> keyIterator() {
116                    return form.keyIterator();
117            }
118        
119        @Override
120            public Iterator<String> keysAsStringIterator() {
121            return form.keysAsStringIterator();
122        }
123            
124            @Override
125            public Iterator<Entry<Key, Object>> entryIterator() {
126                    return form.entryIterator();
127            }
128            
129            @Override
130            public Iterator<Object> valueIterator() {
131                    return form.valueIterator();
132            }
133    
134            @Override
135            public Collection.Key[] keys() {
136                    return form.keys();
137            }
138    
139            @Override
140            public Object remove(Collection.Key key) throws PageException {
141                    return form.remove(key);
142            }
143    
144            @Override
145            public Object removeEL(Collection.Key key) {
146                    return form.removeEL(key);
147            }
148    
149            @Override
150            public Object set(Collection.Key key, Object value) throws PageException {
151                    return form.set(key, value);
152            }
153    
154            @Override
155            public Object setEL(Collection.Key key, Object value) {
156                    return form.setEL(key, value);
157            }
158    
159            @Override
160            public int size() {
161                    return form.size();
162            }
163    
164            @Override
165            public DumpData toDumpData(PageContext pageContext, int maxlevel, DumpProperties dp) {
166                    return form.toDumpData(pageContext, maxlevel,dp);
167            }
168    
169            @Override
170            public boolean castToBooleanValue() throws PageException {
171                    return form.castToBooleanValue();
172            }
173        
174        @Override
175        public Boolean castToBoolean(Boolean defaultValue) {
176            return form.castToBoolean(defaultValue);
177        }
178    
179            @Override
180            public DateTime castToDateTime() throws PageException {
181                    return form.castToDateTime();
182            }
183        
184        @Override
185        public DateTime castToDateTime(DateTime defaultValue) {
186            return form.castToDateTime(defaultValue);
187        }
188    
189            @Override
190            public double castToDoubleValue() throws PageException {
191                    return form.castToDoubleValue();
192            }
193        
194        @Override
195        public double castToDoubleValue(double defaultValue) {
196            return form.castToDoubleValue(defaultValue);
197        }
198    
199            @Override
200            public String castToString() throws PageException {
201                    return form.castToString();
202            }
203            
204            @Override
205            public String castToString(String defaultValue) {
206                    return form.castToString(defaultValue);
207            }
208    
209    
210            @Override
211            public int compareTo(boolean b) throws PageException {
212                    return form.compareTo(b);
213            }
214    
215            @Override
216            public int compareTo(DateTime dt) throws PageException {
217                    return form.compareTo(dt);
218            }
219    
220            @Override
221            public int compareTo(double d) throws PageException {
222                    return form.compareTo(d);
223            }
224    
225            @Override
226            public int compareTo(String str) throws PageException {
227                    return form.compareTo(str);
228            }
229    
230            public DiskFileItem getFileUpload(String key) {
231                    return form.getFileUpload(key);
232            }
233    
234            @Override
235            public PageException getInitException() {
236                    return form.getInitException();
237            }
238    
239            @Override
240            public Collection duplicate(boolean deepCopy) {
241                    return (Collection) Duplicator.duplicate(form,deepCopy);
242            }
243            
244            @Override
245            public void setScriptProtecting(ApplicationContext ac,boolean b) {
246                    form.setScriptProtecting(ac,b);
247            }
248    
249            @Override
250            public boolean containsValue(Object value) {
251                    return form.containsValue(value);
252            }
253    
254            @Override
255            public java.util.Collection<Object> values() {
256                    return form.values();
257            }
258    
259            public FormItem getUploadResource(String key) {
260                    return form.getUploadResource(key);
261            }
262    
263            public FormItem[] getFileItems() {
264                    return form.getFileItems();
265            }
266    
267            public ServletInputStream getInputStream() {
268                    return form.getInputStream();
269            }
270    }