List of usage examples for org.apache.commons.vfs2.impl VFSClassLoader getFileObjects
public FileObject[] getFileObjects()
From source file:org.apache.accumulo.minicluster.impl.MiniAccumuloClusterImpl.java
private String getClasspath() throws IOException { try {//from w w w . ja v a2 s.co m ArrayList<ClassLoader> classloaders = new ArrayList<ClassLoader>(); ClassLoader cl = this.getClass().getClassLoader(); while (cl != null) { classloaders.add(cl); cl = cl.getParent(); } Collections.reverse(classloaders); StringBuilder classpathBuilder = new StringBuilder(); classpathBuilder.append(config.getConfDir().getAbsolutePath()); if (config.getHadoopConfDir() != null) classpathBuilder.append(File.pathSeparator).append(config.getHadoopConfDir().getAbsolutePath()); if (config.getClasspathItems() == null) { // assume 0 is the system classloader and skip it for (int i = 1; i < classloaders.size(); i++) { ClassLoader classLoader = classloaders.get(i); if (classLoader instanceof URLClassLoader) { for (URL u : ((URLClassLoader) classLoader).getURLs()) { append(classpathBuilder, u); } } else if (classLoader instanceof VFSClassLoader) { VFSClassLoader vcl = (VFSClassLoader) classLoader; for (FileObject f : vcl.getFileObjects()) { append(classpathBuilder, f.getURL()); } } else { throw new IllegalArgumentException( "Unknown classloader type : " + classLoader.getClass().getName()); } } } else { for (String s : config.getClasspathItems()) classpathBuilder.append(File.pathSeparator).append(s); } return classpathBuilder.toString(); } catch (URISyntaxException e) { throw new IOException(e); } }
From source file:org.apache.accumulo.minicluster.MiniAccumuloCluster.java
private String getClasspath() throws IOException { try {/*from w w w . j ava2s . com*/ ArrayList<ClassLoader> classloaders = new ArrayList<ClassLoader>(); ClassLoader cl = this.getClass().getClassLoader(); while (cl != null) { classloaders.add(cl); cl = cl.getParent(); } Collections.reverse(classloaders); StringBuilder classpathBuilder = new StringBuilder(); classpathBuilder.append(config.getConfDir().getAbsolutePath()); if (config.getClasspathItems() == null) { // assume 0 is the system classloader and skip it for (int i = 1; i < classloaders.size(); i++) { ClassLoader classLoader = classloaders.get(i); if (classLoader instanceof URLClassLoader) { URLClassLoader ucl = (URLClassLoader) classLoader; for (URL u : ucl.getURLs()) { append(classpathBuilder, u); } } else if (classLoader instanceof VFSClassLoader) { VFSClassLoader vcl = (VFSClassLoader) classLoader; for (FileObject f : vcl.getFileObjects()) { append(classpathBuilder, f.getURL()); } } else { throw new IllegalArgumentException( "Unknown classloader type : " + classLoader.getClass().getName()); } } } else { for (String s : config.getClasspathItems()) classpathBuilder.append(File.pathSeparator).append(s); } return classpathBuilder.toString(); } catch (URISyntaxException e) { throw new IOException(e); } }
From source file:org.apache.accumulo.start.classloader.vfs.AccumuloReloadingVFSClassLoaderTest.java
@Test public void testConstructor() throws Exception { FileObject testDir = vfs.resolveFile(folder1.getRoot().toURI().toString()); FileObject[] dirContents = testDir.getChildren(); AccumuloReloadingVFSClassLoader arvcl = new AccumuloReloadingVFSClassLoader(folderPath, vfs, new ReloadingClassLoader() { @Override/* w ww . j a v a 2 s.co m*/ public ClassLoader getClassLoader() { return ClassLoader.getSystemClassLoader(); } }, true); VFSClassLoader cl = (VFSClassLoader) arvcl.getClassLoader(); FileObject[] files = cl.getFileObjects(); Assert.assertArrayEquals(createFileSystems(dirContents), files); arvcl.close(); }
From source file:org.apache.accumulo.start.classloader.vfs.AccumuloVFSClassLoader.java
public static void printClassPath(Printer out) { try {//w ww .j av a 2 s . com ClassLoader cl = getClassLoader(); ArrayList<ClassLoader> classloaders = new ArrayList<ClassLoader>(); while (cl != null) { classloaders.add(cl); cl = cl.getParent(); } Collections.reverse(classloaders); int level = 0; for (ClassLoader classLoader : classloaders) { if (level > 0) out.print(""); level++; String classLoaderDescription; switch (level) { case 1: classLoaderDescription = level + ": Java System Classloader (loads Java system resources)"; break; case 2: classLoaderDescription = level + ": Java Classloader (loads everything defined by java classpath)"; break; case 3: classLoaderDescription = level + ": Accumulo Classloader (loads everything defined by general.classpaths)"; break; case 4: classLoaderDescription = level + ": Accumulo Dynamic Classloader (loads everything defined by general.dynamic.classpaths)"; break; default: classLoaderDescription = level + ": Mystery Classloader (someone probably added a classloader and didn't update the switch statement in " + AccumuloVFSClassLoader.class.getName() + ")"; break; } if (classLoader instanceof URLClassLoader) { // If VFS class loader enabled, but no contexts defined. out.print("Level " + classLoaderDescription + " URL classpath items are:"); for (URL u : ((URLClassLoader) classLoader).getURLs()) { out.print("\t" + u.toExternalForm()); } } else if (classLoader instanceof VFSClassLoader) { out.print("Level " + classLoaderDescription + " VFS classpaths items are:"); VFSClassLoader vcl = (VFSClassLoader) classLoader; for (FileObject f : vcl.getFileObjects()) { out.print("\t" + f.getURL().toExternalForm()); } } else { out.print("Unknown classloader configuration " + classLoader.getClass()); } } } catch (Throwable t) { throw new RuntimeException(t); } }
From source file:org.apache.accumulo.start.classloader.vfs.AccumuloVFSClassLoaderTest.java
@Test public void testDefaultContextConfigured() throws Exception { Whitebox.setInternalState(AccumuloVFSClassLoader.class, "loader", (AccumuloReloadingVFSClassLoader) null); // Copy jar file to TEST_DIR FileUtils.copyURLToFile(this.getClass().getResource("/HelloWorld.jar"), folder1.newFile("HelloWorld.jar")); File conf = folder1.newFile("accumulo-site.xml"); FileWriter out = new FileWriter(conf); out.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); out.append("<configuration>\n"); out.append("<property>\n"); out.append("<name>general.classpaths</name>\n"); out.append("<value></value>\n"); out.append("</property>\n"); out.append("<property>\n"); out.append("<name>general.vfs.classpaths</name>\n"); out.append("<value>" + new File(folder1.getRoot(), "HelloWorld.jar").toURI() + "</value>\n"); out.append("</property>\n"); out.append("</configuration>\n"); out.close();//from w ww.ja v a 2 s. com Whitebox.setInternalState(AccumuloClassLoader.class, "SITE_CONF", conf.toURI().toURL().toString()); Whitebox.setInternalState(AccumuloVFSClassLoader.class, "lock", new Object()); ClassLoader acl = AccumuloVFSClassLoader.getClassLoader(); Assert.assertTrue((acl instanceof VFSClassLoader)); Assert.assertTrue((acl.getParent() instanceof VFSClassLoader)); VFSClassLoader arvcl = (VFSClassLoader) acl.getParent(); Assert.assertEquals(1, arvcl.getFileObjects().length); // We can't be sure what the authority/host will be due to FQDN mappings, so just check the path Assert.assertTrue(arvcl.getFileObjects()[0].getURL().toString().contains("HelloWorld.jar")); Class<?> clazz1 = arvcl.loadClass("test.HelloWorld"); Object o1 = clazz1.newInstance(); Assert.assertEquals("Hello World!", o1.toString()); Whitebox.setInternalState(AccumuloVFSClassLoader.class, "loader", (AccumuloReloadingVFSClassLoader) null); }