提交 e8cf47d0 编写于 作者: V valeriep

Merge

......@@ -3059,14 +3059,12 @@ public final
}
private static Annotation[] EMPTY_ANNOTATIONS_ARRAY = new Annotation[0];
/**
* @since 1.5
*/
public Annotation[] getAnnotations() {
initAnnotationsIfNecessary();
return annotations.values().toArray(EMPTY_ANNOTATIONS_ARRAY);
return AnnotationParser.toArray(annotations);
}
/**
......@@ -3074,7 +3072,7 @@ public final
*/
public Annotation[] getDeclaredAnnotations() {
initAnnotationsIfNecessary();
return declaredAnnotations.values().toArray(EMPTY_ANNOTATIONS_ARRAY);
return AnnotationParser.toArray(declaredAnnotations);
}
// Annotations cache
......
......@@ -626,13 +626,11 @@ public final
return (T) declaredAnnotations().get(annotationClass);
}
private static final Annotation[] EMPTY_ANNOTATION_ARRAY=new Annotation[0];
/**
* @since 1.5
*/
public Annotation[] getDeclaredAnnotations() {
return declaredAnnotations().values().toArray(EMPTY_ANNOTATION_ARRAY);
return AnnotationParser.toArray(declaredAnnotations());
}
private transient Map<Class, Annotation> declaredAnnotations;
......
......@@ -1018,13 +1018,11 @@ class Field extends AccessibleObject implements Member {
return (T) declaredAnnotations().get(annotationClass);
}
private static final Annotation[] EMPTY_ANNOTATION_ARRAY=new Annotation[0];
/**
* @since 1.5
*/
public Annotation[] getDeclaredAnnotations() {
return declaredAnnotations().values().toArray(EMPTY_ANNOTATION_ARRAY);
return AnnotationParser.toArray(declaredAnnotations());
}
private transient Map<Class, Annotation> declaredAnnotations;
......
......@@ -705,13 +705,11 @@ public final
return (T) declaredAnnotations().get(annotationClass);
}
private static final Annotation[] EMPTY_ANNOTATION_ARRAY=new Annotation[0];
/**
* @since 1.5
*/
public Annotation[] getDeclaredAnnotations() {
return declaredAnnotations().values().toArray(EMPTY_ANNOTATION_ARRAY);
return AnnotationParser.toArray(declaredAnnotations());
}
private transient Map<Class, Annotation> declaredAnnotations;
......
......@@ -113,7 +113,6 @@ import sun.security.util.SecurityConstants;
* <p>Similarly, if the following permission:
*
* <pre>
* p1 = new SocketPermission("puffin.eng.sun.com:7777", "connect,accept");
* p2 = new SocketPermission("localhost:1024-", "accept,connect,listen");
* </pre>
*
......
......@@ -179,7 +179,6 @@ public class ArrayList<E> extends AbstractList<E>
modCount++;
int oldCapacity = elementData.length;
if (minCapacity > oldCapacity) {
Object oldData[] = elementData;
int newCapacity = (oldCapacity * 3)/2 + 1;
if (newCapacity < minCapacity)
newCapacity = minCapacity;
......
......@@ -77,8 +77,6 @@ public class ClassLoaderUtil {
jarsClosed.clear();
}
System.out.println ("classLoader = " + classLoader);
System.out.println ("SharedSecrets.getJavaNetAccess()="+SharedSecrets.getJavaNetAccess());
URLClassPath ucp = SharedSecrets.getJavaNetAccess()
.getURLClassPath(classLoader);
ArrayList loaders = ucp.loaders;
......
......@@ -788,4 +788,16 @@ public class AnnotationParser {
for (int i = 0; i < length; i++)
skipMemberValue(buf);
}
/*
* This method converts the annotation map returned by the parseAnnotations()
* method to an array. It is called by Field.getDeclaredAnnotations(),
* Method.getDeclaredAnnotations(), and Constructor.getDeclaredAnnotations().
* This avoids the reflection classes to load the Annotation class until
* it is needed.
*/
private static final Annotation[] EMPTY_ANNOTATION_ARRAY = new Annotation[0];
public static Annotation[] toArray(Map<Class, Annotation> annotations) {
return annotations.values().toArray(EMPTY_ANNOTATION_ARRAY);
}
}
/*
* Copyright 1996-2006 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1996-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
......@@ -68,6 +68,9 @@ import java.io.*;
import java.util.Properties;
import java.util.Enumeration;
import java.net.*;
import java.nio.file.DirectoryStream;
import java.nio.file.Path;
import java.util.Random;
import sun.security.util.Debug;
abstract class SeedGenerator {
......@@ -180,10 +183,27 @@ abstract class SeedGenerator {
// The temporary dir
File f = new File(p.getProperty("java.io.tmpdir"));
String[] sa = f.list();
for(int i = 0; i < sa.length; i++)
md.update(sa[i].getBytes());
int count = 0;
DirectoryStream<Path> ds
= f.toPath().newDirectoryStream();
try {
// We use a Random object to choose what file names
// should be used. Otherwise on a machine with too
// many files, the same first 1024 files always get
// used. Any, We make sure the first 512 files are
// always used.
Random r = new Random();
for (Path path: ds) {
if (count < 512 || r.nextBoolean()) {
md.update(path.getName().toString().getBytes());
}
if (count++ > 1024) {
break;
}
}
} finally {
ds.close();
}
} catch (Exception ex) {
md.update((byte)ex.hashCode());
}
......
......@@ -1910,7 +1910,9 @@ public final class KeyTool {
ObjectIdentifier oid = attr.getAttributeId();
if (oid.equals(PKCS9Attribute.EXTENSION_REQUEST_OID)) {
CertificateExtensions exts = (CertificateExtensions)attr.getAttributeValue();
printExtensions(rb.getString("Extension Request:"), exts, out);
if (exts != null) {
printExtensions(rb.getString("Extension Request:"), exts, out);
}
} else {
out.println(attr.getAttributeId());
out.println(attr.getAttributeValue());
......@@ -2495,7 +2497,9 @@ public final class KeyTool {
X509CertImpl.INFO);
CertificateExtensions exts = (CertificateExtensions)
certInfo.get(X509CertInfo.EXTENSIONS);
printExtensions(rb.getString("Extensions: "), exts, out);
if (exts != null) {
printExtensions(rb.getString("Extensions: "), exts, out);
}
}
}
......
#
# 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 6813402
# @summary keytool cannot -printcert entries without extensions
#
# @run shell NoExtNPE.sh
# set a few environment variables so that the shell-script can run stand-alone
# in the source directory
if [ "${TESTSRC}" = "" ] ; then
TESTSRC="."
fi
if [ "${TESTJAVA}" = "" ] ; then
echo "TESTJAVA not set. Test cannot execute."
echo "FAILED!!!"
exit 1
fi
# set platform-dependent variables
OS=`uname -s`
case "$OS" in
SunOS )
FILESEP="/"
;;
Linux )
FILESEP="/"
;;
Windows* )
FILESEP="\\"
;;
* )
echo "Unrecognized system!"
exit 1;
;;
esac
${TESTJAVA}${FILESEP}bin${FILESEP}keytool \
-list -v \
-keystore ${TESTSRC}${FILESEP}CloneKeyAskPassword.jks \
-storepass test123
exit $?
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册