package org.limewire.http; import java.io.IOException; import org.apache.http.Header; import org.apache.http.HttpException; import org.apache.http.HttpVersion; import org.apache.http.message.BasicHeader; import org.apache.http.message.BasicHttpResponse; import org.apache.http.message.BasicStatusLine; import org.apache.http.protocol.HttpContext; import org.limewire.util.BaseTestCase; public class BasicHeaderProcessorTest extends BaseTestCase { public BasicHeaderProcessorTest(String name) { super(name); } public void testAddRemoveClearInterceptors() { MyHeaderProcessor processor1 = new MyHeaderProcessor(); MyHeaderProcessor processor2 = new MyHeaderProcessor(); BasicHeaderProcessor processor = new BasicHeaderProcessor(); assertEquals(0, processor.getInterceptors().length); processor.addInterceptor(processor1); assertEquals(1, processor.getInterceptors().length); processor.addInterceptor(processor2); assertEquals(2, processor.getInterceptors().length); assertEquals(new HeaderInterceptor[] { processor1, processor2 }, processor.getInterceptors()); processor.removeInterceptor(processor1); assertEquals(1, processor.getInterceptors().length); assertEquals(new HeaderInterceptor[] { processor2 }, processor.getInterceptors()); processor.removeInterceptor(processor1); assertEquals(1, processor.getInterceptors().length); assertEquals(new HeaderInterceptor[] { processor2 }, processor.getInterceptors()); processor.clearInterceptors(); assertEquals(0, processor.getInterceptors().length); processor.removeInterceptor(processor1); processor.removeInterceptor(processor2); assertEquals(0, processor.getInterceptors().length); } public void testProcess() throws Exception { BasicHttpResponse msg = new BasicHttpResponse(new BasicStatusLine(HttpVersion.HTTP_1_1, 200, "")); MyHeaderProcessor processor1 = new MyHeaderProcessor(); MyHeaderProcessor processor2 = new MyHeaderProcessor(); BasicHeaderProcessor processor = new BasicHeaderProcessor(); processor.addInterceptor(processor1); processor.addInterceptor(processor2); processor.process(msg, null); assertEquals(0, processor1.count); assertEquals(0, processor2.count); BasicHeader header1 = new BasicHeader("key", "value1"); BasicHeader header2 = new BasicHeader("key", "value2"); msg.addHeader(header1); msg.addHeader(header2); processor.process(msg, null); assertEquals(2, processor1.count); assertEquals(header2, processor1.header); assertEquals(2, processor2.count); assertEquals(header2, processor2.header); processor.removeInterceptor(processor1); processor.process(msg, null); assertEquals(2, processor1.count); assertEquals(4, processor2.count); assertEquals(header2, processor2.header); msg.removeHeader(header2); processor.process(msg, null); assertEquals(2, processor1.count); assertEquals(5, processor2.count); assertEquals(header1, processor2.header); processor.clearInterceptors(); processor.process(msg, null); assertEquals(2, processor1.count); assertEquals(5, processor2.count); } private class MyHeaderProcessor implements HeaderInterceptor { int count; Header header; public void process(Header header, HttpContext context) throws HttpException, IOException { this.count++; this.header = header; } } }