/// <exception cref="XMLStreamException"></exception>
	private Threshold readThreshold(XmlReader xmlReader) {
		Threshold threshold = new Threshold();
		bool finished = false;
		
		while(!finished && xmlReader.MoveToNextAttribute()) {
			//int Event = xmlReader.next();
			string name = XmlUtils.getElementQualifiedName(xmlReader, namespaces);
			
			switch(xmlReader.NodeType) {
				case XmlNodeType.Element:
					if("config:count".Equals(name)) {
						threshold.setCount(Int32.Parse(xmlReader.ReadString().Trim()));
					} else if("config:interval".Equals(name)) {
						Interval interval = new Interval();
						//interval.setUnit(xmlReader.getAttributeValue(null, "unit").Trim());
                        interval.setUnit(xmlReader.GetAttribute("unit", null).Trim());
						interval.setDuration(Int32.Parse(xmlReader.ReadString().Trim()));
						threshold.setInterval(interval);
					} else {
						/** unexpected start element **/
					}
					break;
				case XmlNodeType.EndElement:
					if("config:threshold".Equals(name)) {
						finished = true;
					} else {
						/** unexpected end element **/
					}
					break;
				default:
					/** unused xml element - nothing to do **/
					break;
			}
		}
		
		return threshold;
	}
	public DetectionPoint(string id, Threshold threshold, Collection<Response> responses) {
		setId(id);
		setThreshold(threshold);
		setResponses(responses);
	}
	public DetectionPoint setThreshold(Threshold threshold) {
		this.threshold = threshold;
		return this;
	}
	public DetectionPoint(string id, Threshold threshold) {
		setId(id);
		setThreshold(threshold);
	}