mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-21 07:45:11 +00:00
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:
parent
366c888fae
commit
893b23be49
@ -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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user