.class public Lorg/apache/http/protocol/HttpService; .super Ljava/lang/Object; .source "HttpService.java" # instance fields .field private connStrategy:Lorg/apache/http/ConnectionReuseStrategy; .field private expectationVerifier:Lorg/apache/http/protocol/HttpExpectationVerifier; .field private handlerResolver:Lorg/apache/http/protocol/HttpRequestHandlerResolver; .field private params:Lorg/apache/http/params/HttpParams; .field private processor:Lorg/apache/http/protocol/HttpProcessor; .field private responseFactory:Lorg/apache/http/HttpResponseFactory; # direct methods .method public constructor (Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/ConnectionReuseStrategy;Lorg/apache/http/HttpResponseFactory;)V .locals 1 .line 1 invoke-direct {p0}, Ljava/lang/Object;->()V const/4 v0, 0x0 .line 2 iput-object v0, p0, Lorg/apache/http/protocol/HttpService;->params:Lorg/apache/http/params/HttpParams; .line 3 iput-object v0, p0, Lorg/apache/http/protocol/HttpService;->processor:Lorg/apache/http/protocol/HttpProcessor; .line 4 iput-object v0, p0, Lorg/apache/http/protocol/HttpService;->handlerResolver:Lorg/apache/http/protocol/HttpRequestHandlerResolver; .line 5 iput-object v0, p0, Lorg/apache/http/protocol/HttpService;->connStrategy:Lorg/apache/http/ConnectionReuseStrategy; .line 6 iput-object v0, p0, Lorg/apache/http/protocol/HttpService;->responseFactory:Lorg/apache/http/HttpResponseFactory; .line 7 iput-object v0, p0, Lorg/apache/http/protocol/HttpService;->expectationVerifier:Lorg/apache/http/protocol/HttpExpectationVerifier; .line 8 invoke-virtual {p0, p1}, Lorg/apache/http/protocol/HttpService;->setHttpProcessor(Lorg/apache/http/protocol/HttpProcessor;)V .line 9 invoke-virtual {p0, p2}, Lorg/apache/http/protocol/HttpService;->setConnReuseStrategy(Lorg/apache/http/ConnectionReuseStrategy;)V .line 10 invoke-virtual {p0, p3}, Lorg/apache/http/protocol/HttpService;->setResponseFactory(Lorg/apache/http/HttpResponseFactory;)V return-void .end method # virtual methods .method public doService(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V .locals 2 .annotation system Ldalvik/annotation/Throws; value = { Lorg/apache/http/HttpException;, Ljava/io/IOException; } .end annotation .line 1 iget-object v0, p0, Lorg/apache/http/protocol/HttpService;->handlerResolver:Lorg/apache/http/protocol/HttpRequestHandlerResolver; if-eqz v0, :cond_0 .line 2 invoke-interface {p1}, Lorg/apache/http/HttpRequest;->getRequestLine()Lorg/apache/http/RequestLine; move-result-object v0 invoke-interface {v0}, Lorg/apache/http/RequestLine;->getUri()Ljava/lang/String; move-result-object v0 .line 3 iget-object v1, p0, Lorg/apache/http/protocol/HttpService;->handlerResolver:Lorg/apache/http/protocol/HttpRequestHandlerResolver; invoke-interface {v1, v0}, Lorg/apache/http/protocol/HttpRequestHandlerResolver;->lookup(Ljava/lang/String;)Lorg/apache/http/protocol/HttpRequestHandler; move-result-object v0 goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 if-eqz v0, :cond_1 .line 4 invoke-interface {v0, p1, p2, p3}, Lorg/apache/http/protocol/HttpRequestHandler;->handle(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V goto :goto_1 :cond_1 const/16 p1, 0x1f5 .line 5 invoke-interface {p2, p1}, Lorg/apache/http/HttpResponse;->setStatusCode(I)V :goto_1 return-void .end method .method public getParams()Lorg/apache/http/params/HttpParams; .locals 1 .line 1 iget-object v0, p0, Lorg/apache/http/protocol/HttpService;->params:Lorg/apache/http/params/HttpParams; return-object v0 .end method .method public handleException(Lorg/apache/http/HttpException;Lorg/apache/http/HttpResponse;)V .locals 1 .line 1 instance-of v0, p1, Lorg/apache/http/MethodNotSupportedException; if-eqz v0, :cond_0 const/16 v0, 0x1f5 .line 2 invoke-interface {p2, v0}, Lorg/apache/http/HttpResponse;->setStatusCode(I)V goto :goto_0 .line 3 :cond_0 instance-of v0, p1, Lorg/apache/http/UnsupportedHttpVersionException; if-eqz v0, :cond_1 const/16 v0, 0x1f9 .line 4 invoke-interface {p2, v0}, Lorg/apache/http/HttpResponse;->setStatusCode(I)V goto :goto_0 .line 5 :cond_1 instance-of v0, p1, Lorg/apache/http/ProtocolException; if-eqz v0, :cond_2 const/16 v0, 0x190 .line 6 invoke-interface {p2, v0}, Lorg/apache/http/HttpResponse;->setStatusCode(I)V goto :goto_0 :cond_2 const/16 v0, 0x1f4 .line 7 invoke-interface {p2, v0}, Lorg/apache/http/HttpResponse;->setStatusCode(I)V .line 8 :goto_0 invoke-virtual {p1}, Ljava/lang/Exception;->getMessage()Ljava/lang/String; move-result-object p1 invoke-static {p1}, Lorg/apache/http/util/EncodingUtils;->getAsciiBytes(Ljava/lang/String;)[B move-result-object p1 .line 9 new-instance v0, Lorg/apache/http/entity/ByteArrayEntity; invoke-direct {v0, p1}, Lorg/apache/http/entity/ByteArrayEntity;->([B)V const-string p1, "text/plain; charset=US-ASCII" .line 10 invoke-virtual {v0, p1}, Lorg/apache/http/entity/AbstractHttpEntity;->setContentType(Ljava/lang/String;)V .line 11 invoke-interface {p2, v0}, Lorg/apache/http/HttpResponse;->setEntity(Lorg/apache/http/HttpEntity;)V return-void .end method .method public handleRequest(Lorg/apache/http/HttpServerConnection;Lorg/apache/http/protocol/HttpContext;)V .locals 10 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException;, Lorg/apache/http/HttpException; } .end annotation const-string v0, "http.connection" .line 1 invoke-interface {p2, v0, p1}, Lorg/apache/http/protocol/HttpContext;->setAttribute(Ljava/lang/String;Ljava/lang/Object;)V const/16 v0, 0x1f4 .line 2 :try_start_0 invoke-interface {p1}, Lorg/apache/http/HttpServerConnection;->receiveRequestHeader()Lorg/apache/http/HttpRequest; move-result-object v1 .line 3 new-instance v2, Lorg/apache/http/params/DefaultedHttpParams; invoke-interface {v1}, Lorg/apache/http/HttpMessage;->getParams()Lorg/apache/http/params/HttpParams; move-result-object v3 iget-object v4, p0, Lorg/apache/http/protocol/HttpService;->params:Lorg/apache/http/params/HttpParams; invoke-direct {v2, v3, v4}, Lorg/apache/http/params/DefaultedHttpParams;->(Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;)V invoke-interface {v1, v2}, Lorg/apache/http/HttpMessage;->setParams(Lorg/apache/http/params/HttpParams;)V .line 4 invoke-interface {v1}, Lorg/apache/http/HttpRequest;->getRequestLine()Lorg/apache/http/RequestLine; move-result-object v2 invoke-interface {v2}, Lorg/apache/http/RequestLine;->getProtocolVersion()Lorg/apache/http/ProtocolVersion; move-result-object v2 .line 5 sget-object v3, Lorg/apache/http/HttpVersion;->HTTP_1_1:Lorg/apache/http/HttpVersion; invoke-virtual {v2, v3}, Lorg/apache/http/ProtocolVersion;->lessEquals(Lorg/apache/http/ProtocolVersion;)Z move-result v4 if-nez v4, :cond_0 move-object v2, v3 .line 6 :cond_0 instance-of v3, v1, Lorg/apache/http/HttpEntityEnclosingRequest; const/16 v4, 0xc8 const/4 v5, 0x0 if-eqz v3, :cond_4 .line 7 move-object v3, v1 check-cast v3, Lorg/apache/http/HttpEntityEnclosingRequest; invoke-interface {v3}, Lorg/apache/http/HttpEntityEnclosingRequest;->expectContinue()Z move-result v3 if-eqz v3, :cond_3 .line 8 iget-object v3, p0, Lorg/apache/http/protocol/HttpService;->responseFactory:Lorg/apache/http/HttpResponseFactory; const/16 v6, 0x64 invoke-interface {v3, v2, v6, p2}, Lorg/apache/http/HttpResponseFactory;->newHttpResponse(Lorg/apache/http/ProtocolVersion;ILorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse; move-result-object v3 .line 9 new-instance v6, Lorg/apache/http/params/DefaultedHttpParams; invoke-interface {v3}, Lorg/apache/http/HttpMessage;->getParams()Lorg/apache/http/params/HttpParams; move-result-object v7 iget-object v8, p0, Lorg/apache/http/protocol/HttpService;->params:Lorg/apache/http/params/HttpParams; invoke-direct {v6, v7, v8}, Lorg/apache/http/params/DefaultedHttpParams;->(Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;)V invoke-interface {v3, v6}, Lorg/apache/http/HttpMessage;->setParams(Lorg/apache/http/params/HttpParams;)V .line 10 iget-object v6, p0, Lorg/apache/http/protocol/HttpService;->expectationVerifier:Lorg/apache/http/protocol/HttpExpectationVerifier; :try_end_0 .catch Lorg/apache/http/HttpException; {:try_start_0 .. :try_end_0} :catch_1 if-eqz v6, :cond_1 .line 11 :try_start_1 invoke-interface {v6, v1, v3, p2}, Lorg/apache/http/protocol/HttpExpectationVerifier;->verify(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V :try_end_1 .catch Lorg/apache/http/HttpException; {:try_start_1 .. :try_end_1} :catch_0 goto :goto_0 :catch_0 move-exception v3 .line 12 :try_start_2 iget-object v6, p0, Lorg/apache/http/protocol/HttpService;->responseFactory:Lorg/apache/http/HttpResponseFactory; sget-object v7, Lorg/apache/http/HttpVersion;->HTTP_1_0:Lorg/apache/http/HttpVersion; invoke-interface {v6, v7, v0, p2}, Lorg/apache/http/HttpResponseFactory;->newHttpResponse(Lorg/apache/http/ProtocolVersion;ILorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse; move-result-object v6 .line 13 new-instance v7, Lorg/apache/http/params/DefaultedHttpParams; invoke-interface {v6}, Lorg/apache/http/HttpMessage;->getParams()Lorg/apache/http/params/HttpParams; move-result-object v8 iget-object v9, p0, Lorg/apache/http/protocol/HttpService;->params:Lorg/apache/http/params/HttpParams; invoke-direct {v7, v8, v9}, Lorg/apache/http/params/DefaultedHttpParams;->(Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;)V invoke-interface {v6, v7}, Lorg/apache/http/HttpMessage;->setParams(Lorg/apache/http/params/HttpParams;)V .line 14 invoke-virtual {p0, v3, v6}, Lorg/apache/http/protocol/HttpService;->handleException(Lorg/apache/http/HttpException;Lorg/apache/http/HttpResponse;)V move-object v3, v6 .line 15 :cond_1 :goto_0 invoke-interface {v3}, Lorg/apache/http/HttpResponse;->getStatusLine()Lorg/apache/http/StatusLine; move-result-object v6 invoke-interface {v6}, Lorg/apache/http/StatusLine;->getStatusCode()I move-result v6 if-ge v6, v4, :cond_2 .line 16 invoke-interface {p1, v3}, Lorg/apache/http/HttpServerConnection;->sendResponseHeader(Lorg/apache/http/HttpResponse;)V .line 17 invoke-interface {p1}, Lorg/apache/http/HttpServerConnection;->flush()V .line 18 move-object v3, v1 check-cast v3, Lorg/apache/http/HttpEntityEnclosingRequest; invoke-interface {p1, v3}, Lorg/apache/http/HttpServerConnection;->receiveRequestEntity(Lorg/apache/http/HttpEntityEnclosingRequest;)V goto :goto_1 :cond_2 move-object v5, v3 goto :goto_1 .line 19 :cond_3 move-object v3, v1 check-cast v3, Lorg/apache/http/HttpEntityEnclosingRequest; invoke-interface {p1, v3}, Lorg/apache/http/HttpServerConnection;->receiveRequestEntity(Lorg/apache/http/HttpEntityEnclosingRequest;)V :cond_4 :goto_1 if-nez v5, :cond_5 .line 20 iget-object v3, p0, Lorg/apache/http/protocol/HttpService;->responseFactory:Lorg/apache/http/HttpResponseFactory; invoke-interface {v3, v2, v4, p2}, Lorg/apache/http/HttpResponseFactory;->newHttpResponse(Lorg/apache/http/ProtocolVersion;ILorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse; move-result-object v5 .line 21 new-instance v2, Lorg/apache/http/params/DefaultedHttpParams; invoke-interface {v5}, Lorg/apache/http/HttpMessage;->getParams()Lorg/apache/http/params/HttpParams; move-result-object v3 iget-object v4, p0, Lorg/apache/http/protocol/HttpService;->params:Lorg/apache/http/params/HttpParams; invoke-direct {v2, v3, v4}, Lorg/apache/http/params/DefaultedHttpParams;->(Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;)V invoke-interface {v5, v2}, Lorg/apache/http/HttpMessage;->setParams(Lorg/apache/http/params/HttpParams;)V const-string v2, "http.request" .line 22 invoke-interface {p2, v2, v1}, Lorg/apache/http/protocol/HttpContext;->setAttribute(Ljava/lang/String;Ljava/lang/Object;)V const-string v2, "http.response" .line 23 invoke-interface {p2, v2, v5}, Lorg/apache/http/protocol/HttpContext;->setAttribute(Ljava/lang/String;Ljava/lang/Object;)V .line 24 iget-object v2, p0, Lorg/apache/http/protocol/HttpService;->processor:Lorg/apache/http/protocol/HttpProcessor; invoke-interface {v2, v1, p2}, Lorg/apache/http/HttpRequestInterceptor;->process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V .line 25 invoke-virtual {p0, v1, v5, p2}, Lorg/apache/http/protocol/HttpService;->doService(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V .line 26 :cond_5 instance-of v2, v1, Lorg/apache/http/HttpEntityEnclosingRequest; if-eqz v2, :cond_6 .line 27 check-cast v1, Lorg/apache/http/HttpEntityEnclosingRequest; invoke-interface {v1}, Lorg/apache/http/HttpEntityEnclosingRequest;->getEntity()Lorg/apache/http/HttpEntity; move-result-object v1 if-eqz v1, :cond_6 .line 28 invoke-interface {v1}, Lorg/apache/http/HttpEntity;->consumeContent()V :try_end_2 .catch Lorg/apache/http/HttpException; {:try_start_2 .. :try_end_2} :catch_1 goto :goto_2 :catch_1 move-exception v1 .line 29 iget-object v2, p0, Lorg/apache/http/protocol/HttpService;->responseFactory:Lorg/apache/http/HttpResponseFactory; sget-object v3, Lorg/apache/http/HttpVersion;->HTTP_1_0:Lorg/apache/http/HttpVersion; invoke-interface {v2, v3, v0, p2}, Lorg/apache/http/HttpResponseFactory;->newHttpResponse(Lorg/apache/http/ProtocolVersion;ILorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse; move-result-object v5 .line 30 new-instance v0, Lorg/apache/http/params/DefaultedHttpParams; invoke-interface {v5}, Lorg/apache/http/HttpMessage;->getParams()Lorg/apache/http/params/HttpParams; move-result-object v2 iget-object v3, p0, Lorg/apache/http/protocol/HttpService;->params:Lorg/apache/http/params/HttpParams; invoke-direct {v0, v2, v3}, Lorg/apache/http/params/DefaultedHttpParams;->(Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;)V invoke-interface {v5, v0}, Lorg/apache/http/HttpMessage;->setParams(Lorg/apache/http/params/HttpParams;)V .line 31 invoke-virtual {p0, v1, v5}, Lorg/apache/http/protocol/HttpService;->handleException(Lorg/apache/http/HttpException;Lorg/apache/http/HttpResponse;)V .line 32 :cond_6 :goto_2 iget-object v0, p0, Lorg/apache/http/protocol/HttpService;->processor:Lorg/apache/http/protocol/HttpProcessor; invoke-interface {v0, v5, p2}, Lorg/apache/http/HttpResponseInterceptor;->process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V .line 33 invoke-interface {p1, v5}, Lorg/apache/http/HttpServerConnection;->sendResponseHeader(Lorg/apache/http/HttpResponse;)V .line 34 invoke-interface {p1, v5}, Lorg/apache/http/HttpServerConnection;->sendResponseEntity(Lorg/apache/http/HttpResponse;)V .line 35 invoke-interface {p1}, Lorg/apache/http/HttpServerConnection;->flush()V .line 36 iget-object v0, p0, Lorg/apache/http/protocol/HttpService;->connStrategy:Lorg/apache/http/ConnectionReuseStrategy; invoke-interface {v0, v5, p2}, Lorg/apache/http/ConnectionReuseStrategy;->keepAlive(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z move-result p2 if-nez p2, :cond_7 .line 37 invoke-interface {p1}, Lorg/apache/http/HttpConnection;->close()V :cond_7 return-void .end method .method public setConnReuseStrategy(Lorg/apache/http/ConnectionReuseStrategy;)V .locals 1 if-eqz p1, :cond_0 .line 1 iput-object p1, p0, Lorg/apache/http/protocol/HttpService;->connStrategy:Lorg/apache/http/ConnectionReuseStrategy; return-void .line 2 :cond_0 new-instance p1, Ljava/lang/IllegalArgumentException; const-string v0, "Connection reuse strategy may not be null" invoke-direct {p1, v0}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V throw p1 .end method .method public setExpectationVerifier(Lorg/apache/http/protocol/HttpExpectationVerifier;)V .locals 0 .line 1 iput-object p1, p0, Lorg/apache/http/protocol/HttpService;->expectationVerifier:Lorg/apache/http/protocol/HttpExpectationVerifier; return-void .end method .method public setHandlerResolver(Lorg/apache/http/protocol/HttpRequestHandlerResolver;)V .locals 0 .line 1 iput-object p1, p0, Lorg/apache/http/protocol/HttpService;->handlerResolver:Lorg/apache/http/protocol/HttpRequestHandlerResolver; return-void .end method .method public setHttpProcessor(Lorg/apache/http/protocol/HttpProcessor;)V .locals 1 if-eqz p1, :cond_0 .line 1 iput-object p1, p0, Lorg/apache/http/protocol/HttpService;->processor:Lorg/apache/http/protocol/HttpProcessor; return-void .line 2 :cond_0 new-instance p1, Ljava/lang/IllegalArgumentException; const-string v0, "HTTP processor may not be null" invoke-direct {p1, v0}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V throw p1 .end method .method public setParams(Lorg/apache/http/params/HttpParams;)V .locals 0 .line 1 iput-object p1, p0, Lorg/apache/http/protocol/HttpService;->params:Lorg/apache/http/params/HttpParams; return-void .end method .method public setResponseFactory(Lorg/apache/http/HttpResponseFactory;)V .locals 1 if-eqz p1, :cond_0 .line 1 iput-object p1, p0, Lorg/apache/http/protocol/HttpService;->responseFactory:Lorg/apache/http/HttpResponseFactory; return-void .line 2 :cond_0 new-instance p1, Ljava/lang/IllegalArgumentException; const-string v0, "Response factory may not be null" invoke-direct {p1, v0}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V throw p1 .end method