blob: f238ed4d21df97ef2da0b32c423c63177030d422 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.felix.bundlerepository.metadataparser;
import java.util.Map;
/**
* This class provides methods to replace ${var} substring by values stored in a map
*/
public class ReplaceUtility
{
/**
* This method replaces ${var} substring by values stored in a map.
* @return resulted string
*/
public static String replace(String str, Map values)
{
int len = str.length();
StringBuffer sb = new StringBuffer(len);
int prev = 0;
int start = str.indexOf("${");
int end = str.indexOf("}", start);
while (start != -1 && end != -1)
{
String key = str.substring(start + 2, end);
Object value = values.get(key);
if (value != null)
{
sb.append(str.substring(prev, start));
sb.append(value);
}
else
{
sb.append(str.substring(prev, end + 1));
}
prev = end + 1;
if (prev >= str.length())
{
break;
}
start = str.indexOf("${", prev);
if (start != -1)
{
end = str.indexOf("}", start);
}
}
sb.append(str.substring(prev));
return sb.toString();
}
// public static void main(String[] args){
// Map map=new HashMap();
// map.put("foo","FOO");
// map.put("bar","BAR");
// map.put("map",map);
//
// String str;
// if(args.length==0) str=""; else str=args[0];
//
// System.out.println(replace(str,map));
//
// }
}