com.ibm.wsdl.util.StringUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of libre-wsdl4j Show documentation
Show all versions of libre-wsdl4j Show documentation
Open and Free WSDL library: Web Services Description Language. Libre-wsdl4j is a fork of WSDL4J 1.6.3. WSL4j is a Java stub generator for WSDL. Many software projects still depends on WSL4j, so the idea is that libre-wsdl4j should be an actively maintained version of this software on GitHub. "WSDL, that's an anchronym i haven't heard in almost ten years." Still big in the enterprise world" - comments on the Internet.
The newest version!
/*
* (c) Copyright IBM Corp 2001, 2006
*/
package com.ibm.wsdl.util;
import java.io.*;
import java.util.*;
import java.net.URL;
import java.net.MalformedURLException;
/**
* Deals with strings (probably need to elaborate some more).
*
* @author Matthew J. Duftler
*/
public class StringUtils {
public static final String lineSeparator = System.getProperty("line.separator", "\n");
public static final String lineSeparatorStr = cleanString(lineSeparator);
private StringUtils() {
}
// Ensure that escape sequences are passed through properly.
public static String cleanString(String str) {
if (str == null)
return null;
else {
char[] charArray = str.toCharArray();
StringBuilder sBuf = new StringBuilder();
for (int i = 0; i < charArray.length; i++)
switch (charArray[i]) {
case '\"':
sBuf.append("\\\"");
break;
case '\\':
sBuf.append("\\\\");
break;
case '\n':
sBuf.append("\\n");
break;
case '\r':
sBuf.append("\\r");
break;
default:
sBuf.append(charArray[i]);
break;
}
return sBuf.toString();
}
}
/*
* This method will return the correct name for a class object representing a primitive, a single instance of a class, as well as n-dimensional arrays of primitives or instances. This logic is needed to handle the string returned from Class.getName(). If the class object represents a single
* instance (or a primitive), Class.getName() returns the fully-qualified name of the class and no further work is needed. However, if the class object represents an array (of n dimensions), Class.getName() returns a Descriptor (the Descriptor grammar is defined in section 4.3 of the Java VM
* Spec). This method will parse the Descriptor if necessary.
*/
public static String getClassName(Class> targetClass) {
String className = targetClass.getName();
return targetClass.isArray() ? parseDescriptor(className) : className;
}
/*
* See the comment above for getClassName(targetClass)...
*/
private static String parseDescriptor(String className) {
char[] classNameChars = className.toCharArray();
int arrayDim = 0;
int i = 0;
while (classNameChars[i] == '[') {
arrayDim++;
i++;
}
StringBuilder classNameBuf = new StringBuilder();
switch (classNameChars[i++]) {
case 'B':
classNameBuf.append("byte");
break;
case 'C':
classNameBuf.append("char");
break;
case 'D':
classNameBuf.append("double");
break;
case 'F':
classNameBuf.append("float");
break;
case 'I':
classNameBuf.append("int");
break;
case 'J':
classNameBuf.append("long");
break;
case 'S':
classNameBuf.append("short");
break;
case 'Z':
classNameBuf.append("boolean");
break;
case 'L':
classNameBuf.append(classNameChars, i, classNameChars.length - i - 1);
break;
default:
break;
}
for (i = 0; i < arrayDim; i++)
classNameBuf.append("[]");
return classNameBuf.toString();
}
/*
* @param contextURL the context in which to attempt to resolve the spec. Effectively a document base.
*/
public static URL getURL(URL contextURL, String spec) throws MalformedURLException {
try {
return new URL(contextURL, spec);
} catch (MalformedURLException e) {
File tempFile = new File(spec);
if (contextURL == null || tempFile.isAbsolute()) {
return tempFile.toURL();
}
// only reach here if the contextURL !null, spec is relative path and
// MalformedURLException thrown
throw e;
}
}
/*
* Returns an InputStream for reading from the specified resource, if the resource points to a stream.
*/
public static InputStream getContentAsInputStream(URL url) throws SecurityException, IllegalArgumentException, IOException {
if (url == null) {
throw new IllegalArgumentException("URL cannot be null.");
}
try {
InputStream content = url.openStream();
if (content == null) {
throw new IllegalArgumentException("No content.");
}
return content;
} catch (SecurityException e) {
throw new SecurityException("Your JVM's SecurityManager has " + "disallowed this.");
} catch (FileNotFoundException e) {
throw new FileNotFoundException("This file was not found: " + url);
}
}
public static List parseNMTokens(String nmTokens) {
StringTokenizer strTok = new StringTokenizer(nmTokens, " ");
List tokens = new ArrayList<>();
while (strTok.hasMoreTokens()) {
tokens.add(strTok.nextToken());
}
return tokens;
}
public static String getNMTokens(List list) {
if (list != null) {
StringBuilder strBuf = new StringBuilder();
int size = list.size();
for (int i = 0; i < size; i++) {
String token = list.get(i);
strBuf.append((i > 0 ? " " : "") + token);
}
return strBuf.toString();
} else {
return null;
}
}
}