@SuppressWarnings({ "unchecked", "rawtypes" })
	private void replaceData(Map<String, Object> newData)
			throws StickyWebDataSourceParseException {
		data = new HashMap<String, Output>();
		for (Entry<String, Object> es : newData.entrySet()) {
			if (es.getValue() instanceof ArrayList) {
				ArrayList values = (ArrayList) es.getValue();
				if (values.size() == 0) {
					this.data.put(es.getKey(), new Output(new ArrayList<String>()));
				} else if (values.size() == 1 && values.get(0) instanceof String) {
					this.data.put(es.getKey(), new Output((ArrayList<String>) values.get(0)));
				} else {
					Output newOutput = new Output(Pattern.valueOf(values.get(0).toString().toUpperCase()));
					for (Object o : values.subList(1, values.size())) {
						if (o == null) {
							throw new StickyWebDataSourceParseException(
									"Input "
											+ es.getValue()
											+ " does not have a list of strings. One of the elements is null.");
						} else if (!(o instanceof String)) {
							throw new StickyWebDataSourceParseException(
									"Input "
											+ es.getValue()
											+ " does not have a list of strings. One of the elements is "
											+ o.getClass() + " (" + o + ").");
						}
						newOutput.add(o.toString());
					}
					this.data.put(es.getKey(), newOutput);
				}
			} else {
				throw new StickyWebDataSourceParseException("Input "
						+ es.getValue() + " does not have a list of strings.");
			}
		}
	}