Skip to content
Snippets Groups Projects
Commit 5265c876 authored by Remi NGUYEN VAN's avatar Remi NGUYEN VAN
Browse files

Fix InetAddressCompat exception handling

Fix InetAddressCompat exception handling to throw the original exception
in case of InvocationTargetException, rather than wrapping in a generic
IllegalStateException.

Bug: 183198868
Test: Test device with and without connectivity
Change-Id: Idc4d678afe9f20f920d7061790af4203ab75be26
parent ec75643a
No related branches found
No related tags found
No related merge requests found
...@@ -41,7 +41,12 @@ public class InetAddressCompat { ...@@ -41,7 +41,12 @@ public class InetAddressCompat {
public static void clearDnsCache() { public static void clearDnsCache() {
try { try {
InetAddress.class.getMethod("clearDnsCache").invoke(null); InetAddress.class.getMethod("clearDnsCache").invoke(null);
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { } catch (InvocationTargetException e) {
if (e.getCause() instanceof RuntimeException) {
throw (RuntimeException) e.getCause();
}
throw new IllegalStateException("Unknown InvocationTargetException", e.getCause());
} catch (IllegalAccessException | NoSuchMethodException e) {
Log.wtf(InetAddressCompat.class.getSimpleName(), "Error clearing DNS cache", e); Log.wtf(InetAddressCompat.class.getSimpleName(), "Error clearing DNS cache", e);
} }
} }
...@@ -51,13 +56,7 @@ public class InetAddressCompat { ...@@ -51,13 +56,7 @@ public class InetAddressCompat {
*/ */
public static InetAddress[] getAllByNameOnNet(String host, int netId) throws public static InetAddress[] getAllByNameOnNet(String host, int netId) throws
UnknownHostException { UnknownHostException {
try { return (InetAddress[]) callGetByNameMethod("getAllByNameOnNet", host, netId);
return (InetAddress[]) InetAddress.class.getMethod("getAllByNameOnNet",
String.class, int.class).invoke(null, host, netId);
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
Log.wtf(InetAddressCompat.class.getSimpleName(), "Error calling getAllByNameOnNet", e);
throw new IllegalStateException("Error querying via getAllNameOnNet", e);
}
} }
/** /**
...@@ -65,12 +64,25 @@ public class InetAddressCompat { ...@@ -65,12 +64,25 @@ public class InetAddressCompat {
*/ */
public static InetAddress getByNameOnNet(String host, int netId) throws public static InetAddress getByNameOnNet(String host, int netId) throws
UnknownHostException { UnknownHostException {
return (InetAddress) callGetByNameMethod("getByNameOnNet", host, netId);
}
private static Object callGetByNameMethod(String method, String host, int netId)
throws UnknownHostException {
try { try {
return (InetAddress) InetAddress.class.getMethod("getByNameOnNet", return InetAddress.class.getMethod(method, String.class, int.class)
String.class, int.class).invoke(null, host, netId); .invoke(null, host, netId);
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { } catch (InvocationTargetException e) {
Log.wtf(InetAddressCompat.class.getSimpleName(), "Error calling getAllByNameOnNet", e); if (e.getCause() instanceof UnknownHostException) {
throw new IllegalStateException("Error querying via getByNameOnNet", e); throw (UnknownHostException) e.getCause();
}
if (e.getCause() instanceof RuntimeException) {
throw (RuntimeException) e.getCause();
}
throw new IllegalStateException("Unknown InvocationTargetException", e.getCause());
} catch (IllegalAccessException | NoSuchMethodException e) {
Log.wtf(InetAddressCompat.class.getSimpleName(), "Error calling " + method, e);
throw new IllegalStateException("Error querying via " + method, e);
} }
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment