[jboss-cvs] JBossAS SVN: r106950 - projects/cl-benchmark/trunk/src/test/java/org/jboss/test/cl/benchmark.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Jul 20 15:49:09 EDT 2010
Author: kabir.khan at jboss.com
Date: 2010-07-20 15:49:09 -0400 (Tue, 20 Jul 2010)
New Revision: 106950
Modified:
projects/cl-benchmark/trunk/src/test/java/org/jboss/test/cl/benchmark/ClassLoaderBenchmarkTestDelegate.java
projects/cl-benchmark/trunk/src/test/java/org/jboss/test/cl/benchmark/ClassPathElementInfo.java
Log:
Automatic exclusion of duplicate classes/packages
Modified: projects/cl-benchmark/trunk/src/test/java/org/jboss/test/cl/benchmark/ClassLoaderBenchmarkTestDelegate.java
===================================================================
--- projects/cl-benchmark/trunk/src/test/java/org/jboss/test/cl/benchmark/ClassLoaderBenchmarkTestDelegate.java 2010-07-20 19:01:15 UTC (rev 106949)
+++ projects/cl-benchmark/trunk/src/test/java/org/jboss/test/cl/benchmark/ClassLoaderBenchmarkTestDelegate.java 2010-07-20 19:49:09 UTC (rev 106950)
@@ -22,10 +22,16 @@
package org.jboss.test.cl.benchmark;
import java.io.File;
+import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
import javax.resource.spi.IllegalStateException;
@@ -59,32 +65,75 @@
String classpath = System.getProperty("java.class.path");
String[] jars = classpath.split(File.pathSeparator);
+ createClassPathElements(jars);
+
+ URL commonUrl = getClass().getResource("/org/jboss/test/cl/benchmark/Common.xml");
+ if (commonUrl == null)
+ throw new IllegalStateException("Null common url");
+ deploy(commonUrl);
+ }
+
+ private void createClassPathElements(String[] jars) throws IOException
+ {
+ Set<String> doneAlready = new HashSet<String>();
+ int skippedPackages = 0;
+ int skippedClasses = 0;
int packages = 0;
int classes = 0;
- int excluded = 0;
+ int noclasses = 0;
for (String jar : jars)
{
- if (ClassPathElementInfo.isJar(jar))
+ if (isJar(jar))
{
- ClassPathElementInfo info = ClassPathElementInfo.of(jar);
- if (info != null)
+ File file = new File(jar);
+ if (!file.exists())
+ throw new IllegalArgumentException("Could not find " + file);
+
+ List<String> classNames = new ArrayList<String>();
+ List<String> packageNames = new ArrayList<String>();
+ JarFile jarFile = new JarFile(file);
+ for (Enumeration<JarEntry> e = jarFile.entries() ; e.hasMoreElements() ; )
{
- classPathElements.add(info);
- packages += info.getPackageNames().size();
- classes += info.getClassNames().size();
+ JarEntry entry = e.nextElement();
+
+ //TODO - replace '/' with '.'?
+ if (entry.getName().endsWith("/"))
+ {
+ if (doneAlready.contains(entry.getName()))
+ {
+ skippedPackages++;
+ continue;
+ }
+ packageNames.add(entry.getName().replace('/', '.'));
+ }
+ else if (entry.getName().endsWith(".class"))
+ {
+ if (doneAlready.contains(entry.getName()))
+ {
+ skippedClasses++;
+ continue;
+ }
+ classNames.add(entry.getName().substring(0, entry.getName().indexOf(".class")).replace('/', '.'));
+ }
+
+ doneAlready.add(entry.getName());
}
+
+
+ if (classNames.size() > 0)
+ {
+ classPathElements.add(new ClassPathElementInfo(jar, new File(jar).toURI().toURL(), packageNames, classNames));
+ packages += packageNames.size();
+ classes += classNames.size();
+ }
else
- excluded++;
+ noclasses++;
}
}
-
- System.out.println(classPathElements.size() + " jars indexed. Classes: " + classes + ". Packages: " + packages + ". Excluded: " + excluded);
-
- URL commonUrl = getClass().getResource("/org/jboss/test/cl/benchmark/Common.xml");
- if (commonUrl == null)
- throw new IllegalStateException("Null common url");
- deploy(commonUrl);
+ System.out.println(classPathElements.size() + " jars indexed. Classes: " + classes + ". Packages: " + packages +
+ ". Excluded: (Empty jars: " + noclasses + ". Duplicate packages: " + skippedPackages + ". Duplicate classes: " + skippedClasses + ")");
}
+
List<ClassPathElementInfo> getClassPathElements()
{
@@ -112,4 +161,9 @@
contextName = factory.getName() + ":" + factory.getVersion();
return contextName;
}
+
+ static boolean isJar(String name)
+ {
+ return name.endsWith(".jar");
+ }
}
Modified: projects/cl-benchmark/trunk/src/test/java/org/jboss/test/cl/benchmark/ClassPathElementInfo.java
===================================================================
--- projects/cl-benchmark/trunk/src/test/java/org/jboss/test/cl/benchmark/ClassPathElementInfo.java 2010-07-20 19:01:15 UTC (rev 106949)
+++ projects/cl-benchmark/trunk/src/test/java/org/jboss/test/cl/benchmark/ClassPathElementInfo.java 2010-07-20 19:49:09 UTC (rev 106950)
@@ -21,14 +21,8 @@
*/
package org.jboss.test.cl.benchmark;
-import java.io.File;
-import java.io.IOException;
import java.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
import java.util.List;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
/**
*
@@ -37,35 +31,12 @@
*/
public class ClassPathElementInfo
{
- //Exclude
- private static final String[] EXCLUDED_JARS = new String[]{"-client",
- "aspects",
- "jboss-metadata-ejb",
- "jboss-integration",
- "ejb3",
- "jboss-as-connector",
- ".osgi.",
- "-osgi-",
- "pax-web-extender",
- "pax-swissbox",
- "-jmx-adaptor-plugin",
- "-jboss.jar",
- "jasper",
- "-jboss-web-service.jar",
- "jboss-web-deployer.jar",
- "-srp.jar",
- "wstx-asl",
- "hibernate-3.2",
- "quartz",
- "slf4j",
- "stax-ex-1.2"};
-
private final String name;
private final URL url;
private final List<String> packageNames;
private final List<String> classNames;
- private ClassPathElementInfo(String name, URL url, List<String> packageNames, List<String> classNames)
+ ClassPathElementInfo(String name, URL url, List<String> packageNames, List<String> classNames)
{
this.name = name;
this.packageNames = packageNames;
@@ -73,42 +44,6 @@
this.url = url;
}
- public static ClassPathElementInfo of(String name) throws Exception
- {
- if (!isJar(name))
- throw new IllegalArgumentException("Not a jar " + name);
-
- File file = new File(name);
- if (!file.exists())
- throw new IllegalArgumentException("Could not find " + file);
-
- if (isExcluded(name))
- return null;
-
-
- List<String> packages = new ArrayList<String>();
- List<String> classes = new ArrayList<String>();
- try
- {
- JarFile jar = new JarFile(file);
- for (Enumeration<JarEntry> e = jar.entries() ; e.hasMoreElements() ; )
- {
- JarEntry entry = e.nextElement();
-
- //TODO - replace '/' with '.'?
- if (entry.getName().endsWith("/"))
- packages.add(entry.getName().replace('/', '.'));
- else if (entry.getName().endsWith(".class"))
- classes.add(entry.getName().substring(0, entry.getName().indexOf(".class")).replace('/', '.'));
- }
-
- return new ClassPathElementInfo(name, new File(name).toURI().toURL(), packages, classes);
- }
- catch (IOException e)
- {
- throw new RuntimeException(e);
- }
- }
public List<String> getPackageNames()
{
@@ -130,19 +65,4 @@
return url;
}
- static boolean isJar(String name)
- {
- return name.endsWith(".jar");
- }
-
- private static boolean isExcluded(String name)
- {
- for (String excluded : EXCLUDED_JARS)
- {
- if (name.contains(excluded))
- return true;
- }
- return false;
- }
-
}
More information about the jboss-cvs-commits
mailing list