Index: 3rdParty_sources/tacitknowledge/discovery/src/main/java/com/tacitknowledge/util/discovery/ClasspathUtils.java =================================================================== diff -u -r60fd31cb3d049512a0549ad11dbbe4ba81cae54e -reeca64d51c0247ee40e975204208102c1314cb52 --- 3rdParty_sources/tacitknowledge/discovery/src/main/java/com/tacitknowledge/util/discovery/ClasspathUtils.java (.../ClasspathUtils.java) (revision 60fd31cb3d049512a0549ad11dbbe4ba81cae54e) +++ 3rdParty_sources/tacitknowledge/discovery/src/main/java/com/tacitknowledge/util/discovery/ClasspathUtils.java (.../ClasspathUtils.java) (revision eeca64d51c0247ee40e975204208102c1314cb52) @@ -93,6 +93,7 @@ if (file.isFile() && (file.getName().endsWith(".jar") || file.getName().endsWith(".zip"))) { + log.debug("Found archive " + file.getAbsolutePath()); archives.add(possibleDir); } } @@ -138,9 +139,30 @@ // Calling File.getPath() cleans up the path so that it's using // the proper path separators for the host OS component = getCanonicalPath(component); + log.debug("System classpath: " + component); components.add(component); } - + + // search jars in current directory as this library + URL url = ClasspathUtils.class.getProtectionDomain().getCodeSource().getLocation(); + String path = url.getPath(); + String realPath = path.substring(path.indexOf(':') + 1); + File thisJar = new File(realPath); + if (thisJar != null) { + File currentDir = thisJar.getParentFile(); + if (currentDir.isDirectory()) { + File[] jars = currentDir.listFiles(new JarFilter()); + for (File jar : jars) { + try { + components.add(jar.getCanonicalPath()); + } catch (IOException e) { + log.error(e.getMessage()); + e.printStackTrace(); + } + } + } + } + // Set removes any duplicates, return a list for the api. return new LinkedList(new HashSet(components)); } @@ -175,6 +197,8 @@ URL[] urls = new URL[0]; + log.debug("URLClassLoader.getName() = " + ucl.getClass().getName()); + // Workaround for running on JBoss with UnifiedClassLoader3 usage // We need to invoke getClasspath() method instead of getURLs() if (ucl.getClass().getName().equals("org.jboss.mx.loading.UnifiedClassLoader3")) @@ -198,7 +222,10 @@ for (int i = 0; i < urls.length; i++) { URL url = urls[i]; - components.add(getCanonicalPath(url.getPath())); + + String path = getCanonicalPath(url.getPath()); + components.add(path); + log.debug("URLClassLoader found path: " + path); } return components; Index: 3rdParty_sources/tacitknowledge/discovery/src/main/java/com/tacitknowledge/util/discovery/JarFilter.java =================================================================== diff -u --- 3rdParty_sources/tacitknowledge/discovery/src/main/java/com/tacitknowledge/util/discovery/JarFilter.java (revision 0) +++ 3rdParty_sources/tacitknowledge/discovery/src/main/java/com/tacitknowledge/util/discovery/JarFilter.java (revision eeca64d51c0247ee40e975204208102c1314cb52) @@ -0,0 +1,27 @@ +package com.tacitknowledge.util.discovery; + +import java.io.File; +import java.io.FileFilter; + +/** + * + * + * @author Jun-Dir Liew (jliew@melcoe.mq.edu.au) + * @version $Id$ + */ +class JarFilter implements FileFilter +{ + /** + * @see java.io.FilenameFilter#accept(File, String) + */ + public boolean accept(File f) + { + if (f.isFile()) { + String name = f.getName(); + if (name.endsWith(".jar")) { + return true; + } + } + return false; + } +} \ No newline at end of file Index: 3rdParty_sources/tacitknowledge/discovery/src/main/java/com/tacitknowledge/util/discovery/WebArchiveResourceListSource.java =================================================================== diff -u -r60fd31cb3d049512a0549ad11dbbe4ba81cae54e -reeca64d51c0247ee40e975204208102c1314cb52 --- 3rdParty_sources/tacitknowledge/discovery/src/main/java/com/tacitknowledge/util/discovery/WebArchiveResourceListSource.java (.../WebArchiveResourceListSource.java) (revision 60fd31cb3d049512a0549ad11dbbe4ba81cae54e) +++ 3rdParty_sources/tacitknowledge/discovery/src/main/java/com/tacitknowledge/util/discovery/WebArchiveResourceListSource.java (.../WebArchiveResourceListSource.java) (revision eeca64d51c0247ee40e975204208102c1314cb52) @@ -49,14 +49,17 @@ String libPath = path + File.separator + "lib"; List jars = new ArrayList(); String[] entries = getLibEntries(libPath); - for (String jar : entries) - { - if (jar.endsWith(".jar") || jar.endsWith(".zip")) + if (entries != null) { + for (String jar : entries) { - String jarName = libPath + File.separator + jar; - jars.add(jarName); - } + if (jar.endsWith(".jar") || jar.endsWith(".zip")) + { + String jarName = libPath + File.separator + jar; + jars.add(jarName); + } + } } + return jars; } @@ -72,12 +75,13 @@ */ protected String[] getLibEntries(String dir) { - String[] entries = new String[0]; +// String[] entries = new String[0]; File libdir = new File(dir); - if (libdir.exists() && libdir.isDirectory()) - { - entries = libdir.list(); - } - return entries; + return libdir.list(); +// if (libdir.exists() && libdir.isDirectory()) +// { +// entries = libdir.list(); +// } +// return entries; } } \ No newline at end of file