From b8c2051407f30cdf6cc3eed83e8025e106143e45 Mon Sep 17 00:00:00 2001 From: Trustin Lee Date: Sun, 31 Aug 2008 03:29:13 +0000 Subject: [PATCH] Added quick autodetection support for IBM JDK --- .../socket/nio/NioProviderMetadata.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jboss/netty/channel/socket/nio/NioProviderMetadata.java b/src/main/java/org/jboss/netty/channel/socket/nio/NioProviderMetadata.java index 3a1bd8e00c..e4b2d1adcb 100644 --- a/src/main/java/org/jboss/netty/channel/socket/nio/NioProviderMetadata.java +++ b/src/main/java/org/jboss/netty/channel/socket/nio/NioProviderMetadata.java @@ -116,6 +116,7 @@ class NioProviderMetadata { } private static int detectConstraintLevelFromSystemProperties() { + String version = SystemPropertyUtil.get("java.specification.version"); String os = SystemPropertyUtil.get("os.name"); String vendor = SystemPropertyUtil.get("java.vm.vendor"); String provider; @@ -126,7 +127,7 @@ class NioProviderMetadata { provider = null; } - if (os == null || vendor == null || provider == null) { + if (version == null || os == null || vendor == null || provider == null) { return -1; } @@ -162,9 +163,24 @@ class NioProviderMetadata { return 0; } } + // IBM + } else if (vendor.indexOf("ibm") >= 0) { + // Linux + if (os.indexOf("linux") >= 0) { + if (version.equals("1.5") || version.matches("^1\\.5\\D.*$")) { + if (provider.equals("sun.nio.ch.PollSelectorProvider")) { + return 1; + } + } else if (version.equals("1.6") || version.matches("^1\\.6\\D.*$")) { + if (provider.equals("sun.nio.ch.EPollSelectorProvider") || + provider.equals("sun.nio.ch.PollSelectorProvider")) { + return 2; + } + } + } } - // Others: IBM JRE - 1 or 2, JRockIt - untested + // Others (untested) return -1; }