package org.infernus.idea.checkstyle.util;
import java.net.URL;
import java.net.URLClassLoader;
import com.intellij.util.lang.UrlClassLoader;
import org.jetbrains.annotations.NotNull;
public final class Objects {
private Objects() {
}
// ideally we'd use commons-lang here, but I've learnt my lesson on relying on the IDEA CP
public static boolean equals(final Object obj1, final Object obj2) {
if (obj1 == obj2) {
return true;
} else if (obj1 == null || obj2 == null) {
return false;
}
return obj1.equals(obj2);
}
public static <T extends Comparable<T>> int compare(final T obj1, final T obj2) {
if (obj1 == null && obj2 == null) {
return 0;
} else if (obj1 == null) {
return -1;
} else if (obj2 == null) {
return 1;
}
return obj1.compareTo(obj2);
}
public static String getClassPath(@NotNull final ClassLoader pClassLoader) {
StringBuilder sb = new StringBuilder();
sb.append("Class loader implementation: ");
sb.append(pClassLoader.getClass().getName());
sb.append(System.lineSeparator());
sb.append("URLs:");
sb.append(System.lineSeparator());
if (pClassLoader instanceof UrlClassLoader) {
final UrlClassLoader pluginClassLoader = (UrlClassLoader) pClassLoader;
for (final URL url : pluginClassLoader.getUrls()) {
sb.append("\t- ");
sb.append(url);
sb.append(System.lineSeparator());
}
} else if (pClassLoader instanceof URLClassLoader) {
final URLClassLoader urlClassLoader = (URLClassLoader) pClassLoader;
for (final URL url : urlClassLoader.getURLs()) {
sb.append("\t- ");
sb.append(url);
sb.append(System.lineSeparator());
}
}
return sb.toString();
}
}