Example usage for org.apache.commons.vfs2.impl VFSClassLoader getFileObjects

List of usage examples for org.apache.commons.vfs2.impl VFSClassLoader getFileObjects

Introduction

In this page you can find the example usage for org.apache.commons.vfs2.impl VFSClassLoader getFileObjects.

Prototype

public FileObject[] getFileObjects() 

Source Link

Document

Provide access to the file objects this class loader represents.

Usage

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);
}