001 // Copyright 2004, 2005 The Apache Software Foundation
002 //
003 // Licensed under the Apache License, Version 2.0 (the "License");
004 // you may not use this file except in compliance with the License.
005 // You may obtain a copy of the License at
006 //
007 // http://www.apache.org/licenses/LICENSE-2.0
008 //
009 // Unless required by applicable law or agreed to in writing, software
010 // distributed under the License is distributed on an "AS IS" BASIS,
011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012 // See the License for the specific language governing permissions and
013 // limitations under the License.
014
015 package org.apache.hivemind.util;
016
017 import org.apache.hivemind.HiveMind;
018
019 /**
020 * A collection of utilities for handling qualified and unqualified ids.
021 *
022 * @author Howard Lewis Ship
023 */
024 public class IdUtils
025 {
026
027 /**
028 * Returns a fully qualfied id. If the id contains a '.', then it is returned unchanged.
029 * Otherwise, the module's id is prefixed (with a seperator '.') and returned;
030 */
031 public static String qualify(String moduleId, String id)
032 {
033 if (id.indexOf('.') > 0)
034 return id;
035
036 return moduleId + "." + id;
037 }
038
039 /**
040 * Qualifies a list of interceptor service ids provided for an interceptor contribution. The
041 * special value "*" is not qualified.
042 */
043 public static String qualifyList(String sourceModuleId, String list)
044 {
045 if (HiveMind.isBlank(list) || list.equals("*"))
046 return list;
047
048 String[] items = StringUtils.split(list);
049
050 for (int i = 0; i < items.length; i++)
051 items[i] = qualify(sourceModuleId, items[i]);
052
053 return StringUtils.join(items, ',');
054 }
055
056 /**
057 * Removes the module name from a fully qualified id
058 */
059 public static String stripModule(String id)
060 {
061 int lastPoint = id.lastIndexOf('.');
062 if (lastPoint > 0)
063 return id.substring(lastPoint + 1, id.length());
064
065 return id;
066 }
067
068 /**
069 * Extracts the module name from a fully qualified id Returns null if id contains no module
070 */
071 public static String extractModule(String id)
072 {
073 int lastPoint = id.lastIndexOf('.');
074 if (lastPoint > 0)
075 return id.substring(0, lastPoint);
076
077 return null;
078 }
079
080 }