blob: 2eebc67c4ee39bd022d14d83d196f220d634e8c6 [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.yoko.rmi.util;
import java.util.ArrayList;
/**
*
* @author Jeppe Sommer (jso@eos.dk)
* @author Kim Harding Christensen (khc@eos.dk)
*/
public class StringUtil {
public static String capitalize(String str) {
StringBuffer sb = new StringBuffer(str);
sb.setCharAt(0, Character.toUpperCase(str.charAt(0)));
return sb.toString();
}
public static String join(String[] strings, String delimiter) {
StringBuffer sb = new StringBuffer();
for (int n = 0; n < strings.length; n++) {
sb.append(strings[n]);
if (n < strings.length - 1) {
sb.append(delimiter);
}
}
return sb.toString();
}
public static String[] split(String str, char splitChar) {
ArrayList al = new ArrayList(8);
int i = -1;
String s;
String rest = str;
while ((i = rest.indexOf(splitChar)) != -1) {
s = rest.substring(0, i);
al.add(s);
rest = rest.substring(i + 1);
}
al.add(rest);
String[] result = new String[al.size()];
al.toArray(result);
return result;
}
public static String replace(String str, String oldStr, String newStr) {
int prevIndex = 0, nextIndex;
StringBuffer result = new StringBuffer();
while ((nextIndex = str.indexOf(oldStr, prevIndex)) != -1) {
result.append(str.substring(prevIndex, nextIndex));
result.append(newStr);
prevIndex = nextIndex + oldStr.length();
}
result.append(str.substring(prevIndex));
return result.toString();
}
public static final byte[] HEX_CHARS = {
(byte)'0',
(byte)'1',
(byte)'2',
(byte)'3',
(byte)'4',
(byte)'5',
(byte)'6',
(byte)'7',
(byte)'8',
(byte)'9',
(byte)'A',
(byte)'B',
(byte)'C',
(byte)'D',
(byte)'E',
(byte)'F',
};
public static final byte[] VALID_IDL_CHARS = {
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1,0,
1,1,1,1, 1,1,1,1, 1,1,0,0, 0,0,0,0,
0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1,
1,1,1,1, 1,1,1,1, 1,1,1,0, 0,0,0,1,
0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1,
1,1,1,1, 1,1,1,1, 1,1,1,0, 0,0,0,0,
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1,
0,1,1,1, 1,1,1,0, 1,1,1,1, 1,0,0,1,
1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1,
0,1,1,1, 1,1,1,0, 1,1,1,1, 1,0,0,1,
};
public static String convertToValidIDLNames(String str) {
int length = str.length();
if (length == 0) {
return str;
}
StringBuilder builder = new StringBuilder();
for (char c : str.toCharArray()) {
if (c > 255 || VALID_IDL_CHARS[c] == 0) {
builder.append("\\U" +
(char)HEX_CHARS[(c & 0xF000) >>> 12] +
(char)HEX_CHARS[(c & 0x0F00) >>> 8] +
(char)HEX_CHARS[(c & 0x00F0) >>> 4] +
(char)HEX_CHARS[(c & 0x000F)] );
} else {
builder.append(c);
}
}
if (builder.length() > 0) {
str = builder.toString();
}
return str;
}
}