org.modeshape.cmis.RepositoryConfig Maven / Gradle / Ivy
/*
* ModeShape (http://www.modeshape.org)
*
* Licensed 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.modeshape.cmis;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* Splits common configuration map into set of repository specific parameters.
*
* @author kulikov
*/
public class RepositoryConfig {
private static final String REPO_PARAMETER_PREFIX = "jcr.";
public static Map> load( Map params ) {
// create map for results
Map> set = new HashMap>();
// extract parameter's keys
Set keys = params.keySet();
for (String key : keys) {
// search for repositories parameters
if (key.startsWith(REPO_PARAMETER_PREFIX)) {
// found repository parameter, cut prefix
String fqn = key.substring(REPO_PARAMETER_PREFIX.length());
// cut repository ID from the begining of parameter
String repositoryId = fqn.substring(0, fqn.indexOf("."));
// get or create map for this repository Id
Map map = set.get(repositoryId);
if (map == null) {
map = new HashMap();
set.put(repositoryId, map);
}
// extract clean parameter name and value
String name = fqn.substring(fqn.indexOf(".") + 1, fqn.length());
String value = params.get(key);
// store parameter
map.put(name, replaceSystemProperties(value));
}
}
return set;
}
private static String replaceSystemProperties( String s ) {
if (s == null) {
return null;
}
StringBuilder result = new StringBuilder();
StringBuilder property = null;
boolean inProperty = false;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (inProperty) {
assert property != null;
if (c == '}') {
String value = System.getProperty(property.toString());
if (value != null) {
result.append(value);
}
inProperty = false;
} else {
property.append(c);
}
} else {
if (c == '{') {
property = new StringBuilder();
inProperty = true;
} else {
result.append(c);
}
}
}
return result.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy