8184330: Remove sun.nio.ch.Util.atBugLevel() either completely or at least get rid of volatile field bugLevel

Reviewed-by: alanb
This commit is contained in:
Christoph Langer 2017-08-04 15:28:32 +02:00
parent 366c888fae
commit 893b23be49
3 changed files with 24 additions and 49 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -26,10 +26,18 @@
package sun.nio.ch;
import java.io.IOException;
import java.nio.channels.*;
import java.nio.channels.spi.*;
import java.net.SocketException;
import java.util.*;
import java.nio.channels.ClosedSelectorException;
import java.nio.channels.IllegalSelectorException;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.spi.AbstractSelectableChannel;
import java.nio.channels.spi.AbstractSelector;
import java.nio.channels.spi.SelectorProvider;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
/**
@ -54,23 +62,18 @@ public abstract class SelectorImpl
super(sp);
keys = new HashSet<>();
selectedKeys = new HashSet<>();
if (Util.atBugLevel("1.4")) {
publicKeys = keys;
publicSelectedKeys = selectedKeys;
} else {
publicKeys = Collections.unmodifiableSet(keys);
publicSelectedKeys = Util.ungrowableSet(selectedKeys);
}
publicKeys = Collections.unmodifiableSet(keys);
publicSelectedKeys = Util.ungrowableSet(selectedKeys);
}
public Set<SelectionKey> keys() {
if (!isOpen() && !Util.atBugLevel("1.4"))
if (!isOpen())
throw new ClosedSelectorException();
return publicKeys;
}
public Set<SelectionKey> selectedKeys() {
if (!isOpen() && !Util.atBugLevel("1.4"))
if (!isOpen())
throw new ClosedSelectorException();
return publicSelectedKeys;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -25,13 +25,16 @@
package sun.nio.ch;
import java.lang.reflect.*;
import java.io.FileDescriptor;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.nio.ByteBuffer;
import java.nio.MappedByteBuffer;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.*;
import java.util.Collection;
import java.util.Iterator;
import java.util.Set;
import jdk.internal.misc.Unsafe;
import sun.security.action.GetPropertyAction;
@ -456,21 +459,4 @@ public class Util {
}
return dbb;
}
// -- Bug compatibility --
private static volatile String bugLevel;
static boolean atBugLevel(String bl) { // package-private
if (bugLevel == null) {
if (!jdk.internal.misc.VM.isBooted())
return false;
String value = GetPropertyAction
.privilegedGetProperty("sun.nio.ch.bugLevel");
bugLevel = (value != null) ? value : "";
}
return bugLevel.equals(bl);
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -26,34 +26,25 @@
* @summary Check various properties of key and selected-key sets
*
* @run main KeySets
* @run main/othervm -Dsun.nio.ch.bugLevel=1.4 KeySets
*/
import java.io.*;
import java.nio.channels.*;
import java.util.*;
public class KeySets {
static boolean compat;
static abstract class Catch {
abstract void go() throws Exception;
Catch(Class xc) throws Exception {
try {
go();
} catch (Exception x) {
if (compat)
throw new Exception("Exception thrown", x);
if (xc.isInstance(x))
return;
throw new Exception("Wrong exception", x);
}
if (compat)
return;
throw new Exception("Not thrown as expected: "
+ xc.getName());
throw new Exception("Not thrown as expected: " + xc.getName());
}
}
@ -74,7 +65,6 @@ public class KeySets {
void go() throws Exception {
sel.selectedKeys();
}};
}
static void testNoAddition(final Set s) throws Exception {
@ -174,14 +164,10 @@ public class KeySets {
sel.selectedKeys().clear();
if (!sel.selectedKeys().isEmpty())
throw new Exception("clear failed");
}
public static void main(String[] args) throws Exception {
String bl = System.getProperty("sun.nio.ch.bugLevel");
compat = (bl != null) && bl.equals("1.4");
testClose();
testMutability();
}
}