Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source.
   * Copyright 2012 Red Hat, Inc., and individual contributors
   * as indicated by the @author tags.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
  *     http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package io.undertow.server.handlers.form;
 
 import java.io.File;
 import java.util.Map;
 
Representation of form data.

TODO: add representation of multipart data

 
 public final class FormData implements Iterable<String> {
 
     private final Map<StringDeque<FormValue>> values = new LinkedHashMap<StringDeque<FormValue>>();
 
     private final int maxValues;
     private int valueCount = 0;
 
     public FormData(final int maxValues) {
         this. = maxValues;
     }
 
 
     public Iterator<Stringiterator() {
         return .keySet().iterator();
     }
 
     public FormValue getFirst(String name) {
         final Deque<FormValuedeque = .get(name);
         return deque == null ? null : deque.peekFirst();
     }
 
     public FormValue getLast(String name) {
         final Deque<FormValuedeque = .get(name);
         return deque == null ? null : deque.peekLast();
     }
 
     public Deque<FormValueget(String name) {
         return .get(name);
     }
 
     public void add(String nameString value) {
         add(namevaluenull);
     }
 
     public void add(String nameString valuefinal HeaderMap headers) {
         Deque<FormValuevalues = this..get(name);
         if (values == null) {
             this..put(namevalues = new ArrayDeque<FormValue>(1));
         }
         values.add(new FormValueImpl(valueheaders));
         if (++ > ) {
             throw ..tooManyParameters();
         }
     }
 
     public void add(String nameFile valueString fileNamefinal HeaderMap headers) {
         Deque<FormValuevalues = this..get(name);
         if (values == null) {
             this..put(namevalues = new ArrayDeque<FormValue>(1));
         }
         values.add(new FormValueImpl(valuefileNameheaders));
         if (values.size() > ) {
             throw ..tooManyParameters();
         }
         if (++ > ) {
             throw ..tooManyParameters();
         }
     }
 
     public void put(String nameString valuefinal HeaderMap headers) {
         Deque<FormValuevalues = new ArrayDeque<FormValue>(1);
         Deque<FormValueold = this..put(namevalues);
         if (old != null) {
              -= old.size();
        }
        values.add(new FormValueImpl(valueheaders));
        if (++ > ) {
            throw ..tooManyParameters();
        }
    }
    public Deque<FormValueremove(String name) {
        Deque<FormValueold =  .remove(name);
        if (old != null) {
             -= old.size();
        }
        return old;
    }
    public boolean contains(String name) {
        final Deque<FormValuevalue = .get(name);
        return value != null && !value.isEmpty();
    }
    @Override
    public boolean equals(final Object o) {
        if (this == oreturn true;
        if (o == null || getClass() != o.getClass()) return false;
        final FormData strings = (FormDatao;
        if ( != null ? !.equals(strings.values) : strings.values != nullreturn false;
        return true;
    }
    @Override
    public int hashCode() {
        return  != null ? .hashCode() : 0;
    }
    @Override
    public String toString() {
        return "FormData{" +
                "values=" +  +
                '}';
    }
    public interface FormValue {

        

Returns:
the simple string value.
Throws:
java.lang.IllegalStateException If this is not a simple string value
        String getValue();

        
Returns true if this is a file and not a simple string

Returns:
        boolean isFile();

        

Returns:
The temp file that the file data was saved to
Throws:
java.lang.IllegalStateException if this is not a file
        File getFile();

        

Returns:
The filename specified in the disposition header.
        String getFileName();

        

Returns:
The headers that were present in the multipart request, or null if this was not a multipart request
        HeaderMap getHeaders();
    }
    static class FormValueImpl implements FormValue {
        private final String value;
        private final String fileName;
        private final File file;
        private final HeaderMap headers;
        FormValueImpl(String valueHeaderMap headers) {
            this. = value;
            this. = headers;
            this. = null;
            this. = null;
        }
        FormValueImpl(File filefinal String fileNameHeaderMap headers) {
            this. = file;
            this. = headers;
            this. = fileName;
            this. = null;
        }
        @Override
        public String getValue() {
            if ( == null) {
                throw ..formValueIsAFile();
            }
            return ;
        }
        @Override
        public boolean isFile() {
            return  != null;
        }
        @Override
        public File getFile() {
            if ( == null) {
                throw ..formValueIsAString();
            }
            return ;
        }
        @Override
        public HeaderMap getHeaders() {
            return ;
        }
        public String getFileName() {
            return ;
        }
    }
New to GrepCode? Check out our FAQ X