All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ibm.wsdl.util.StringUtils Maven / Gradle / Ivy

Go to download

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;
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy