I am trying to run integration tests on my scim restful server implementation
via an embedded jetty server and apache wink REST Client but failing to run
the tests. Here is my EmbeddedServerBase class

    package org.picketlink.test.scim;

    import java.net.URL;

    import org.eclipse.jetty.server.Connector;
    import org.eclipse.jetty.server.Server;
    import org.eclipse.jetty.server.bio.SocketConnector;
    import org.eclipse.jetty.servlet.FilterHolder;
    import org.eclipse.jetty.servlet.FilterMapping;
    import org.eclipse.jetty.servlet.ServletHolder;
    import org.eclipse.jetty.webapp.WebAppContext;
    import org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher;
    import org.junit.After;
    import org.junit.Before;
    import org.picketlink.scim.PicketLinkSCIMApplication;

    public class EmbeddedWebServerBase {
    protected Server server = null;

    @Before
    public void setUp() throws Exception {
        // Start the Jetty embedded container
        server = new Server();

        server.setConnectors(getConnectors());

        this.establishUserApps();

        server.start();
    }

    @After
    public void tearDown() throws Exception {
        if (server != null) {
            server.stop();
            try {
                server.destroy();
            } catch (Exception e) {
                //Don't bother
            }
            server = null;
        }
    }

    /**
     * Return the connectors that need to be configured on the server.
Subclasses can create as many connectors as they want
     *
     * @return
     */
    protected Connector[] getConnectors() {
        Connector connector = new SocketConnector();
        connector.setPort(11080);
        return new Connector[] { connector };
    }

    /**
     * Establish the user applications - context, servlets etc
     */
    protected void establishUserApps() {
        ClassLoader tcl = Thread.currentThread().getContextClassLoader();
        if (tcl == null) {
            tcl = getClass().getClassLoader();
        }

        final String WEBAPPDIR = "scim";

        final String CONTEXTPATH = "/*";

        // for localhost:port/admin/index.html and whatever else is in the
webapp directory
        final URL warUrl = tcl.getResource(WEBAPPDIR);
        final String warUrlString = warUrl.toExternalForm();

        WebAppContext context = createWebApp(CONTEXTPATH, warUrlString);
        context.setClassLoader(getClass().getClassLoader());
        context.setExtraClasspath(warUrlString + "/..");

        context.setConfigurationClasses(new String[] {
"org.eclipse.jetty.webapp.WebInfConfiguration",
                "org.eclipse.jetty.webapp.WebXmlConfiguration",
"org.eclipse.jetty.webapp.MetaInfConfiguration",
                "org.eclipse.jetty.webapp.FragmentConfiguration",
"org.eclipse.jetty.plus.webapp.EnvConfiguration",
                //"org.eclipse.jetty.plus.webapp.PlusConfiguration",
                "org.eclipse.jetty.webapp.JettyWebXmlConfiguration",
"org.eclipse.jetty.webapp.TagLibConfiguration" });

        context.setContextPath("/");

        ServletHolder servletHolder = new ServletHolder(new
HttpServletDispatcher());
        servletHolder.setInitParameter("javax.ws.rs.Application",
PicketLinkSCIMApplication.class.getName());
        context.addServlet(servletHolder, "/*");

        server.setHandler(context);
    }

    protected FilterMapping createFilterMapping(String pathSpec,
FilterHolder filterHolder)      {
        FilterMapping filterMapping = new FilterMapping();
        filterMapping.setPathSpec(pathSpec);
        filterMapping.setFilterName(filterHolder.getName());
        return filterMapping;
    }

    protected WebAppContext createWebApp(String contextPath, String
warURLString) {
        WebAppContext webapp = new WebAppContext();
        webapp.setContextPath(contextPath);
        webapp.setWar(warURLString);

       
Thread.currentThread().setContextClassLoader(webapp.getClassLoader());
        return webapp;
    }
    }

The exception is most probably thrown at "webapp.getClassLoader()" in
Thread.currentThread().setContextClassLoader(webapp.getClassLoader());

