class SpringValueExtractor {

	public SpringValue extract(String string) {
		SpringValue value = new SpringValue();
		if (string==null) {
			return value;
		}
		String[] splitted = string.split("\\$\\{");
		String firstNotEmpty=null;
		for (String split: splitted) {
			if (! StringUtils.isEmpty(split)) {
				firstNotEmpty=split.trim();
				if (firstNotEmpty.length()>1 && firstNotEmpty.endsWith("}")) {
					firstNotEmpty=firstNotEmpty.substring(0,firstNotEmpty.length()-1);
				}
				break;
			}
		}
		if (firstNotEmpty==null) {
			value.key=string;
			return value;
		}

		int leftIndex = firstNotEmpty.indexOf(":");
		if (leftIndex==-1) {
			value.key=firstNotEmpty;
			value.defaultValue=null;
			return value;
		}
		value.key= firstNotEmpty.substring(0,leftIndex);

		int startRight = leftIndex+1;
		if (firstNotEmpty.length()>startRight) {
			value.defaultValue=firstNotEmpty.substring(startRight);
		}else {
			/* we got an empty default value */
			value.defaultValue="";
		}
		return value;
	}

}