alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Jetty example source code file (ContextHandlerTest.java)

This example Jetty source code file (ContextHandlerTest.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Jetty tags/keywords

contexthandler, contexthandler, exception, file, file, get, handlercollection, host, http, io, ioexception, ioexception, ishandledhandler, ishandledhandler, request, request, response, servlet, util, web-inf

The Jetty ContextHandlerTest.java source code

//========================================================================
//$Id$
//Copyright 2006 Mort Bay Consulting Pty. Ltd.
//------------------------------------------------------------------------
//Licensed under the Apache License, Version 2.0 (the "License");
//you may not use this file except in compliance with the License.
//You may obtain a copy of the License at 
//http://www.apache.org/licenses/LICENSE-2.0
//Unless required by applicable law or agreed to in writing, software
//distributed under the License is distributed on an "AS IS" BASIS,
//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//See the License for the specific language governing permissions and
//limitations under the License.
//========================================================================

package org.mortbay.jetty.handler;

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import junit.framework.TestCase;

import org.mortbay.resource.Resource;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.LocalConnector;
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Request;
import org.mortbay.jetty.HttpConnection;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;

/**
 * @version $Revision$
 */
public class ContextHandlerTest extends TestCase
{
    public void testGetResourcePathsWhenSuppliedPathEndsInSlash() throws Exception
    {
        checkResourcePathsForExampleWebApp("/WEB-INF/");
    }

    public void testGetResourcePathsWhenSuppliedPathDoesNotEndInSlash() throws Exception
    {
        checkResourcePathsForExampleWebApp("/WEB-INF");
    }

    private void checkResourcePathsForExampleWebApp(String root) throws IOException, MalformedURLException
    {
        File testDirectory = setupTestDirectory();

        ContextHandler handler = new ContextHandler();

        assertTrue("Not a directory " + testDirectory, testDirectory.isDirectory());
        handler.setBaseResource(Resource.newResource(testDirectory.toURL()));

        List paths = new ArrayList(handler.getResourcePaths(root));
        assertEquals(2, paths.size());

        Collections.sort(paths);
        assertEquals("/WEB-INF/jsp/", paths.get(0));
        assertEquals("/WEB-INF/web.xml", paths.get(1));
    }

    private File setupTestDirectory() throws IOException
    {
        File root = new File(System.getProperty("basedir", "modules/jetty"), "target/" + getClass().getName());
        root.mkdir();

        File webInf = new File(root, "WEB-INF");
        webInf.mkdir();

        new File(webInf, "jsp").mkdir();
        new File(webInf, "web.xml").createNewFile();

        return root;
    }

    public void testVirtualHostNormalization()
        throws Exception
    {
        Server server = new Server();
        LocalConnector connector = new LocalConnector();
        server.setConnectors(new Connector[] {connector});

        ContextHandler contextA = new ContextHandler("/");
        contextA.setVirtualHosts(new String[] {"www.example.com"});
        IsHandledHandler handlerA = new IsHandledHandler();
        contextA.setHandler(handlerA);


        ContextHandler contextB = new ContextHandler("/");
        IsHandledHandler handlerB = new IsHandledHandler();
        contextB.setHandler(handlerB);
        contextB.setVirtualHosts(new String[] {"www.example2.com."});

        ContextHandler contextC = new ContextHandler("/");
        IsHandledHandler handlerC = new IsHandledHandler();
        contextC.setHandler(handlerC);

        HandlerCollection c = new HandlerCollection();

        c.addHandler(contextA);
        c.addHandler(contextB);
        c.addHandler(contextC);


        server.setHandler(c);

        try
        {
            server.start();
            connector.getResponses("GET / HTTP/1.1\n" +
                "Host: www.example.com.\n\n");

            assertTrue(handlerA.isHandled());
            assertFalse(handlerB.isHandled());
            assertFalse(handlerC.isHandled());

            handlerA.reset();
            handlerB.reset();
            handlerC.reset();

            connector.getResponses("GET / HTTP/1.1\n" +
                "Host: www.example2.com\n\n");

            assertFalse(handlerA.isHandled());
            assertTrue(handlerB.isHandled());
            assertFalse(handlerC.isHandled());


        }
        finally
        {
            server.stop();
        }


    }

     public static final class IsHandledHandler extends AbstractHandler {
        private boolean handled;

        public boolean isHandled() {
            return handled;
        }

        public void handle(String s, HttpServletRequest request, HttpServletResponse response, int i) throws IOException,
            ServletException
        {
            Request base_request = (request instanceof Request) ? (Request) request : HttpConnection.getCurrentConnection().getRequest();
            base_request.setHandled(true);
            this.handled = true;
        }

         public void reset()
         {
             handled = false;
         }
     }
}

Other Jetty examples (source code examples)

Here is a short list of links related to this Jetty ContextHandlerTest.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.