Merge
This commit is contained in:
commit
239e6cacfc
@ -393,7 +393,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal> {
|
|||||||
* <p>Note that if the sequence of characters is already available
|
* <p>Note that if the sequence of characters is already available
|
||||||
* within a character array, using this constructor is faster than
|
* within a character array, using this constructor is faster than
|
||||||
* converting the {@code char} array to string and using the
|
* converting the {@code char} array to string and using the
|
||||||
* {@code BigDecimal(String)} constructor .
|
* {@code BigDecimal(String)} constructor.
|
||||||
*
|
*
|
||||||
* @param in {@code char} array that is the source of characters.
|
* @param in {@code char} array that is the source of characters.
|
||||||
* @param offset first character in the array to inspect.
|
* @param offset first character in the array to inspect.
|
||||||
@ -466,7 +466,8 @@ public class BigDecimal extends Number implements Comparable<BigDecimal> {
|
|||||||
} else if (c == '.') { // have dot
|
} else if (c == '.') { // have dot
|
||||||
// have dot
|
// have dot
|
||||||
if (dot) // two dots
|
if (dot) // two dots
|
||||||
throw new NumberFormatException();
|
throw new NumberFormatException("Character array"
|
||||||
|
+ " contains more than one decimal point.");
|
||||||
dot = true;
|
dot = true;
|
||||||
} else if (Character.isDigit(c)) { // slow path
|
} else if (Character.isDigit(c)) { // slow path
|
||||||
int digit = Character.digit(c, 10);
|
int digit = Character.digit(c, 10);
|
||||||
@ -488,14 +489,16 @@ public class BigDecimal extends Number implements Comparable<BigDecimal> {
|
|||||||
exp = parseExp(in, offset, len);
|
exp = parseExp(in, offset, len);
|
||||||
// Next test is required for backwards compatibility
|
// Next test is required for backwards compatibility
|
||||||
if ((int) exp != exp) // overflow
|
if ((int) exp != exp) // overflow
|
||||||
throw new NumberFormatException();
|
throw new NumberFormatException("Exponent overflow.");
|
||||||
break; // [saves a test]
|
break; // [saves a test]
|
||||||
} else {
|
} else {
|
||||||
throw new NumberFormatException();
|
throw new NumberFormatException("Character " + c
|
||||||
|
+ " is neither a decimal digit number, decimal point, nor"
|
||||||
|
+ " \"e\" notation exponential mark.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (prec == 0) // no digits found
|
if (prec == 0) // no digits found
|
||||||
throw new NumberFormatException();
|
throw new NumberFormatException("No digits found.");
|
||||||
// Adjust scale if exp is not zero.
|
// Adjust scale if exp is not zero.
|
||||||
if (exp != 0) { // had significant exponent
|
if (exp != 0) { // had significant exponent
|
||||||
scl = adjustScale(scl, exp);
|
scl = adjustScale(scl, exp);
|
||||||
@ -541,22 +544,24 @@ public class BigDecimal extends Number implements Comparable<BigDecimal> {
|
|||||||
if (c == '.') {
|
if (c == '.') {
|
||||||
// have dot
|
// have dot
|
||||||
if (dot) // two dots
|
if (dot) // two dots
|
||||||
throw new NumberFormatException();
|
throw new NumberFormatException("Character array"
|
||||||
|
+ " contains more than one decimal point.");
|
||||||
dot = true;
|
dot = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// exponent expected
|
// exponent expected
|
||||||
if ((c != 'e') && (c != 'E'))
|
if ((c != 'e') && (c != 'E'))
|
||||||
throw new NumberFormatException();
|
throw new NumberFormatException("Character array"
|
||||||
|
+ " is missing \"e\" notation exponential mark.");
|
||||||
exp = parseExp(in, offset, len);
|
exp = parseExp(in, offset, len);
|
||||||
// Next test is required for backwards compatibility
|
// Next test is required for backwards compatibility
|
||||||
if ((int) exp != exp) // overflow
|
if ((int) exp != exp) // overflow
|
||||||
throw new NumberFormatException();
|
throw new NumberFormatException("Exponent overflow.");
|
||||||
break; // [saves a test]
|
break; // [saves a test]
|
||||||
}
|
}
|
||||||
// here when no characters left
|
// here when no characters left
|
||||||
if (prec == 0) // no digits found
|
if (prec == 0) // no digits found
|
||||||
throw new NumberFormatException();
|
throw new NumberFormatException("No digits found.");
|
||||||
// Adjust scale if exp is not zero.
|
// Adjust scale if exp is not zero.
|
||||||
if (exp != 0) { // had significant exponent
|
if (exp != 0) { // had significant exponent
|
||||||
scl = adjustScale(scl, exp);
|
scl = adjustScale(scl, exp);
|
||||||
@ -592,10 +597,10 @@ public class BigDecimal extends Number implements Comparable<BigDecimal> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (ArrayIndexOutOfBoundsException e) {
|
} catch (ArrayIndexOutOfBoundsException | NegativeArraySizeException e) {
|
||||||
throw new NumberFormatException();
|
NumberFormatException nfe = new NumberFormatException();
|
||||||
} catch (NegativeArraySizeException e) {
|
nfe.initCause(e);
|
||||||
throw new NumberFormatException();
|
throw nfe;
|
||||||
}
|
}
|
||||||
this.scale = scl;
|
this.scale = scl;
|
||||||
this.precision = prec;
|
this.precision = prec;
|
||||||
@ -627,7 +632,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal> {
|
|||||||
len--;
|
len--;
|
||||||
}
|
}
|
||||||
if (len <= 0) // no exponent digits
|
if (len <= 0) // no exponent digits
|
||||||
throw new NumberFormatException();
|
throw new NumberFormatException("No exponent digits.");
|
||||||
// skip leading zeros in the exponent
|
// skip leading zeros in the exponent
|
||||||
while (len > 10 && (c=='0' || (Character.digit(c, 10) == 0))) {
|
while (len > 10 && (c=='0' || (Character.digit(c, 10) == 0))) {
|
||||||
offset++;
|
offset++;
|
||||||
@ -635,7 +640,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal> {
|
|||||||
len--;
|
len--;
|
||||||
}
|
}
|
||||||
if (len > 10) // too many nonzero exponent digits
|
if (len > 10) // too many nonzero exponent digits
|
||||||
throw new NumberFormatException();
|
throw new NumberFormatException("Too many nonzero exponent digits.");
|
||||||
// c now holds first digit of exponent
|
// c now holds first digit of exponent
|
||||||
for (;; len--) {
|
for (;; len--) {
|
||||||
int v;
|
int v;
|
||||||
@ -644,7 +649,7 @@ public class BigDecimal extends Number implements Comparable<BigDecimal> {
|
|||||||
} else {
|
} else {
|
||||||
v = Character.digit(c, 10);
|
v = Character.digit(c, 10);
|
||||||
if (v < 0) // not a digit
|
if (v < 0) // not a digit
|
||||||
throw new NumberFormatException();
|
throw new NumberFormatException("Not a digit.");
|
||||||
}
|
}
|
||||||
exp = exp * 10 + v;
|
exp = exp * 10 + v;
|
||||||
if (len == 1)
|
if (len == 1)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1996, 2014, 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
|
||||||
@ -117,7 +117,6 @@ abstract class DSA extends SignatureSpi {
|
|||||||
if (params == null) {
|
if (params == null) {
|
||||||
throw new InvalidKeyException("DSA private key lacks parameters");
|
throw new InvalidKeyException("DSA private key lacks parameters");
|
||||||
}
|
}
|
||||||
checkKey(params);
|
|
||||||
|
|
||||||
this.params = params;
|
this.params = params;
|
||||||
this.presetX = priv.getX();
|
this.presetX = priv.getX();
|
||||||
@ -149,7 +148,6 @@ abstract class DSA extends SignatureSpi {
|
|||||||
if (params == null) {
|
if (params == null) {
|
||||||
throw new InvalidKeyException("DSA public key lacks parameters");
|
throw new InvalidKeyException("DSA public key lacks parameters");
|
||||||
}
|
}
|
||||||
checkKey(params);
|
|
||||||
|
|
||||||
this.params = params;
|
this.params = params;
|
||||||
this.presetY = pub.getY();
|
this.presetY = pub.getY();
|
||||||
@ -291,16 +289,6 @@ abstract class DSA extends SignatureSpi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void checkKey(DSAParams params) throws InvalidKeyException {
|
|
||||||
// FIPS186-3 states in sec4.2 that a hash function which provides
|
|
||||||
// a lower security strength than the (L, N) pair ordinarily should
|
|
||||||
// not be used.
|
|
||||||
int valueN = params.getQ().bitLength();
|
|
||||||
if (valueN > md.getDigestLength()*8) {
|
|
||||||
throw new InvalidKeyException("Key is too strong for this signature algorithm");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private BigInteger generateR(BigInteger p, BigInteger q, BigInteger g,
|
private BigInteger generateR(BigInteger p, BigInteger q, BigInteger g,
|
||||||
BigInteger k) {
|
BigInteger k) {
|
||||||
BigInteger temp = g.modPow(k, p);
|
BigInteger temp = g.modPow(k, p);
|
||||||
@ -480,14 +468,6 @@ abstract class DSA extends SignatureSpi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void checkKey(DSAParams params) throws InvalidKeyException {
|
|
||||||
int valueL = params.getP().bitLength();
|
|
||||||
if (valueL > 1024) {
|
|
||||||
throw new InvalidKeyException("Key is too long for this algorithm");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Please read bug report 4044247 for an alternative, faster,
|
* Please read bug report 4044247 for an alternative, faster,
|
||||||
* NON-FIPS approved method to generate K
|
* NON-FIPS approved method to generate K
|
||||||
|
@ -76,10 +76,11 @@ Java_java_util_zip_Deflater_init(JNIEnv *env, jclass cls, jint level,
|
|||||||
JNU_ThrowOutOfMemoryError(env, 0);
|
JNU_ThrowOutOfMemoryError(env, 0);
|
||||||
return jlong_zero;
|
return jlong_zero;
|
||||||
} else {
|
} else {
|
||||||
char *msg;
|
const char *msg;
|
||||||
switch (deflateInit2(strm, level, Z_DEFLATED,
|
int ret = deflateInit2(strm, level, Z_DEFLATED,
|
||||||
nowrap ? -MAX_WBITS : MAX_WBITS,
|
nowrap ? -MAX_WBITS : MAX_WBITS,
|
||||||
DEF_MEM_LEVEL, strategy)) {
|
DEF_MEM_LEVEL, strategy);
|
||||||
|
switch (ret) {
|
||||||
case Z_OK:
|
case Z_OK:
|
||||||
return ptr_to_jlong(strm);
|
return ptr_to_jlong(strm);
|
||||||
case Z_MEM_ERROR:
|
case Z_MEM_ERROR:
|
||||||
@ -91,7 +92,11 @@ Java_java_util_zip_Deflater_init(JNIEnv *env, jclass cls, jint level,
|
|||||||
JNU_ThrowIllegalArgumentException(env, 0);
|
JNU_ThrowIllegalArgumentException(env, 0);
|
||||||
return jlong_zero;
|
return jlong_zero;
|
||||||
default:
|
default:
|
||||||
msg = strm->msg;
|
msg = ((strm->msg != NULL) ? strm->msg :
|
||||||
|
(ret == Z_VERSION_ERROR) ?
|
||||||
|
"zlib returned Z_VERSION_ERROR: "
|
||||||
|
"compile time and runtime zlib implementations differ" :
|
||||||
|
"unknown error initializing zlib library");
|
||||||
free(strm);
|
free(strm);
|
||||||
JNU_ThrowInternalError(env, msg);
|
JNU_ThrowInternalError(env, msg);
|
||||||
return jlong_zero;
|
return jlong_zero;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2004, 2014, 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
|
||||||
@ -42,7 +42,7 @@ import java.util.regex.*;
|
|||||||
*/
|
*/
|
||||||
public class AliasFileParser {
|
public class AliasFileParser {
|
||||||
private static final String ALIAS = "alias";
|
private static final String ALIAS = "alias";
|
||||||
private static final boolean DEBUG = false;
|
// 8028357 removed old, inefficient debug logging
|
||||||
|
|
||||||
// other variables
|
// other variables
|
||||||
private URL inputfile;
|
private URL inputfile;
|
||||||
@ -64,21 +64,12 @@ public class AliasFileParser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void logln(String s) {
|
|
||||||
if (DEBUG) {
|
|
||||||
System.err.println(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* method to get the next token as a Token type
|
* method to get the next token as a Token type
|
||||||
*/
|
*/
|
||||||
private void nextToken() throws IOException {
|
private void nextToken() throws IOException {
|
||||||
st.nextToken();
|
st.nextToken();
|
||||||
currentToken = new Token(st.ttype, st.sval);
|
currentToken = new Token(st.ttype, st.sval);
|
||||||
|
|
||||||
logln("Read token: type = " + currentToken.ttype
|
|
||||||
+ " string = " + currentToken.sval);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -90,8 +81,6 @@ public class AliasFileParser {
|
|||||||
|
|
||||||
if ((currentToken.ttype == ttype)
|
if ((currentToken.ttype == ttype)
|
||||||
&& (currentToken.sval.compareTo(token) == 0)) {
|
&& (currentToken.sval.compareTo(token) == 0)) {
|
||||||
logln("matched type: " + ttype + " and token = "
|
|
||||||
+ currentToken.sval);
|
|
||||||
nextToken();
|
nextToken();
|
||||||
} else {
|
} else {
|
||||||
throw new SyntaxException(st.lineno());
|
throw new SyntaxException(st.lineno());
|
||||||
@ -105,7 +94,6 @@ public class AliasFileParser {
|
|||||||
*/
|
*/
|
||||||
private void match(int ttype) throws IOException, SyntaxException {
|
private void match(int ttype) throws IOException, SyntaxException {
|
||||||
if (currentToken.ttype == ttype) {
|
if (currentToken.ttype == ttype) {
|
||||||
logln("matched type: " + ttype + ", token = " + currentToken.sval);
|
|
||||||
nextToken();
|
nextToken();
|
||||||
} else {
|
} else {
|
||||||
throw new SyntaxException(st.lineno());
|
throw new SyntaxException(st.lineno());
|
||||||
@ -157,8 +145,6 @@ public class AliasFileParser {
|
|||||||
} while ((currentToken.ttype != StreamTokenizer.TT_EOF)
|
} while ((currentToken.ttype != StreamTokenizer.TT_EOF)
|
||||||
&& (currentToken.sval.compareTo(ALIAS) != 0));
|
&& (currentToken.sval.compareTo(ALIAS) != 0));
|
||||||
|
|
||||||
logln("adding map entry for " + name + " values = " + aliases);
|
|
||||||
|
|
||||||
map.put(name, aliases);
|
map.put(name, aliases);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2004, 2014, 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
|
||||||
@ -35,7 +35,7 @@ import java.util.*;
|
|||||||
*/
|
*/
|
||||||
public class CountedTimerTaskUtils {
|
public class CountedTimerTaskUtils {
|
||||||
|
|
||||||
private static final boolean DEBUG = false;
|
// 8028357 removed old, inefficient debug logging
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reschedule a CountedTimeTask at a different interval. Probably not
|
* Reschedule a CountedTimeTask at a different interval. Probably not
|
||||||
@ -58,14 +58,6 @@ public class CountedTimerTaskUtils {
|
|||||||
long lastRun = oldTask.scheduledExecutionTime();
|
long lastRun = oldTask.scheduledExecutionTime();
|
||||||
long expired = now - lastRun;
|
long expired = now - lastRun;
|
||||||
|
|
||||||
if (DEBUG) {
|
|
||||||
System.err.println("computing timer delay: "
|
|
||||||
+ " oldInterval = " + oldInterval
|
|
||||||
+ " newInterval = " + newInterval
|
|
||||||
+ " samples = " + oldTask.executionCount()
|
|
||||||
+ " expired = " + expired);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* check if original task ever ran - if not, then lastRun is
|
* check if original task ever ran - if not, then lastRun is
|
||||||
* undefined and we simply set the delay to 0.
|
* undefined and we simply set the delay to 0.
|
||||||
@ -76,12 +68,6 @@ public class CountedTimerTaskUtils {
|
|||||||
delay = remainder >= 0 ? remainder : 0;
|
delay = remainder >= 0 ? remainder : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DEBUG) {
|
|
||||||
System.err.println("rescheduling sampler task: interval = "
|
|
||||||
+ newInterval
|
|
||||||
+ " delay = " + delay);
|
|
||||||
}
|
|
||||||
|
|
||||||
timer.schedule(newTask, delay, newInterval);
|
timer.schedule(newTask, delay, newInterval);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,8 @@ import java.nio.*;
|
|||||||
*/
|
*/
|
||||||
public class PerfDataBuffer extends PerfDataBufferImpl {
|
public class PerfDataBuffer extends PerfDataBufferImpl {
|
||||||
|
|
||||||
private static final boolean DEBUG = false;
|
// 8028357 removed old, inefficient debug logging
|
||||||
|
|
||||||
private static final int syncWaitMs =
|
private static final int syncWaitMs =
|
||||||
Integer.getInteger("sun.jvmstat.perdata.syncWaitMs", 5000);
|
Integer.getInteger("sun.jvmstat.perdata.syncWaitMs", 5000);
|
||||||
private static final ArrayList<Monitor> EMPTY_LIST = new ArrayList<Monitor>(0);
|
private static final ArrayList<Monitor> EMPTY_LIST = new ArrayList<Monitor>(0);
|
||||||
@ -268,18 +269,13 @@ public class PerfDataBuffer extends PerfDataBufferImpl {
|
|||||||
* loop waiting for the ticks counter to be non zero. This is
|
* loop waiting for the ticks counter to be non zero. This is
|
||||||
* an indication that the jvm is initialized.
|
* an indication that the jvm is initialized.
|
||||||
*/
|
*/
|
||||||
log("synchWithTarget: " + lvmid + " ");
|
|
||||||
while (ticks.longValue() == 0) {
|
while (ticks.longValue() == 0) {
|
||||||
log(".");
|
|
||||||
|
|
||||||
try { Thread.sleep(20); } catch (InterruptedException e) { }
|
try { Thread.sleep(20); } catch (InterruptedException e) { }
|
||||||
|
|
||||||
if (System.currentTimeMillis() > timeLimit) {
|
if (System.currentTimeMillis() > timeLimit) {
|
||||||
lognl("failed: " + lvmid);
|
|
||||||
throw new MonitorException("Could Not Synchronize with target");
|
throw new MonitorException("Could Not Synchronize with target");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lognl("success: " + lvmid);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -291,24 +287,18 @@ public class PerfDataBuffer extends PerfDataBufferImpl {
|
|||||||
throws MonitorException {
|
throws MonitorException {
|
||||||
Monitor monitor = null;
|
Monitor monitor = null;
|
||||||
|
|
||||||
log("polling for: " + lvmid + "," + name + " ");
|
|
||||||
|
|
||||||
pollForEntry = nextEntry;
|
pollForEntry = nextEntry;
|
||||||
while ((monitor = map.get(name)) == null) {
|
while ((monitor = map.get(name)) == null) {
|
||||||
log(".");
|
|
||||||
|
|
||||||
try { Thread.sleep(20); } catch (InterruptedException e) { }
|
try { Thread.sleep(20); } catch (InterruptedException e) { }
|
||||||
|
|
||||||
long t = System.currentTimeMillis();
|
long t = System.currentTimeMillis();
|
||||||
if ((t > timeLimit) || (overflow.intValue() > 0)) {
|
if ((t > timeLimit) || (overflow.intValue() > 0)) {
|
||||||
lognl("failed: " + lvmid + "," + name);
|
|
||||||
dumpAll(map, lvmid);
|
|
||||||
throw new MonitorException("Could not find expected counter");
|
throw new MonitorException("Could not find expected counter");
|
||||||
}
|
}
|
||||||
|
|
||||||
getNewMonitors(map);
|
getNewMonitors(map);
|
||||||
}
|
}
|
||||||
lognl("success: " + lvmid + "," + name);
|
|
||||||
return monitor;
|
return monitor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -481,8 +471,6 @@ public class PerfDataBuffer extends PerfDataBufferImpl {
|
|||||||
|
|
||||||
// check for the end of the buffer
|
// check for the end of the buffer
|
||||||
if (nextEntry == buffer.limit()) {
|
if (nextEntry == buffer.limit()) {
|
||||||
lognl("getNextMonitorEntry():"
|
|
||||||
+ " nextEntry == buffer.limit(): returning");
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -614,37 +602,4 @@ public class PerfDataBuffer extends PerfDataBufferImpl {
|
|||||||
nextEntry = entryStart + entryLength;
|
nextEntry = entryStart + entryLength;
|
||||||
return monitor;
|
return monitor;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Method to dump debugging information
|
|
||||||
*/
|
|
||||||
private void dumpAll(Map<String, Monitor> map, int lvmid) {
|
|
||||||
if (DEBUG) {
|
|
||||||
Set<String> keys = map.keySet();
|
|
||||||
|
|
||||||
System.err.println("Dump for " + lvmid);
|
|
||||||
int j = 0;
|
|
||||||
for (Iterator<String> i = keys.iterator(); i.hasNext(); j++) {
|
|
||||||
Monitor monitor = map.get(i.next());
|
|
||||||
System.err.println(j + "\t" + monitor.getName()
|
|
||||||
+ "=" + monitor.getValue());
|
|
||||||
}
|
|
||||||
System.err.println("nextEntry = " + nextEntry
|
|
||||||
+ " pollForEntry = " + pollForEntry);
|
|
||||||
System.err.println("Buffer info:");
|
|
||||||
System.err.println("buffer = " + buffer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lognl(String s) {
|
|
||||||
if (DEBUG) {
|
|
||||||
System.err.println(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void log(String s) {
|
|
||||||
if (DEBUG) {
|
|
||||||
System.err.print(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,8 @@ import java.nio.*;
|
|||||||
*/
|
*/
|
||||||
public class PerfDataBuffer extends PerfDataBufferImpl {
|
public class PerfDataBuffer extends PerfDataBufferImpl {
|
||||||
|
|
||||||
private static final boolean DEBUG = false;
|
// 8028357 removed old, inefficient debug logging
|
||||||
|
|
||||||
private static final int syncWaitMs =
|
private static final int syncWaitMs =
|
||||||
Integer.getInteger("sun.jvmstat.perdata.syncWaitMs", 5000);
|
Integer.getInteger("sun.jvmstat.perdata.syncWaitMs", 5000);
|
||||||
private static final ArrayList<Monitor> EMPTY_LIST = new ArrayList<>(0);
|
private static final ArrayList<Monitor> EMPTY_LIST = new ArrayList<>(0);
|
||||||
@ -264,20 +265,15 @@ public class PerfDataBuffer extends PerfDataBufferImpl {
|
|||||||
long timeLimit = System.currentTimeMillis() + syncWaitMs;
|
long timeLimit = System.currentTimeMillis() + syncWaitMs;
|
||||||
|
|
||||||
// loop waiting for the accessible indicater to be non-zero
|
// loop waiting for the accessible indicater to be non-zero
|
||||||
log("synchWithTarget: " + lvmid + " ");
|
|
||||||
while (!prologue.isAccessible()) {
|
while (!prologue.isAccessible()) {
|
||||||
|
|
||||||
log(".");
|
|
||||||
|
|
||||||
// give the target jvm a chance to complete initializatoin
|
// give the target jvm a chance to complete initializatoin
|
||||||
try { Thread.sleep(20); } catch (InterruptedException e) { }
|
try { Thread.sleep(20); } catch (InterruptedException e) { }
|
||||||
|
|
||||||
if (System.currentTimeMillis() > timeLimit) {
|
if (System.currentTimeMillis() > timeLimit) {
|
||||||
logln("failed: " + lvmid);
|
|
||||||
throw new MonitorException("Could not synchronize with target");
|
throw new MonitorException("Could not synchronize with target");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
logln("success: " + lvmid);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -306,8 +302,6 @@ public class PerfDataBuffer extends PerfDataBufferImpl {
|
|||||||
|
|
||||||
// check for end of the buffer
|
// check for end of the buffer
|
||||||
if (nextEntry == buffer.limit()) {
|
if (nextEntry == buffer.limit()) {
|
||||||
logln("getNextMonitorEntry():"
|
|
||||||
+ " nextEntry == buffer.limit(): returning");
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -346,9 +340,6 @@ public class PerfDataBuffer extends PerfDataBufferImpl {
|
|||||||
byte varByte = buffer.get();
|
byte varByte = buffer.get();
|
||||||
int dataOffset = buffer.getInt();
|
int dataOffset = buffer.getInt();
|
||||||
|
|
||||||
dump_entry_fixed(entryStart, nameOffset, vectorLength, typeCodeByte,
|
|
||||||
flags, unitsByte, varByte, dataOffset);
|
|
||||||
|
|
||||||
// convert common attributes to their object types
|
// convert common attributes to their object types
|
||||||
Units units = Units.toUnits(unitsByte);
|
Units units = Units.toUnits(unitsByte);
|
||||||
Variability variability = Variability.toVariability(varByte);
|
Variability variability = Variability.toVariability(varByte);
|
||||||
@ -439,8 +430,6 @@ public class PerfDataBuffer extends PerfDataBufferImpl {
|
|||||||
// set the position to the start of the data item
|
// set the position to the start of the data item
|
||||||
buffer.position(entryStart + dataOffset);
|
buffer.position(entryStart + dataOffset);
|
||||||
|
|
||||||
dump_entry_variable(name, buffer, dataSize);
|
|
||||||
|
|
||||||
if (vectorLength == 0) {
|
if (vectorLength == 0) {
|
||||||
// create a scalar Monitor object
|
// create a scalar Monitor object
|
||||||
if (typeCode == TypeCode.LONG) {
|
if (typeCode == TypeCode.LONG) {
|
||||||
@ -514,103 +503,4 @@ public class PerfDataBuffer extends PerfDataBufferImpl {
|
|||||||
nextEntry = entryStart + entryLength;
|
nextEntry = entryStart + entryLength;
|
||||||
return monitor;
|
return monitor;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Method to dump debugging information
|
|
||||||
*/
|
|
||||||
private void dumpAll(Map<String, Monitor> map, int lvmid) {
|
|
||||||
if (DEBUG) {
|
|
||||||
Set<String> keys = map.keySet();
|
|
||||||
|
|
||||||
System.err.println("Dump for " + lvmid);
|
|
||||||
int j = 0;
|
|
||||||
for (Iterator<String> i = keys.iterator(); i.hasNext(); j++) {
|
|
||||||
Monitor monitor = map.get(i.next());
|
|
||||||
System.err.println(j + "\t" + monitor.getName()
|
|
||||||
+ "=" + monitor.getValue());
|
|
||||||
}
|
|
||||||
System.err.println("nextEntry = " + nextEntry);
|
|
||||||
System.err.println("Buffer info:");
|
|
||||||
System.err.println("buffer = " + buffer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Method to dump the fixed portion of an entry.
|
|
||||||
*/
|
|
||||||
private void dump_entry_fixed(int entry_start, int nameOffset,
|
|
||||||
int vectorLength, byte typeCodeByte,
|
|
||||||
byte flags, byte unitsByte, byte varByte,
|
|
||||||
int dataOffset) {
|
|
||||||
if (DEBUG) {
|
|
||||||
System.err.println("Entry at offset: 0x"
|
|
||||||
+ Integer.toHexString(entry_start));
|
|
||||||
System.err.println("\tname_offset = 0x"
|
|
||||||
+ Integer.toHexString(nameOffset));
|
|
||||||
System.err.println("\tvector_length = 0x"
|
|
||||||
+ Integer.toHexString(vectorLength));
|
|
||||||
System.err.println("\tdata_type = 0x"
|
|
||||||
+ Integer.toHexString(typeCodeByte));
|
|
||||||
System.err.println("\tflags = 0x"
|
|
||||||
+ Integer.toHexString(flags));
|
|
||||||
System.err.println("\tdata_units = 0x"
|
|
||||||
+ Integer.toHexString(unitsByte));
|
|
||||||
System.err.println("\tdata_variability = 0x"
|
|
||||||
+ Integer.toHexString(varByte));
|
|
||||||
System.err.println("\tdata_offset = 0x"
|
|
||||||
+ Integer.toHexString(dataOffset));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void dump_entry_variable(String name, ByteBuffer bb, int size) {
|
|
||||||
if (DEBUG) {
|
|
||||||
char[] toHex = new char[] { '0', '1', '2', '3',
|
|
||||||
'4', '5', '6', '7',
|
|
||||||
'8', '9', 'a', 'b',
|
|
||||||
'c', 'd', 'e', 'f' };
|
|
||||||
|
|
||||||
ByteBuffer data = bb.slice();
|
|
||||||
data.limit(size);
|
|
||||||
|
|
||||||
System.err.println("\tname = " + name);
|
|
||||||
System.err.println("\tdata = ");
|
|
||||||
|
|
||||||
int count=0;
|
|
||||||
while (data.hasRemaining()) {
|
|
||||||
byte b = data.get();
|
|
||||||
byte high = (byte)((b >> 8) & 0x0f);
|
|
||||||
byte low = (byte)(b & 0x0f);
|
|
||||||
|
|
||||||
if (count % 16 == 0) {
|
|
||||||
System.err.print("\t\t" + Integer.toHexString(count / 16)
|
|
||||||
+ ": ");
|
|
||||||
}
|
|
||||||
|
|
||||||
System.err.print(String.valueOf(toHex[high])
|
|
||||||
+ String.valueOf(toHex[low]));
|
|
||||||
|
|
||||||
count++;
|
|
||||||
if (count % 16 == 0) {
|
|
||||||
System.err.println();
|
|
||||||
} else {
|
|
||||||
System.err.print(" ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (count % 16 != 0) {
|
|
||||||
System.err.println();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void logln(String s) {
|
|
||||||
if (DEBUG) {
|
|
||||||
System.err.println(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void log(String s) {
|
|
||||||
if (DEBUG) {
|
|
||||||
System.err.print(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -120,6 +120,10 @@
|
|||||||
|
|
||||||
# jdk_lang
|
# jdk_lang
|
||||||
|
|
||||||
|
# 8029891
|
||||||
|
java/lang/ClassLoader/deadlock/GetResource.java generic-all
|
||||||
|
|
||||||
|
|
||||||
############################################################################
|
############################################################################
|
||||||
|
|
||||||
# jdk_instrument
|
# jdk_instrument
|
||||||
@ -264,7 +268,7 @@ java/security/Security/ClassLoaderDeadlock/Deadlock2.sh generic-all
|
|||||||
|
|
||||||
# Tests take too long, on sparcs see 7143279
|
# Tests take too long, on sparcs see 7143279
|
||||||
# also see 8059906
|
# also see 8059906
|
||||||
tools/pack200/CommandLineTests.java
|
tools/pack200/CommandLineTests.java generic-all
|
||||||
tools/pack200/Pack200Test.java solaris-all,macosx-all
|
tools/pack200/Pack200Test.java solaris-all,macosx-all
|
||||||
|
|
||||||
# 8007410
|
# 8007410
|
||||||
|
138
jdk/test/javax/smartcardio/CommandAPDUTest.java
Normal file
138
jdk/test/javax/smartcardio/CommandAPDUTest.java
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2007, 2014, 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
|
||||||
|
* 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @test
|
||||||
|
* @bug 8049021
|
||||||
|
* @summary Test different constructors for CommandAPDU and check CLA,INS,NC,NE,
|
||||||
|
* P1,and P2
|
||||||
|
* @run testng CommandAPDUTest
|
||||||
|
*/
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
import javax.smartcardio.CommandAPDU;
|
||||||
|
import static org.testng.Assert.*;
|
||||||
|
import org.testng.annotations.BeforeClass;
|
||||||
|
import org.testng.annotations.DataProvider;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
public class CommandAPDUTest {
|
||||||
|
|
||||||
|
static final byte[] C1 = {(byte) 0x00, (byte) 0xA4, (byte) 0x04,
|
||||||
|
(byte) 0x00, (byte) 0x07, (byte) 0xA0, (byte) 0x00, (byte) 0x00,
|
||||||
|
(byte) 0x00, (byte) 0x62, (byte) 0x81, (byte) 0x01, (byte) 0x00};
|
||||||
|
static int cla, ins, nc, ne, p1, p2;
|
||||||
|
static byte[] apdu, data;
|
||||||
|
static CommandAPDU cm1, cm2, cm3, cm4, cm5, cm6, cm7, cm8, cm9;
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void setUpClass() throws Exception {
|
||||||
|
//expected values of apdu, data, headers, nc, ne
|
||||||
|
CommandAPDU capdu = new CommandAPDU(C1);
|
||||||
|
apdu = capdu.getBytes();
|
||||||
|
data = capdu.getData();
|
||||||
|
|
||||||
|
cla = capdu.getCLA();
|
||||||
|
if (cla != (C1[0] & 0xff)) {
|
||||||
|
throw new RuntimeException("Failure: cla is not right");
|
||||||
|
}
|
||||||
|
|
||||||
|
ins = capdu.getINS();
|
||||||
|
if (ins != (C1[1] & 0xff)) {
|
||||||
|
throw new RuntimeException("Failure: ins is not right");
|
||||||
|
}
|
||||||
|
|
||||||
|
p1 = capdu.getP1();
|
||||||
|
if (p1 != (C1[2] & 0xff)) {
|
||||||
|
throw new RuntimeException("Failure: p1 is not right");
|
||||||
|
}
|
||||||
|
|
||||||
|
p2 = capdu.getP2();
|
||||||
|
if (p2 != (C1[3] & 0xff)) {
|
||||||
|
throw new RuntimeException("Failure: p2 is not right");
|
||||||
|
}
|
||||||
|
|
||||||
|
nc = capdu.getNc();
|
||||||
|
ne = capdu.getNe();
|
||||||
|
|
||||||
|
//Test on following constructors
|
||||||
|
cm1 = new CommandAPDU(apdu);
|
||||||
|
cm2 = new CommandAPDU(cla, ins, p1, p2);
|
||||||
|
cm3 = new CommandAPDU(cla, ins, p1, p2, data);
|
||||||
|
cm4 = new CommandAPDU(cla, ins, p1, p2, data, ne);
|
||||||
|
cm5 = new CommandAPDU(cla, ins, p1, p2, ne);
|
||||||
|
cm6 = new CommandAPDU(ByteBuffer.wrap(apdu));
|
||||||
|
cm7 = new CommandAPDU(apdu, 0, apdu.length);
|
||||||
|
cm8 = new CommandAPDU(cla, ins, p1, p2, data, 0, nc);
|
||||||
|
cm9 = new CommandAPDU(cla, ins, p1, p2, data, 0, nc, ne);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(dataProvider = "provider1")
|
||||||
|
public static void testHeaders(CommandAPDU cm) {
|
||||||
|
assertEquals(cla, cm.getCLA());
|
||||||
|
assertEquals(ins, cm.getINS());
|
||||||
|
assertEquals(p1, cm.getP1());
|
||||||
|
assertEquals(p2, cm.getP2());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(dataProvider = "provider2")
|
||||||
|
public static void testAPDU(CommandAPDU cm) {
|
||||||
|
assertEquals(apdu, cm.getBytes());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(dataProvider = "provider3")
|
||||||
|
public static void testData(CommandAPDU cm) {
|
||||||
|
assertEquals(data, cm.getData());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(dataProvider = "provider3")
|
||||||
|
public static void testNC(CommandAPDU cm) {
|
||||||
|
assertEquals(nc, cm.getNc());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(dataProvider = "provider4")
|
||||||
|
public static void testNE(CommandAPDU cm) {
|
||||||
|
assertEquals(ne, cm.getNe());
|
||||||
|
}
|
||||||
|
|
||||||
|
@DataProvider
|
||||||
|
public Object[][] provider1() {
|
||||||
|
return new Object[][]{{cm1}, {cm2}, {cm3}, {cm4}, {cm5}, {cm6}, {cm7},
|
||||||
|
{cm8}, {cm9}};
|
||||||
|
}
|
||||||
|
|
||||||
|
@DataProvider
|
||||||
|
public Object[][] provider2() {
|
||||||
|
return new Object[][]{{cm1}, {cm6}, {cm7}};
|
||||||
|
}
|
||||||
|
|
||||||
|
@DataProvider
|
||||||
|
public Object[][] provider3() {
|
||||||
|
return new Object[][]{{cm1}, {cm3}, {cm4}, {cm6}, {cm7}, {cm8}, {cm9}};
|
||||||
|
}
|
||||||
|
|
||||||
|
@DataProvider
|
||||||
|
public Object[][] provider4() {
|
||||||
|
return new Object[][]{{cm1}, {cm4}, {cm5}, {cm6}, {cm7}, {cm9}};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
71
jdk/test/javax/smartcardio/ResponseAPDUTest.java
Normal file
71
jdk/test/javax/smartcardio/ResponseAPDUTest.java
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2007, 2014, 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
|
||||||
|
* 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @test
|
||||||
|
* @bug 8049021
|
||||||
|
* @summary Construct ResponseAPDU from byte array and check NR< SW, SW1 and SW2
|
||||||
|
* @run testng ResponseAPDUTest
|
||||||
|
*/
|
||||||
|
import javax.smartcardio.ResponseAPDU;
|
||||||
|
import static org.testng.Assert.*;
|
||||||
|
import org.testng.annotations.BeforeClass;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
public class ResponseAPDUTest {
|
||||||
|
|
||||||
|
static final byte[] R1 = {(byte) 0x07, (byte) 0xA0, (byte) 0x00,
|
||||||
|
(byte) 0x00, (byte) 0x00, (byte) 0x62, (byte) 0x81, (byte) 0x01,
|
||||||
|
(byte) 0x04, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x24,
|
||||||
|
(byte) 0x05, (byte) 0x00, (byte) 0x0B, (byte) 0x04, (byte) 0xB0,
|
||||||
|
(byte) 0x25, (byte) 0x90, (byte) 0x00};
|
||||||
|
static final ResponseAPDU RAPDU = new ResponseAPDU(R1);
|
||||||
|
static byte[] expectedData;
|
||||||
|
static int expectedNr, expectedSw1, expectedSw2, expectedSw;
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void setUpClass() throws Exception {
|
||||||
|
//expected values for data,nr,sw1,sw2 and sw
|
||||||
|
|
||||||
|
int apduLen = R1.length;
|
||||||
|
expectedData = new byte[apduLen - 2];
|
||||||
|
for (int i = 0; i < (apduLen - 2); i++) {
|
||||||
|
expectedData[i] = R1[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
expectedNr = expectedData.length;
|
||||||
|
expectedSw1 = R1[apduLen - 2] & 0xff;
|
||||||
|
expectedSw2 = R1[apduLen - 1] & 0xff;
|
||||||
|
expectedSw = (expectedSw1 << 8) | expectedSw2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public static void test() {
|
||||||
|
assertEquals(RAPDU.getBytes(), R1);
|
||||||
|
assertEquals(RAPDU.getData(), expectedData);
|
||||||
|
assertEquals(RAPDU.getNr(), expectedNr);
|
||||||
|
assertEquals(RAPDU.getSW(), expectedSw);
|
||||||
|
assertEquals(RAPDU.getSW1(), expectedSw1);
|
||||||
|
assertEquals(RAPDU.getSW2(), expectedSw2);
|
||||||
|
}
|
||||||
|
}
|
72
jdk/test/javax/smartcardio/TerminalFactorySpiTest.java
Normal file
72
jdk/test/javax/smartcardio/TerminalFactorySpiTest.java
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2007, 2014, 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
|
||||||
|
* 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @test
|
||||||
|
* @bug 8049021
|
||||||
|
* @summary Test if we can write new provider for smart card
|
||||||
|
* @run main/othervm/policy=policy TerminalFactorySpiTest
|
||||||
|
*/
|
||||||
|
import java.security.Provider;
|
||||||
|
import java.security.Security;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import javax.smartcardio.CardTerminals;
|
||||||
|
import javax.smartcardio.TerminalFactory;
|
||||||
|
import javax.smartcardio.TerminalFactorySpi;
|
||||||
|
|
||||||
|
public class TerminalFactorySpiTest {
|
||||||
|
|
||||||
|
static boolean callMethod = false;
|
||||||
|
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
Provider myProvider = new MyProvider();
|
||||||
|
Security.addProvider(myProvider);
|
||||||
|
System.out.println(Arrays.asList(Security.getProviders()));
|
||||||
|
|
||||||
|
TerminalFactory.getInstance("MyType", new Object()).terminals();
|
||||||
|
if (!callMethod) {
|
||||||
|
throw new RuntimeException("Expected engineTerminals() not called");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class MyProvider extends Provider {
|
||||||
|
|
||||||
|
MyProvider() {
|
||||||
|
super("MyProvider", 1.0d, "smart Card Example");
|
||||||
|
put("TerminalFactory.MyType", "TerminalFactorySpiTest$MyTerminalFactorySpi");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class MyTerminalFactorySpi extends TerminalFactorySpi {
|
||||||
|
|
||||||
|
public MyTerminalFactorySpi(Object ob) {
|
||||||
|
}
|
||||||
|
|
||||||
|
protected CardTerminals engineTerminals() {
|
||||||
|
System.out.println("MyTerminalFactory.engineTerminals()");
|
||||||
|
callMethod = true;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
4
jdk/test/javax/smartcardio/policy
Normal file
4
jdk/test/javax/smartcardio/policy
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
grant {
|
||||||
|
permission java.security.SecurityPermission "insertProvider.MyProvider";
|
||||||
|
permission java.security.SecurityPermission "putProviderProperty.MyProvider";
|
||||||
|
};
|
96
jdk/test/sun/rmi/rmic/iiopCompilation/IIOPCompilation.java
Normal file
96
jdk/test/sun/rmi/rmic/iiopCompilation/IIOPCompilation.java
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 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
|
||||||
|
* 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* @test
|
||||||
|
* @bug 8065957
|
||||||
|
* @library ../../../../java/rmi/testlibrary
|
||||||
|
* @build TestLibrary
|
||||||
|
* @summary Compiles a PortableRemoteObject with rmic -iiop and ensures that stub and tie classes are generated.
|
||||||
|
* @run main IIOPCompilation
|
||||||
|
* @author Felix Yang
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.rmi.RemoteException;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.rmi.PortableRemoteObject;
|
||||||
|
|
||||||
|
public class IIOPCompilation {
|
||||||
|
|
||||||
|
public static void main(String args[]) throws IOException, InterruptedException {
|
||||||
|
IIOPCompilation test = new IIOPCompilation();
|
||||||
|
test.doTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void doTest() throws IOException, InterruptedException {
|
||||||
|
String className = DummyImpl.class.getName();
|
||||||
|
int exitCode = runRmic(className);
|
||||||
|
if (exitCode != 0) {
|
||||||
|
throw new RuntimeException("Rmic failed. The exit code is " + exitCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check the stub class generated correctly
|
||||||
|
String stubFile = "_" + Dummy.class.getName() + "_Stub.class";
|
||||||
|
assertFileExists(stubFile);
|
||||||
|
|
||||||
|
// Check the tie class generated correctly
|
||||||
|
String tieFile = "_" + className + "_Tie.class";
|
||||||
|
assertFileExists(tieFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertFileExists(String fileName) throws FileNotFoundException {
|
||||||
|
if (!new File(fileName).exists()) {
|
||||||
|
throw new FileNotFoundException(fileName + " doesn't exist!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int runRmic(String classname) throws IOException, InterruptedException {
|
||||||
|
String rmicProgramStr = TestLibrary.getProperty("java.home", "") + File.separator + "bin" + File.separator + "rmic";
|
||||||
|
String testClasses = TestLibrary.getProperty("test.classes", "");
|
||||||
|
List<String> command = Arrays.asList(rmicProgramStr, "-iiop", "-classpath", testClasses, classname);
|
||||||
|
System.out.println("Running command: " + command);
|
||||||
|
|
||||||
|
Process p = null;
|
||||||
|
try {
|
||||||
|
p = new ProcessBuilder(command).inheritIO().start();
|
||||||
|
p.waitFor();
|
||||||
|
return p.exitValue();
|
||||||
|
} finally {
|
||||||
|
if (p != null && p.isAlive()) {
|
||||||
|
p.destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Dummy extends java.rmi.Remote {
|
||||||
|
}
|
||||||
|
|
||||||
|
class DummyImpl extends PortableRemoteObject implements Dummy {
|
||||||
|
public DummyImpl() throws RemoteException {
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2012, 2014, 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
|
||||||
@ -50,7 +50,7 @@ public class TestDSA2 {
|
|||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
boolean[] expectedToPass = { true, true, true };
|
boolean[] expectedToPass = { true, true, true };
|
||||||
test(1024, expectedToPass);
|
test(1024, expectedToPass);
|
||||||
boolean[] expectedToPass2 = { false, true, true };
|
boolean[] expectedToPass2 = { true, true, true };
|
||||||
test(2048, expectedToPass2);
|
test(2048, expectedToPass2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,7 +127,7 @@ public class Pack200Test {
|
|||||||
// select the jars carefully, adding more jars will increase the
|
// select the jars carefully, adding more jars will increase the
|
||||||
// testing time, especially for jprt.
|
// testing time, especially for jprt.
|
||||||
jarList.add(Utils.createRtJar());
|
jarList.add(Utils.createRtJar());
|
||||||
jarList.add(Utils.locateJar("golden.jar"));
|
jarList.add(Utils.getGoldenJar());
|
||||||
System.out.println(jarList);
|
System.out.println(jarList);
|
||||||
doPackUnpack();
|
doPackUnpack();
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class PackTestZip64 {
|
|||||||
// make a copy of the test specimen to local directory
|
// make a copy of the test specimen to local directory
|
||||||
File testFile = new File("tools_java.jar");
|
File testFile = new File("tools_java.jar");
|
||||||
// Add a large number of small files to the golden jar
|
// Add a large number of small files to the golden jar
|
||||||
generateLargeJar(testFile, Utils.locateJar("golden.jar"));
|
generateLargeJar(testFile, Utils.getGoldenJar());
|
||||||
|
|
||||||
List<String> cmdsList = new ArrayList<>();
|
List<String> cmdsList = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2012, 2014, 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
|
||||||
@ -50,7 +50,7 @@ public class RepackTest {
|
|||||||
|
|
||||||
// make a copy of the test specimen to local directory
|
// make a copy of the test specimen to local directory
|
||||||
File testFile = new File("src_tools.jar");
|
File testFile = new File("src_tools.jar");
|
||||||
Utils.copyFile(Utils.locateJar("golden.jar"), testFile);
|
Utils.copyFile(Utils.getGoldenJar(), testFile);
|
||||||
List<String> cmdsList = new ArrayList<>();
|
List<String> cmdsList = new ArrayList<>();
|
||||||
|
|
||||||
// case 1:
|
// case 1:
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2010, 2014, 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
|
||||||
@ -54,7 +54,7 @@ public class TimeStamp {
|
|||||||
public static void main(String... args) throws IOException {
|
public static void main(String... args) throws IOException {
|
||||||
|
|
||||||
// make a local copy of our test file
|
// make a local copy of our test file
|
||||||
File srcFile = Utils.locateJar("golden.jar");
|
File srcFile = Utils.getGoldenJar();
|
||||||
File goldenFile = new File("golden.jar");
|
File goldenFile = new File("golden.jar");
|
||||||
Utils.copyFile(srcFile, goldenFile);
|
Utils.copyFile(srcFile, goldenFile);
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ class Utils {
|
|||||||
System.getProperty("os.name").startsWith("Windows");
|
System.getProperty("os.name").startsWith("Windows");
|
||||||
static final boolean Is64Bit =
|
static final boolean Is64Bit =
|
||||||
System.getProperty("sun.arch.data.model", "32").equals("64");
|
System.getProperty("sun.arch.data.model", "32").equals("64");
|
||||||
static final File JavaSDK = new File(JavaHome).getParentFile();
|
static final File JavaSDK = new File(JavaHome);
|
||||||
|
|
||||||
static final String PACK_FILE_EXT = ".pack";
|
static final String PACK_FILE_EXT = ".pack";
|
||||||
static final String JAVA_FILE_EXT = ".java";
|
static final String JAVA_FILE_EXT = ".java";
|
||||||
@ -82,11 +82,7 @@ class Utils {
|
|||||||
if (VerifierJar.exists()) {
|
if (VerifierJar.exists()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
File srcDir = new File(TEST_SRC_DIR, VERIFIER_DIR_NAME);
|
File srcDir = new File(getVerifierDir(), "src");
|
||||||
if (!srcDir.exists()) {
|
|
||||||
// if not available try one level above
|
|
||||||
srcDir = new File(TEST_SRC_DIR.getParentFile(), VERIFIER_DIR_NAME);
|
|
||||||
}
|
|
||||||
List<File> javaFileList = findFiles(srcDir, createFilter(JAVA_FILE_EXT));
|
List<File> javaFileList = findFiles(srcDir, createFilter(JAVA_FILE_EXT));
|
||||||
File tmpFile = File.createTempFile("javac", ".tmp");
|
File tmpFile = File.createTempFile("javac", ".tmp");
|
||||||
XCLASSES.mkdirs();
|
XCLASSES.mkdirs();
|
||||||
@ -115,6 +111,18 @@ class Utils {
|
|||||||
".");
|
".");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static File getVerifierDir() {
|
||||||
|
File srcDir = new File(TEST_SRC_DIR, VERIFIER_DIR_NAME);
|
||||||
|
if (!srcDir.exists()) {
|
||||||
|
// if not available try one level above
|
||||||
|
srcDir = new File(TEST_SRC_DIR.getParentFile(), VERIFIER_DIR_NAME);
|
||||||
|
}
|
||||||
|
return srcDir;
|
||||||
|
}
|
||||||
|
|
||||||
|
static File getGoldenJar() {
|
||||||
|
return new File(new File(getVerifierDir(), "data"), "golden.jar");
|
||||||
|
}
|
||||||
static void dirlist(File dir) {
|
static void dirlist(File dir) {
|
||||||
File[] files = dir.listFiles();
|
File[] files = dir.listFiles();
|
||||||
System.out.println("--listing " + dir.getAbsolutePath() + "---");
|
System.out.println("--listing " + dir.getAbsolutePath() + "---");
|
||||||
@ -564,7 +572,8 @@ class Utils {
|
|||||||
File rtJar = new File("rt.jar");
|
File rtJar = new File("rt.jar");
|
||||||
cmdList.clear();
|
cmdList.clear();
|
||||||
cmdList.add(getJarCmd());
|
cmdList.add(getJarCmd());
|
||||||
cmdList.add("cvf");
|
// cmdList.add("cvf"); too noisy
|
||||||
|
cmdList.add("cf");
|
||||||
cmdList.add(rtJar.getName());
|
cmdList.add(rtJar.getName());
|
||||||
cmdList.add("-C");
|
cmdList.add("-C");
|
||||||
cmdList.add("out");
|
cmdList.add("out");
|
||||||
@ -574,24 +583,4 @@ class Utils {
|
|||||||
recursiveDelete(new File("out"));
|
recursiveDelete(new File("out"));
|
||||||
return rtJar;
|
return rtJar;
|
||||||
}
|
}
|
||||||
private static List<File> locaterCache = null;
|
|
||||||
// search the source dir and jdk dir for requested file and returns
|
|
||||||
// the first location it finds.
|
|
||||||
static File locateJar(String name) {
|
|
||||||
try {
|
|
||||||
if (locaterCache == null) {
|
|
||||||
locaterCache = new ArrayList<File>();
|
|
||||||
locaterCache.addAll(findFiles(TEST_SRC_DIR, createFilter(JAR_FILE_EXT)));
|
|
||||||
locaterCache.addAll(findFiles(JavaSDK, createFilter(JAR_FILE_EXT)));
|
|
||||||
}
|
|
||||||
for (File f : locaterCache) {
|
|
||||||
if (f.getName().equals(name)) {
|
|
||||||
return f;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
throw new IOException("file not found: " + name);
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user