Merge
This commit is contained in:
commit
fad0f2d2f6
@ -129,7 +129,7 @@ public class TextCallbackHandler implements CallbackHandler {
|
||||
System.err.print(pc.getPrompt());
|
||||
System.err.flush();
|
||||
|
||||
pc.setPassword(Password.readPassword(System.in));
|
||||
pc.setPassword(Password.readPassword(System.in, pc.isEchoOn()));
|
||||
|
||||
} else if (callbacks[i] instanceof ConfirmationCallback) {
|
||||
confirmation = (ConfirmationCallback) callbacks[i];
|
||||
|
@ -388,9 +388,9 @@ abstract class ISO2022
|
||||
|
||||
protected static class Encoder extends CharsetEncoder {
|
||||
private final Surrogate.Parser sgp = new Surrogate.Parser();
|
||||
private final byte SS2 = (byte)0x8e;
|
||||
private final byte PLANE2 = (byte)0xA2;
|
||||
private final byte PLANE3 = (byte)0xA3;
|
||||
public static final byte SS2 = (byte)0x8e;
|
||||
public static final byte PLANE2 = (byte)0xA2;
|
||||
public static final byte PLANE3 = (byte)0xA3;
|
||||
private final byte MSB = (byte)0x80;
|
||||
|
||||
protected final byte maximumDesignatorLength = 4;
|
||||
|
@ -76,6 +76,15 @@ public class ISO2022_CN_CNS extends ISO2022 implements HistoricallyNamedCharset
|
||||
} catch (Exception e) { }
|
||||
}
|
||||
|
||||
private byte[] bb = new byte[4];
|
||||
public boolean canEncode(char c) {
|
||||
int n = 0;
|
||||
return (c <= '\u007f' ||
|
||||
(n = ((EUC_TW.Encoder)ISOEncoder).toEUC(c, bb)) == 2 ||
|
||||
(n == 4 && bb[0] == SS2 &&
|
||||
(bb[1] == PLANE2 || bb[1] == PLANE3)));
|
||||
}
|
||||
|
||||
/*
|
||||
* Since ISO2022-CN-CNS possesses a CharsetEncoder
|
||||
* without the corresponding CharsetDecoder half the
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* Copyright 2003-2009 Sun Microsystems, Inc. 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
|
||||
@ -37,6 +37,14 @@ import java.util.Arrays;
|
||||
public class Password {
|
||||
/** Reads user password from given input stream. */
|
||||
public static char[] readPassword(InputStream in) throws IOException {
|
||||
return readPassword(in, false);
|
||||
}
|
||||
|
||||
/** Reads user password from given input stream.
|
||||
* @param isEchoOn true if the password should be echoed on the screen
|
||||
*/
|
||||
public static char[] readPassword(InputStream in, boolean isEchoOn)
|
||||
throws IOException {
|
||||
|
||||
char[] consoleEntered = null;
|
||||
byte[] consoleBytes = null;
|
||||
@ -44,7 +52,7 @@ public class Password {
|
||||
try {
|
||||
// Use the new java.io.Console class
|
||||
Console con = null;
|
||||
if (in == System.in && ((con = System.console()) != null)) {
|
||||
if (!isEchoOn && in == System.in && ((con = System.console()) != null)) {
|
||||
consoleEntered = con.readPassword();
|
||||
// readPassword returns "" if you just print ENTER,
|
||||
// to be compatible with old Password class, change to null
|
||||
|
@ -283,25 +283,15 @@ class WindowsFileSystem
|
||||
}
|
||||
}
|
||||
|
||||
// match in uppercase
|
||||
StringBuilder sb = new StringBuilder(expr.length());
|
||||
for (int i=0; i<expr.length(); i++) {
|
||||
sb.append(Character.toUpperCase(expr.charAt(i)));
|
||||
}
|
||||
expr = sb.toString();
|
||||
// match in unicode_case_insensitive
|
||||
final Pattern pattern = Pattern.compile(expr,
|
||||
Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
|
||||
|
||||
// return matcher
|
||||
final Pattern pattern = Pattern.compile(expr);
|
||||
return new PathMatcher() {
|
||||
@Override
|
||||
public boolean matches(Path path) {
|
||||
// match in uppercase
|
||||
String s = path.toString();
|
||||
StringBuilder sb = new StringBuilder(s.length());
|
||||
for (int i=0; i<s.length(); i++) {
|
||||
sb.append( Character.toUpperCase(s.charAt(i)) );
|
||||
}
|
||||
return pattern.matcher(sb).matches();
|
||||
return pattern.matcher(path.toString()).matches();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright 2009 Sun Microsystems, Inc. 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
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 6825240
|
||||
* @summary Password.readPassword() echos the input when System.Console is null
|
||||
* @ignore run these by hand
|
||||
*/
|
||||
|
||||
import com.sun.security.auth.callback.TextCallbackHandler;
|
||||
import javax.security.auth.callback.*;
|
||||
|
||||
public class Password {
|
||||
public static void main(String args[]) throws Exception {
|
||||
TextCallbackHandler h = new TextCallbackHandler();
|
||||
PasswordCallback nc = new PasswordCallback("Invisible: ", false);
|
||||
PasswordCallback nc2 = new PasswordCallback("Visible: ", true);
|
||||
|
||||
System.out.println("Two passwords will be prompted for. The first one " +
|
||||
"should have echo off, the second one on. Otherwise, this test fails");
|
||||
Callback[] callbacks = { nc, nc2 };
|
||||
h.handle(callbacks);
|
||||
System.out.println("You input " + new String(nc.getPassword()) +
|
||||
" and " + new String(nc2.getPassword()));
|
||||
}
|
||||
}
|
@ -22,7 +22,7 @@
|
||||
*/
|
||||
|
||||
/* @test
|
||||
* @bug 4313887
|
||||
* @bug 4313887 6866397
|
||||
* @summary Unit test for java.nio.file.PathMatcher
|
||||
*/
|
||||
|
||||
@ -68,6 +68,20 @@ public class Basic {
|
||||
}
|
||||
}
|
||||
|
||||
static void assertRegExMatch(String path, String pattern) {
|
||||
System.out.format("Test regex pattern: %s", pattern);
|
||||
Path file = Paths.get(path);
|
||||
boolean matched = file.getFileSystem()
|
||||
.getPathMatcher("regex:" + pattern).matches(file);
|
||||
if (matched) {
|
||||
System.out.println(" OKAY");
|
||||
} else {
|
||||
System.out.println(" ==> UNEXPECTED RESULT!");
|
||||
failures++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
// basic
|
||||
assertMatch("foo.html", "foo.html");
|
||||
@ -140,21 +154,13 @@ public class Basic {
|
||||
assertMatch("one*two", "one\\*two");
|
||||
}
|
||||
|
||||
|
||||
|
||||
// regex syntax
|
||||
{
|
||||
String pattern = ".*\\.html";
|
||||
System.out.format("Test regex pattern: %s", pattern);
|
||||
Path file = Paths.get("foo.html");
|
||||
boolean matched = file.getFileSystem()
|
||||
.getPathMatcher("regex:" + pattern).matches(file);
|
||||
if (matched) {
|
||||
System.out.println(" OKAY");
|
||||
} else {
|
||||
System.out.println(" ==> UNEXPECTED RESULT!");
|
||||
failures++;
|
||||
}
|
||||
assertRegExMatch("foo.html", ".*\\.html");
|
||||
|
||||
if (System.getProperty("os.name").startsWith("Windows")) {
|
||||
assertRegExMatch("foo012", "foo\\d+");
|
||||
assertRegExMatch("fo o", "fo\\so");
|
||||
assertRegExMatch("foo", "\\w+");
|
||||
}
|
||||
|
||||
// unknown syntax
|
||||
|
@ -22,7 +22,7 @@
|
||||
*/
|
||||
|
||||
/* @test
|
||||
@bug 5066863 5066867 5066874 5066879 5066884 5066887 5065777
|
||||
@bug 5066863 5066867 5066874 5066879 5066884 5066887 5065777 6730652
|
||||
@summary canEncode() false iff encode() throws CharacterCodingException
|
||||
@run main/timeout=1200 FindCanEncodeBugs
|
||||
@author Martin Buchholz
|
||||
@ -52,9 +52,7 @@ public class FindCanEncodeBugs {
|
||||
String csn = e.getKey();
|
||||
Charset cs = e.getValue();
|
||||
|
||||
if (! cs.canEncode() ||
|
||||
csn.matches("x-COMPOUND_TEXT") ||
|
||||
csn.matches("x-ISO-2022-CN-CNS")) // ISO2022_CN_CNS supports less
|
||||
if (! cs.canEncode() || csn.matches("x-COMPOUND_TEXT"))
|
||||
continue;
|
||||
|
||||
//System.out.println(csn);
|
||||
|
Loading…
Reference in New Issue
Block a user