package org.apache.commons.beanutils.converters;

import java.io.IOException;
import java.io.StreamTokenizer;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.beanutils.ConversionException;
import org.apache.commons.beanutils.Converter;

public abstract class AbstractArrayConverter implements Converter {
  protected Object defaultValue = null;
  
  protected static String[] strings = new String[0];
  
  protected boolean useDefault = true;
  
  public abstract Object convert(Class paramClass, Object paramObject);
  
  protected List parseElements(String svalue) {
    if (svalue == null)
      throw new NullPointerException(); 
    svalue = svalue.trim();
    if (svalue.startsWith("{") && svalue.endsWith("}"))
      svalue = svalue.substring(1, svalue.length() - 1); 
    try {
      int ttype;
      StreamTokenizer st = new StreamTokenizer(new StringReader(svalue));
      st.whitespaceChars(44, 44);
      st.ordinaryChars(48, 57);
      st.ordinaryChars(46, 46);
      st.ordinaryChars(45, 45);
      st.wordChars(48, 57);
      st.wordChars(46, 46);
      st.wordChars(45, 45);
      ArrayList list = new ArrayList();
      while (true) {
        ttype = st.nextToken();
        if (ttype == -3 || ttype > 0) {
          list.add(st.sval);
          continue;
        } 
        break;
      } 
      if (ttype == -1)
        return list; 
      throw new ConversionException("Encountered token of type " + ttype);
    } catch (IOException e) {
      throw new ConversionException(e);
    } 
  }
}
