%@ page import="java.util.List" %>
<%@ page import="com.atlassian.confluence.util.ClasspathUtils" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="java.net.URL" %>
<%@ page import="java.util.Set" %>
<%@ page import="com.atlassian.confluence.util.classpath.DuplicateClassFinder" %>
<%@ page import="com.atlassian.confluence.util.classpath.ClasspathJarDuplicateClassFinder" %>
<%@ page import="com.atlassian.confluence.util.classpath.JarSet" %>
<%--
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<% if(!Boolean.getBoolean("com.atlassian.classpathjsp")){ %>
Not enabled
<%} else { %>
Classpath JSP
<%
DuplicateClassFinder duplicateClassFinder = new ClasspathJarDuplicateClassFinder(
ClasspathJarDuplicateClassFinder.EXCLUDE_KNOWN_DUPLICATES);
%>
<%
List classLoaders = ClasspathUtils.getThreadContentClassLoaderHierarchy();
Iterator it = classLoaders.iterator();
while (it.hasNext())
{
ClassLoader classLoader = (ClassLoader) it.next();
out.println("- ClassLoader: " + classLoader + "
");
out.println("- ");
out.println("
");
List listUrls = ClasspathUtils.getClassLoaderClasspath(classLoader);
for (Iterator iterator = listUrls.iterator(); iterator.hasNext();)
{
URL url = (URL) iterator.next();
out.println("- " + url + "
");
}
out.println("
");
out.println(" ");
}
%>
<%
Set jarSets = duplicateClassFinder.getJarSetsWithCommonClasses();
if(jarSets.isEmpty())
{
%>
 |
No duplicate class files found in classpath JARs |
<%
}
else
{ %>
 |
Duplicate class files found in classpath JARs |
-
The following JARs have classes in common:
<%
for (Iterator jarSetsIterator = jarSets.iterator(); jarSetsIterator.hasNext();)
{
JarSet jarSet = (JarSet) jarSetsIterator.next();
Iterator jars = jarSet.iterator();
while (jars.hasNext())
{
out.println("- " + jars.next() + "
");
}
%>
-
Packages with duplicates:
<% Iterator packages = duplicateClassFinder.getPackageNames(jarSet).iterator();
while(packages.hasNext()){
out.println("- " + packages.next() + "
");
}
%>
<%
}
}
}%>