Here is a snippet from CrudTest.java

    package org.picketlink.scim.restful.client.test;

    import org.junit.Before;
    import org.junit.Ignore;
    import org.junit.Test;
    import org.picketlink.scim.core.entities.ObjectFactory;
    import org.picketlink.scim.restful.client.Client;
    import org.picketlink.scim.restful.client.Tests;
    import org.picketlink.test.scim.EmbeddedWebServerBase;

    public class CrudTest extends EmbeddedWebServerBase {
    private Client client = null;
    private ObjectFactory factory = null;

    @Before
    public void onBefore() {
        // create a client to send the user/group crud requests
        client = new Client("http://localhost:11080/scim";, "matt",
"password");

        // create an object factory to create the user/group objects
        factory = new ObjectFactory();
    }
    
    @Test
    public void testBasicCrud() {
        // test the create user functionality
        String gid = Tests.createGroupTest(client, factory);
    }
    }

Here is a snippet from Client.java

    import javax.ws.rs.core.MediaType; 
    import javax.xml.bind.JAXBElement;

    import org.picketlink.scim.core.entities.Group;
    import org.picketlink.scim.core.entities.ObjectFactory;
    import org.picketlink.scim.core.entities.User;

    import org.apache.wink.client.ClientConfig;
    import org.apache.wink.client.ClientResponse;
    import org.apache.wink.client.Resource;
    import org.apache.wink.client.RestClient;

    public class Client {
    private ObjectFactory factory = null;
    private ClientConfig config = null;
    private RestClient client = null;
    private String url = null;

    public Client(String url, String username, String password) {
        // setup the object factory
        factory = new ObjectFactory();

        // setup the client config
        config = new ClientConfig();

        // setup the rest client
        client = new RestClient(config);

        // remove any trailing slash
        url = url.replaceAll("/$", "");

        // store the url for later
        this.url = url;
    }
    //Other methods
    }

Exception is most probably thrown at:
    
    client = new RestClient(config);

The Stacktrace

    java.lang.NullPointerException
            at
org.apache.wink.common.internal.utils.FileLoader.loadFileUsingClassLoaders(FileLoader.java:130)
            at
org.apache.wink.common.internal.utils.FileLoader.loadFileAsStream(FileLoader.java:96)
            at
org.apache.wink.common.internal.application.ApplicationFileLoader.<init>(ApplicationFileLoader.java:97)
            at
org.apache.wink.common.internal.application.ApplicationFileLoader.<init>(ApplicationFileLoader.java:66)
            at
org.apache.wink.client.ClientConfig$1.run(ClientConfig.java:112)
            at java.security.AccessController.doPrivileged(Native Method)
            at
org.apache.wink.client.ClientConfig.initDefaultApplication(ClientConfig.java:109)
            at
org.apache.wink.client.ClientConfig.clone(ClientConfig.java:408)
            at org.apache.wink.client.RestClient.<init>(RestClient.java:81)
            at
org.picketlink.scim.restful.client.Client.<init>(Client.java:60)
            at
org.picketlink.scim.restful.client.test.CrudTest.onBefore(CrudTest.java:35)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:606)
            at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
            at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
            at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
            at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
            at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
            at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
            at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
            at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
            at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
            at
org.apache.maven.surefire.junitcore.pc.Scheduler$1.run(Scheduler.java:318)
            at
org.apache.maven.surefire.junitcore.pc.InvokerStrategy.schedule(InvokerStrategy.java:41)
            at
org.apache.maven.surefire.junitcore.pc.Scheduler.schedule(Scheduler.java:274)
            at
org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
            at
org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
            at
org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
            at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
            at org.junit.runners.Suite.runChild(Suite.java:128)
            at org.junit.runners.Suite.runChild(Suite.java:24)
            at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
            at
org.apache.maven.surefire.junitcore.pc.Scheduler$1.run(Scheduler.java:318)
            at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
            at java.util.concurrent.FutureTask.run(FutureTask.java:262)
            at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
            at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
            at java.lang.Thread.run(Thread.java:745)

Here is the link to complete [log](http://pastebin.com/SF9UFAMa)



--
View this message in context: 
http://apache-wink-users.3471013.n2.nabble.com/java-lang-NullPointerException-at-org-apache-wink-common-internal-utils-FileLoader-loadFileUsingClass-tp7572823.html
Sent from the Apache Wink Users mailing list archive at Nabble.com.

Reply via email to