StringUtils.substringBefore(null, *)      = null
StringUtils.substringBefore("", *)        = ""
StringUtils.substringBefore("abc", "a")   = ""
StringUtils.substringBefore("abcba", "b") = "a"
StringUtils.substringBefore("abc", "c")   = "ab"
StringUtils.substringBefore("abc", "d")   = "abc"
StringUtils.substringBefore("abc", "")    = ""
StringUtils.substringBefore("abc", null)  = "abc"

        

public void testSubstringBefore_StringString() {
	assertEquals("foo", StringUtils.substringBefore("fooXXbarXXbaz", "XX"));

	assertEquals(null, StringUtils.substringBefore(null, null));
	assertEquals(null, StringUtils.substringBefore(null, ""));
	assertEquals(null, StringUtils.substringBefore(null, "XX"));
	assertEquals("", StringUtils.substringBefore("", null));
	assertEquals("", StringUtils.substringBefore("", ""));
	assertEquals("", StringUtils.substringBefore("", "XX"));

	assertEquals("foo", StringUtils.substringBefore("foo", null));
	assertEquals("foo", StringUtils.substringBefore("foo", "b"));
	assertEquals("f", StringUtils.substringBefore("foot", "o"));
	assertEquals("", StringUtils.substringBefore("abc", "a"));
	assertEquals("a", StringUtils.substringBefore("abcba", "b"));
	assertEquals("ab", StringUtils.substringBefore("abc", "c"));
	assertEquals("", StringUtils.substringBefore("abc", ""));
}

        

assertEquals("the USA (United States of America).", 
  StringUtils.substringAfter(text, "living in "));
assertEquals("Julia Evans", 
  StringUtils.substringBefore(text, " was born"));

        

StringUtils.IsBlank("  "); // True
StringUtils.SubstringBefore("Adam.McNeilly", "."); // "Adam
StringUtils.SubstringAfter("Adam.McNeilly", "."); // "McNeilly"
StringUtils.LeftPad("1", 2); // " 1"
StringUtils.Chop("abc"); // "ab"

        

StringUtils.substringBefore(null, *)            = null
StringUtils.substringBefore("", *)              = ""
StringUtils.substringBefore("asdfg", null))     = "asdfg"
StringUtils.substringBefore("asdfg", "a"))      = ""
StringUtils.substringBefore("asdfg", "sd"))     = "a"
StringUtils.substringBefore("asdfsag", "sa"))   = "asdf"
StringUtils.substringBefore("asdfg", "h"))      = "asdfg"
StringUtils.substringBefore("asdfg", ""))       = ""
StringUtils.substringBefore("asdfg", "dfgh"))   = "asdfg"
StringUtils.substringBefore("asdfg", "dfg"))    = "as"
StringUtils.substringBefore("abbbabbba", "bb")) = "a"

        

public static MarkPos fromString(@Nullable String str) {
	if (str != null) {
		String commit = StringUtils.substringBefore(str, ":");
		String path = null;
		TextRange mark = null;
		String pathAndMark = StringUtils.substringAfter(str, ":");
		if (pathAndMark.length() != 0) {
			path = StringUtils.substringBefore(pathAndMark, ":");
			String markStr = StringUtils.substringAfter(pathAndMark, ":");
			if (markStr.length() != 0)
				mark = new TextRange(markStr);
		}
		return new MarkPos(commit, path, mark);
	} else {
		return null;
	}
}


        

private static Object generateMapType(ServiceDefinition def, TypeDefinition td, MetadataType metadataType,
                                      Set<String> resolvedTypes) {
    String keyType = StringUtils.substringAfter(td.getType(), "<");
    keyType = StringUtils.substringBefore(keyType, ",");
    keyType = StringUtils.strip(keyType);
    keyType = StringUtils.isNotEmpty(keyType) ? keyType : "java.lang.Object";
    Object key = generateType(def, keyType, metadataType, resolvedTypes);

    String valueType = StringUtils.substringAfter(td.getType(), ",");
    valueType = StringUtils.substringBefore(valueType, ">");
    valueType = StringUtils.strip(valueType);
    valueType = StringUtils.isNotEmpty(valueType) ? valueType : "java.lang.Object";
    Object value = generateType(def, valueType, metadataType, resolvedTypes);

    Map<Object, Object> map = new HashMap<>();
    map.put(key, value);
    return map;
}

        

private static String normalizePath(final Service service) {
    String path = service.getId();
    path = StringUtils.substringBefore(path, "?");
    path = StringUtils.substringBefore(path, ";");
    path = StringUtils.substringBefore(path, "#");
    return path;
}

        

public TextRange(String markStr) {
	String begin = StringUtils.substringBefore(markStr, "-");
	String end = StringUtils.substringAfter(markStr, "-");
	beginLine = Integer.parseInt(StringUtils.substringBefore(begin, "."))-1;
	beginChar = Integer.parseInt(StringUtils.substringAfter(begin, "."));
	endLine = Integer.parseInt(StringUtils.substringBefore(end, "."))-1;
	endChar = Integer.parseInt(StringUtils.substringAfter(end, "."));
}

        

public static String getClassName(String code) {
    String className = StringUtils.substringBefore(code, "{");
    if (StringUtils.isBlank(className)) {
        return className;
    }
    if (StringUtils.contains(code, " class ")) {
        className = StringUtils.substringAfter(className, " class ");
        if (StringUtils.contains(className, " extends ")) {
            className = StringUtils.substringBefore(className, " extends ").trim();
        } else if (StringUtils.contains(className, " implements ")) {
            className = StringUtils.trim(StringUtils.substringBefore(className, " implements "));
        } else {
            className = StringUtils.trim(className);
        }
    } else if (StringUtils.contains(code, " interface ")) {
        className = StringUtils.substringAfter(className, " interface ");
        if (StringUtils.contains(className, " extends ")) {
            className = StringUtils.substringBefore(className, " extends ").trim();
        } else {
            className = StringUtils.trim(className);
        }
    } else if (StringUtils.contains(code, " enum ")) {
        className = StringUtils.trim(StringUtils.substringAfter(className, " enum "));
    } else {
        return StringUtils.EMPTY;
    }
    return className;
}        
main