Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEugene Tarassov2013-11-05 01:33:31 +0000
committerEugene Tarassov2013-11-05 01:33:31 +0000
commitb63fc710f9ec6e26a846dcaa0f2be4cdee8c9fda (patch)
tree68656a10a378fcdb1ab39217be07f880b0709c81 /plugins/org.eclipse.tcf.core
parent57c29073deedbf5dec25fd453534ade89d629383 (diff)
downloadorg.eclipse.tcf-b63fc710f9ec6e26a846dcaa0f2be4cdee8c9fda.tar.gz
org.eclipse.tcf-b63fc710f9ec6e26a846dcaa0f2be4cdee8c9fda.tar.xz
org.eclipse.tcf-b63fc710f9ec6e26a846dcaa0f2be4cdee8c9fda.zip
TCF Core: removed support for Java 1.5 or older. Now 1.6 is minimum required JVM version.
Diffstat (limited to 'plugins/org.eclipse.tcf.core')
-rw-r--r--plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/local/LocatorService.java77
1 files changed, 15 insertions, 62 deletions
diff --git a/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/local/LocatorService.java b/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/local/LocatorService.java
index 084dd8a05..38842fa83 100644
--- a/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/local/LocatorService.java
+++ b/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/local/LocatorService.java
@@ -14,12 +14,12 @@ import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
-import java.lang.reflect.Method;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.InetSocketAddress;
+import java.net.InterfaceAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
@@ -30,7 +30,6 @@ import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
-import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -635,68 +634,22 @@ public class LocatorService implements ILocator {
private void getSubNetList(HashSet<SubNet> set) throws SocketException {
for (Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces(); e.hasMoreElements();) {
NetworkInterface f = e.nextElement();
- /* TODO: Class InterfaceAddress does not exists in Java versions before 1.6.
- * Fix the code below when support for old Java versions is not needed any more.
- */
- try {
- Method m0 = f.getClass().getMethod("getInterfaceAddresses");
- for (Object ia : (List<?>)m0.invoke(f)) {
- Method m1 = ia.getClass().getMethod("getNetworkPrefixLength");
- Method m2 = ia.getClass().getMethod("getAddress");
- Method m3 = ia.getClass().getMethod("getBroadcast");
- int network_prefix_len = (Short)m1.invoke(ia);
- InetAddress address = (InetAddress)m2.invoke(ia);
- InetAddress broadcast = (InetAddress)m3.invoke(ia);
-
- // TODO: discovery over IPv6
- /* Create IPv6 broadcast address.
- * The code does not work - commented out until fixed.
- if (broadcast == null &&
- address instanceof Inet6Address &&
- !address.isAnyLocalAddress() &&
- !address.isLinkLocalAddress() &&
- !address.isMulticastAddress() &&
- !address.isLoopbackAddress()) {
- byte[] net = address.getAddress();
- byte[] buf = new byte[16];
- buf[0] = (byte)0xff; // multicast
- buf[1] = (byte)0x32; // flags + scope
- buf[2] = (byte)0x00; // reserved
- buf[3] = (byte)network_prefix_len;
- int n = (network_prefix_len + 7) / 8;
- for (int i = 0; i < n; i++) buf[i + 4] = net[i];
- broadcast = Inet6Address.getByAddress(null, buf);
- }
- */
-
- if (network_prefix_len == 0 && address instanceof Inet4Address) {
- // Java 1.6.0 on Linux returns network prefix == 0 for loop-back interface
- byte[] buf = address.getAddress();
- if (buf[0] == 127) {
- network_prefix_len = 8;
- if (broadcast == null) broadcast = address;
- }
- }
-
- if (network_prefix_len > 0 && address != null && broadcast != null) {
- set.add(new SubNet(network_prefix_len, address, broadcast));
+ for (InterfaceAddress ia : f.getInterfaceAddresses()) {
+ int network_prefix_len = ia.getNetworkPrefixLength();
+ InetAddress address = ia.getAddress();
+ InetAddress broadcast = ia.getBroadcast();
+
+ if (network_prefix_len == 0 && address instanceof Inet4Address) {
+ // Java 1.6.0 on Linux returns network prefix == 0 for loop-back interface
+ byte[] buf = address.getAddress();
+ if (buf[0] == 127) {
+ network_prefix_len = 8;
+ if (broadcast == null) broadcast = address;
}
}
- }
- catch (Exception x) {
- // Java 1.5 or older
- // TODO: need a better way to get broadcast addresses on Java 1.5 VM
- Enumeration<InetAddress> n = f.getInetAddresses();
- while (n.hasMoreElements()) {
- InetAddress addr = n.nextElement();
- byte[] buf = addr.getAddress();
- if (buf.length != 4) continue;
- buf[3] = (byte)255;
- try {
- set.add(new SubNet(24, addr, InetAddress.getByAddress(buf)));
- }
- catch (UnknownHostException y) {
- }
+
+ if (network_prefix_len > 0 && address != null && broadcast != null) {
+ set.add(new SubNet(network_prefix_len, address, broadcast));
}
}
}

Back to the top