.class Lcom/moji/api/service/BaseAPIService$1; .super Lcom/moji/api/service/IAPInterface$Stub; .source "BaseAPIService.java" # annotations .annotation system Ldalvik/annotation/EnclosingClass; value = Lcom/moji/api/service/BaseAPIService; .end annotation .annotation system Ldalvik/annotation/InnerClass; accessFlags = 0x0 name = null .end annotation # instance fields .field final synthetic a:Lcom/moji/api/service/BaseAPIService; # direct methods .method constructor (Lcom/moji/api/service/BaseAPIService;)V .locals 0 .line 32 iput-object p1, p0, Lcom/moji/api/service/BaseAPIService$1;->a:Lcom/moji/api/service/BaseAPIService; invoke-direct {p0}, Lcom/moji/api/service/IAPInterface$Stub;->()V return-void .end method # virtual methods .method public a(Lcom/moji/api/ipc/APIClass;Lcom/moji/api/ipc/APIMethod;Lcom/moji/api/ipc/APIParameter;)Lcom/moji/api/ipc/APIResult; .locals 7 .annotation system Ldalvik/annotation/Throws; value = { Landroid/os/RemoteException; } .end annotation const/4 v0, 0x0 if-eqz p1, :cond_7 if-eqz p2, :cond_7 if-nez p3, :cond_0 goto/16 :goto_2 .line 38 :cond_0 invoke-virtual {p1}, Lcom/moji/api/ipc/APIClass;->getAPIClass()Ljava/lang/Class; move-result-object v1 const/4 v2, 0x4 if-nez v1, :cond_1 const-string p2, "BaseAPIService" .line 40 new-instance p3, Ljava/lang/StringBuilder; invoke-direct {p3}, Ljava/lang/StringBuilder;->()V const-string v1, "apiClass :" invoke-virtual {p3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {p3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; const-string p1, " null" invoke-virtual {p3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {p3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p1 invoke-static {p2, p1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I .line 41 new-instance p1, Lcom/moji/api/ipc/APIResult; invoke-direct {p1, v0, v2}, Lcom/moji/api/ipc/APIResult;->(Ljava/lang/Object;I)V return-object p1 .line 43 :cond_1 invoke-static {v1}, Lcom/moji/api/util/BundleHolder;->a(Ljava/lang/Class;)Lcom/moji/api/entity/APIBundle; move-result-object p1 if-eqz p1, :cond_6 .line 44 iget-object v1, p1, Lcom/moji/api/entity/APIBundle;->a:Ljava/lang/Object; if-nez v1, :cond_2 goto/16 :goto_1 .line 49 :cond_2 iget-object v1, p1, Lcom/moji/api/entity/APIBundle;->a:Ljava/lang/Object; invoke-virtual {v1}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v1 const/4 v3, 0x6 .line 52 :try_start_0 invoke-virtual {p2}, Lcom/moji/api/ipc/APIMethod;->getMethodName()Ljava/lang/String; move-result-object v4 iget-object v5, p0, Lcom/moji/api/service/BaseAPIService$1;->a:Lcom/moji/api/service/BaseAPIService; invoke-virtual {p2}, Lcom/moji/api/ipc/APIMethod;->getParameterType()[Ljava/lang/String; move-result-object v6 invoke-static {v5, v6}, Lcom/moji/api/service/BaseAPIService;->a(Lcom/moji/api/service/BaseAPIService;[Ljava/lang/String;)[Ljava/lang/Class; move-result-object v5 invoke-virtual {v1, v4, v5}, Ljava/lang/Class;->getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; move-result-object v1 :try_end_0 .catch Ljava/lang/ClassNotFoundException; {:try_start_0 .. :try_end_0} :catch_4 .catch Ljava/lang/NoSuchMethodException; {:try_start_0 .. :try_end_0} :catch_3 if-nez v1, :cond_3 const-string p1, "BaseAPIService" .line 61 new-instance p3, Ljava/lang/StringBuilder; invoke-direct {p3}, Ljava/lang/StringBuilder;->()V const-string v1, "APIMethod :" invoke-virtual {p3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {p3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; const-string p2, " null" invoke-virtual {p3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {p3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p2 invoke-static {p1, p2}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I .line 62 new-instance p1, Lcom/moji/api/ipc/APIResult; invoke-direct {p1, v0, v3}, Lcom/moji/api/ipc/APIResult;->(Ljava/lang/Object;I)V return-object p1 .line 64 :cond_3 const-class p2, Lcom/moji/api/annotation/WorkOnSubThread; invoke-virtual {v1, p2}, Ljava/lang/reflect/Method;->isAnnotationPresent(Ljava/lang/Class;)Z move-result p2 const/4 v2, 0x1 if-eqz p2, :cond_4 .line 66 :try_start_1 iget-object p1, p1, Lcom/moji/api/entity/APIBundle;->a:Ljava/lang/Object; invoke-virtual {p3}, Lcom/moji/api/ipc/APIParameter;->getParameters()[Ljava/lang/Object; move-result-object p2 invoke-virtual {v1, p1, p2}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; move-result-object p1 .line 67 new-instance p2, Lcom/moji/api/ipc/APIResult; invoke-direct {p2, p1, v2}, Lcom/moji/api/ipc/APIResult;->(Ljava/lang/Object;I)V :try_end_1 .catch Ljava/lang/IllegalAccessException; {:try_start_1 .. :try_end_1} :catch_1 .catch Ljava/lang/reflect/InvocationTargetException; {:try_start_1 .. :try_end_1} :catch_0 return-object p2 :catch_0 move-exception p1 const-string p2, "BaseAPIService" const-string p3, "InvocationTargetException" .line 72 invoke-static {p2, p3, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I .line 73 new-instance p1, Lcom/moji/api/ipc/APIResult; invoke-direct {p1, v0, v3}, Lcom/moji/api/ipc/APIResult;->(Ljava/lang/Object;I)V return-object p1 :catch_1 move-exception p1 const-string p2, "BaseAPIService" const-string p3, "IllegalAccessException" .line 69 invoke-static {p2, p3, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I .line 70 new-instance p1, Lcom/moji/api/ipc/APIResult; invoke-direct {p1, v0, v3}, Lcom/moji/api/ipc/APIResult;->(Ljava/lang/Object;I)V return-object p1 .line 76 :cond_4 invoke-virtual {p3}, Lcom/moji/api/ipc/APIParameter;->getParameters()[Ljava/lang/Object; move-result-object p2 .line 77 new-instance p3, Ljava/util/concurrent/LinkedBlockingQueue; invoke-direct {p3, v2}, Ljava/util/concurrent/LinkedBlockingQueue;->(I)V .line 78 iget-object v2, p0, Lcom/moji/api/service/BaseAPIService$1;->a:Lcom/moji/api/service/BaseAPIService; invoke-static {v2}, Lcom/moji/api/service/BaseAPIService;->a(Lcom/moji/api/service/BaseAPIService;)Landroid/os/Handler; move-result-object v2 invoke-virtual {v2}, Landroid/os/Handler;->obtainMessage()Landroid/os/Message; move-result-object v2 const/16 v4, 0x16 .line 79 iput v4, v2, Landroid/os/Message;->what:I .line 80 new-instance v4, Lcom/moji/api/service/BaseAPIService$MethodInvokeBundle; iget-object p1, p1, Lcom/moji/api/entity/APIBundle;->a:Ljava/lang/Object; invoke-direct {v4, v1, p1, p2, p3}, Lcom/moji/api/service/BaseAPIService$MethodInvokeBundle;->(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;Ljava/util/concurrent/LinkedBlockingQueue;)V iput-object v4, v2, Landroid/os/Message;->obj:Ljava/lang/Object; .line 81 iget-object p1, p0, Lcom/moji/api/service/BaseAPIService$1;->a:Lcom/moji/api/service/BaseAPIService; invoke-static {p1}, Lcom/moji/api/service/BaseAPIService;->a(Lcom/moji/api/service/BaseAPIService;)Landroid/os/Handler; move-result-object p1 invoke-virtual {p1, v2}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z .line 85 :try_start_2 invoke-virtual {p3}, Ljava/util/concurrent/LinkedBlockingQueue;->take()Ljava/lang/Object; move-result-object p1 check-cast p1, Lcom/moji/api/service/BaseAPIService$InternalResult; :try_end_2 .catch Ljava/lang/InterruptedException; {:try_start_2 .. :try_end_2} :catch_2 goto :goto_0 :catch_2 move-exception p1 .line 87 invoke-virtual {p1}, Ljava/lang/InterruptedException;->printStackTrace()V move-object p1, v0 :goto_0 if-eqz p1, :cond_5 .line 91 new-instance p2, Lcom/moji/api/ipc/APIResult; iget-object p3, p1, Lcom/moji/api/service/BaseAPIService$InternalResult;->b:Ljava/lang/Object; iget p1, p1, Lcom/moji/api/service/BaseAPIService$InternalResult;->a:I invoke-direct {p2, p3, p1}, Lcom/moji/api/ipc/APIResult;->(Ljava/lang/Object;I)V return-object p2 .line 93 :cond_5 new-instance p1, Lcom/moji/api/ipc/APIResult; invoke-direct {p1, v0, v3}, Lcom/moji/api/ipc/APIResult;->(Ljava/lang/Object;I)V return-object p1 :catch_3 move-exception p1 const-string p2, "BaseAPIService" const-string p3, "NoSuchMethodException" .line 57 invoke-static {p2, p3, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I .line 58 new-instance p1, Lcom/moji/api/ipc/APIResult; invoke-direct {p1, v0, v3}, Lcom/moji/api/ipc/APIResult;->(Ljava/lang/Object;I)V return-object p1 :catch_4 move-exception p1 const-string p2, "BaseAPIService" const-string p3, "ClassNotFoundException" .line 54 invoke-static {p2, p3, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I .line 55 new-instance p1, Lcom/moji/api/ipc/APIResult; invoke-direct {p1, v0, v2}, Lcom/moji/api/ipc/APIResult;->(Ljava/lang/Object;I)V return-object p1 :cond_6 :goto_1 const-string p2, "BaseAPIService" .line 45 new-instance p3, Ljava/lang/StringBuilder; invoke-direct {p3}, Ljava/lang/StringBuilder;->()V const-string v1, "APIBundle :" invoke-virtual {p3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {p3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; const-string p1, " null" invoke-virtual {p3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {p3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p1 invoke-static {p2, p1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I .line 46 new-instance p1, Lcom/moji/api/ipc/APIResult; const/4 p2, 0x5 invoke-direct {p1, v0, p2}, Lcom/moji/api/ipc/APIResult;->(Ljava/lang/Object;I)V return-object p1 .line 36 :cond_7 :goto_2 new-instance p1, Lcom/moji/api/ipc/APIResult; const/4 p2, 0x3 invoke-direct {p1, v0, p2}, Lcom/moji/api/ipc/APIResult;->(Ljava/lang/Object;I)V return-object p1 .end method