提交 8b13914c 编写于 作者: I igerasim

8074657: Missing space on a boundary of concatenated strings

Summary: Added missing spaces, fixed indentation, replaced StringBuffer with StringBuilder
Reviewed-by: martin, rriggs
上级 370fb4a4
/* /*
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -66,7 +66,7 @@ public class SerialBlob implements Blob, Serializable, Cloneable { ...@@ -66,7 +66,7 @@ public class SerialBlob implements Blob, Serializable, Cloneable {
* value of this <code>SerialBlob</code> object. * value of this <code>SerialBlob</code> object.
* @serial * @serial
*/ */
private byte buf[]; private byte[] buf;
/** /**
* The internal representation of the <code>Blob</code> object on which this * The internal representation of the <code>Blob</code> object on which this
...@@ -102,7 +102,8 @@ public class SerialBlob implements Blob, Serializable, Cloneable { ...@@ -102,7 +102,8 @@ public class SerialBlob implements Blob, Serializable, Cloneable {
* @throws SerialException if an error occurs during serialization * @throws SerialException if an error occurs during serialization
* @throws SQLException if a SQL errors occurs * @throws SQLException if a SQL errors occurs
*/ */
public SerialBlob(byte[] b) throws SerialException, SQLException { public SerialBlob(byte[] b)
throws SerialException, SQLException {
len = b.length; len = b.length;
buf = new byte[(int)len]; buf = new byte[(int)len];
...@@ -132,19 +133,17 @@ public class SerialBlob implements Blob, Serializable, Cloneable { ...@@ -132,19 +133,17 @@ public class SerialBlob implements Blob, Serializable, Cloneable {
* to this constructor is a <code>null</code>. * to this constructor is a <code>null</code>.
* @see java.sql.Blob * @see java.sql.Blob
*/ */
public SerialBlob (Blob blob) throws SerialException, SQLException { public SerialBlob (Blob blob)
throws SerialException, SQLException {
if (blob == null) { if (blob == null) {
throw new SQLException("Cannot instantiate a SerialBlob " + throw new SQLException(
"object with a null Blob object"); "Cannot instantiate a SerialBlob object with a null Blob object");
} }
len = blob.length(); len = blob.length();
buf = blob.getBytes(1, (int)len ); buf = blob.getBytes(1, (int)len );
this.blob = blob; this.blob = blob;
//if ( len < 10240000)
// len = 10240000;
origLen = len; origLen = len;
} }
...@@ -246,6 +245,7 @@ public class SerialBlob implements Blob, Serializable, Cloneable { ...@@ -246,6 +245,7 @@ public class SerialBlob implements Blob, Serializable, Cloneable {
*/ */
public long position(byte[] pattern, long start) public long position(byte[] pattern, long start)
throws SerialException, SQLException { throws SerialException, SQLException {
isValid(); isValid();
if (start < 1 || start > len) { if (start < 1 || start > len) {
return -1; return -1;
...@@ -317,7 +317,7 @@ public class SerialBlob implements Blob, Serializable, Cloneable { ...@@ -317,7 +317,7 @@ public class SerialBlob implements Blob, Serializable, Cloneable {
*/ */
public int setBytes(long pos, byte[] bytes) public int setBytes(long pos, byte[] bytes)
throws SerialException, SQLException { throws SerialException, SQLException {
return (setBytes(pos, bytes, 0, bytes.length)); return setBytes(pos, bytes, 0, bytes.length);
} }
/** /**
...@@ -403,6 +403,7 @@ public class SerialBlob implements Blob, Serializable, Cloneable { ...@@ -403,6 +403,7 @@ public class SerialBlob implements Blob, Serializable, Cloneable {
*/ */
public java.io.OutputStream setBinaryStream(long pos) public java.io.OutputStream setBinaryStream(long pos)
throws SerialException, SQLException { throws SerialException, SQLException {
isValid(); isValid();
if (this.blob != null) { if (this.blob != null) {
return this.blob.setBinaryStream(pos); return this.blob.setBinaryStream(pos);
...@@ -425,11 +426,10 @@ public class SerialBlob implements Blob, Serializable, Cloneable { ...@@ -425,11 +426,10 @@ public class SerialBlob implements Blob, Serializable, Cloneable {
* if {@code free} had previously been called on this object * if {@code free} had previously been called on this object
*/ */
public void truncate(long length) throws SerialException { public void truncate(long length) throws SerialException {
isValid(); isValid();
if (length > len) { if (length > len) {
throw new SerialException throw new SerialException(
("Length more than what can be truncated"); "Length more than what can be truncated");
} else if((int)length == 0) { } else if((int)length == 0) {
buf = new byte[0]; buf = new byte[0];
len = length; len = length;
...@@ -466,8 +466,8 @@ public class SerialBlob implements Blob, Serializable, Cloneable { ...@@ -466,8 +466,8 @@ public class SerialBlob implements Blob, Serializable, Cloneable {
throw new SerialException("Invalid position in BLOB object set"); throw new SerialException("Invalid position in BLOB object set");
} }
if (length < 1 || length > len - pos + 1) { if (length < 1 || length > len - pos + 1) {
throw new SerialException("length is < 1 or pos + length >" throw new SerialException(
+ "total number of bytes"); "length is < 1 or pos + length > total number of bytes");
} }
return new ByteArrayInputStream(buf, (int) pos - 1, (int) length); return new ByteArrayInputStream(buf, (int) pos - 1, (int) length);
} }
...@@ -543,7 +543,6 @@ public class SerialBlob implements Blob, Serializable, Cloneable { ...@@ -543,7 +543,6 @@ public class SerialBlob implements Blob, Serializable, Cloneable {
// this shouldn't happen, since we are Cloneable // this shouldn't happen, since we are Cloneable
throw new InternalError(); throw new InternalError();
} }
} }
/** /**
...@@ -590,8 +589,8 @@ public class SerialBlob implements Blob, Serializable, Cloneable { ...@@ -590,8 +589,8 @@ public class SerialBlob implements Blob, Serializable, Cloneable {
*/ */
private void isValid() throws SerialException { private void isValid() throws SerialException {
if (buf == null) { if (buf == null) {
throw new SerialException("Error: You cannot call a method on a " throw new SerialException("Error: You cannot call a method on a " +
+ "SerialBlob instance once free() has been called."); "SerialBlob instance once free() has been called.");
} }
} }
......
...@@ -53,8 +53,8 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -53,8 +53,8 @@ class WindowsPreferences extends AbstractPreferences{
/** /**
* Windows registry path to <tt>Preferences</tt>'s root nodes. * Windows registry path to <tt>Preferences</tt>'s root nodes.
*/ */
private static final byte[] WINDOWS_ROOT_PATH private static final byte[] WINDOWS_ROOT_PATH =
= stringToByteArray("Software\\JavaSoft\\Prefs"); stringToByteArray("Software\\JavaSoft\\Prefs");
/** /**
* Windows handles to <tt>HKEY_CURRENT_USER</tt> and * Windows handles to <tt>HKEY_CURRENT_USER</tt> and
...@@ -395,8 +395,8 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -395,8 +395,8 @@ class WindowsPreferences extends AbstractPreferences{
int[] result = int[] result =
WindowsRegCreateKeyEx1(parentNativeHandle, toWindowsName(name)); WindowsRegCreateKeyEx1(parentNativeHandle, toWindowsName(name));
if (result[ERROR_CODE] != ERROR_SUCCESS) { if (result[ERROR_CODE] != ERROR_SUCCESS) {
logger().warning("Could not create windows registry " logger().warning("Could not create windows registry node " +
+ "node " + byteArrayToString(windowsAbsolutePath()) + byteArrayToString(windowsAbsolutePath()) +
" at root 0x" + Integer.toHexString(rootNativeHandle()) + " at root 0x" + Integer.toHexString(rootNativeHandle()) +
". Windows RegCreateKeyEx(...) returned error code " + ". Windows RegCreateKeyEx(...) returned error code " +
result[ERROR_CODE] + "."); result[ERROR_CODE] + ".");
...@@ -417,13 +417,13 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -417,13 +417,13 @@ class WindowsPreferences extends AbstractPreferences{
* @param rootDirectory Path to root directory, as a byte-encoded string. * @param rootDirectory Path to root directory, as a byte-encoded string.
*/ */
private WindowsPreferences(int rootNativeHandle, byte[] rootDirectory) { private WindowsPreferences(int rootNativeHandle, byte[] rootDirectory) {
super(null,""); super(null, "");
int[] result = int[] result =
WindowsRegCreateKeyEx1(rootNativeHandle, rootDirectory); WindowsRegCreateKeyEx1(rootNativeHandle, rootDirectory);
if (result[ERROR_CODE] != ERROR_SUCCESS) { if (result[ERROR_CODE] != ERROR_SUCCESS) {
logger().warning("Could not open/create prefs root node " + logger().warning("Could not open/create prefs root node " +
byteArrayToString(windowsAbsolutePath()) + " at root 0x" + byteArrayToString(windowsAbsolutePath()) +
Integer.toHexString(rootNativeHandle()) + " at root 0x" + Integer.toHexString(rootNativeHandle()) +
". Windows RegCreateKeyEx(...) returned error code " + ". Windows RegCreateKeyEx(...) returned error code " +
result[ERROR_CODE] + "."); result[ERROR_CODE] + ".");
isBackingStoreAvailable = false; isBackingStoreAvailable = false;
...@@ -442,7 +442,7 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -442,7 +442,7 @@ class WindowsPreferences extends AbstractPreferences{
private byte[] windowsAbsolutePath() { private byte[] windowsAbsolutePath() {
ByteArrayOutputStream bstream = new ByteArrayOutputStream(); ByteArrayOutputStream bstream = new ByteArrayOutputStream();
bstream.write(WINDOWS_ROOT_PATH, 0, WINDOWS_ROOT_PATH.length-1); bstream.write(WINDOWS_ROOT_PATH, 0, WINDOWS_ROOT_PATH.length-1);
StringTokenizer tokenizer = new StringTokenizer(absolutePath(),"/"); StringTokenizer tokenizer = new StringTokenizer(absolutePath(), "/");
while (tokenizer.hasMoreTokens()) { while (tokenizer.hasMoreTokens()) {
bstream.write((byte)'\\'); bstream.write((byte)'\\');
String nextName = tokenizer.nextToken(); String nextName = tokenizer.nextToken();
...@@ -503,16 +503,19 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -503,16 +503,19 @@ class WindowsPreferences extends AbstractPreferences{
windowsAbsolutePath, mask2); windowsAbsolutePath, mask2);
if (result[ERROR_CODE] != ERROR_SUCCESS) { if (result[ERROR_CODE] != ERROR_SUCCESS) {
logger().warning("Could not open windows " logger().warning("Could not open windows registry node " +
+ "registry node " + byteArrayToString(windowsAbsolutePath()) + byteArrayToString(windowsAbsolutePath()) +
" at root 0x" + Integer.toHexString(rootNativeHandle()) + " at root 0x" +
Integer.toHexString(rootNativeHandle()) +
". Windows RegOpenKey(...) returned error code " + ". Windows RegOpenKey(...) returned error code " +
result[ERROR_CODE] + "."); result[ERROR_CODE] + ".");
result[NATIVE_HANDLE] = NULL_NATIVE_HANDLE; result[NATIVE_HANDLE] = NULL_NATIVE_HANDLE;
if (result[ERROR_CODE] == ERROR_ACCESS_DENIED) { if (result[ERROR_CODE] == ERROR_ACCESS_DENIED) {
throw new SecurityException("Could not open windows " throw new SecurityException(
+ "registry node " + byteArrayToString(windowsAbsolutePath()) + "Could not open windows registry node " +
" at root 0x" + Integer.toHexString(rootNativeHandle()) + byteArrayToString(windowsAbsolutePath()) +
" at root 0x" +
Integer.toHexString(rootNativeHandle()) +
": Access denied"); ": Access denied");
} }
} }
...@@ -546,8 +549,8 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -546,8 +549,8 @@ class WindowsPreferences extends AbstractPreferences{
windowsRelativePath, mask2); windowsRelativePath, mask2);
if (result[ERROR_CODE] != ERROR_SUCCESS) { if (result[ERROR_CODE] != ERROR_SUCCESS) {
logger().warning("Could not open windows " logger().warning("Could not open windows registry node " +
+ "registry node " + byteArrayToString(windowsAbsolutePath()) + byteArrayToString(windowsAbsolutePath()) +
" at root 0x" + Integer.toHexString(nativeHandle) + " at root 0x" + Integer.toHexString(nativeHandle) +
". Windows RegOpenKey(...) returned error code " + ". Windows RegOpenKey(...) returned error code " +
result[ERROR_CODE] + "."); result[ERROR_CODE] + ".");
...@@ -595,10 +598,12 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -595,10 +598,12 @@ class WindowsPreferences extends AbstractPreferences{
private void closeKey(int nativeHandle) { private void closeKey(int nativeHandle) {
int result = WindowsRegCloseKey(nativeHandle); int result = WindowsRegCloseKey(nativeHandle);
if (result != ERROR_SUCCESS) { if (result != ERROR_SUCCESS) {
logger().warning("Could not close windows " logger().warning("Could not close windows registry node " +
+ "registry node " + byteArrayToString(windowsAbsolutePath()) + byteArrayToString(windowsAbsolutePath()) +
" at root 0x" + Integer.toHexString(rootNativeHandle()) + " at root 0x" +
". Windows RegCloseKey(...) returned error code " + result + "."); Integer.toHexString(rootNativeHandle()) +
". Windows RegCloseKey(...) returned error code " +
result + ".");
} }
} }
...@@ -618,10 +623,13 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -618,10 +623,13 @@ class WindowsPreferences extends AbstractPreferences{
toWindowsName(javaName), toWindowsValueString(value)); toWindowsName(javaName), toWindowsValueString(value));
if (result != ERROR_SUCCESS) { if (result != ERROR_SUCCESS) {
logger().warning("Could not assign value to key " + logger().warning("Could not assign value to key " +
byteArrayToString(toWindowsName(javaName))+ " at Windows registry node " byteArrayToString(toWindowsName(javaName)) +
+ byteArrayToString(windowsAbsolutePath()) + " at root 0x" " at Windows registry node " +
+ Integer.toHexString(rootNativeHandle()) + byteArrayToString(windowsAbsolutePath()) +
". Windows RegSetValueEx(...) returned error code " + result + "."); " at root 0x" +
Integer.toHexString(rootNativeHandle()) +
". Windows RegSetValueEx(...) returned error code " +
result + ".");
isBackingStoreAvailable = false; isBackingStoreAvailable = false;
} }
closeKey(nativeHandle); closeKey(nativeHandle);
...@@ -663,8 +671,8 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -663,8 +671,8 @@ class WindowsPreferences extends AbstractPreferences{
int result = int result =
WindowsRegDeleteValue(nativeHandle, toWindowsName(key)); WindowsRegDeleteValue(nativeHandle, toWindowsName(key));
if (result != ERROR_SUCCESS && result != ERROR_FILE_NOT_FOUND) { if (result != ERROR_SUCCESS && result != ERROR_FILE_NOT_FOUND) {
logger().warning("Could not delete windows registry " logger().warning("Could not delete windows registry value " +
+ "value " + byteArrayToString(windowsAbsolutePath())+ "\\" + byteArrayToString(windowsAbsolutePath()) + "\\" +
toWindowsName(key) + " at root 0x" + toWindowsName(key) + " at root 0x" +
Integer.toHexString(rootNativeHandle()) + Integer.toHexString(rootNativeHandle()) +
". Windows RegDeleteValue(...) returned error code " + ". Windows RegDeleteValue(...) returned error code " +
...@@ -684,15 +692,18 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -684,15 +692,18 @@ class WindowsPreferences extends AbstractPreferences{
// Find out the number of values // Find out the number of values
int nativeHandle = openKey(KEY_QUERY_VALUE); int nativeHandle = openKey(KEY_QUERY_VALUE);
if (nativeHandle == NULL_NATIVE_HANDLE) { if (nativeHandle == NULL_NATIVE_HANDLE) {
throw new BackingStoreException("Could not open windows" throw new BackingStoreException(
+ "registry node " + byteArrayToString(windowsAbsolutePath()) + "Could not open windows registry node " +
" at root 0x" + Integer.toHexString(rootNativeHandle()) + "."); byteArrayToString(windowsAbsolutePath()) +
" at root 0x" +
Integer.toHexString(rootNativeHandle()) + ".");
} }
int[] result = WindowsRegQueryInfoKey1(nativeHandle); int[] result = WindowsRegQueryInfoKey1(nativeHandle);
if (result[ERROR_CODE] != ERROR_SUCCESS) { if (result[ERROR_CODE] != ERROR_SUCCESS) {
String info = "Could not query windows" String info = "Could not query windows registry node " +
+ "registry node " + byteArrayToString(windowsAbsolutePath()) + byteArrayToString(windowsAbsolutePath()) +
" at root 0x" + Integer.toHexString(rootNativeHandle()) + " at root 0x" +
Integer.toHexString(rootNativeHandle()) +
". Windows RegQueryInfoKeyEx(...) returned error code " + ". Windows RegQueryInfoKeyEx(...) returned error code " +
result[ERROR_CODE] + "."; result[ERROR_CODE] + ".";
logger().warning(info); logger().warning(info);
...@@ -731,17 +742,19 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -731,17 +742,19 @@ class WindowsPreferences extends AbstractPreferences{
*/ */
protected String[] childrenNamesSpi() throws BackingStoreException { protected String[] childrenNamesSpi() throws BackingStoreException {
// Open key // Open key
int nativeHandle = openKey(KEY_ENUMERATE_SUB_KEYS| KEY_QUERY_VALUE); int nativeHandle = openKey(KEY_ENUMERATE_SUB_KEYS | KEY_QUERY_VALUE);
if (nativeHandle == NULL_NATIVE_HANDLE) { if (nativeHandle == NULL_NATIVE_HANDLE) {
throw new BackingStoreException("Could not open windows" throw new BackingStoreException(
+ "registry node " + byteArrayToString(windowsAbsolutePath()) + "Could not open windows registry node " +
" at root 0x" + Integer.toHexString(rootNativeHandle()) + "."); byteArrayToString(windowsAbsolutePath()) +
" at root 0x" +
Integer.toHexString(rootNativeHandle()) + ".");
} }
// Get number of children // Get number of children
int[] result = WindowsRegQueryInfoKey1(nativeHandle); int[] result = WindowsRegQueryInfoKey1(nativeHandle);
if (result[ERROR_CODE] != ERROR_SUCCESS) { if (result[ERROR_CODE] != ERROR_SUCCESS) {
String info = "Could not query windows" String info = "Could not query windows registry node " +
+ "registry node " + byteArrayToString(windowsAbsolutePath()) + byteArrayToString(windowsAbsolutePath()) +
" at root 0x" + Integer.toHexString(rootNativeHandle()) + " at root 0x" + Integer.toHexString(rootNativeHandle()) +
". Windows RegQueryInfoKeyEx(...) returned error code " + ". Windows RegQueryInfoKeyEx(...) returned error code " +
result[ERROR_CODE] + "."; result[ERROR_CODE] + ".";
...@@ -793,16 +806,20 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -793,16 +806,20 @@ class WindowsPreferences extends AbstractPreferences{
} }
int nativeHandle = openKey(KEY_READ); int nativeHandle = openKey(KEY_READ);
if (nativeHandle == NULL_NATIVE_HANDLE) { if (nativeHandle == NULL_NATIVE_HANDLE) {
throw new BackingStoreException("Could not open windows" throw new BackingStoreException(
+ "registry node " + byteArrayToString(windowsAbsolutePath()) + "Could not open windows registry node " +
" at root 0x" + Integer.toHexString(rootNativeHandle()) + "."); byteArrayToString(windowsAbsolutePath()) +
" at root 0x" +
Integer.toHexString(rootNativeHandle()) + ".");
} }
int result = WindowsRegFlushKey1(nativeHandle); int result = WindowsRegFlushKey1(nativeHandle);
if (result != ERROR_SUCCESS) { if (result != ERROR_SUCCESS) {
String info = "Could not flush windows " String info = "Could not flush windows registry node " +
+ "registry node " + byteArrayToString(windowsAbsolutePath()) byteArrayToString(windowsAbsolutePath()) +
+ " at root 0x" + Integer.toHexString(rootNativeHandle()) + " at root 0x" +
". Windows RegFlushKey(...) returned error code " + result + "."; Integer.toHexString(rootNativeHandle()) +
". Windows RegFlushKey(...) returned error code " +
result + ".";
logger().warning(info); logger().warning(info);
throw new BackingStoreException(info); throw new BackingStoreException(info);
} }
...@@ -842,15 +859,17 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -842,15 +859,17 @@ class WindowsPreferences extends AbstractPreferences{
int parentNativeHandle = int parentNativeHandle =
((WindowsPreferences)parent()).openKey(DELETE); ((WindowsPreferences)parent()).openKey(DELETE);
if (parentNativeHandle == NULL_NATIVE_HANDLE) { if (parentNativeHandle == NULL_NATIVE_HANDLE) {
throw new BackingStoreException("Could not open parent windows" throw new BackingStoreException(
+ "registry node of " + byteArrayToString(windowsAbsolutePath()) + "Could not open parent windows registry node of " +
" at root 0x" + Integer.toHexString(rootNativeHandle()) + "."); byteArrayToString(windowsAbsolutePath()) +
" at root 0x" +
Integer.toHexString(rootNativeHandle()) + ".");
} }
int result = int result =
WindowsRegDeleteKey(parentNativeHandle, toWindowsName(name())); WindowsRegDeleteKey(parentNativeHandle, toWindowsName(name()));
if (result != ERROR_SUCCESS) { if (result != ERROR_SUCCESS) {
String info = "Could not delete windows " String info = "Could not delete windows registry node " +
+ "registry node " + byteArrayToString(windowsAbsolutePath()) + byteArrayToString(windowsAbsolutePath()) +
" at root 0x" + Integer.toHexString(rootNativeHandle()) + " at root 0x" + Integer.toHexString(rootNativeHandle()) +
". Windows RegDeleteKeyEx(...) returned error code " + ". Windows RegDeleteKeyEx(...) returned error code " +
result + "."; result + ".";
...@@ -870,21 +889,23 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -870,21 +889,23 @@ class WindowsPreferences extends AbstractPreferences{
private static String toJavaName(byte[] windowsNameArray) { private static String toJavaName(byte[] windowsNameArray) {
String windowsName = byteArrayToString(windowsNameArray); String windowsName = byteArrayToString(windowsNameArray);
// check if Alt64 // check if Alt64
if ((windowsName.length()>1) && if ((windowsName.length() > 1) &&
(windowsName.substring(0,2).equals("/!"))) { (windowsName.substring(0, 2).equals("/!"))) {
return toJavaAlt64Name(windowsName); return toJavaAlt64Name(windowsName);
} }
StringBuffer javaName = new StringBuffer(); StringBuilder javaName = new StringBuilder();
char ch; char ch;
// Decode from simple encoding // Decode from simple encoding
for (int i = 0; i < windowsName.length(); i++){ for (int i = 0; i < windowsName.length(); i++) {
if ((ch = windowsName.charAt(i)) == '/') { if ((ch = windowsName.charAt(i)) == '/') {
char next = ' '; char next = ' ';
if ((windowsName.length() > i + 1) && if ((windowsName.length() > i + 1) &&
((next = windowsName.charAt(i+1)) >= 'A') && (next <= 'Z')) { ((next = windowsName.charAt(i+1)) >= 'A') &&
(next <= 'Z')) {
ch = next; ch = next;
i++; i++;
} else if ((windowsName.length() > i + 1) && (next == '/')) { } else if ((windowsName.length() > i + 1) &&
(next == '/')) {
ch = '\\'; ch = '\\';
i++; i++;
} }
...@@ -906,7 +927,7 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -906,7 +927,7 @@ class WindowsPreferences extends AbstractPreferences{
private static String toJavaAlt64Name(String windowsName) { private static String toJavaAlt64Name(String windowsName) {
byte[] byteBuffer = byte[] byteBuffer =
Base64.altBase64ToByteArray(windowsName.substring(2)); Base64.altBase64ToByteArray(windowsName.substring(2));
StringBuffer result = new StringBuffer(); StringBuilder result = new StringBuilder();
for (int i = 0; i < byteBuffer.length; i++) { for (int i = 0; i < byteBuffer.length; i++) {
int firstbyte = (byteBuffer[i++] & 0xff); int firstbyte = (byteBuffer[i++] & 0xff);
int secondbyte = (byteBuffer[i] & 0xff); int secondbyte = (byteBuffer[i] & 0xff);
...@@ -936,10 +957,10 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -936,10 +957,10 @@ class WindowsPreferences extends AbstractPreferences{
* Base64 class. * Base64 class.
*/ */
private static byte[] toWindowsName(String javaName) { private static byte[] toWindowsName(String javaName) {
StringBuffer windowsName = new StringBuffer(); StringBuilder windowsName = new StringBuilder();
for (int i = 0; i < javaName.length(); i++) { for (int i = 0; i < javaName.length(); i++) {
char ch =javaName.charAt(i); char ch = javaName.charAt(i);
if ((ch < 0x0020)||(ch > 0x007f)) { if ((ch < 0x0020) || (ch > 0x007f)) {
// If a non-trivial character encountered, use altBase64 // If a non-trivial character encountered, use altBase64
return toWindowsAlt64Name(javaName); return toWindowsAlt64Name(javaName);
} }
...@@ -948,7 +969,7 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -948,7 +969,7 @@ class WindowsPreferences extends AbstractPreferences{
} else if (ch == '/') { } else if (ch == '/') {
windowsName.append('\\'); windowsName.append('\\');
} else if ((ch >= 'A') && (ch <='Z')) { } else if ((ch >= 'A') && (ch <='Z')) {
windowsName.append("/" + ch); windowsName.append('/').append(ch);
} else { } else {
windowsName.append(ch); windowsName.append(ch);
} }
...@@ -972,8 +993,8 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -972,8 +993,8 @@ class WindowsPreferences extends AbstractPreferences{
javaNameArray[counter++] = (byte)ch; javaNameArray[counter++] = (byte)ch;
} }
return stringToByteArray( return stringToByteArray("/!" +
"/!" + Base64.byteArrayToAltBase64(javaNameArray)); Base64.byteArrayToAltBase64(javaNameArray));
} }
/** /**
...@@ -985,7 +1006,7 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -985,7 +1006,7 @@ class WindowsPreferences extends AbstractPreferences{
private static String toJavaValueString(byte[] windowsNameArray) { private static String toJavaValueString(byte[] windowsNameArray) {
// Use modified native2ascii algorithm // Use modified native2ascii algorithm
String windowsName = byteArrayToString(windowsNameArray); String windowsName = byteArrayToString(windowsNameArray);
StringBuffer javaName = new StringBuffer(); StringBuilder javaName = new StringBuilder();
char ch; char ch;
for (int i = 0; i < windowsName.length(); i++){ for (int i = 0; i < windowsName.length(); i++){
if ((ch = windowsName.charAt(i)) == '/') { if ((ch = windowsName.charAt(i)) == '/') {
...@@ -993,16 +1014,17 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -993,16 +1014,17 @@ class WindowsPreferences extends AbstractPreferences{
if (windowsName.length() > i + 1 && if (windowsName.length() > i + 1 &&
(next = windowsName.charAt(i + 1)) == 'u') { (next = windowsName.charAt(i + 1)) == 'u') {
if (windowsName.length() < i + 6){ if (windowsName.length() < i + 6) {
break; break;
} else { } else {
ch = (char)Integer.parseInt ch = (char)Integer.parseInt(
(windowsName.substring(i + 2, i + 6), 16); windowsName.substring(i + 2, i + 6), 16);
i += 5; i += 5;
} }
} else } else
if ((windowsName.length() > i + 1) && if ((windowsName.length() > i + 1) &&
((windowsName.charAt(i+1)) >= 'A') && (next <= 'Z')) { ((windowsName.charAt(i+1)) >= 'A') &&
(next <= 'Z')) {
ch = next; ch = next;
i++; i++;
} else if ((windowsName.length() > i + 1) && } else if ((windowsName.length() > i + 1) &&
...@@ -1028,14 +1050,14 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -1028,14 +1050,14 @@ class WindowsPreferences extends AbstractPreferences{
* to convert java string to a byte array of ASCII characters. * to convert java string to a byte array of ASCII characters.
*/ */
private static byte[] toWindowsValueString(String javaName) { private static byte[] toWindowsValueString(String javaName) {
StringBuffer windowsName = new StringBuffer(); StringBuilder windowsName = new StringBuilder();
for (int i = 0; i < javaName.length(); i++) { for (int i = 0; i < javaName.length(); i++) {
char ch =javaName.charAt(i); char ch = javaName.charAt(i);
if ((ch < 0x0020)||(ch > 0x007f)){ if ((ch < 0x0020) || (ch > 0x007f)){
// write \udddd // write \udddd
windowsName.append("/u"); windowsName.append("/u");
String hex = Integer.toHexString(javaName.charAt(i)); String hex = Integer.toHexString(javaName.charAt(i));
StringBuffer hex4 = new StringBuffer(hex); StringBuilder hex4 = new StringBuilder(hex);
hex4.reverse(); hex4.reverse();
int len = 4 - hex4.length(); int len = 4 - hex4.length();
for (int j = 0; j < len; j++){ for (int j = 0; j < len; j++){
...@@ -1049,7 +1071,7 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -1049,7 +1071,7 @@ class WindowsPreferences extends AbstractPreferences{
} else if (ch == '/') { } else if (ch == '/') {
windowsName.append('\\'); windowsName.append('\\');
} else if ((ch >= 'A') && (ch <='Z')) { } else if ((ch >= 'A') && (ch <='Z')) {
windowsName.append("/" + ch); windowsName.append('/').append(ch);
} else { } else {
windowsName.append(ch); windowsName.append(ch);
} }
...@@ -1061,8 +1083,9 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -1061,8 +1083,9 @@ class WindowsPreferences extends AbstractPreferences{
* Returns native handle for the top Windows node for this node. * Returns native handle for the top Windows node for this node.
*/ */
private int rootNativeHandle() { private int rootNativeHandle() {
return (isUserNode()? USER_ROOT_NATIVE_HANDLE : return (isUserNode()
SYSTEM_ROOT_NATIVE_HANDLE); ? USER_ROOT_NATIVE_HANDLE
: SYSTEM_ROOT_NATIVE_HANDLE);
} }
/** /**
...@@ -1081,7 +1104,7 @@ class WindowsPreferences extends AbstractPreferences{ ...@@ -1081,7 +1104,7 @@ class WindowsPreferences extends AbstractPreferences{
* Converts a null-terminated byte array to java string * Converts a null-terminated byte array to java string
*/ */
private static String byteArrayToString(byte[] array) { private static String byteArrayToString(byte[] array) {
StringBuffer result = new StringBuffer(); StringBuilder result = new StringBuilder();
for (int i = 0; i < array.length - 1; i++) { for (int i = 0; i < array.length - 1; i++) {
result.append((char)array[i]); result.append((char)array[i]);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册