332907 (work in progress) Added AbstractHandlerContainer.findContainerOf
git-svn-id: svn+ssh://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/jetty/trunk@3105 7e9141cc-0065-0410-87d8-b60c137991c4
This commit is contained in:
parent
dedc2b648d
commit
866255f474
|
@ -1,4 +1,5 @@
|
||||||
jetty-7.4.1-SNAPSHOT
|
jetty-7.4.1-SNAPSHOT
|
||||||
|
+ 332907 (work in progress) Added AbstractHandlerContainer.findContainerOf
|
||||||
+ 340040 Support for a total timeout
|
+ 340040 Support for a total timeout
|
||||||
+ 343083 Set nested dispatch type and connection
|
+ 343083 Set nested dispatch type and connection
|
||||||
+ 343172 Check package implementor for version
|
+ 343172 Check package implementor for version
|
||||||
|
|
|
@ -84,7 +84,28 @@ public abstract class AbstractHandlerContainer extends AbstractHandler implement
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
public static <T extends HandlerContainer> T findContainerOf(HandlerContainer root,Class<T>type, Handler handler)
|
||||||
|
{
|
||||||
|
Handler[] branches=root.getChildHandlersByClass(type);
|
||||||
|
if (branches!=null)
|
||||||
|
{
|
||||||
|
for (Handler h:branches)
|
||||||
|
{
|
||||||
|
T container = (T)h;
|
||||||
|
Handler[] candidates = container.getChildHandlersByClass(handler.getClass());
|
||||||
|
if (candidates!=null)
|
||||||
|
{
|
||||||
|
for (Handler c:candidates)
|
||||||
|
if (c==handler)
|
||||||
|
return container;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/* ------------------------------------------------------------ */
|
/* ------------------------------------------------------------ */
|
||||||
public void dump(Appendable out,String indent) throws IOException
|
public void dump(Appendable out,String indent) throws IOException
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,6 +15,7 @@ package org.eclipse.jetty.server.handler;
|
||||||
|
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
@ -153,6 +154,46 @@ public class ContextHandlerCollectionTest
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFindContainer() throws Exception
|
||||||
|
{
|
||||||
|
Server server = new Server();
|
||||||
|
|
||||||
|
ContextHandler contextA = new ContextHandler("/a");
|
||||||
|
IsHandledHandler handlerA = new IsHandledHandler();
|
||||||
|
contextA.setHandler(handlerA);
|
||||||
|
|
||||||
|
ContextHandler contextB = new ContextHandler("/b");
|
||||||
|
IsHandledHandler handlerB = new IsHandledHandler();
|
||||||
|
HandlerWrapper wrapperB = new HandlerWrapper();
|
||||||
|
wrapperB.setHandler(handlerB);
|
||||||
|
contextB.setHandler(wrapperB);
|
||||||
|
|
||||||
|
ContextHandler contextC = new ContextHandler("/c");
|
||||||
|
IsHandledHandler handlerC = new IsHandledHandler();
|
||||||
|
contextC.setHandler(handlerC);
|
||||||
|
|
||||||
|
ContextHandlerCollection collection = new ContextHandlerCollection();
|
||||||
|
|
||||||
|
collection.addHandler(contextA);
|
||||||
|
collection.addHandler(contextB);
|
||||||
|
collection.addHandler(contextC);
|
||||||
|
|
||||||
|
HandlerWrapper wrapper = new HandlerWrapper();
|
||||||
|
wrapper.setHandler(collection);
|
||||||
|
server.setHandler(wrapper);
|
||||||
|
|
||||||
|
assertEquals(wrapper,AbstractHandlerContainer.findContainerOf(server,HandlerWrapper.class,handlerA));
|
||||||
|
assertEquals(contextA,AbstractHandlerContainer.findContainerOf(server,ContextHandler.class,handlerA));
|
||||||
|
assertEquals(contextB,AbstractHandlerContainer.findContainerOf(server,ContextHandler.class,handlerB));
|
||||||
|
assertEquals(wrapper,AbstractHandlerContainer.findContainerOf(server,HandlerWrapper.class,handlerB));
|
||||||
|
assertEquals(contextB,AbstractHandlerContainer.findContainerOf(collection,HandlerWrapper.class,handlerB));
|
||||||
|
assertEquals(wrapperB,AbstractHandlerContainer.findContainerOf(contextB,HandlerWrapper.class,handlerB));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private static final class IsHandledHandler extends AbstractHandler
|
private static final class IsHandledHandler extends AbstractHandler
|
||||||
{
|
{
|
||||||
private boolean handled;
|
private boolean handled;
|
||||||
|
@ -173,4 +214,7 @@ public class ContextHandlerCollectionTest
|
||||||
handled = false;
|
handled = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue