提交 c56f04ad 编写于 作者: L lana

Merge

#
# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 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
......@@ -27,8 +27,13 @@ BUILDDIR = ../..
PRODUCT = oracle
include $(BUILDDIR)/common/Defs.gmk
SUBDIRS = net
include $(BUILDDIR)/common/Subdirs.gmk
#
# Files to compile
#
AUTO_FILES_JAVA_DIRS = com/oracle
#
# Rules
#
include $(BUILDDIR)/common/Classes.gmk
all build clean clobber::
$(SUBDIRS-loop)
#
# Copyright (c) 2010, 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. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# 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.
#
BUILDDIR = ../../..
PRODUCT = oracle
include $(BUILDDIR)/common/Defs.gmk
#
# Files to compile
#
AUTO_FILES_JAVA_DIRS = com/oracle/net
#
# Rules
#
include $(BUILDDIR)/common/Classes.gmk
......@@ -113,6 +113,9 @@ ifndef OPENJDK
endif
endif
JAVAC_MAX_WARNINGS = false
JAVAC_LINT_OPTIONS = -Xlint:all,-deprecation
JAVAC_WARNINGS_FATAL = true
include $(BUILDDIR)/common/Defs.gmk
#
......
#
# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 1999, 2011, 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
......@@ -28,6 +28,8 @@
#
BUILDDIR = ../../..
SUBDIRS_MAKEFLAGS += JAVAC_MAX_WARNINGS=true
SUBDIRS_MAKEFLAGS += JAVAC_WARNINGS_FATAL=true
include $(BUILDDIR)/common/Defs.gmk
SUBDIRS = toolkit cosnaming ldap rmi dns
......
#
# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2000, 2011, 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
......@@ -28,6 +28,10 @@
#
BUILDDIR = ../../..
SUBDIRS_MAKEFLAGS += JAVAC_MAX_WARNINGS=false
# TODO: Workaround for CR 7063027. Remove -path eventually.
SUBDIRS_MAKEFLAGS += JAVAC_LINT_OPTIONS=-Xlint:all,-deprecation,-path
SUBDIRS_MAKEFLAGS += JAVAC_WARNINGS_FATAL=true
include $(BUILDDIR)/common/Defs.gmk
SUBDIRS = auth
......
......@@ -60,7 +60,8 @@ EXCLUDE_PROPWARN_PKGS = com.sun.java.swing.plaf.windows \
# with a new module system (being discussed for JDK 8).
#
EXPORTED_PRIVATE_PKGS = com.sun.servicetag \
com.oracle.net
com.oracle.net \
com.oracle.nio
# 64-bit solaris has a few special cases. We define the variable
# SOLARIS64 for use in this Makefile to easily test those cases
......
......@@ -34,6 +34,7 @@ LIBRARY = java
PRODUCT = java
SUBDIRS_MAKEFLAGS += JAVAC_MAX_WARNINGS=true
SUBDIRS_MAKEFLAGS += JAVAC_WARNINGS_FATAL=true
JAVAC_MAX_WARNINGS=true
include $(BUILDDIR)/common/Defs.gmk
# windows compiler flags
......
......@@ -26,6 +26,9 @@
BUILDDIR = ../..
PACKAGE = java.security
PRODUCT = sun
JAVAC_MAX_WARNINGS = false
JAVAC_LINT_OPTIONS = -Xlint:all,-deprecation
JAVAC_WARNINGS_FATAL = true
include $(BUILDDIR)/common/Defs.gmk
#
......
......@@ -76,63 +76,3 @@ FILES_java = \
sun/nio/cs/UTF_32BE_BOM.java \
sun/nio/cs/UTF_32LE_BOM.java
FILES_java += \
sun/io/Converters.java \
sun/io/ByteToCharConverter.java \
sun/io/ByteToCharASCII.java \
sun/io/ByteToCharUTF8.java \
sun/io/ByteToCharUTF16.java \
sun/io/ByteToCharUnicode.java \
sun/io/ByteToCharUnicodeBig.java \
sun/io/ByteToCharUnicodeBigUnmarked.java \
sun/io/ByteToCharUnicodeLittle.java \
sun/io/ByteToCharUnicodeLittleUnmarked.java \
sun/io/CharToByteConverter.java \
sun/io/CharToByteASCII.java \
sun/io/CharToByteUTF8.java \
sun/io/CharToByteUTF16.java \
sun/io/CharToByteUnicode.java \
sun/io/CharToByteUnicodeBig.java \
sun/io/CharToByteUnicodeBigUnmarked.java \
sun/io/CharToByteUnicodeLittle.java \
sun/io/CharToByteUnicodeLittleUnmarked.java \
sun/io/CharacterEncoding.java \
sun/io/ConversionBufferFullException.java \
sun/io/MalformedInputException.java \
sun/io/UnknownCharacterException.java \
sun/io/ByteToCharISO8859_1.java \
sun/io/CharToByteISO8859_1.java \
sun/io/ByteToCharISO8859_2.java \
sun/io/CharToByteISO8859_2.java \
sun/io/ByteToCharISO8859_4.java \
sun/io/CharToByteISO8859_4.java \
sun/io/ByteToCharISO8859_5.java \
sun/io/CharToByteISO8859_5.java \
sun/io/ByteToCharISO8859_7.java \
sun/io/CharToByteISO8859_7.java \
sun/io/ByteToCharISO8859_9.java \
sun/io/CharToByteISO8859_9.java \
sun/io/ByteToCharISO8859_13.java \
sun/io/CharToByteISO8859_13.java \
sun/io/ByteToCharISO8859_15.java \
sun/io/CharToByteISO8859_15.java \
sun/io/ByteToCharCp1250.java \
sun/io/CharToByteCp1250.java \
sun/io/ByteToCharCp1251.java \
sun/io/CharToByteCp1251.java \
sun/io/ByteToCharCp1252.java \
sun/io/CharToByteCp1252.java \
sun/io/ByteToCharCp1253.java \
sun/io/CharToByteCp1253.java \
sun/io/ByteToCharCp1254.java \
sun/io/CharToByteCp1254.java \
sun/io/ByteToCharCp1257.java \
sun/io/CharToByteCp1257.java \
sun/io/ByteToCharKOI8_R.java \
sun/io/CharToByteKOI8_R.java \
sun/io/ByteToCharSingleByte.java \
sun/io/CharToByteSingleByte.java
......@@ -31,8 +31,7 @@ BUILDDIR = ../..
PACKAGE = sun.nio
PRODUCT = sun
JAVAC_MAX_WARNINGS = false
JAVAC_LINT_OPTIONS = -Xlint:all,-deprecation
JAVAC_MAX_WARNINGS = true
JAVAC_WARNINGS_FATAL = true
include $(BUILDDIR)/common/Defs.gmk
......
......@@ -128,6 +128,8 @@ ifndef OPENJDK
endif
endif
JAVAC_MAX_WARNINGS = true
JAVAC_WARNINGS_FATAL = true
include $(BUILDDIR)/common/Defs.gmk
#
......
#
# Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 1998, 2011, 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
......@@ -28,6 +28,7 @@
#
BUILDDIR = ../..
JAVAC_MAX_WARNINGS = true
include $(BUILDDIR)/common/Defs.gmk
#
......
......@@ -29,277 +29,6 @@
# Core character converters are built from make/java/java.
#
FILES_src = \
sun/io/ByteToCharDoubleByte.java \
sun/io/ByteToCharDBCS_ASCII.java \
sun/io/ByteToCharDBCS_EBCDIC.java \
sun/io/ByteToCharEUC.java \
sun/io/CharToByteDoubleByte.java \
sun/io/CharToByteDBCS_ASCII.java \
sun/io/CharToByteDBCS_EBCDIC.java \
sun/io/CharToByteEUC.java \
sun/io/ByteToCharBig5.java \
sun/io/ByteToCharBig5_Solaris.java \
sun/io/ByteToCharBig5_HKSCS.java \
sun/io/ByteToCharMS950_HKSCS.java \
sun/io/ByteToCharGB18030.java \
sun/io/ByteToCharGB18030DB.java \
sun/io/ByteToCharCp037.java \
sun/io/ByteToCharCp1006.java \
sun/io/ByteToCharCp1025.java \
sun/io/ByteToCharCp1026.java \
sun/io/ByteToCharCp1046.java \
sun/io/ByteToCharCp1047.java \
sun/io/ByteToCharCp1097.java \
sun/io/ByteToCharCp1098.java \
sun/io/ByteToCharCp1112.java \
sun/io/ByteToCharCp1122.java \
sun/io/ByteToCharCp1123.java \
sun/io/ByteToCharCp1124.java \
sun/io/ByteToCharCp1140.java \
sun/io/ByteToCharCp1141.java \
sun/io/ByteToCharCp1142.java \
sun/io/ByteToCharCp1143.java \
sun/io/ByteToCharCp1144.java \
sun/io/ByteToCharCp1145.java \
sun/io/ByteToCharCp1146.java \
sun/io/ByteToCharCp1147.java \
sun/io/ByteToCharCp1148.java \
sun/io/ByteToCharCp1149.java \
sun/io/ByteToCharCp1255.java \
sun/io/ByteToCharCp1256.java \
sun/io/ByteToCharCp1258.java \
sun/io/ByteToCharCp1381.java \
sun/io/ByteToCharCp1383.java \
sun/io/ByteToCharCp273.java \
sun/io/ByteToCharCp277.java \
sun/io/ByteToCharCp278.java \
sun/io/ByteToCharCp280.java \
sun/io/ByteToCharCp284.java \
sun/io/ByteToCharCp285.java \
sun/io/ByteToCharCp297.java \
sun/io/ByteToCharCp33722.java \
sun/io/ByteToCharCp420.java \
sun/io/ByteToCharCp424.java \
sun/io/ByteToCharCp437.java \
sun/io/ByteToCharCp500.java \
sun/io/ByteToCharCp737.java \
sun/io/ByteToCharCp775.java \
sun/io/ByteToCharCp833.java \
sun/io/ByteToCharCp834.java \
sun/io/ByteToCharCp838.java \
sun/io/ByteToCharCp850.java \
sun/io/ByteToCharCp852.java \
sun/io/ByteToCharCp855.java \
sun/io/ByteToCharCp856.java \
sun/io/ByteToCharCp857.java \
sun/io/ByteToCharCp858.java \
sun/io/ByteToCharCp860.java \
sun/io/ByteToCharCp861.java \
sun/io/ByteToCharCp862.java \
sun/io/ByteToCharCp863.java \
sun/io/ByteToCharCp864.java \
sun/io/ByteToCharCp865.java \
sun/io/ByteToCharCp866.java \
sun/io/ByteToCharCp868.java \
sun/io/ByteToCharCp869.java \
sun/io/ByteToCharCp870.java \
sun/io/ByteToCharCp871.java \
sun/io/ByteToCharCp874.java \
sun/io/ByteToCharCp875.java \
sun/io/ByteToCharCp918.java \
sun/io/ByteToCharCp921.java \
sun/io/ByteToCharCp922.java \
sun/io/ByteToCharCp930.java \
sun/io/ByteToCharCp933.java \
sun/io/ByteToCharCp935.java \
sun/io/ByteToCharCp937.java \
sun/io/ByteToCharCp939.java \
sun/io/ByteToCharCp942.java \
sun/io/ByteToCharCp942C.java \
sun/io/ByteToCharCp943.java \
sun/io/ByteToCharCp943C.java \
sun/io/ByteToCharCp948.java \
sun/io/ByteToCharCp949.java \
sun/io/ByteToCharCp949C.java \
sun/io/ByteToCharCp950.java \
sun/io/ByteToCharCp964.java \
sun/io/ByteToCharCp970.java \
sun/io/ByteToCharJIS0201.java \
sun/io/ByteToCharJIS0208.java \
sun/io/ByteToCharJIS0208_Solaris.java \
sun/io/ByteToCharJIS0212.java \
sun/io/ByteToCharJIS0212_Solaris.java \
sun/io/ByteToCharEUC_CN.java \
sun/io/ByteToCharEUC_JP.java \
sun/io/ByteToCharEUC_JP_LINUX.java \
sun/io/ByteToCharEUC_JP_Solaris.java \
sun/io/ByteToCharEUC_KR.java \
sun/io/ByteToCharEUC_TW.java \
sun/io/ByteToCharSJIS.java \
sun/io/ByteToCharPCK.java \
sun/io/ByteToCharGBK.java \
sun/io/ByteToCharISCII91.java \
sun/io/ByteToCharISO2022.java \
sun/io/ByteToCharISO2022CN.java \
sun/io/ByteToCharISO2022JP.java \
sun/io/ByteToCharISO2022KR.java \
sun/io/ByteToCharISO8859_3.java \
sun/io/ByteToCharISO8859_6.java \
sun/io/ByteToCharISO8859_8.java \
sun/io/ByteToCharJISAutoDetect.java \
sun/io/ByteToCharJohab.java \
sun/io/ByteToCharMS874.java \
sun/io/ByteToCharMS932.java \
sun/io/ByteToCharMS936.java \
sun/io/ByteToCharMS949.java \
sun/io/ByteToCharMS950.java \
sun/io/ByteToCharMacArabic.java \
sun/io/ByteToCharMacCentralEurope.java \
sun/io/ByteToCharMacCroatian.java \
sun/io/ByteToCharMacCyrillic.java \
sun/io/ByteToCharMacDingbat.java \
sun/io/ByteToCharMacGreek.java \
sun/io/ByteToCharMacHebrew.java \
sun/io/ByteToCharMacIceland.java \
sun/io/ByteToCharMacRoman.java \
sun/io/ByteToCharMacRomania.java \
sun/io/ByteToCharMacSymbol.java \
sun/io/ByteToCharMacThai.java \
sun/io/ByteToCharMacTurkish.java \
sun/io/ByteToCharMacUkraine.java \
sun/io/ByteToCharTIS620.java \
sun/io/CharToByteBig5.java \
sun/io/CharToByteBig5_Solaris.java \
sun/io/CharToByteBig5_HKSCS.java \
sun/io/CharToByteMS950_HKSCS.java \
sun/io/CharToByteGB18030.java \
sun/io/CharToByteCp037.java \
sun/io/CharToByteCp1006.java \
sun/io/CharToByteCp1025.java \
sun/io/CharToByteCp1026.java \
sun/io/CharToByteCp1046.java \
sun/io/CharToByteCp1047.java \
sun/io/CharToByteCp1097.java \
sun/io/CharToByteCp1098.java \
sun/io/CharToByteCp1112.java \
sun/io/CharToByteCp1122.java \
sun/io/CharToByteCp1123.java \
sun/io/CharToByteCp1124.java \
sun/io/CharToByteCp1140.java \
sun/io/CharToByteCp1141.java \
sun/io/CharToByteCp1142.java \
sun/io/CharToByteCp1143.java \
sun/io/CharToByteCp1144.java \
sun/io/CharToByteCp1145.java \
sun/io/CharToByteCp1146.java \
sun/io/CharToByteCp1147.java \
sun/io/CharToByteCp1148.java \
sun/io/CharToByteCp1149.java \
sun/io/CharToByteCp1255.java \
sun/io/CharToByteCp1256.java \
sun/io/CharToByteCp1258.java \
sun/io/CharToByteCp1381.java \
sun/io/CharToByteCp1383.java \
sun/io/CharToByteCp273.java \
sun/io/CharToByteCp277.java \
sun/io/CharToByteCp278.java \
sun/io/CharToByteCp280.java \
sun/io/CharToByteCp284.java \
sun/io/CharToByteCp285.java \
sun/io/CharToByteCp297.java \
sun/io/CharToByteCp33722.java \
sun/io/CharToByteCp420.java \
sun/io/CharToByteCp424.java \
sun/io/CharToByteCp437.java \
sun/io/CharToByteCp500.java \
sun/io/CharToByteCp737.java \
sun/io/CharToByteCp775.java \
sun/io/CharToByteCp833.java \
sun/io/CharToByteCp834.java \
sun/io/CharToByteCp838.java \
sun/io/CharToByteCp850.java \
sun/io/CharToByteCp852.java \
sun/io/CharToByteCp855.java \
sun/io/CharToByteCp856.java \
sun/io/CharToByteCp857.java \
sun/io/CharToByteCp858.java \
sun/io/CharToByteCp860.java \
sun/io/CharToByteCp861.java \
sun/io/CharToByteCp862.java \
sun/io/CharToByteCp863.java \
sun/io/CharToByteCp864.java \
sun/io/CharToByteCp865.java \
sun/io/CharToByteCp866.java \
sun/io/CharToByteCp868.java \
sun/io/CharToByteCp869.java \
sun/io/CharToByteCp870.java \
sun/io/CharToByteCp871.java \
sun/io/CharToByteCp874.java \
sun/io/CharToByteCp875.java \
sun/io/CharToByteCp918.java \
sun/io/CharToByteCp921.java \
sun/io/CharToByteCp922.java \
sun/io/CharToByteCp930.java \
sun/io/CharToByteCp933.java \
sun/io/CharToByteCp935.java \
sun/io/CharToByteCp937.java \
sun/io/CharToByteCp939.java \
sun/io/CharToByteCp942.java \
sun/io/CharToByteCp942C.java \
sun/io/CharToByteCp943.java \
sun/io/CharToByteCp943C.java \
sun/io/CharToByteCp948.java \
sun/io/CharToByteCp949.java \
sun/io/CharToByteCp949C.java \
sun/io/CharToByteCp950.java \
sun/io/CharToByteCp964.java \
sun/io/CharToByteCp970.java \
sun/io/CharToByteJIS0201.java \
sun/io/CharToByteJIS0208.java \
sun/io/CharToByteJIS0208_Solaris.java \
sun/io/CharToByteJIS0212.java \
sun/io/CharToByteJIS0212_Solaris.java \
sun/io/CharToByteEUC_CN.java \
sun/io/CharToByteEUC_JP.java \
sun/io/CharToByteEUC_JP_LINUX.java \
sun/io/CharToByteEUC_JP_Solaris.java \
sun/io/CharToByteEUC_KR.java \
sun/io/CharToByteEUC_TW.java \
sun/io/CharToByteSJIS.java \
sun/io/CharToBytePCK.java \
sun/io/CharToByteGBK.java \
sun/io/CharToByteISCII91.java \
sun/io/CharToByteISO2022.java \
sun/io/CharToByteISO2022CN_CNS.java \
sun/io/CharToByteISO2022CN_GB.java \
sun/io/CharToByteISO2022JP.java \
sun/io/CharToByteISO2022KR.java \
sun/io/CharToByteISO8859_3.java \
sun/io/CharToByteISO8859_6.java \
sun/io/CharToByteISO8859_8.java \
sun/io/CharToByteJohab.java \
sun/io/CharToByteMS874.java \
sun/io/CharToByteMS932.java \
sun/io/CharToByteMS936.java \
sun/io/CharToByteMS949.java \
sun/io/CharToByteMS950.java \
sun/io/CharToByteMacArabic.java \
sun/io/CharToByteMacCentralEurope.java \
sun/io/CharToByteMacCroatian.java \
sun/io/CharToByteMacCyrillic.java \
sun/io/CharToByteMacDingbat.java \
sun/io/CharToByteMacGreek.java \
sun/io/CharToByteMacHebrew.java \
sun/io/CharToByteMacIceland.java \
sun/io/CharToByteMacRoman.java \
sun/io/CharToByteMacRomania.java \
sun/io/CharToByteMacSymbol.java \
sun/io/CharToByteMacThai.java \
sun/io/CharToByteMacTurkish.java \
sun/io/CharToByteMacUkraine.java \
sun/io/CharToByteTIS620.java
FILES_gen_extcs = \
sun/nio/cs/ext/IBM037.java \
sun/nio/cs/ext/IBM1006.java \
......
......@@ -34,6 +34,8 @@
#
BUILDDIR = ../..
SUBDIRS_MAKEFLAGS += JAVAC_MAX_WARNINGS=true
SUBDIRS_MAKEFLAGS += JAVAC_WARNINGS_FATAL=true
include $(BUILDDIR)/common/Defs.gmk
# build sun/security/jgss/wrapper on non-windows platform
......
......@@ -109,6 +109,9 @@ ifndef OPENJDK
endif
endif
JAVAC_MAX_WARNINGS=false
JAVAC_LINT_OPTIONS=-Xlint:all,-deprecation
JAVAC_WARNINGS_FATAL=true
include $(BUILDDIR)/common/Defs.gmk
#
......
#
# Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
......@@ -26,6 +26,9 @@
BUILDDIR = ../../..
PACKAGE = sun.security.other
PRODUCT = sun
JAVAC_MAX_WARNINGS=false
JAVAC_LINT_OPTIONS=-Xlint:all,-deprecation
JAVAC_WARNINGS_FATAL=true
include $(BUILDDIR)/common/Defs.gmk
#
......
......@@ -110,6 +110,9 @@ ifndef OPENJDK
endif
endif
JAVAC_MAX_WARNINGS=false
JAVAC_LINT_OPTIONS=-Xlint:all,-deprecation
JAVAC_WARNINGS_FATAL=true
include $(BUILDDIR)/common/Defs.gmk
#
......
......@@ -55,18 +55,6 @@ public class $NAME_CLZ$ extends Charset implements HistoricallyNamedCharset
return new SingleByte.Encoder(this, c2b, c2bIndex);
}
public String getDecoderSingleByteMappings() {
return b2cTable;
}
public char[] getEncoderIndex2() {
return c2b;
}
public char[] getEncoderIndex1() {
return c2bIndex;
}
private final static String b2cTable = $B2CTABLE$
private final static char[] b2c = b2cTable.toCharArray();
......
/*
* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2011, 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
......@@ -245,7 +245,7 @@ final class AESCrypt extends SymmetricCipher implements AESConstants
for (j = 0; j < 8; j++) {
tmp = AA[i][j];
AA[i][j] = AA[t][j];
AA[t][j] = (byte) tmp;
AA[t][j] = tmp;
}
pivot = AA[i][i];
}
......
/*
* Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -25,13 +25,10 @@
package com.sun.crypto.provider;
import java.util.*;
import java.io.*;
import sun.security.util.*;
import java.security.AlgorithmParametersSpi;
import java.security.spec.AlgorithmParameterSpec;
import java.security.spec.InvalidParameterSpecException;
import javax.crypto.spec.IvParameterSpec;
/**
* This class implements the parameter (IV) used with the AES algorithm
......@@ -67,9 +64,15 @@ public final class AESParameters extends AlgorithmParametersSpi {
core.init(encoded, decodingMethod);
}
protected AlgorithmParameterSpec engineGetParameterSpec(Class paramSpec)
protected <T extends AlgorithmParameterSpec>
T engineGetParameterSpec(Class<T> paramSpec)
throws InvalidParameterSpecException {
return core.getParameterSpec(paramSpec);
if (AlgorithmParameterSpec.class.isAssignableFrom(paramSpec)) {
return core.getParameterSpec(paramSpec);
} else {
throw new InvalidParameterSpecException
("Inappropriate parameter Specification");
}
}
protected byte[] engineGetEncoded() throws IOException {
......
/*
* Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -25,7 +25,6 @@
package com.sun.crypto.provider;
import java.util.*;
import java.io.*;
import sun.security.util.*;
import sun.misc.HexDumpEncoder;
......@@ -64,7 +63,7 @@ final class BlockCipherParamsCore {
throw new InvalidParameterSpecException("IV not " +
block_size + " bytes long");
}
iv = (byte[]) tmpIv.clone();
iv = tmpIv.clone();
}
void init(byte[] encoded) throws IOException {
......@@ -90,11 +89,11 @@ final class BlockCipherParamsCore {
init(encoded);
}
AlgorithmParameterSpec getParameterSpec(Class paramSpec)
<T extends AlgorithmParameterSpec> T getParameterSpec(Class<T> paramSpec)
throws InvalidParameterSpecException
{
if (IvParameterSpec.class.isAssignableFrom(paramSpec)) {
return new IvParameterSpec(this.iv);
return paramSpec.cast(new IvParameterSpec(this.iv));
} else {
throw new InvalidParameterSpecException
("Inappropriate parameter specification");
......
/*
* Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -25,13 +25,10 @@
package com.sun.crypto.provider;
import java.util.*;
import java.io.*;
import sun.security.util.*;
import java.security.AlgorithmParametersSpi;
import java.security.spec.AlgorithmParameterSpec;
import java.security.spec.InvalidParameterSpecException;
import javax.crypto.spec.IvParameterSpec;
/**
* This class implements the parameter (IV) used with the Blowfish algorithm in
......@@ -68,9 +65,15 @@ public final class BlowfishParameters extends AlgorithmParametersSpi {
core.init(encoded, decodingMethod);
}
protected AlgorithmParameterSpec engineGetParameterSpec(Class paramSpec)
protected <T extends AlgorithmParameterSpec>
T engineGetParameterSpec(Class<T> paramSpec)
throws InvalidParameterSpecException {
return core.getParameterSpec(paramSpec);
if (AlgorithmParameterSpec.class.isAssignableFrom(paramSpec)) {
return core.getParameterSpec(paramSpec);
} else {
throw new InvalidParameterSpecException
("Inappropriate parameter Specification");
}
}
protected byte[] engineGetEncoded() throws IOException {
......
/*
* Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2011, 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
......@@ -193,7 +193,7 @@ class CipherBlockChaining extends FeedbackCipher {
// This is necessary because in this constellation, a
// ciphertext block (or parts of it) will be overridden by
// the plaintext result.
cipherOrig = (byte[])cipher.clone();
cipherOrig = cipher.clone();
}
for (; cipherOffset < endIndex;
......
/*
* Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2011, 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
......@@ -301,7 +301,7 @@ final class CipherCore {
*/
byte[] getIV() {
byte[] iv = cipher.getIV();
return (iv == null) ? null : (byte[])iv.clone();
return (iv == null) ? null : iv.clone();
}
/**
......@@ -475,8 +475,7 @@ final class CipherCore {
IvParameterSpec ivSpec = null;
if (params != null) {
try {
ivSpec = (IvParameterSpec)params.getParameterSpec
(IvParameterSpec.class);
ivSpec = params.getParameterSpec(IvParameterSpec.class);
} catch (InvalidParameterSpecException ipse) {
throw new InvalidAlgorithmParameterException("Wrong parameter "
+ "type: IV "
......@@ -832,7 +831,7 @@ final class CipherCore {
buffered = 0;
diffBlocksize = blockSize;
if (cipherMode != ECB_MODE) {
((FeedbackCipher)cipher).reset();
cipher.reset();
}
return totalLen;
}
......
/*
* Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2011, 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
......@@ -622,17 +622,17 @@ class DESCrypt extends SymmetricCipher implements DESConstants {
// mangler function:
// every 6 bit is fed into the sbox, which
// produces 4-bit output
left ^= s0p[(int)((temp & 0x3f) ^ key[j+0])]
^ s1p[(int)(((temp >> 4) & 0x3f) ^ key[j+1])]
^ s2p[(int)(((temp >> 8) & 0x3f) ^ key[j+2])]
^ s3p[(int)(((temp >> 12) & 0x3f) ^ key[j+3])]
^ s4p[(int)(((temp >> 16) & 0x3f) ^ key[j+4])]
^ s5p[(int)(((temp >> 20) & 0x3f) ^ key[j+5])]
^ s6p[(int)(((temp >> 24) & 0x3f) ^ key[j+6])];
left ^= s0p[(temp & 0x3f) ^ key[j+0]]
^ s1p[((temp >> 4) & 0x3f) ^ key[j+1]]
^ s2p[((temp >> 8) & 0x3f) ^ key[j+2]]
^ s3p[((temp >> 12) & 0x3f) ^ key[j+3]]
^ s4p[((temp >> 16) & 0x3f) ^ key[j+4]]
^ s5p[((temp >> 20) & 0x3f) ^ key[j+5]]
^ s6p[((temp >> 24) & 0x3f) ^ key[j+6]];
// make the last sbox input the last bit from right[0]
temp = ((right & 1) << 5) | ((right >> 27) & 0x1f);
left ^= s7p[(int)(temp ^ key[j+7])];
left ^= s7p[temp ^ key[j+7]];
temp = left;
left = right;
right = temp;
......
/*
* Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2011, 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
......@@ -78,7 +78,7 @@ final class DESKey implements SecretKey {
public byte[] getEncoded() {
// Return a copy of the key, rather than a reference,
// so that the key data cannot be modified from outside
return (byte[])this.key.clone();
return this.key.clone();
}
public String getAlgorithm() {
......@@ -126,7 +126,7 @@ final class DESKey implements SecretKey {
throws java.io.IOException, ClassNotFoundException
{
s.defaultReadObject();
key = (byte[])key.clone();
key = key.clone();
}
/**
......
/*
* Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2011, 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
......@@ -92,7 +92,7 @@ public final class DESKeyFactory extends SecretKeyFactorySpi {
* inappropriate for the given key, or the given key cannot be processed
* (e.g., the given key has an unrecognized algorithm or format).
*/
protected KeySpec engineGetKeySpec(SecretKey key, Class keySpec)
protected KeySpec engineGetKeySpec(SecretKey key, Class<?> keySpec)
throws InvalidKeySpecException {
try {
......
/*
* Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -25,13 +25,10 @@
package com.sun.crypto.provider;
import java.util.*;
import java.io.*;
import sun.security.util.*;
import java.security.AlgorithmParametersSpi;
import java.security.spec.AlgorithmParameterSpec;
import java.security.spec.InvalidParameterSpecException;
import javax.crypto.spec.IvParameterSpec;
/**
* This class implements the parameter (IV) used with the DES algorithm in
......@@ -68,9 +65,15 @@ public final class DESParameters extends AlgorithmParametersSpi {
core.init(encoded, decodingMethod);
}
protected AlgorithmParameterSpec engineGetParameterSpec(Class paramSpec)
protected <T extends AlgorithmParameterSpec>
T engineGetParameterSpec(Class<T> paramSpec)
throws InvalidParameterSpecException {
return core.getParameterSpec(paramSpec);
if (AlgorithmParameterSpec.class.isAssignableFrom(paramSpec)) {
return core.getParameterSpec(paramSpec);
} else {
throw new InvalidParameterSpecException
("Inappropriate parameter Specification");
}
}
protected byte[] engineGetEncoded() throws IOException {
......
/*
* Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2011, 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
......@@ -78,7 +78,7 @@ final class DESedeKey implements SecretKey {
}
public byte[] getEncoded() {
return (byte[])this.key.clone();
return this.key.clone();
}
public String getAlgorithm() {
......@@ -127,7 +127,7 @@ final class DESedeKey implements SecretKey {
throws java.io.IOException, ClassNotFoundException
{
s.defaultReadObject();
key = (byte[])key.clone();
key = key.clone();
}
/**
......
/*
* Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2011, 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
......@@ -92,7 +92,7 @@ public final class DESedeKeyFactory extends SecretKeyFactorySpi {
* inappropriate for the given key, or the given key cannot be processed
* (e.g., the given key has an unrecognized algorithm or format).
*/
protected KeySpec engineGetKeySpec(SecretKey key, Class keySpec)
protected KeySpec engineGetKeySpec(SecretKey key, Class<?> keySpec)
throws InvalidKeySpecException {
try {
......
/*
* Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -25,13 +25,10 @@
package com.sun.crypto.provider;
import java.util.*;
import java.io.*;
import sun.security.util.*;
import java.security.AlgorithmParametersSpi;
import java.security.spec.AlgorithmParameterSpec;
import java.security.spec.InvalidParameterSpecException;
import javax.crypto.spec.IvParameterSpec;
/**
* This class implements the parameter (IV) used with the Triple DES algorithm
......@@ -67,9 +64,15 @@ public final class DESedeParameters extends AlgorithmParametersSpi {
core.init(encoded, decodingMethod);
}
protected AlgorithmParameterSpec engineGetParameterSpec(Class paramSpec)
protected <T extends AlgorithmParameterSpec>
T engineGetParameterSpec(Class<T> paramSpec)
throws InvalidParameterSpecException {
return core.getParameterSpec(paramSpec);
if (AlgorithmParameterSpec.class.isAssignableFrom(paramSpec)) {
return core.getParameterSpec(paramSpec);
} else {
throw new InvalidParameterSpecException
("Inappropriate parameter Specification");
}
}
protected byte[] engineGetEncoded() throws IOException {
......
/*
* Copyright (c) 2004, 2009, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -25,7 +25,6 @@
package com.sun.crypto.provider;
import java.util.Arrays;
import java.security.*;
import java.security.spec.*;
import javax.crypto.*;
......@@ -151,7 +150,7 @@ public final class DESedeWrapCipher extends CipherSpi {
* been set.
*/
protected byte[] engineGetIV() {
return (iv == null? null:(byte[]) iv.clone());
return (iv == null) ? null : iv.clone();
}
/**
......@@ -277,8 +276,7 @@ public final class DESedeWrapCipher extends CipherSpi {
try {
DESedeParameters paramsEng = new DESedeParameters();
paramsEng.engineInit(params.getEncoded());
ivSpec = (IvParameterSpec)
paramsEng.engineGetParameterSpec(IvParameterSpec.class);
ivSpec = paramsEng.engineGetParameterSpec(IvParameterSpec.class);
} catch (Exception ex) {
InvalidAlgorithmParameterException iape =
new InvalidAlgorithmParameterException
......
/*
* Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -25,8 +25,6 @@
package com.sun.crypto.provider;
import java.util.*;
import java.lang.*;
import java.security.Key;
import java.security.PublicKey;
import java.security.PrivateKey;
......@@ -140,7 +138,8 @@ public final class DHKeyFactory extends KeyFactorySpi {
* inappropriate for the given key, or the given key cannot be processed
* (e.g., the given key has an unrecognized algorithm or format).
*/
protected KeySpec engineGetKeySpec(Key key, Class keySpec)
protected <T extends KeySpec>
T engineGetKeySpec(Key key, Class<T> keySpec)
throws InvalidKeySpecException {
DHParameterSpec params;
......@@ -150,12 +149,12 @@ public final class DHKeyFactory extends KeyFactorySpi {
javax.crypto.interfaces.DHPublicKey dhPubKey
= (javax.crypto.interfaces.DHPublicKey) key;
params = dhPubKey.getParams();
return new DHPublicKeySpec(dhPubKey.getY(),
params.getP(),
params.getG());
return keySpec.cast(new DHPublicKeySpec(dhPubKey.getY(),
params.getP(),
params.getG()));
} else if (X509EncodedKeySpec.class.isAssignableFrom(keySpec)) {
return new X509EncodedKeySpec(key.getEncoded());
return keySpec.cast(new X509EncodedKeySpec(key.getEncoded()));
} else {
throw new InvalidKeySpecException
......@@ -168,12 +167,12 @@ public final class DHKeyFactory extends KeyFactorySpi {
javax.crypto.interfaces.DHPrivateKey dhPrivKey
= (javax.crypto.interfaces.DHPrivateKey)key;
params = dhPrivKey.getParams();
return new DHPrivateKeySpec(dhPrivKey.getX(),
params.getP(),
params.getG());
return keySpec.cast(new DHPrivateKeySpec(dhPrivKey.getX(),
params.getP(),
params.getG()));
} else if (PKCS8EncodedKeySpec.class.isAssignableFrom(keySpec)) {
return new PKCS8EncodedKeySpec(key.getEncoded());
return keySpec.cast(new PKCS8EncodedKeySpec(key.getEncoded()));
} else {
throw new InvalidKeySpecException
......@@ -208,8 +207,7 @@ public final class DHKeyFactory extends KeyFactorySpi {
}
// Convert key to spec
DHPublicKeySpec dhPubKeySpec
= (DHPublicKeySpec)engineGetKeySpec
(key, DHPublicKeySpec.class);
= engineGetKeySpec(key, DHPublicKeySpec.class);
// Create key from spec, and return it
return engineGeneratePublic(dhPubKeySpec);
......@@ -220,8 +218,7 @@ public final class DHKeyFactory extends KeyFactorySpi {
}
// Convert key to spec
DHPrivateKeySpec dhPrivKeySpec
= (DHPrivateKeySpec)engineGetKeySpec
(key, DHPrivateKeySpec.class);
= engineGetKeySpec(key, DHPrivateKeySpec.class);
// Create key from spec, and return it
return engineGeneratePrivate(dhPrivKeySpec);
......
/*
* Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -25,7 +25,6 @@
package com.sun.crypto.provider;
import java.math.BigInteger;
import java.security.*;
import java.security.spec.*;
import javax.crypto.spec.DHParameterSpec;
......@@ -141,8 +140,7 @@ extends AlgorithmParameterGeneratorSpi {
paramGen = AlgorithmParameterGenerator.getInstance("DSA");
paramGen.init(this.primeSize, random);
algParams = paramGen.generateParameters();
dsaParamSpec = (DSAParameterSpec)
algParams.getParameterSpec(DSAParameterSpec.class);
dsaParamSpec = algParams.getParameterSpec(DSAParameterSpec.class);
DHParameterSpec dhParamSpec;
if (this.exponentSize > 0) {
......
/*
* Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -25,7 +25,6 @@
package com.sun.crypto.provider;
import java.util.*;
import java.io.*;
import sun.security.util.*;
import java.math.BigInteger;
......@@ -95,11 +94,12 @@ public final class DHParameters extends AlgorithmParametersSpi {
engineInit(params);
}
protected AlgorithmParameterSpec engineGetParameterSpec(Class paramSpec)
protected <T extends AlgorithmParameterSpec>
T engineGetParameterSpec(Class<T> paramSpec)
throws InvalidParameterSpecException {
if (DHParameterSpec.class.isAssignableFrom(paramSpec)) {
return new DHParameterSpec(this.p, this.g, this.l);
return paramSpec.cast(new DHParameterSpec(this.p, this.g, this.l));
} else {
throw new InvalidParameterSpecException
("Inappropriate parameter Specification");
......
/*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2011, 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
......@@ -31,7 +31,6 @@ import java.security.KeyRep;
import java.security.PrivateKey;
import java.security.InvalidKeyException;
import java.security.ProviderException;
import javax.crypto.*;
import javax.crypto.spec.DHParameterSpec;
import sun.security.util.*;
......@@ -182,7 +181,7 @@ javax.crypto.interfaces.DHPrivateKey, Serializable {
// ignore OPTIONAL attributes
this.encodedKey = (byte[])encodedKey.clone();
this.encodedKey = encodedKey.clone();
} catch (NumberFormatException e) {
InvalidKeyException ike = new InvalidKeyException(
......@@ -256,7 +255,7 @@ javax.crypto.interfaces.DHPrivateKey, Serializable {
return null;
}
}
return (byte[])this.encodedKey.clone();
return this.encodedKey.clone();
}
/**
......
/*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2011, 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
......@@ -29,10 +29,8 @@ import java.io.*;
import java.math.BigInteger;
import java.security.KeyRep;
import java.security.InvalidKeyException;
import java.security.InvalidAlgorithmParameterException;
import java.security.ProviderException;
import java.security.PublicKey;
import javax.crypto.*;
import javax.crypto.spec.DHParameterSpec;
import sun.security.util.*;
......@@ -174,7 +172,7 @@ javax.crypto.interfaces.DHPublicKey, Serializable {
throw new InvalidKeyException("Excess key data");
}
this.encodedKey = (byte[])encodedKey.clone();
this.encodedKey = encodedKey.clone();
} catch (NumberFormatException e) {
throw new InvalidKeyException("Private-value length too big");
......@@ -237,7 +235,7 @@ javax.crypto.interfaces.DHPublicKey, Serializable {
return null;
}
}
return (byte[])this.encodedKey.clone();
return this.encodedKey.clone();
}
/**
......
/*
* Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 2011, 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
......@@ -77,7 +77,7 @@ final class EncryptedPrivateKeyInfo {
if (seq[1].data.available() != 0)
throw new IOException("encryptedData field overrun");
this.encoded = (byte[])encoded.clone();
this.encoded = encoded.clone();
}
/**
......@@ -86,7 +86,7 @@ final class EncryptedPrivateKeyInfo {
*/
EncryptedPrivateKeyInfo(AlgorithmId algid, byte[] encryptedData) {
this.algid = algid;
this.encryptedData = (byte[])encryptedData.clone();
this.encryptedData = encryptedData.clone();
this.encoded = null; // lazy generation of encoding
}
......@@ -101,7 +101,7 @@ final class EncryptedPrivateKeyInfo {
* Returns the encrypted data.
*/
byte[] getEncryptedData() {
return (byte[])this.encryptedData.clone();
return this.encryptedData.clone();
}
/**
......@@ -110,7 +110,7 @@ final class EncryptedPrivateKeyInfo {
byte[] getEncoded()
throws IOException
{
if (this.encoded != null) return (byte[])this.encoded.clone();
if (this.encoded != null) return this.encoded.clone();
DerOutputStream out = new DerOutputStream();
DerOutputStream tmp = new DerOutputStream();
......@@ -125,6 +125,6 @@ final class EncryptedPrivateKeyInfo {
out.write(DerValue.tag_Sequence, tmp);
this.encoded = out.toByteArray();
return (byte[])this.encoded.clone();
return this.encoded.clone();
}
}
/*
* Copyright (c) 2002, 2009, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2011, 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
......@@ -78,8 +78,8 @@ final class HmacCore implements Cloneable {
private HmacCore(HmacCore other) throws CloneNotSupportedException {
this.md = (MessageDigest)other.md.clone();
this.blockLen = other.blockLen;
this.k_ipad = (byte[])other.k_ipad.clone();
this.k_opad = (byte[])other.k_opad.clone();
this.k_ipad = other.k_ipad.clone();
this.k_opad = other.k_opad.clone();
this.first = other.first;
}
......
/*
* Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 2011, 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
......@@ -38,9 +38,7 @@ import java.security.KeyStoreException;
import java.security.UnrecoverableKeyException;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.security.cert.CertificateException;
import java.security.spec.InvalidKeySpecException;
import javax.crypto.SealedObject;
/**
......@@ -87,7 +85,7 @@ public final class JceKeyStore extends KeyStoreSpi {
* Private keys and certificates are stored in a hashtable.
* Hash entries are keyed by alias names.
*/
private Hashtable entries = new Hashtable();
private Hashtable<String, Object> entries = new Hashtable<String, Object>();
/**
* Returns the key associated with the given alias, using the given
......@@ -156,7 +154,7 @@ public final class JceKeyStore extends KeyStoreSpi {
if ((entry instanceof PrivateKeyEntry)
&& (((PrivateKeyEntry)entry).chain != null)) {
chain = (Certificate[])((PrivateKeyEntry)entry).chain.clone();
chain = ((PrivateKeyEntry)entry).chain.clone();
}
return chain;
......@@ -262,7 +260,7 @@ public final class JceKeyStore extends KeyStoreSpi {
// clone the chain
if ((chain != null) &&
(chain.length !=0)) {
entry.chain = (Certificate[])chain.clone();
entry.chain = chain.clone();
} else {
entry.chain = null;
}
......@@ -316,10 +314,10 @@ public final class JceKeyStore extends KeyStoreSpi {
PrivateKeyEntry entry = new PrivateKeyEntry();
entry.date = new Date();
entry.protectedKey = (byte[])key.clone();
entry.protectedKey = key.clone();
if ((chain != null) &&
(chain.length != 0)) {
entry.chain = (Certificate[])chain.clone();
entry.chain = chain.clone();
} else {
entry.chain = null;
}
......@@ -384,7 +382,7 @@ public final class JceKeyStore extends KeyStoreSpi {
*
* @return enumeration of the alias names
*/
public Enumeration engineAliases() {
public Enumeration<String> engineAliases() {
return entries.keys();
}
......@@ -462,9 +460,9 @@ public final class JceKeyStore extends KeyStoreSpi {
public String engineGetCertificateAlias(Certificate cert) {
Certificate certElem;
Enumeration e = entries.keys();
Enumeration<String> e = entries.keys();
while (e.hasMoreElements()) {
String alias = (String)e.nextElement();
String alias = e.nextElement();
Object entry = entries.get(alias);
if (entry instanceof TrustedCertEntry) {
certElem = ((TrustedCertEntry)entry).cert;
......@@ -560,10 +558,10 @@ public final class JceKeyStore extends KeyStoreSpi {
dos.writeInt(entries.size());
Enumeration e = entries.keys();
Enumeration<String> e = entries.keys();
while (e.hasMoreElements()) {
String alias = (String)e.nextElement();
String alias = e.nextElement();
Object entry = entries.get(alias);
if (entry instanceof PrivateKeyEntry) {
......@@ -677,7 +675,7 @@ public final class JceKeyStore extends KeyStoreSpi {
DataInputStream dis;
MessageDigest md = null;
CertificateFactory cf = null;
Hashtable cfs = null;
Hashtable<String, CertificateFactory> cfs = null;
ByteArrayInputStream bais = null;
byte[] encoded = null;
......@@ -713,7 +711,7 @@ public final class JceKeyStore extends KeyStoreSpi {
cf = CertificateFactory.getInstance("X509");
} else {
// version 2
cfs = new Hashtable(3);
cfs = new Hashtable<String, CertificateFactory>(3);
}
entries.clear();
......@@ -761,7 +759,7 @@ public final class JceKeyStore extends KeyStoreSpi {
String certType = dis.readUTF();
if (cfs.containsKey(certType)) {
// reuse certificate factory
cf = (CertificateFactory)cfs.get(certType);
cf = cfs.get(certType);
} else {
// create new certificate factory
cf = CertificateFactory.getInstance(
......@@ -803,7 +801,7 @@ public final class JceKeyStore extends KeyStoreSpi {
String certType = dis.readUTF();
if (cfs.containsKey(certType)) {
// reuse certificate factory
cf = (CertificateFactory)cfs.get(certType);
cf = cfs.get(certType);
} else {
// create new certificate factory
cf = CertificateFactory.getInstance(certType);
......
/*
* Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -25,14 +25,8 @@
package com.sun.crypto.provider;
import java.io.UnsupportedEncodingException;
import java.io.IOException;
import java.io.Serializable;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectInputStream.GetField;
import java.security.Security;
import java.security.Key;
import java.security.PrivateKey;
......@@ -42,22 +36,14 @@ import java.security.MessageDigest;
import java.security.GeneralSecurityException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.SecureRandom;
import java.security.UnrecoverableKeyException;
import java.security.InvalidParameterException;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.AlgorithmParameters;
import java.security.spec.InvalidParameterSpecException;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;
import javax.crypto.Cipher;
import javax.crypto.CipherSpi;
import javax.crypto.SecretKey;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.BadPaddingException;
import javax.crypto.SealedObject;
import javax.crypto.spec.*;
import sun.security.x509.AlgorithmId;
......@@ -127,7 +113,7 @@ final class KeyProtector {
PBEWithMD5AndTripleDESCipher cipher;
cipher = new PBEWithMD5AndTripleDESCipher();
cipher.engineInit(Cipher.ENCRYPT_MODE, sKey, pbeSpec, null);
byte[] plain = (byte[])key.getEncoded();
byte[] plain = key.getEncoded();
byte[] encrKey = cipher.engineDoFinal(plain, 0, plain.length);
// wrap encrypted private key in EncryptedPrivateKeyInfo
......@@ -169,8 +155,8 @@ final class KeyProtector {
AlgorithmParameters pbeParams =
AlgorithmParameters.getInstance("PBE");
pbeParams.init(encodedParams);
PBEParameterSpec pbeSpec = (PBEParameterSpec)
pbeParams.getParameterSpec(PBEParameterSpec.class);
PBEParameterSpec pbeSpec =
pbeParams.getParameterSpec(PBEParameterSpec.class);
// create PBE key from password
PBEKeySpec pbeKeySpec = new PBEKeySpec(this.password);
......
/*
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -26,7 +26,6 @@
package com.sun.crypto.provider;
import java.math.BigInteger;
import java.util.*;
import java.io.*;
import sun.security.util.*;
import sun.security.x509.*;
......@@ -180,11 +179,13 @@ public final class OAEPParameters extends AlgorithmParametersSpi {
engineInit(encoded);
}
protected AlgorithmParameterSpec engineGetParameterSpec(Class paramSpec)
protected <T extends AlgorithmParameterSpec>
T engineGetParameterSpec(Class<T> paramSpec)
throws InvalidParameterSpecException {
if (OAEPParameterSpec.class.isAssignableFrom(paramSpec)) {
return new OAEPParameterSpec(mdName, "MGF1", mgfSpec,
new PSource.PSpecified(p));
return paramSpec.cast(
new OAEPParameterSpec(mdName, "MGF1", mgfSpec,
new PSource.PSpecified(p)));
} else {
throw new InvalidParameterSpecException
("Inappropriate parameter specification");
......
/*
* Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -25,7 +25,6 @@
package com.sun.crypto.provider;
import java.io.UnsupportedEncodingException;
import java.security.*;
import java.security.spec.*;
import javax.crypto.*;
......@@ -326,8 +325,7 @@ final class PBECipherCore {
PBEParameterSpec pbeSpec = null;
if (params != null) {
try {
pbeSpec = (PBEParameterSpec) params.getParameterSpec
(PBEParameterSpec.class);
pbeSpec = params.getParameterSpec(PBEParameterSpec.class);
} catch (InvalidParameterSpecException ipse) {
throw new InvalidAlgorithmParameterException("Wrong parameter "
+ "type: PBE "
......
/*
* Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -25,7 +25,6 @@
package com.sun.crypto.provider;
import java.io.UnsupportedEncodingException;
import java.security.KeyRep;
import java.security.spec.InvalidKeySpecException;
import javax.crypto.SecretKey;
......@@ -69,7 +68,7 @@ final class PBEKey implements SecretKey {
}
public byte[] getEncoded() {
return (byte[])this.key.clone();
return this.key.clone();
}
public String getAlgorithm() {
......@@ -118,7 +117,7 @@ final class PBEKey implements SecretKey {
throws java.io.IOException, ClassNotFoundException
{
s.defaultReadObject();
key = (byte[])key.clone();
key = key.clone();
}
......
/*
* Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -25,7 +25,6 @@
package com.sun.crypto.provider;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.spec.KeySpec;
import java.security.spec.InvalidKeySpecException;
......@@ -132,7 +131,7 @@ abstract class PBEKeyFactory extends SecretKeyFactorySpi {
* inappropriate for the given key, or the given key cannot be processed
* (e.g., the given key has an unrecognized algorithm or format).
*/
protected KeySpec engineGetKeySpec(SecretKey key, Class keySpecCl)
protected KeySpec engineGetKeySpec(SecretKey key, Class<?> keySpecCl)
throws InvalidKeySpecException {
if ((key instanceof SecretKey)
&& (validTypes.contains(key.getAlgorithm().toUpperCase()))
......
/*
* Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -25,7 +25,6 @@
package com.sun.crypto.provider;
import java.util.*;
import java.io.*;
import java.math.BigInteger;
import java.security.AlgorithmParametersSpi;
......@@ -65,7 +64,7 @@ public final class PBEParameters extends AlgorithmParametersSpi {
throw new InvalidParameterSpecException
("Inappropriate parameter specification");
}
this.salt = (byte[])((PBEParameterSpec)paramSpec).getSalt().clone();
this.salt = ((PBEParameterSpec)paramSpec).getSalt().clone();
this.iCount = ((PBEParameterSpec)paramSpec).getIterationCount();
}
......@@ -98,11 +97,12 @@ public final class PBEParameters extends AlgorithmParametersSpi {
engineInit(encoded);
}
protected AlgorithmParameterSpec engineGetParameterSpec(Class paramSpec)
protected <T extends AlgorithmParameterSpec>
T engineGetParameterSpec(Class<T> paramSpec)
throws InvalidParameterSpecException
{
if (PBEParameterSpec.class.isAssignableFrom(paramSpec)) {
return new PBEParameterSpec(this.salt, this.iCount);
return paramSpec.cast(new PBEParameterSpec(this.salt, this.iCount));
} else {
throw new InvalidParameterSpecException
("Inappropriate parameter specification");
......
/*
* Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -25,14 +25,12 @@
package com.sun.crypto.provider;
import java.io.*;
import java.security.InvalidKeyException;
import java.security.spec.KeySpec;
import java.security.spec.InvalidKeySpecException;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactorySpi;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;
/**
* This class implements a key factory for PBE keys derived using
......@@ -88,7 +86,7 @@ public final class PBKDF2HmacSHA1Factory extends SecretKeyFactorySpi {
* given key cannot be processed (e.g., the given key has an
* unrecognized algorithm or format).
*/
protected KeySpec engineGetKeySpec(SecretKey key, Class keySpecCl)
protected KeySpec engineGetKeySpec(SecretKey key, Class<?> keySpecCl)
throws InvalidKeySpecException {
if (key instanceof javax.crypto.interfaces.PBEKey) {
// Check if requested key spec is amongst the valid ones
......
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 2011, 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
......@@ -133,6 +133,7 @@ final class PBKDF2KeyImpl implements javax.crypto.interfaces.PBEKey {
byte[] ti = new byte[hlen];
// SecretKeySpec cannot be used, since password can be empty here.
SecretKey macKey = new SecretKey() {
private static final long serialVersionUID = 7874493593505141603L;
@Override
public String getAlgorithm() {
return prf.getAlgorithm();
......@@ -194,7 +195,7 @@ final class PBKDF2KeyImpl implements javax.crypto.interfaces.PBEKey {
}
public byte[] getEncoded() {
return (byte[]) key.clone();
return key.clone();
}
public String getAlgorithm() {
......@@ -206,7 +207,7 @@ final class PBKDF2KeyImpl implements javax.crypto.interfaces.PBEKey {
}
public char[] getPassword() {
return (char[]) passwd.clone();
return passwd.clone();
}
public byte[] getSalt() {
......@@ -268,7 +269,7 @@ final class PBKDF2KeyImpl implements javax.crypto.interfaces.PBEKey {
protected void finalize() throws Throwable {
try {
if (this.passwd != null) {
java.util.Arrays.fill(this.passwd, (char) '0');
java.util.Arrays.fill(this.passwd, '0');
this.passwd = null;
}
if (this.key != null) {
......
/*
* Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2011, 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
......@@ -145,7 +145,7 @@ final class PCBC extends FeedbackCipher {
for (; plainOffset < endIndex;
plainOffset += blockSize, cipherOffset += blockSize) {
for (i=0; i<blockSize; i++) {
k[i] ^= (byte)(plain[i+plainOffset]);
k[i] ^= plain[i+plainOffset];
}
embeddedCipher.encryptBlock(k, 0, cipher, cipherOffset);
for (i = 0; i < blockSize; i++) {
......
/*
* Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2011, 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
......@@ -98,8 +98,8 @@ public final class RC2Cipher extends CipherSpi {
throws InvalidKeyException, InvalidAlgorithmParameterException {
if (params != null && params.getAlgorithm().equals("RC2")) {
try {
RC2ParameterSpec rc2Params = (RC2ParameterSpec)
params.getParameterSpec(RC2ParameterSpec.class);
RC2ParameterSpec rc2Params =
params.getParameterSpec(RC2ParameterSpec.class);
engineInit(opmode, key, rc2Params, random);
} catch (InvalidParameterSpecException ipse) {
throw new InvalidAlgorithmParameterException
......
/*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2011, 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
......@@ -55,7 +55,6 @@ import sun.security.util.*;
* @author Sean Mullan
* @since 1.5
*/
public final class RC2Parameters extends AlgorithmParametersSpi {
// TABLE[EKB] from section 6 of RFC 2268, used to convert effective key
......@@ -177,13 +176,14 @@ public final class RC2Parameters extends AlgorithmParametersSpi {
engineInit(encoded);
}
protected AlgorithmParameterSpec engineGetParameterSpec(Class paramSpec)
protected <T extends AlgorithmParameterSpec>
T engineGetParameterSpec(Class<T> paramSpec)
throws InvalidParameterSpecException {
if (RC2ParameterSpec.class.isAssignableFrom(paramSpec)) {
return (iv == null ?
new RC2ParameterSpec(effectiveKeySize) :
new RC2ParameterSpec(effectiveKeySize, iv));
return paramSpec.cast((iv == null ?
new RC2ParameterSpec(effectiveKeySize) :
new RC2ParameterSpec(effectiveKeySize, iv)));
} else {
throw new InvalidParameterSpecException
("Inappropriate parameter specification");
......
/*
* Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2011, 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
......@@ -227,8 +227,8 @@ public final class RSACipher extends CipherSpi {
init(opmode, key, random, null);
} else {
try {
OAEPParameterSpec spec = (OAEPParameterSpec)
params.getParameterSpec(OAEPParameterSpec.class);
OAEPParameterSpec spec =
params.getParameterSpec(OAEPParameterSpec.class);
init(opmode, key, random, spec);
} catch (InvalidParameterSpecException ipse) {
InvalidAlgorithmParameterException iape =
......
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 2011, 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
......@@ -31,7 +31,6 @@ import java.security.spec.AlgorithmParameterSpec;
import javax.crypto.*;
import javax.crypto.spec.*;
import sun.security.internal.interfaces.TlsMasterSecret;
import sun.security.internal.spec.*;
import static com.sun.crypto.provider.TlsPrfGenerator.*;
......
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 2011, 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
......@@ -140,6 +140,7 @@ public final class TlsMasterSecretGenerator extends KeyGeneratorSpi {
}
private static final class TlsMasterSecretKey implements TlsMasterSecret {
private static final long serialVersionUID = 1019571680375368880L;
private byte[] key;
private final int majorVersion, minorVersion;
......
/*
* Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2011, 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
......@@ -32,8 +32,6 @@ import java.util.NoSuchElementException;
import java.util.Hashtable;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
/**
* Implements the JNDI NamingEnumeration interface for COS
......@@ -44,7 +42,8 @@ import org.omg.CORBA.*;
* @author Rosanna Lee
*/
final class CNBindingEnumeration implements NamingEnumeration {
final class CNBindingEnumeration
implements NamingEnumeration<javax.naming.Binding> {
private static final int DEFAULT_BATCHSIZE = 100;
private BindingListHolder _bindingList; // list of bindings
......@@ -52,105 +51,105 @@ final class CNBindingEnumeration implements NamingEnumeration {
private int counter; // pointer in _bindingList
private int batchsize = DEFAULT_BATCHSIZE; // how many to ask for each time
private CNCtx _ctx; // ctx to list
private Hashtable _env; // environment for getObjectInstance
private Hashtable<?,?> _env; // environment for getObjectInstance
private boolean more = false; // iterator done?
private boolean isLookedUpCtx = false; // iterating on a context beneath this context ?
/**
* Creates a CNBindingEnumeration object.
* @param ctx Context to enumerate
*/
CNBindingEnumeration(CNCtx ctx, boolean isLookedUpCtx, Hashtable env) {
// Get batch size to use
String batch = (env != null ?
(String)env.get(javax.naming.Context.BATCHSIZE) : null);
if (batch != null) {
try {
batchsize = Integer.parseInt(batch);
} catch (NumberFormatException e) {
throw new IllegalArgumentException("Batch size not numeric: " + batch);
/**
* Creates a CNBindingEnumeration object.
* @param ctx Context to enumerate
*/
CNBindingEnumeration(CNCtx ctx, boolean isLookedUpCtx, Hashtable<?,?> env) {
// Get batch size to use
String batch = (env != null ?
(String)env.get(javax.naming.Context.BATCHSIZE) : null);
if (batch != null) {
try {
batchsize = Integer.parseInt(batch);
} catch (NumberFormatException e) {
throw new IllegalArgumentException("Batch size not numeric: " + batch);
}
}
_ctx = ctx;
_ctx.incEnumCount();
this.isLookedUpCtx = isLookedUpCtx;
_env = env;
_bindingList = new BindingListHolder();
BindingIteratorHolder _bindingIterH = new BindingIteratorHolder();
// Perform listing and request that bindings be returned in _bindingIter
// Upon return,_bindingList returns a zero length list
_ctx._nc.list(0, _bindingList, _bindingIterH);
_bindingIter = _bindingIterH.value;
// Get first batch using _bindingIter
if (_bindingIter != null) {
more = _bindingIter.next_n(batchsize, _bindingList);
} else {
more = false;
}
counter = 0;
}
_ctx = ctx;
_ctx.incEnumCount();
this.isLookedUpCtx = isLookedUpCtx;
_env = env;
_bindingList = new BindingListHolder();
BindingIteratorHolder _bindingIterH = new BindingIteratorHolder();
// Perform listing and request that bindings be returned in _bindingIter
// Upon return,_bindingList returns a zero length list
_ctx._nc.list(0, _bindingList, _bindingIterH);
_bindingIter = _bindingIterH.value;
// Get first batch using _bindingIter
if (_bindingIter != null) {
more = _bindingIter.next_n(batchsize, _bindingList);
} else {
more = false;
/**
* Returns the next binding in the list.
* @exception NamingException any naming exception.
*/
public javax.naming.Binding next() throws NamingException {
if (more && counter >= _bindingList.value.length) {
getMore();
}
if (more && counter < _bindingList.value.length) {
org.omg.CosNaming.Binding bndg = _bindingList.value[counter];
counter++;
return mapBinding(bndg);
} else {
throw new NoSuchElementException();
}
}
counter = 0;
}
/**
* Returns the next binding in the list.
* @exception NamingException any naming exception.
*/
public java.lang.Object next() throws NamingException {
if (more && counter >= _bindingList.value.length) {
getMore();
}
if (more && counter < _bindingList.value.length) {
org.omg.CosNaming.Binding bndg = _bindingList.value[counter];
counter++;
return mapBinding(bndg);
} else {
throw new NoSuchElementException();
}
}
/**
/**
* Returns true or false depending on whether there are more bindings.
* @return boolean value
*/
public boolean hasMore() throws NamingException {
// If there's more, check whether current bindingList has been exhausted,
// and if so, try to get more.
// If no more, just say so.
return more ? (counter < _bindingList.value.length || getMore()) : false;
}
public boolean hasMore() throws NamingException {
// If there's more, check whether current bindingList has been exhausted,
// and if so, try to get more.
// If no more, just say so.
return more ? (counter < _bindingList.value.length || getMore()) : false;
}
/**
* Returns true or false depending on whether there are more bindings.
* Need to define this to satisfy the Enumeration api requirement.
* @return boolean value
*/
/**
* Returns true or false depending on whether there are more bindings.
* Need to define this to satisfy the Enumeration api requirement.
* @return boolean value
*/
public boolean hasMoreElements() {
try {
return hasMore();
} catch (NamingException e) {
return false;
}
}
public boolean hasMoreElements() {
try {
return hasMore();
} catch (NamingException e) {
return false;
}
}
/**
/**
* Returns the next binding in the list.
* @exception NoSuchElementException Thrown when the end of the
* list is reached.
*/
public java.lang.Object nextElement() {
public javax.naming.Binding nextElement() {
try {
return next();
} catch (NamingException ne) {
throw new NoSuchElementException();
}
}
}
public void close() throws NamingException {
more = false;
......@@ -197,7 +196,7 @@ final class CNBindingEnumeration implements NamingEnumeration {
return more;
}
/**
/**
* Constructs a JNDI Binding object from the COS Naming binding
* object.
* @exception NameNotFound No objects under the name.
......@@ -232,5 +231,5 @@ final class CNBindingEnumeration implements NamingEnumeration {
String fullName = CNNameParser.cosNameToInsString(comps);
jbndg.setNameInNamespace(fullName);
return jbndg;
}
}
}
/*
* Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2011, 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
......@@ -30,7 +30,6 @@ import javax.naming.spi.NamingManager;
import javax.naming.spi.ResolveResult;
import java.util.Hashtable;
import java.util.Vector;
import java.net.MalformedURLException;
import java.net.URL;
import java.io.InputStream;
......@@ -63,7 +62,7 @@ public class CNCtx implements javax.naming.Context {
public NamingContext _nc; // public for accessing underlying NamingContext
private NameComponent[] _name = null;
Hashtable _env; // used by ExceptionMapper
Hashtable<String, java.lang.Object> _env; // used by ExceptionMapper
static final CNNameParser parser = new CNNameParser();
private static final String FED_PROP = "com.sun.jndi.cosnaming.federation";
......@@ -82,11 +81,12 @@ public class CNCtx implements javax.naming.Context {
* @param env Environment properties for initializing name service.
* @exception NamingException Cannot initialize ORB or naming context.
*/
CNCtx(Hashtable env) throws NamingException {
@SuppressWarnings("unchecked")
CNCtx(Hashtable<?,?> env) throws NamingException {
if (env != null) {
env = (Hashtable) env.clone();
env = (Hashtable<?,?>)env.clone();
}
_env = env;
_env = (Hashtable<String, java.lang.Object>)env;
federation = "true".equals(env != null ? env.get(FED_PROP) : null);
initOrbAndRootContext(env);
}
......@@ -97,13 +97,14 @@ public class CNCtx implements javax.naming.Context {
/**
* This method is used by the iiop and iiopname URL Context factories.
*/
public static ResolveResult createUsingURL(String url, Hashtable env)
@SuppressWarnings("unchecked")
public static ResolveResult createUsingURL(String url, Hashtable<?,?> env)
throws NamingException {
CNCtx ctx = new CNCtx();
if (env != null) {
env = (Hashtable) env.clone();
env = (Hashtable<?,?>) env.clone();
}
ctx._env = env;
ctx._env = (Hashtable<String, java.lang.Object>)env;
String rest = ctx.initUsingUrl(
env != null ?
(org.omg.CORBA.ORB) env.get("java.naming.corba.orb")
......@@ -128,8 +129,8 @@ public class CNCtx implements javax.naming.Context {
* @param name The name of this context relative to the root
*/
CNCtx(ORB orb, OrbReuseTracker tracker, NamingContext nctx, Hashtable env,
NameComponent[]name)
CNCtx(ORB orb, OrbReuseTracker tracker, NamingContext nctx,
Hashtable<String, java.lang.Object> env, NameComponent[]name)
throws NamingException {
if (orb == null || nctx == null)
throw new ConfigurationException(
......@@ -207,7 +208,7 @@ public class CNCtx implements javax.naming.Context {
* @exception NamingException When an error occurs while initializing the
* ORB or the naming context.
*/
private void initOrbAndRootContext(Hashtable env) throws NamingException {
private void initOrbAndRootContext(Hashtable<?,?> env) throws NamingException {
org.omg.CORBA.ORB inOrb = null;
String ncIor = null;
......@@ -240,7 +241,7 @@ public class CNCtx implements javax.naming.Context {
// If name supplied in URL, resolve it to a NamingContext
if (insName.length() > 0) {
_name = parser.nameToCosName(parser.parse(insName));
_name = CNNameParser.nameToCosName(parser.parse(insName));
try {
org.omg.CORBA.Object obj = _nc.resolve(_name);
_nc = NamingContextHelper.narrow(obj);
......@@ -271,7 +272,7 @@ public class CNCtx implements javax.naming.Context {
}
private String initUsingUrl(ORB orb, String url, Hashtable env)
private String initUsingUrl(ORB orb, String url, Hashtable<?,?> env)
throws NamingException {
if (url.startsWith("iiop://") || url.startsWith("iiopname://")) {
return initUsingIiopUrl(orb, url, env);
......@@ -283,17 +284,14 @@ public class CNCtx implements javax.naming.Context {
/**
* Handles "iiop" and "iiopname" URLs (INS 98-10-11)
*/
private String initUsingIiopUrl(ORB defOrb, String url, Hashtable env)
private String initUsingIiopUrl(ORB defOrb, String url, Hashtable<?,?> env)
throws NamingException {
try {
IiopUrl parsedUrl = new IiopUrl(url);
Vector addrs = parsedUrl.getAddresses();
IiopUrl.Address addr;
NamingException savedException = null;
for (int i = 0; i < addrs.size(); i++) {
addr = (IiopUrl.Address)addrs.elementAt(i);
for (IiopUrl.Address addr : parsedUrl.getAddresses()) {
try {
if (defOrb != null) {
......@@ -341,7 +339,7 @@ public class CNCtx implements javax.naming.Context {
/**
* Initializes using "corbaname" URL (INS 99-12-03)
*/
private String initUsingCorbanameUrl(ORB orb, String url, Hashtable env)
private String initUsingCorbanameUrl(ORB orb, String url, Hashtable<?,?> env)
throws NamingException {
try {
CorbanameUrl parsedUrl = new CorbanameUrl(url);
......@@ -731,7 +729,7 @@ public class CNCtx implements javax.naming.Context {
// as per JNDI spec
if (leafNotFound(e, path[path.length-1])) {
; // do nothing
// do nothing
} else {
throw ExceptionMapper.mapException(e, this, path);
}
......@@ -829,7 +827,7 @@ public class CNCtx implements javax.naming.Context {
* with a non-null argument
* @return a list of name-class objects as a NameClassEnumeration.
*/
public NamingEnumeration list(String name) throws NamingException {
public NamingEnumeration<NameClassPair> list(String name) throws NamingException {
return list(new CompositeName(name));
}
......@@ -840,9 +838,10 @@ public class CNCtx implements javax.naming.Context {
* @exception NamingException All exceptions thrown by lookup
* @return a list of name-class objects as a NameClassEnumeration.
*/
public NamingEnumeration list(Name name)
@SuppressWarnings("unchecked")
public NamingEnumeration<NameClassPair> list(Name name)
throws NamingException {
return listBindings(name);
return (NamingEnumeration)listBindings(name);
}
/**
......@@ -852,7 +851,7 @@ public class CNCtx implements javax.naming.Context {
* @exception NamingException all exceptions returned by lookup
* @return a list of bindings as a BindingEnumeration.
*/
public NamingEnumeration listBindings(String name)
public NamingEnumeration<javax.naming.Binding> listBindings(String name)
throws NamingException {
return listBindings(new CompositeName(name));
}
......@@ -864,7 +863,7 @@ public class CNCtx implements javax.naming.Context {
* @exception NamingException all exceptions returned by lookup.
* @return a list of bindings as a BindingEnumeration.
*/
public NamingEnumeration listBindings(Name name)
public NamingEnumeration<javax.naming.Binding> listBindings(Name name)
throws NamingException {
if (_nc == null)
throw new ConfigurationException(
......@@ -1064,11 +1063,12 @@ public class CNCtx implements javax.naming.Context {
* Returns the current environment.
* @return Environment.
*/
public Hashtable getEnvironment() throws NamingException {
@SuppressWarnings("unchecked")
public Hashtable<String, java.lang.Object> getEnvironment() throws NamingException {
if (_env == null) {
return new Hashtable(5, 0.75f);
return new Hashtable<>(5, 0.75f);
} else {
return (Hashtable)_env.clone();
return (Hashtable<String, java.lang.Object>)_env.clone();
}
}
......@@ -1090,25 +1090,27 @@ public class CNCtx implements javax.naming.Context {
* @param propVal The ORB.
* @return the previous value of this property if any.
*/
@SuppressWarnings("unchecked")
public java.lang.Object addToEnvironment(String propName,
java.lang.Object propValue)
throws NamingException {
if (_env == null) {
_env = new Hashtable(7, 0.75f);
_env = new Hashtable<>(7, 0.75f);
} else {
// copy-on-write
_env = (Hashtable)_env.clone();
_env = (Hashtable<String, java.lang.Object>)_env.clone();
}
return _env.put(propName, propValue);
}
// Record change but do not reinitialize ORB
@SuppressWarnings("unchecked")
public java.lang.Object removeFromEnvironment(String propName)
throws NamingException {
if (_env != null && _env.get(propName) != null) {
// copy-on-write
_env = (Hashtable)_env.clone();
_env = (Hashtable<String, java.lang.Object>)_env.clone();
return _env.remove(propName);
}
return null;
......
/*
* Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2011, 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
......@@ -67,7 +67,7 @@ final public class CNNameParser implements NameParser {
* @return a non-null CompoundName
*/
public Name parse(String name) throws NamingException {
Vector comps = insStringToStringifiedComps(name);
Vector<String> comps = insStringToStringifiedComps(name);
return new CNCompoundName(comps.elements());
}
......@@ -128,11 +128,11 @@ final public class CNNameParser implements NameParser {
* each element of the vector contains a stringified form of
* a NameComponent.
*/
private static Vector insStringToStringifiedComps(String str)
private static Vector<String> insStringToStringifiedComps(String str)
throws InvalidNameException {
int len = str.length();
Vector components = new Vector(10);
Vector<String> components = new Vector<>(10);
char[] id = new char[len];
char[] kind = new char[len];
int idCount, kindCount;
......@@ -306,7 +306,7 @@ final public class CNNameParser implements NameParser {
* and stringifying code of the default CompoundName.
*/
static final class CNCompoundName extends CompoundName {
CNCompoundName(Enumeration enum_) {
CNCompoundName(Enumeration<String> enum_) {
super(enum_, CNNameParser.mySyntax);
}
......@@ -315,12 +315,12 @@ final public class CNNameParser implements NameParser {
}
public Name getPrefix(int posn) {
Enumeration comps = super.getPrefix(posn).getAll();
Enumeration<String> comps = super.getPrefix(posn).getAll();
return new CNCompoundName(comps);
}
public Name getSuffix(int posn) {
Enumeration comps = super.getSuffix(posn).getAll();
Enumeration<String> comps = super.getSuffix(posn).getAll();
return new CNCompoundName(comps);
}
......
/*
* Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2011, 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
......@@ -102,10 +102,10 @@ public final class ExceptionMapper {
private static final NamingException tryFed(NotFound e, CNCtx ctx,
NameComponent[] inputName) throws NamingException {
NameComponent[] rest = ((NotFound) e).rest_of_name;
NameComponent[] rest = e.rest_of_name;
if (debug) {
System.out.println(((NotFound)e).why.value());
System.out.println(e.why.value());
System.out.println(rest.length);
}
......
/*
* Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2011, 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
......@@ -68,7 +68,7 @@ public final class IiopUrl {
static final private int DEFAULT_IIOPNAME_PORT = 9999;
static final private int DEFAULT_IIOP_PORT = 900;
static final private String DEFAULT_HOST = "localhost";
private Vector addresses;
private Vector<Address> addresses;
private String stringName;
public static class Address {
......@@ -149,7 +149,7 @@ public final class IiopUrl {
}
}
public Vector getAddresses() {
public Vector<Address> getAddresses() {
return addresses;
}
......@@ -185,7 +185,7 @@ public final class IiopUrl {
} else {
stringName = UrlUtil.decode(url.substring(addrEnd+1));
}
addresses = new Vector(3);
addresses = new Vector<>(3);
if (oldFormat) {
// Only one host:port part, not multiple
addresses.addElement(
......
/*
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2011, 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
......@@ -524,7 +524,7 @@ public class DnsClient {
"\tResponse Q:" + resps);
}
byte[] pkt;
if ((pkt = (byte[]) resps.get(xid)) != null) {
if ((pkt = resps.get(xid)) != null) {
checkResponseCode(new Header(pkt, pkt.length));
synchronized (queuesLock) {
resps.remove(xid);
......
/*
* Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2011, 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
......@@ -47,7 +47,7 @@ public class DnsContext extends ComponentDirContext {
DnsName domain; // fully-qualified domain name of this context,
// with a root (empty) label at position 0
Hashtable environment;
Hashtable<Object,Object> environment;
private boolean envShared; // true if environment is possibly shared
// and so must be copied on write
private boolean parentIsDns; // was this DnsContext created by
......@@ -95,14 +95,15 @@ public class DnsContext extends ComponentDirContext {
* There must be at least one server.
* The environment must not be null; it is cloned before being stored.
*/
public DnsContext(String domain, String[] servers, Hashtable environment)
@SuppressWarnings("unchecked")
public DnsContext(String domain, String[] servers, Hashtable<?,?> environment)
throws NamingException {
this.domain = new DnsName(domain.endsWith(".")
? domain
: domain + ".");
this.servers = servers;
this.environment = (Hashtable) environment.clone();
this.environment = (Hashtable<Object,Object>) environment.clone();
envShared = false;
parentIsDns = false;
resolver = null;
......@@ -154,14 +155,15 @@ public class DnsContext extends ComponentDirContext {
/*
* Override default with a noncloning version.
*/
protected Hashtable p_getEnvironment() {
protected Hashtable<?,?> p_getEnvironment() {
return environment;
}
public Hashtable getEnvironment() throws NamingException {
return (Hashtable) environment.clone();
public Hashtable<?,?> getEnvironment() throws NamingException {
return (Hashtable<?,?>) environment.clone();
}
@SuppressWarnings("unchecked")
public Object addToEnvironment(String propName, Object propVal)
throws NamingException {
......@@ -189,7 +191,7 @@ public class DnsContext extends ComponentDirContext {
return environment.put(propName, propVal);
} else if (environment.get(propName) != propVal) {
// copy on write
environment = (Hashtable) environment.clone();
environment = (Hashtable<Object,Object>) environment.clone();
envShared = false;
return environment.put(propName, propVal);
} else {
......@@ -197,6 +199,7 @@ public class DnsContext extends ComponentDirContext {
}
}
@SuppressWarnings("unchecked")
public Object removeFromEnvironment(String propName)
throws NamingException {
......@@ -222,7 +225,7 @@ public class DnsContext extends ComponentDirContext {
return environment.remove(propName);
} else if (environment.get(propName) != null) {
// copy-on-write
environment = (Hashtable) environment.clone();
environment = (Hashtable<Object,Object>) environment.clone();
envShared = false;
return environment.remove(propName);
} else {
......@@ -307,7 +310,7 @@ public class DnsContext extends ComponentDirContext {
return c_lookup(name, cont);
}
public NamingEnumeration c_list(Name name, Continuation cont)
public NamingEnumeration<NameClassPair> c_list(Name name, Continuation cont)
throws NamingException {
cont.setSuccess();
try {
......@@ -322,7 +325,7 @@ public class DnsContext extends ComponentDirContext {
}
}
public NamingEnumeration c_listBindings(Name name, Continuation cont)
public NamingEnumeration<Binding> c_listBindings(Name name, Continuation cont)
throws NamingException {
cont.setSuccess();
try {
......@@ -457,7 +460,7 @@ public class DnsContext extends ComponentDirContext {
new OperationNotSupportedException());
}
public NamingEnumeration c_search(Name name,
public NamingEnumeration<SearchResult> c_search(Name name,
Attributes matchingAttributes,
String[] attributesToReturn,
Continuation cont)
......@@ -465,7 +468,7 @@ public class DnsContext extends ComponentDirContext {
throw new OperationNotSupportedException();
}
public NamingEnumeration c_search(Name name,
public NamingEnumeration<SearchResult> c_search(Name name,
String filter,
SearchControls cons,
Continuation cont)
......@@ -473,7 +476,7 @@ public class DnsContext extends ComponentDirContext {
throw new OperationNotSupportedException();
}
public NamingEnumeration c_search(Name name,
public NamingEnumeration<SearchResult> c_search(Name name,
String filterExpr,
Object[] filterArgs,
SearchControls cons,
......@@ -608,7 +611,7 @@ public class DnsContext extends ComponentDirContext {
BasicAttributes attrs = new BasicAttributes(true);
for (int i = 0; i < rrs.answer.size(); i++) {
ResourceRecord rr = (ResourceRecord) rrs.answer.elementAt(i);
ResourceRecord rr = rrs.answer.elementAt(i);
int rrtype = rr.getType();
int rrclass = rr.getRrclass();
......@@ -952,19 +955,14 @@ class CT {
//----------
/*
* An enumeration of name/classname pairs.
*
* Nodes that have children or that are zone cuts are returned with
* classname DirContext. Other nodes are returned with classname
* Object even though they are DirContexts as well, since this might
* make the namespace easier to browse.
* Common base class for NameClassPairEnumeration and BindingEnumeration.
*/
class NameClassPairEnumeration implements NamingEnumeration {
abstract class BaseNameClassPairEnumeration<T> implements NamingEnumeration<T> {
protected Enumeration nodes; // nodes to be enumerated, or null if none
protected Enumeration<NameNode> nodes; // nodes to be enumerated, or null if none
protected DnsContext ctx; // context being enumerated
NameClassPairEnumeration(DnsContext ctx, Hashtable nodes) {
BaseNameClassPairEnumeration(DnsContext ctx, Hashtable<String,NameNode> nodes) {
this.ctx = ctx;
this.nodes = (nodes != null)
? nodes.elements()
......@@ -974,12 +972,12 @@ class NameClassPairEnumeration implements NamingEnumeration {
/*
* ctx will be set to null when no longer needed by the enumeration.
*/
public void close() {
public final void close() {
nodes = null;
ctx = null;
}
public boolean hasMore() {
public final boolean hasMore() {
boolean more = ((nodes != null) && nodes.hasMoreElements());
if (!more) {
close();
......@@ -987,11 +985,46 @@ class NameClassPairEnumeration implements NamingEnumeration {
return more;
}
public Object next() throws NamingException {
public final boolean hasMoreElements() {
return hasMore();
}
abstract public T next() throws NamingException;
public final T nextElement() {
try {
return next();
} catch (NamingException e) {
java.util.NoSuchElementException nsee =
new java.util.NoSuchElementException();
nsee.initCause(e);
throw nsee;
}
}
}
/*
* An enumeration of name/classname pairs.
*
* Nodes that have children or that are zone cuts are returned with
* classname DirContext. Other nodes are returned with classname
* Object even though they are DirContexts as well, since this might
* make the namespace easier to browse.
*/
final class NameClassPairEnumeration
extends BaseNameClassPairEnumeration<NameClassPair>
implements NamingEnumeration<NameClassPair> {
NameClassPairEnumeration(DnsContext ctx, Hashtable<String,NameNode> nodes) {
super(ctx, nodes);
}
@Override
public NameClassPair next() throws NamingException {
if (!hasMore()) {
throw new java.util.NoSuchElementException();
}
NameNode nnode = (NameNode) nodes.nextElement();
NameNode nnode = nodes.nextElement();
String className = (nnode.isZoneCut() ||
(nnode.getChildren() != null))
? "javax.naming.directory.DirContext"
......@@ -1005,28 +1038,15 @@ class NameClassPairEnumeration implements NamingEnumeration {
ncp.setNameInNamespace(ctx.fullyQualify(cname).toString());
return ncp;
}
public boolean hasMoreElements() {
return hasMore();
}
public Object nextElement() {
try {
return next();
} catch (NamingException e) {
throw (new java.util.NoSuchElementException(
"javax.naming.NamingException was thrown: " +
e.getMessage()));
}
}
}
/*
* An enumeration of Bindings.
*/
class BindingEnumeration extends NameClassPairEnumeration {
final class BindingEnumeration extends BaseNameClassPairEnumeration<Binding>
implements NamingEnumeration<Binding> {
BindingEnumeration(DnsContext ctx, Hashtable nodes) {
BindingEnumeration(DnsContext ctx, Hashtable<String,NameNode> nodes) {
super(ctx, nodes);
}
......@@ -1035,11 +1055,12 @@ class BindingEnumeration extends NameClassPairEnumeration {
// close();
// }
public Object next() throws NamingException {
@Override
public Binding next() throws NamingException {
if (!hasMore()) {
throw (new java.util.NoSuchElementException());
}
NameNode nnode = (NameNode) nodes.nextElement();
NameNode nnode = nodes.nextElement();
String label = nnode.getLabel();
Name compName = (new DnsName()).add(label);
......
/*
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2011, 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
......@@ -59,7 +59,7 @@ public class DnsContextFactory implements InitialContextFactory {
public Context getInitialContext(Hashtable<?,?> env) throws NamingException {
if (env == null) {
env = new Hashtable(5);
env = new Hashtable<>(5);
}
return urlToContext(getInitCtxUrl(env), env);
}
......@@ -75,7 +75,7 @@ public class DnsContextFactory implements InitialContextFactory {
* components are overridden by "domain".
*/
public static DnsContext getContext(String domain,
DnsUrl[] urls, Hashtable env)
DnsUrl[] urls, Hashtable<?,?> env)
throws NamingException {
String[] servers = serversForUrls(urls);
......@@ -95,7 +95,7 @@ public class DnsContextFactory implements InitialContextFactory {
).isEmpty();
}
private static Context urlToContext(String url, Hashtable env)
private static Context urlToContext(String url, Hashtable<?,?> env)
throws NamingException {
DnsUrl[] urls;
......@@ -212,7 +212,7 @@ public class DnsContextFactory implements InitialContextFactory {
* Reads environment to find URL(s) of initial context.
* Default URL is "dns:".
*/
private static String getInitCtxUrl(Hashtable env) {
private static String getInitCtxUrl(Hashtable<?,?> env) {
String url = (String) env.get(Context.PROVIDER_URL);
return ((url != null) ? url : DEFAULT_URL);
}
......@@ -223,34 +223,31 @@ public class DnsContextFactory implements InitialContextFactory {
* @param oneIsEnough return output once there exists one ok
* @return the filtered list, all non-permitted input removed
*/
private static List filterNameServers(List input, boolean oneIsEnough) {
private static List<String> filterNameServers(List<String> input, boolean oneIsEnough) {
SecurityManager security = System.getSecurityManager();
if (security == null || input == null || input.isEmpty()) {
return input;
} else {
List output = new ArrayList();
for (Object o: input) {
if (o instanceof String) {
String platformServer = (String)o;
int colon = platformServer.indexOf(':',
platformServer.indexOf(']') + 1);
List<String> output = new ArrayList<>();
for (String platformServer: input) {
int colon = platformServer.indexOf(':',
platformServer.indexOf(']') + 1);
int p = (colon < 0)
? DEFAULT_PORT
: Integer.parseInt(
platformServer.substring(colon + 1));
String s = (colon < 0)
? platformServer
: platformServer.substring(0, colon);
try {
security.checkConnect(s, p);
output.add(platformServer);
if (oneIsEnough) {
return output;
}
} catch (SecurityException se) {
continue;
int p = (colon < 0)
? DEFAULT_PORT
: Integer.parseInt(
platformServer.substring(colon + 1));
String s = (colon < 0)
? platformServer
: platformServer.substring(0, colon);
try {
security.checkConnect(s, p);
output.add(platformServer);
if (oneIsEnough) {
return output;
}
} catch (SecurityException se) {
continue;
}
}
return output;
......
/*
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2011, 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
......@@ -29,7 +29,6 @@ package com.sun.jndi.dns;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Enumeration;
import java.util.Iterator;
import javax.naming.*;
......@@ -111,7 +110,7 @@ public final class DnsName implements Name {
// The labels of this domain name, as a list of strings. Index 0
// corresponds to the leftmost (least significant) label: note that
// this is the reverse of the ordering used by the Name interface.
private ArrayList labels = new ArrayList();
private ArrayList<String> labels = new ArrayList<>();
// The number of octets needed to carry this domain name in a DNS
// packet. Equal to the sum of the lengths of each label, plus the
......@@ -152,9 +151,7 @@ public final class DnsName implements Name {
domain = n.domain;
octets = n.octets;
} else {
Iterator iter = labels.iterator();
while (iter.hasNext()) {
String label = (String) iter.next();
for (String label: labels) {
if (label.length() > 0) {
octets += (short) (label.length() + 1);
}
......@@ -165,10 +162,8 @@ public final class DnsName implements Name {
public String toString() {
if (domain == null) {
StringBuffer buf = new StringBuffer();
Iterator iter = labels.iterator();
while (iter.hasNext()) {
String label = (String) iter.next();
StringBuilder buf = new StringBuilder();
for (String label: labels) {
if (buf.length() > 0 || label.length() == 0) {
buf.append('.');
}
......@@ -183,9 +178,8 @@ public final class DnsName implements Name {
* Does this domain name follow <em>host name</em> syntax?
*/
public boolean isHostName() {
Iterator iter = labels.iterator();
while (iter.hasNext()) {
if (!isHostNameLabel((String) iter.next())) {
for (String label: labels) {
if (!isHostNameLabel(label)) {
return false;
}
}
......@@ -241,16 +235,16 @@ public final class DnsName implements Name {
throw new ArrayIndexOutOfBoundsException();
}
int i = size() - pos - 1; // index of "pos" component in "labels"
return (String) labels.get(i);
return labels.get(i);
}
public Enumeration getAll() {
return new Enumeration() {
public Enumeration<String> getAll() {
return new Enumeration<String>() {
int pos = 0;
public boolean hasMoreElements() {
return (pos < size());
}
public Object nextElement() {
public String nextElement() {
if (pos < size()) {
return get(pos++);
}
......@@ -276,7 +270,7 @@ public final class DnsName implements Name {
throw new ArrayIndexOutOfBoundsException();
}
int i = size() - pos - 1; // index of element to remove in "labels"
String label = (String) labels.remove(i);
String label = labels.remove(i);
int len = label.length();
if (len > 0) {
octets -= (short) (len + 1);
......@@ -530,7 +524,7 @@ public final class DnsName implements Name {
/*
* Append a label to buf, escaping as needed.
*/
private static void escape(StringBuffer buf, String label) {
private static void escape(StringBuilder buf, String label) {
for (int i = 0; i < label.length(); i++) {
char c = label.charAt(i);
if (c == '.' || c == '\\') {
......
/*
* Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2011, 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
......@@ -52,7 +52,7 @@ class NameNode {
private String label; // name of this node relative to its
// parent, or null for root of a tree
private Hashtable children = null; // child nodes
private Hashtable<String,NameNode> children = null; // child nodes
private boolean isZoneCut = false; // true if this node is a zone cut
private int depth = 0; // depth in tree (0 for root)
......@@ -97,7 +97,7 @@ class NameNode {
* Returns the children of this node, or null if there are none.
* The caller must not modify the Hashtable returned.
*/
Hashtable getChildren() {
Hashtable<String,NameNode> getChildren() {
return children;
}
......@@ -108,7 +108,7 @@ class NameNode {
*/
NameNode get(String key) {
return (children != null)
? (NameNode) children.get(key)
? children.get(key)
: null;
}
......@@ -140,9 +140,9 @@ class NameNode {
NameNode child = null;
if (node.children == null) {
node.children = new Hashtable();
node.children = new Hashtable<>();
} else {
child = (NameNode) node.children.get(key);
child = node.children.get(key);
}
if (child == null) {
child = newNameNode(label);
......
/*
* Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2011, 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
......@@ -125,8 +125,7 @@ class Resolver {
}
// Look for an SOA record giving the zone's top node.
for (int i = 0; i < rrs.authority.size(); i++) {
ResourceRecord rr = (ResourceRecord)
rrs.authority.elementAt(i);
ResourceRecord rr = rrs.authority.elementAt(i);
if (rr.getType() == ResourceRecord.TYPE_SOA) {
DnsName zone = rr.getName();
if (fqdn.endsWith(zone)) {
......@@ -152,7 +151,7 @@ class Resolver {
ResourceRecords rrs = query(zone, rrclass, ResourceRecord.TYPE_SOA,
recursion, false);
for (int i = 0; i < rrs.answer.size(); i++) {
ResourceRecord rr = (ResourceRecord) rrs.answer.elementAt(i);
ResourceRecord rr = rrs.answer.elementAt(i);
if (rr.getType() == ResourceRecord.TYPE_SOA) {
return rr;
}
......@@ -175,8 +174,7 @@ class Resolver {
recursion, false);
String[] ns = new String[rrs.answer.size()];
for (int i = 0; i < ns.length; i++) {
ResourceRecord rr = (ResourceRecord)
rrs.answer.elementAt(i);
ResourceRecord rr = rrs.answer.elementAt(i);
if (rr.getType() != ResourceRecord.TYPE_NS) {
throw new CommunicationException("Corrupted DNS message");
}
......
/*
* Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2011, 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
......@@ -45,10 +45,10 @@ class ResourceRecords {
// Four sections: question, answer, authority, additional.
// The question section is treated as being made up of (shortened)
// resource records, although this isn't technically how it's defined.
Vector question = new Vector();
Vector answer = new Vector();
Vector authority = new Vector();
Vector additional = new Vector();
Vector<ResourceRecord> question = new Vector<>();
Vector<ResourceRecord> answer = new Vector<>();
Vector<ResourceRecord> authority = new Vector<>();
Vector<ResourceRecord> additional = new Vector<>();
/*
* True if these resource records are from a zone transfer. In
......@@ -80,7 +80,7 @@ class ResourceRecords {
if (answer.size() == 0) {
return -1;
}
return ((ResourceRecord) answer.firstElement()).getType();
return answer.firstElement().getType();
}
/*
......@@ -91,7 +91,7 @@ class ResourceRecords {
if (answer.size() == 0) {
return -1;
}
return ((ResourceRecord) answer.lastElement()).getType();
return answer.lastElement().getType();
}
/*
......
/*
* Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2011, 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
......@@ -55,7 +55,7 @@ import java.util.Vector;
class ZoneNode extends NameNode {
private SoftReference contentsRef = null; // the zone's namespace
private SoftReference<NameNode> contentsRef = null; // the zone's namespace
private long serialNumber = -1; // the zone data's serial number
private Date expiration = null; // time when the zone's data expires
......@@ -88,7 +88,7 @@ class ZoneNode extends NameNode {
*/
synchronized NameNode getContents() {
return (contentsRef != null)
? (NameNode) contentsRef.get()
? contentsRef.get()
: null;
}
......@@ -130,7 +130,7 @@ class ZoneNode extends NameNode {
NameNode newContents = new NameNode(null);
for (int i = 0; i < rrs.answer.size(); i++) {
ResourceRecord rr = (ResourceRecord) rrs.answer.elementAt(i);
ResourceRecord rr = rrs.answer.elementAt(i);
DnsName n = rr.getName();
// Ignore resource records whose names aren't within the zone's
......@@ -144,9 +144,9 @@ class ZoneNode extends NameNode {
}
}
// The zone's SOA record is the first record in the answer section.
ResourceRecord soa = (ResourceRecord) rrs.answer.firstElement();
ResourceRecord soa = rrs.answer.firstElement();
synchronized (this) {
contentsRef = new SoftReference(newContents);
contentsRef = new SoftReference<NameNode>(newContents);
serialNumber = getSerialNumber(soa);
setExpiration(getMinimumTtl(soa));
return newContents;
......
/*
* Copyright (c) 1999, 2011, 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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.
*/
package com.sun.jndi.ldap;
import com.sun.jndi.toolkit.ctx.Continuation;
import java.util.NoSuchElementException;
import java.util.Vector;
import javax.naming.*;
import javax.naming.directory.Attributes;
import javax.naming.ldap.Control;
/**
* Basic enumeration for NameClassPair, Binding, and SearchResults.
*/
abstract class AbstractLdapNamingEnumeration<T extends NameClassPair>
implements NamingEnumeration<T>, ReferralEnumeration<T> {
protected Name listArg;
private boolean cleaned = false;
private LdapResult res;
private LdapClient enumClnt;
private Continuation cont; // used to fill in exceptions
private Vector<LdapEntry> entries = null;
private int limit = 0;
private int posn = 0;
protected LdapCtx homeCtx;
private LdapReferralException refEx = null;
private NamingException errEx = null;
/*
* Record the next set of entries and/or referrals.
*/
AbstractLdapNamingEnumeration(LdapCtx homeCtx, LdapResult answer, Name listArg,
Continuation cont) throws NamingException {
// These checks are to accommodate referrals and limit exceptions
// which will generate an enumeration and defer the exception
// to be thrown at the end of the enumeration.
// All other exceptions are thrown immediately.
// Exceptions shouldn't be thrown here anyhow because
// process_return_code() is called before the constructor
// is called, so these are just safety checks.
if ((answer.status != LdapClient.LDAP_SUCCESS) &&
(answer.status != LdapClient.LDAP_SIZE_LIMIT_EXCEEDED) &&
(answer.status != LdapClient.LDAP_TIME_LIMIT_EXCEEDED) &&
(answer.status != LdapClient.LDAP_ADMIN_LIMIT_EXCEEDED) &&
(answer.status != LdapClient.LDAP_REFERRAL) &&
(answer.status != LdapClient.LDAP_PARTIAL_RESULTS)) {
// %%% need to deal with referral
NamingException e = new NamingException(
LdapClient.getErrorMessage(
answer.status, answer.errorMessage));
throw cont.fillInException(e);
}
// otherwise continue
res = answer;
entries = answer.entries;
limit = (entries == null) ? 0 : entries.size(); // handle empty set
this.listArg = listArg;
this.cont = cont;
if (answer.refEx != null) {
refEx = answer.refEx;
}
// Ensures that context won't get closed from underneath us
this.homeCtx = homeCtx;
homeCtx.incEnumCount();
enumClnt = homeCtx.clnt; // remember
}
@Override
public final T nextElement() {
try {
return next();
} catch (NamingException e) {
// can't throw exception
cleanup();
return null;
}
}
@Override
public final boolean hasMoreElements() {
try {
return hasMore();
} catch (NamingException e) {
// can't throw exception
cleanup();
return false;
}
}
/*
* Retrieve the next set of entries and/or referrals.
*/
private void getNextBatch() throws NamingException {
res = homeCtx.getSearchReply(enumClnt, res);
if (res == null) {
limit = posn = 0;
return;
}
entries = res.entries;
limit = (entries == null) ? 0 : entries.size(); // handle empty set
posn = 0; // reset
// mimimize the number of calls to processReturnCode()
// (expensive when batchSize is small and there are many results)
if ((res.status != LdapClient.LDAP_SUCCESS) ||
((res.status == LdapClient.LDAP_SUCCESS) &&
(res.referrals != null))) {
try {
// convert referrals into a chain of LdapReferralException
homeCtx.processReturnCode(res, listArg);
} catch (LimitExceededException | PartialResultException e) {
setNamingException(e);
}
}
// merge any newly received referrals with any current referrals
if (res.refEx != null) {
if (refEx == null) {
refEx = res.refEx;
} else {
refEx = refEx.appendUnprocessedReferrals(res.refEx);
}
res.refEx = null; // reset
}
if (res.resControls != null) {
homeCtx.respCtls = res.resControls;
}
}
private boolean more = true; // assume we have something to start with
private boolean hasMoreCalled = false;
/*
* Test if unprocessed entries or referrals exist.
*/
@Override
public final boolean hasMore() throws NamingException {
if (hasMoreCalled) {
return more;
}
hasMoreCalled = true;
if (!more) {
return false;
} else {
return (more = hasMoreImpl());
}
}
/*
* Retrieve the next entry.
*/
@Override
public final T next() throws NamingException {
if (!hasMoreCalled) {
hasMore();
}
hasMoreCalled = false;
return nextImpl();
}
/*
* Test if unprocessed entries or referrals exist.
*/
private boolean hasMoreImpl() throws NamingException {
// when page size is supported, this
// might generate an exception while attempting
// to fetch the next batch to determine
// whether there are any more elements
// test if the current set of entries has been processed
if (posn == limit) {
getNextBatch();
}
// test if any unprocessed entries exist
if (posn < limit) {
return true;
} else {
try {
// try to process another referral
return hasMoreReferrals();
} catch (LdapReferralException |
LimitExceededException |
PartialResultException e) {
cleanup();
throw e;
} catch (NamingException e) {
cleanup();
PartialResultException pre = new PartialResultException();
pre.setRootCause(e);
throw pre;
}
}
}
/*
* Retrieve the next entry.
*/
private T nextImpl() throws NamingException {
try {
return nextAux();
} catch (NamingException e) {
cleanup();
throw cont.fillInException(e);
}
}
private T nextAux() throws NamingException {
if (posn == limit) {
getNextBatch(); // updates posn and limit
}
if (posn >= limit) {
cleanup();
throw new NoSuchElementException("invalid enumeration handle");
}
LdapEntry result = entries.elementAt(posn++);
// gets and outputs DN from the entry
return createItem(result.DN, result.attributes, result.respCtls);
}
protected final String getAtom(String dn) {
// need to strip off all but lowest component of dn
// so that is relative to current context (currentDN)
try {
Name parsed = new LdapName(dn);
return parsed.get(parsed.size() - 1);
} catch (NamingException e) {
return dn;
}
}
protected abstract T createItem(String dn, Attributes attrs,
Vector<Control> respCtls) throws NamingException;
/*
* Append the supplied (chain of) referrals onto the
* end of the current (chain of) referrals.
*/
@Override
public void appendUnprocessedReferrals(LdapReferralException ex) {
if (refEx != null) {
refEx = refEx.appendUnprocessedReferrals(ex);
} else {
refEx = ex.appendUnprocessedReferrals(refEx);
}
}
final void setNamingException(NamingException e) {
errEx = e;
}
protected abstract AbstractLdapNamingEnumeration<T> getReferredResults(
LdapReferralContext refCtx) throws NamingException;
/*
* Iterate through the URLs of a referral. If successful then perform
* a search operation and merge the received results with the current
* results.
*/
protected final boolean hasMoreReferrals() throws NamingException {
if ((refEx != null) &&
(refEx.hasMoreReferrals() ||
refEx.hasMoreReferralExceptions())) {
if (homeCtx.handleReferrals == LdapClient.LDAP_REF_THROW) {
throw (NamingException)(refEx.fillInStackTrace());
}
// process the referrals sequentially
while (true) {
LdapReferralContext refCtx =
(LdapReferralContext)refEx.getReferralContext(
homeCtx.envprops, homeCtx.reqCtls);
try {
update(getReferredResults(refCtx));
break;
} catch (LdapReferralException re) {
// record a previous exception
if (errEx == null) {
errEx = re.getNamingException();
}
refEx = re;
continue;
} finally {
// Make sure we close referral context
refCtx.close();
}
}
return hasMoreImpl();
} else {
cleanup();
if (errEx != null) {
throw errEx;
}
return (false);
}
}
/*
* Merge the entries and/or referrals from the supplied enumeration
* with those of the current enumeration.
*/
protected void update(AbstractLdapNamingEnumeration<T> ne) {
// Cleanup previous context first
homeCtx.decEnumCount();
// New enum will have already incremented enum count and recorded clnt
homeCtx = ne.homeCtx;
enumClnt = ne.enumClnt;
// Do this to prevent referral enumeration (ne) from decrementing
// enum count because we'll be doing that here from this
// enumeration.
ne.homeCtx = null;
// Record rest of information from new enum
posn = ne.posn;
limit = ne.limit;
res = ne.res;
entries = ne.entries;
refEx = ne.refEx;
listArg = ne.listArg;
}
protected final void finalize() {
cleanup();
}
protected final void cleanup() {
if (cleaned) return; // been there; done that
if(enumClnt != null) {
enumClnt.clearSearchReply(res, homeCtx.reqCtls);
}
enumClnt = null;
cleaned = true;
if (homeCtx != null) {
homeCtx.decEnumCount();
homeCtx = null;
}
}
@Override
public final void close() {
cleanup();
}
}
/*
* Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2011, 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
......@@ -94,12 +94,14 @@ public abstract class Ber {
public static final int ASN_ENUMERATED = 0x0a;
final static class EncodeException extends IOException {
private static final long serialVersionUID = -5247359637775781768L;
EncodeException(String msg) {
super(msg);
}
}
final static class DecodeException extends IOException {
private static final long serialVersionUID = 8735036969244425583L;
DecodeException(String msg) {
super(msg);
}
......
/*
* Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -25,6 +25,7 @@
package com.sun.jndi.ldap;
import java.util.Locale;
import java.util.Arrays; // JDK 1.2
import java.io.OutputStream;
import javax.naming.ldap.Control;
......@@ -71,10 +72,10 @@ class ClientId {
ClientId(int version, String hostname, int port, String protocol,
Control[] bindCtls, OutputStream trace, String socketFactory) {
this.version = version;
this.hostname = hostname.toLowerCase(); // ignore case
this.hostname = hostname.toLowerCase(Locale.ENGLISH); // ignore case
this.port = port;
this.protocol = protocol;
this.bindCtls = (bindCtls != null ? (Control[]) bindCtls.clone() : null);
this.bindCtls = (bindCtls != null ? bindCtls.clone() : null);
this.trace = trace;
//
// Needed for custom socket factory pooling
......@@ -83,13 +84,15 @@ class ClientId {
if ((socketFactory != null) &&
!socketFactory.equals(LdapCtx.DEFAULT_SSL_FACTORY)) {
try {
Class socketFactoryClass = Obj.helper.loadClass(socketFactory);
Class objClass = Class.forName("java.lang.Object");
Class<?> socketFactoryClass =
Obj.helper.loadClass(socketFactory);
Class<?> objClass = Class.forName("java.lang.Object");
this.sockComparator = socketFactoryClass.getMethod(
"compare", new Class[]{objClass, objClass});
Method getDefault =
socketFactoryClass.getMethod("getDefault", new Class[]{});
this.factory = (SocketFactory) getDefault.invoke(null, new Object[]{});
"compare", new Class<?>[]{objClass, objClass});
Method getDefault = socketFactoryClass.getMethod(
"getDefault", new Class<?>[]{});
this.factory =
(SocketFactory)getDefault.invoke(null, new Object[]{});
} catch (Exception e) {
// Ignore it here, the same exceptions are/will be handled by
// LdapPoolManager and Connection classes.
......
......@@ -238,27 +238,22 @@ public final class Connection implements Runnable {
throws NoSuchMethodException {
try {
Class inetSocketAddressClass =
Class<?> inetSocketAddressClass =
Class.forName("java.net.InetSocketAddress");
Constructor inetSocketAddressCons =
inetSocketAddressClass.getConstructor(new Class[]{
Constructor<?> inetSocketAddressCons =
inetSocketAddressClass.getConstructor(new Class<?>[]{
String.class, int.class});
return inetSocketAddressCons.newInstance(new Object[]{
host, new Integer(port)});
} catch (ClassNotFoundException e) {
} catch (ClassNotFoundException |
InstantiationException |
InvocationTargetException |
IllegalAccessException e) {
throw new NoSuchMethodException();
} catch (InstantiationException e) {
throw new NoSuchMethodException();
} catch (InvocationTargetException e) {
throw new NoSuchMethodException();
} catch (IllegalAccessException e) {
throw new NoSuchMethodException();
}
}
......@@ -280,9 +275,9 @@ public final class Connection implements Runnable {
// create the factory
Class socketFactoryClass = Obj.helper.loadClass(socketFactory);
Class<?> socketFactoryClass = Obj.helper.loadClass(socketFactory);
Method getDefault =
socketFactoryClass.getMethod("getDefault", new Class[]{});
socketFactoryClass.getMethod("getDefault", new Class<?>[]{});
Object factory = getDefault.invoke(null, new Object[]{});
// create the socket
......@@ -293,10 +288,10 @@ public final class Connection implements Runnable {
try {
createSocket = socketFactoryClass.getMethod("createSocket",
new Class[]{});
new Class<?>[]{});
Method connect = Socket.class.getMethod("connect",
new Class[]{Class.forName("java.net.SocketAddress"),
new Class<?>[]{Class.forName("java.net.SocketAddress"),
int.class});
Object endpoint = createInetSocketAddress(host, port);
......@@ -320,7 +315,7 @@ public final class Connection implements Runnable {
if (socket == null) {
createSocket = socketFactoryClass.getMethod("createSocket",
new Class[]{String.class, int.class});
new Class<?>[]{String.class, int.class});
if (debug) {
System.err.println("Connection: creating socket using " +
......@@ -335,15 +330,15 @@ public final class Connection implements Runnable {
if (connectTimeout > 0) {
try {
Constructor socketCons =
Socket.class.getConstructor(new Class[]{});
Constructor<Socket> socketCons =
Socket.class.getConstructor(new Class<?>[]{});
Method connect = Socket.class.getMethod("connect",
new Class[]{Class.forName("java.net.SocketAddress"),
new Class<?>[]{Class.forName("java.net.SocketAddress"),
int.class});
Object endpoint = createInetSocketAddress(host, port);
socket = (Socket) socketCons.newInstance(new Object[]{});
socket = socketCons.newInstance(new Object[]{});
if (debug) {
System.err.println("Connection: creating socket with " +
......
/*
* Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2011, 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
......@@ -65,7 +65,7 @@ class DigestClientId extends SimpleClientId {
DigestClientId(int version, String hostname, int port,
String protocol, Control[] bindCtls, OutputStream trace,
String socketFactory, String username,
Object passwd, Hashtable env) {
Object passwd, Hashtable<?,?> env) {
super(version, hostname, port, protocol, bindCtls, trace,
socketFactory, username, passwd);
......
/*
* Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -25,7 +25,6 @@
package com.sun.jndi.ldap;
import java.io.*;
import java.util.Vector;
import java.util.EventObject;
......@@ -52,9 +51,9 @@ final class EventQueue implements Runnable {
QueueElement next = null;
QueueElement prev = null;
EventObject event = null;
Vector vector = null;
Vector<NamingListener> vector = null;
QueueElement(EventObject event, Vector vector) {
QueueElement(EventObject event, Vector<NamingListener> vector) {
this.event = event;
this.vector = vector;
}
......@@ -87,7 +86,7 @@ final class EventQueue implements Runnable {
* are notified.
* @param vector List of NamingListeners that will be notified of event.
*/
synchronized void enqueue(EventObject event, Vector vector) {
synchronized void enqueue(EventObject event, Vector<NamingListener> vector) {
QueueElement newElt = new QueueElement(event, vector);
if (head == null) {
......@@ -133,7 +132,7 @@ final class EventQueue implements Runnable {
try {
while ((qe = dequeue()) != null) {
EventObject e = qe.event;
Vector v = qe.vector;
Vector<NamingListener> v = qe.vector;
for (int i = 0; i < v.size(); i++) {
......@@ -145,12 +144,11 @@ final class EventQueue implements Runnable {
// only enqueue events with listseners of the correct type.
if (e instanceof NamingEvent) {
((NamingEvent)e).dispatch((NamingListener)v.elementAt(i));
((NamingEvent)e).dispatch(v.elementAt(i));
// An exception occurred: if notify all naming listeners
} else if (e instanceof NamingExceptionEvent) {
((NamingExceptionEvent)e).dispatch(
(NamingListener)v.elementAt(i));
((NamingExceptionEvent)e).dispatch(v.elementAt(i));
} else if (e instanceof UnsolicitedNotificationEvent) {
((UnsolicitedNotificationEvent)e).dispatch(
(UnsolicitedNotificationListener)v.elementAt(i));
......
/*
* Copyright (c) 1999, 2000, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2011, 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
......@@ -27,11 +27,9 @@ package com.sun.jndi.ldap;
import java.util.Hashtable;
import java.util.Vector;
import java.util.Enumeration;
import java.util.EventObject;
import javax.naming.*;
import javax.naming.directory.*;
import javax.naming.event.*;
import javax.naming.directory.SearchControls;
import javax.naming.ldap.UnsolicitedNotificationListener;
......@@ -120,12 +118,13 @@ final class EventSupport {
/**
* NamingEventNotifiers; hashed by search arguments;
*/
private Hashtable notifiers = new Hashtable(11);
private Hashtable<NotifierArgs, NamingEventNotifier> notifiers =
new Hashtable<>(11);
/**
* List of unsolicited notification listeners.
*/
private Vector unsolicited = null;
private Vector<UnsolicitedNotificationListener> unsolicited = null;
/**
* Constructs EventSupport for ctx.
......@@ -155,8 +154,7 @@ final class EventSupport {
l instanceof NamespaceChangeListener) {
NotifierArgs args = new NotifierArgs(nm, scope, l);
NamingEventNotifier notifier =
(NamingEventNotifier) notifiers.get(args);
NamingEventNotifier notifier = notifiers.get(args);
if (notifier == null) {
notifier = new NamingEventNotifier(this, ctx, args, l);
notifiers.put(args, notifier);
......@@ -167,10 +165,10 @@ final class EventSupport {
if (l instanceof UnsolicitedNotificationListener) {
// Add listener to this's list of unsolicited notifiers
if (unsolicited == null) {
unsolicited = new Vector(3);
unsolicited = new Vector<>(3);
}
unsolicited.addElement(l);
unsolicited.addElement((UnsolicitedNotificationListener)l);
}
}
......@@ -185,8 +183,7 @@ final class EventSupport {
l instanceof NamespaceChangeListener) {
NotifierArgs args = new NotifierArgs(nm, filter, ctls, l);
NamingEventNotifier notifier =
(NamingEventNotifier) notifiers.get(args);
NamingEventNotifier notifier = notifiers.get(args);
if (notifier == null) {
notifier = new NamingEventNotifier(this, ctx, args, l);
notifiers.put(args, notifier);
......@@ -197,9 +194,9 @@ final class EventSupport {
if (l instanceof UnsolicitedNotificationListener) {
// Add listener to this's list of unsolicited notifiers
if (unsolicited == null) {
unsolicited = new Vector(3);
unsolicited = new Vector<>(3);
}
unsolicited.addElement(l);
unsolicited.addElement((UnsolicitedNotificationListener)l);
}
}
......@@ -207,15 +204,11 @@ final class EventSupport {
* Removes <tt>l</tt> from all notifiers in this context.
*/
synchronized void removeNamingListener(NamingListener l) {
Enumeration allnotifiers = notifiers.elements();
NamingEventNotifier notifier;
if (debug) System.err.println("EventSupport removing listener");
// Go through list of notifiers, remove 'l' from each.
// If 'l' is notifier's only listener, remove notifier too.
while (allnotifiers.hasMoreElements()) {
notifier = (NamingEventNotifier)allnotifiers.nextElement();
for (NamingEventNotifier notifier : notifiers.values()) {
if (notifier != null) {
if (debug)
System.err.println("EventSupport removing listener from notifier");
......@@ -305,8 +298,8 @@ final class EventSupport {
synchronized void cleanup() {
if (debug) System.err.println("EventSupport clean up");
if (notifiers != null) {
for (Enumeration ns = notifiers.elements(); ns.hasMoreElements(); ) {
((NamingEventNotifier) ns.nextElement()).stop();
for (NamingEventNotifier notifier : notifiers.values()) {
notifier.stop();
}
notifiers = null;
}
......@@ -328,7 +321,8 @@ final class EventSupport {
* them to the registered listeners.
* Package private; used by NamingEventNotifier to fire events
*/
synchronized void queueEvent(EventObject event, Vector vector) {
synchronized void queueEvent(EventObject event,
Vector<? extends NamingListener> vector) {
if (eventQueue == null)
eventQueue = new EventQueue();
......@@ -340,7 +334,9 @@ final class EventSupport {
* of this event will not take effect until after the event is
* delivered.
*/
Vector v = (Vector)vector.clone();
@SuppressWarnings("unchecked") // clone()
Vector<NamingListener> v =
(Vector<NamingListener>)vector.clone();
eventQueue.enqueue(event, v);
}
......
/*
* Copyright (c) 1999, 2002, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -26,8 +26,6 @@
package com.sun.jndi.ldap;
import java.io.IOException;
import java.io.Serializable;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;
import javax.naming.*;
......@@ -50,11 +48,12 @@ final class LdapAttribute extends BasicAttribute {
// these two are used to reconstruct the baseCtx if this attribute has
// been serialized (
private String baseCtxURL;
private Hashtable baseCtxEnv;
private Hashtable<String, ? super String> baseCtxEnv;
@SuppressWarnings("unchecked") // clone()
public Object clone() {
LdapAttribute attr = new LdapAttribute(this.attrID, baseCtx, rdn);
attr.values = (Vector)values.clone();
attr.values = (Vector<Object>)values.clone();
return attr;
}
......@@ -112,7 +111,7 @@ final class LdapAttribute extends BasicAttribute {
private DirContext getBaseCtx() throws NamingException {
if(baseCtx == null) {
if (baseCtxEnv == null) {
baseCtxEnv = new Hashtable(3);
baseCtxEnv = new Hashtable<String, String>(3);
}
baseCtxEnv.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
......@@ -144,9 +143,10 @@ final class LdapAttribute extends BasicAttribute {
* we are serialized. This must be called _before_ the object is
* serialized!!!
*/
@SuppressWarnings("unchecked") // clone()
private void setBaseCtxInfo() {
Hashtable realEnv = null;
Hashtable secureEnv = null;
Hashtable<String, Object> realEnv = null;
Hashtable<String, Object> secureEnv = null;
if (baseCtx != null) {
realEnv = ((LdapCtx)baseCtx).envprops;
......@@ -156,16 +156,14 @@ final class LdapAttribute extends BasicAttribute {
if(realEnv != null && realEnv.size() > 0 ) {
// remove any security credentials - otherwise the serialized form
// would store them in the clear
Enumeration keys = realEnv.keys();
while(keys.hasMoreElements()) {
String key = (String)keys.nextElement();
for (String key : realEnv.keySet()){
if (key.indexOf("security") != -1 ) {
//if we need to remove props, we must do it to a clone
//of the environment. cloning is expensive, so we only do
//it if we have to.
if(secureEnv == null) {
secureEnv = (Hashtable)realEnv.clone();
secureEnv = (Hashtable<String, Object>)realEnv.clone();
}
secureEnv.remove(key);
}
......
/*
* Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2011, 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
......@@ -28,11 +28,13 @@ package com.sun.jndi.ldap;
import java.util.Vector;
import javax.naming.*;
import javax.naming.directory.*;
import javax.naming.ldap.Control;
import javax.naming.spi.*;
import com.sun.jndi.toolkit.ctx.Continuation;
final class LdapBindingEnumeration extends LdapNamingEnumeration {
final class LdapBindingEnumeration
extends AbstractLdapNamingEnumeration<Binding> {
LdapBindingEnumeration(LdapCtx homeCtx, LdapResult answer, Name remain,
Continuation cont) throws NamingException
......@@ -40,8 +42,9 @@ final class LdapBindingEnumeration extends LdapNamingEnumeration {
super(homeCtx, answer, remain, cont);
}
protected NameClassPair
createItem(String dn, Attributes attrs, Vector respCtls)
@Override
protected Binding
createItem(String dn, Attributes attrs, Vector<Control> respCtls)
throws NamingException {
Object obj = null;
......@@ -85,9 +88,10 @@ final class LdapBindingEnumeration extends LdapNamingEnumeration {
return binding;
}
protected LdapNamingEnumeration
getReferredResults(LdapReferralContext refCtx) throws NamingException{
@Override
protected LdapBindingEnumeration getReferredResults(
LdapReferralContext refCtx) throws NamingException{
// repeat the original operation at the new context
return (LdapNamingEnumeration) refCtx.listBindings(listArg);
return (LdapBindingEnumeration)refCtx.listBindings(listArg);
}
}
......@@ -25,8 +25,8 @@
package com.sun.jndi.ldap;
import java.net.*;
import java.io.*;
import java.util.Locale;
import java.util.Vector;
import java.util.Hashtable;
......@@ -81,7 +81,8 @@ public final class LdapClient implements PooledConnection {
static final boolean caseIgnore = true;
// Default list of binary attributes
private static final Hashtable defaultBinaryAttrs = new Hashtable(23,0.75f);
private static final Hashtable<String, Boolean> defaultBinaryAttrs =
new Hashtable<>(23,0.75f);
static {
defaultBinaryAttrs.put("userpassword", Boolean.TRUE); //2.5.4.35
defaultBinaryAttrs.put("javaserializeddata", Boolean.TRUE);
......@@ -146,7 +147,7 @@ public final class LdapClient implements PooledConnection {
synchronized LdapResult
authenticate(boolean initial, String name, Object pw, int version,
String authMechanism, Control[] ctls, Hashtable env)
String authMechanism, Control[] ctls, Hashtable<?,?> env)
throws NamingException {
authenticateCalled = true;
......@@ -516,8 +517,8 @@ public final class LdapClient implements PooledConnection {
LdapResult search(String dn, int scope, int deref, int sizeLimit,
int timeLimit, boolean attrsOnly, String attrs[],
String filter, int batchSize, Control[] reqCtls,
Hashtable binaryAttrs, boolean waitFirstReply,
int replyQueueCapacity)
Hashtable<String, Boolean> binaryAttrs,
boolean waitFirstReply, int replyQueueCapacity)
throws IOException, NamingException {
ensureOpen();
......@@ -586,7 +587,7 @@ public final class LdapClient implements PooledConnection {
* Retrieve the next batch of entries and/or referrals.
*/
LdapResult getSearchReply(int batchSize, LdapResult res,
Hashtable binaryAttrs) throws IOException, NamingException {
Hashtable<String, Boolean> binaryAttrs) throws IOException, NamingException {
ensureOpen();
......@@ -600,7 +601,7 @@ public final class LdapClient implements PooledConnection {
}
private LdapResult getSearchReply(LdapRequest req,
int batchSize, LdapResult res, Hashtable binaryAttrs)
int batchSize, LdapResult res, Hashtable<String, Boolean> binaryAttrs)
throws IOException, NamingException {
if (batchSize == 0)
......@@ -610,7 +611,7 @@ public final class LdapClient implements PooledConnection {
res.entries.setSize(0); // clear the (previous) set of entries
} else {
res.entries =
new Vector(batchSize == Integer.MAX_VALUE ? 32 : batchSize);
new Vector<>(batchSize == Integer.MAX_VALUE ? 32 : batchSize);
}
if (res.referrals != null) {
......@@ -660,7 +661,7 @@ public final class LdapClient implements PooledConnection {
} else if ((seq == LDAP_REP_SEARCH_REF) && isLdapv3) {
// handle LDAPv3 search reference
Vector URLs = new Vector(4);
Vector<String> URLs = new Vector<>(4);
// %%% Although not strictly correct, some LDAP servers
// encode the SEQUENCE OF tag in the SearchResultRef
......@@ -676,7 +677,7 @@ public final class LdapClient implements PooledConnection {
}
if (res.referrals == null) {
res.referrals = new Vector(4);
res.referrals = new Vector<>(4);
}
res.referrals.addElement(URLs);
res.resControls = isLdapv3 ? parseControls(replyBer) : null;
......@@ -700,7 +701,8 @@ public final class LdapClient implements PooledConnection {
return res;
}
private Attribute parseAttribute(BerDecoder ber, Hashtable binaryAttrs)
private Attribute parseAttribute(BerDecoder ber,
Hashtable<String, Boolean> binaryAttrs)
throws IOException {
int len[] = new int[1];
......@@ -737,13 +739,15 @@ public final class LdapClient implements PooledConnection {
if (hasBinaryValues) {
la.add(ber.parseOctetString(ber.peekByte(), len));
} else {
la.add(ber.parseStringWithTag(Ber.ASN_SIMPLE_STRING, isLdapv3, len));
la.add(ber.parseStringWithTag(
Ber.ASN_SIMPLE_STRING, isLdapv3, len));
}
return len[0];
}
private boolean isBinaryValued(String attrid, Hashtable binaryAttrs) {
String id = attrid.toLowerCase();
private boolean isBinaryValued(String attrid,
Hashtable<String, Boolean> binaryAttrs) {
String id = attrid.toLowerCase(Locale.ENGLISH);
return ((id.indexOf(";binary") != -1) ||
defaultBinaryAttrs.containsKey(id) ||
......@@ -751,8 +755,8 @@ public final class LdapClient implements PooledConnection {
}
// package entry point; used by Connection
static void parseResult(BerDecoder replyBer, LdapResult res, boolean isLdapv3)
throws IOException {
static void parseResult(BerDecoder replyBer, LdapResult res,
boolean isLdapv3) throws IOException {
res.status = replyBer.parseEnumeration();
res.matchedDN = replyBer.parseString(isLdapv3);
......@@ -763,7 +767,7 @@ public final class LdapClient implements PooledConnection {
(replyBer.bytesLeft() > 0) &&
(replyBer.peekByte() == LDAP_REP_REFERRAL)) {
Vector URLs = new Vector(4);
Vector<String> URLs = new Vector<>(4);
int[] seqlen = new int[1];
replyBer.parseSeq(seqlen);
......@@ -775,18 +779,18 @@ public final class LdapClient implements PooledConnection {
}
if (res.referrals == null) {
res.referrals = new Vector(4);
res.referrals = new Vector<>(4);
}
res.referrals.addElement(URLs);
}
}
// package entry point; used by Connection
static Vector parseControls(BerDecoder replyBer) throws IOException {
static Vector<Control> parseControls(BerDecoder replyBer) throws IOException {
// handle LDAPv3 controls (if present)
if ((replyBer.bytesLeft() > 0) && (replyBer.peekByte() == LDAP_CONTROLS)) {
Vector ctls = new Vector(4);
Vector<Control> ctls = new Vector<>(4);
String controlOID;
boolean criticality = false; // default
byte[] controlValue = null; // optional
......@@ -957,7 +961,7 @@ public final class LdapClient implements PooledConnection {
ber.beginSeq(Ber.ASN_SEQUENCE | Ber.ASN_CONSTRUCTOR);
ber.encodeString(attr.getID(), isLdapv3);
ber.beginSeq(Ber.ASN_SEQUENCE | Ber.ASN_CONSTRUCTOR | 1);
NamingEnumeration enum_ = attr.getAll();
NamingEnumeration<?> enum_ = attr.getAll();
Object val;
while (enum_.hasMore()) {
val = enum_.next();
......@@ -1007,9 +1011,10 @@ public final class LdapClient implements PooledConnection {
ber.beginSeq(LDAP_REQ_ADD);
ber.encodeString(entry.DN, isLdapv3);
ber.beginSeq(Ber.ASN_SEQUENCE | Ber.ASN_CONSTRUCTOR);
NamingEnumeration enum_ = entry.attributes.getAll();
NamingEnumeration<? extends Attribute> enum_ =
entry.attributes.getAll();
while (enum_.hasMore()) {
attr = (Attribute)enum_.next();
attr = enum_.next();
// zero values is not permitted
if (hasNoValue(attr)) {
......@@ -1474,7 +1479,7 @@ public final class LdapClient implements PooledConnection {
// removeUnsolicited() is invoked to remove an LdapCtx from this client.
//
////////////////////////////////////////////////////////////////////////////
private Vector unsolicited = new Vector(3);
private Vector<LdapCtx> unsolicited = new Vector<>(3);
void addUnsolicited(LdapCtx ctx) {
if (debug > 0) {
System.err.println("LdapClient.addUnsolicited" + ctx);
......@@ -1500,70 +1505,70 @@ public final class LdapClient implements PooledConnection {
if (debug > 0) {
System.err.println("LdapClient.processUnsolicited");
}
synchronized (unsolicited) {
try {
// Parse the response
LdapResult res = new LdapResult();
ber.parseSeq(null); // init seq
ber.parseInt(); // msg id; should be 0; ignored
if (ber.parseByte() != LDAP_REP_EXTENSION) {
throw new IOException(
"Unsolicited Notification must be an Extended Response");
}
ber.parseLength();
parseExtResponse(ber, res);
if (DISCONNECT_OID.equals(res.extensionId)) {
// force closing of connection
forceClose(pooled);
}
synchronized (unsolicited) {
try {
// Parse the response
LdapResult res = new LdapResult();
ber.parseSeq(null); // init seq
ber.parseInt(); // msg id; should be 0; ignored
if (ber.parseByte() != LDAP_REP_EXTENSION) {
throw new IOException(
"Unsolicited Notification must be an Extended Response");
}
ber.parseLength();
parseExtResponse(ber, res);
if (unsolicited.size() > 0) {
// Create an UnsolicitedNotification using the parsed data
// Need a 'ctx' object because we want to use the context's
// list of provider control factories.
UnsolicitedNotification notice = new UnsolicitedResponseImpl(
res.extensionId,
res.extensionValue,
res.referrals,
res.status,
res.errorMessage,
res.matchedDN,
(res.resControls != null) ?
((LdapCtx)unsolicited.elementAt(0)).convertControls(res.resControls) :
null);
// Fire UnsolicitedNotification events to listeners
notifyUnsolicited(notice);
// If "disconnect" notification,
// notify unsolicited listeners via NamingException
if (DISCONNECT_OID.equals(res.extensionId)) {
notifyUnsolicited(
new CommunicationException("Connection closed"));
// force closing of connection
forceClose(pooled);
}
}
} catch (IOException e) {
if (unsolicited.size() == 0)
return; // no one registered; ignore
NamingException ne = new CommunicationException(
"Problem parsing unsolicited notification");
ne.setRootCause(e);
if (unsolicited.size() > 0) {
// Create an UnsolicitedNotification using the parsed data
// Need a 'ctx' object because we want to use the context's
// list of provider control factories.
UnsolicitedNotification notice = new UnsolicitedResponseImpl(
res.extensionId,
res.extensionValue,
res.referrals,
res.status,
res.errorMessage,
res.matchedDN,
(res.resControls != null) ?
unsolicited.elementAt(0).convertControls(res.resControls) :
null);
// Fire UnsolicitedNotification events to listeners
notifyUnsolicited(notice);
// If "disconnect" notification,
// notify unsolicited listeners via NamingException
if (DISCONNECT_OID.equals(res.extensionId)) {
notifyUnsolicited(
new CommunicationException("Connection closed"));
}
}
} catch (IOException e) {
if (unsolicited.size() == 0)
return; // no one registered; ignore
NamingException ne = new CommunicationException(
"Problem parsing unsolicited notification");
ne.setRootCause(e);
notifyUnsolicited(ne);
notifyUnsolicited(ne);
} catch (NamingException e) {
notifyUnsolicited(e);
} catch (NamingException e) {
notifyUnsolicited(e);
}
}
}
}
private void notifyUnsolicited(Object e) {
for (int i = 0; i < unsolicited.size(); i++) {
((LdapCtx)unsolicited.elementAt(i)).fireUnsolicited(e);
unsolicited.elementAt(i).fireUnsolicited(e);
}
if (e instanceof NamingException) {
unsolicited.setSize(0); // no more listeners after exception
......@@ -1584,7 +1589,7 @@ public final class LdapClient implements PooledConnection {
static LdapClient getInstance(boolean usePool, String hostname, int port,
String factory, int connectTimeout, int readTimeout, OutputStream trace,
int version, String authMechanism, Control[] ctls, String protocol,
String user, Object passwd, Hashtable env) throws NamingException {
String user, Object passwd, Hashtable<?,?> env) throws NamingException {
if (usePool) {
if (LdapPoolManager.isPoolingAllowed(factory, trace,
......
/*
* Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2011, 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
......@@ -28,7 +28,6 @@ package com.sun.jndi.ldap;
import java.util.Hashtable;
import java.util.Vector;
import java.util.Enumeration;
import java.net.MalformedURLException;
import javax.naming.*;
import javax.naming.directory.*;
......@@ -119,9 +118,9 @@ final public class LdapCtxFactory implements ObjectFactory, InitialContextFactor
int size = 0; // number of URLs
String[] urls = new String[ref.size()];
Enumeration addrs = ref.getAll();
Enumeration<RefAddr> addrs = ref.getAll();
while (addrs.hasMoreElements()) {
RefAddr addr = (RefAddr)addrs.nextElement();
RefAddr addr = addrs.nextElement();
if ((addr instanceof StringRefAddr) &&
addr.getType().equals(ADDRESS_TYPE)) {
......@@ -145,7 +144,7 @@ final public class LdapCtxFactory implements ObjectFactory, InitialContextFactor
// ------------ Utilities used by other classes ----------------
public static DirContext getLdapCtxInstance(Object urlInfo, Hashtable env)
public static DirContext getLdapCtxInstance(Object urlInfo, Hashtable<?,?> env)
throws NamingException {
if (urlInfo instanceof String) {
......@@ -158,7 +157,7 @@ final public class LdapCtxFactory implements ObjectFactory, InitialContextFactor
}
}
private static DirContext getUsingURL(String url, Hashtable env)
private static DirContext getUsingURL(String url, Hashtable<?,?> env)
throws NamingException {
DirContext ctx = null;
LdapURL ldapUrl = new LdapURL(url);
......@@ -202,7 +201,7 @@ final public class LdapCtxFactory implements ObjectFactory, InitialContextFactor
* If all URLs fail, throw one of the exceptions arbitrarily.
* Not pretty, but potentially more informative than returning null.
*/
private static DirContext getUsingURLs(String[] urls, Hashtable env)
private static DirContext getUsingURLs(String[] urls, Hashtable<?,?> env)
throws NamingException {
NamingException ne = null;
DirContext ctx = null;
......@@ -221,8 +220,8 @@ final public class LdapCtxFactory implements ObjectFactory, InitialContextFactor
/**
* Used by Obj and obj/RemoteToAttrs too so must be public
*/
public static Attribute createTypeNameAttr(Class cl) {
Vector v = new Vector(10);
public static Attribute createTypeNameAttr(Class<?> cl) {
Vector<String> v = new Vector<>(10);
String[] types = getTypeNames(cl, v);
if (types.length > 0) {
BasicAttribute tAttr =
......@@ -235,7 +234,7 @@ final public class LdapCtxFactory implements ObjectFactory, InitialContextFactor
return null;
}
private static String[] getTypeNames(Class currentClass, Vector v) {
private static String[] getTypeNames(Class<?> currentClass, Vector<String> v) {
getClassesAux(currentClass, v);
Class[] members = currentClass.getInterfaces();
......@@ -244,13 +243,14 @@ final public class LdapCtxFactory implements ObjectFactory, InitialContextFactor
}
String[] ret = new String[v.size()];
int i = 0;
for (java.util.Enumeration e = v.elements(); e.hasMoreElements();) {
ret[i++] = (String)e.nextElement();
for (String name : v) {
ret[i++] = name;
}
return ret;
}
private static void getClassesAux(Class currentClass, Vector v) {
private static void getClassesAux(Class<?> currentClass, Vector<String> v) {
if (!v.contains(currentClass.getName())) {
v.addElement(currentClass.getName());
}
......
/*
* Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2011, 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
......@@ -27,7 +27,7 @@ package com.sun.jndi.ldap;
import java.util.Vector;
import javax.naming.directory.Attributes;
import javax.naming.directory.Attribute;
import javax.naming.ldap.Control;
/**
* A holder for an LDAP entry read from an LDAP server.
......@@ -38,14 +38,14 @@ import javax.naming.directory.Attribute;
final class LdapEntry {
String DN;
Attributes attributes;
Vector respCtls = null;
Vector<Control> respCtls = null;
LdapEntry(String DN, Attributes attrs) {
this.DN = DN;
this.attributes = attrs;
}
LdapEntry(String DN, Attributes attrs, Vector respCtls) {
LdapEntry(String DN, Attributes attrs, Vector<Control> respCtls) {
this.DN = DN;
this.attributes = attrs;
this.respCtls = respCtls;
......
/*
* Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2011, 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
......@@ -28,6 +28,7 @@ package com.sun.jndi.ldap;
import java.util.Enumeration;
import java.util.Vector;
import java.util.Locale;
import javax.naming.*;
import javax.naming.directory.Attributes;
......@@ -78,7 +79,7 @@ import javax.naming.directory.BasicAttributes;
public final class LdapName implements Name {
private transient String unparsed; // if non-null, the DN in unparsed form
private transient Vector rdns; // parsed name components
private transient Vector<Rdn> rdns; // parsed name components
private transient boolean valuesCaseSensitive = false;
/**
......@@ -97,9 +98,10 @@ public final class LdapName implements Name {
* Constructs an LDAP name given its parsed components and, optionally
* (if "name" is not null), the unparsed DN.
*/
private LdapName(String name, Vector rdns) {
@SuppressWarnings("unchecked") // clone()
private LdapName(String name, Vector<Rdn> rdns) {
unparsed = name;
this.rdns = (Vector)rdns.clone();
this.rdns = (Vector<Rdn>)rdns.clone();
}
/*
......@@ -107,9 +109,9 @@ public final class LdapName implements Name {
* of "rdns" in the range [beg,end)) and, optionally
* (if "name" is not null), the unparsed DN.
*/
private LdapName(String name, Vector rdns, int beg, int end) {
private LdapName(String name, Vector<Rdn> rdns, int beg, int end) {
unparsed = name;
this.rdns = new Vector();
this.rdns = new Vector<>();
for (int i = beg; i < end; i++) {
this.rdns.addElement(rdns.elementAt(i));
}
......@@ -130,7 +132,7 @@ public final class LdapName implements Name {
if (i < rdns.size() - 1) {
buf.append(',');
}
Rdn rdn = (Rdn)rdns.elementAt(i);
Rdn rdn = rdns.elementAt(i);
buf.append(rdn);
}
......@@ -155,8 +157,8 @@ public final class LdapName implements Name {
int minSize = Math.min(rdns.size(), that.rdns.size());
for (int i = 0 ; i < minSize; i++) {
// Compare a single pair of RDNs.
Rdn rdn1 = (Rdn)rdns.elementAt(i);
Rdn rdn2 = (Rdn)that.rdns.elementAt(i);
Rdn rdn1 = rdns.elementAt(i);
Rdn rdn2 = that.rdns.elementAt(i);
int diff = rdn1.compareTo(rdn2);
if (diff != 0) {
......@@ -172,7 +174,7 @@ public final class LdapName implements Name {
// For each RDN...
for (int i = 0; i < rdns.size(); i++) {
Rdn rdn = (Rdn)rdns.elementAt(i);
Rdn rdn = rdns.elementAt(i);
hash += rdn.hashCode();
}
return hash;
......@@ -186,14 +188,14 @@ public final class LdapName implements Name {
return rdns.isEmpty();
}
public Enumeration getAll() {
final Enumeration enum_ = rdns.elements();
public Enumeration<String> getAll() {
final Enumeration<Rdn> enum_ = rdns.elements();
return new Enumeration () {
return new Enumeration<String>() {
public boolean hasMoreElements() {
return enum_.hasMoreElements();
}
public Object nextElement() {
public String nextElement() {
return enum_.nextElement().toString();
}
};
......@@ -254,7 +256,7 @@ public final class LdapName implements Name {
Rdn rdn;
if (n instanceof LdapName) {
LdapName ln = (LdapName)n;
rdn = (Rdn)ln.rdns.elementAt(i - beg);
rdn = ln.rdns.elementAt(i - beg);
} else {
String rdnString = n.get(i - beg);
try {
......@@ -286,9 +288,9 @@ public final class LdapName implements Name {
rdns.insertElementAt(s.rdns.elementAt(i), pos++);
}
} else {
Enumeration comps = suffix.getAll();
Enumeration<String> comps = suffix.getAll();
while (comps.hasMoreElements()) {
DnParser p = new DnParser((String)comps.nextElement(),
DnParser p = new DnParser(comps.nextElement(),
valuesCaseSensitive);
rdns.insertElementAt(p.getRdn(), pos++);
}
......@@ -406,9 +408,9 @@ public final class LdapName implements Name {
/*
* Parses the DN, returning a Vector of its RDNs.
*/
Vector getDn() throws InvalidNameException {
Vector<Rdn> getDn() throws InvalidNameException {
cur = 0;
Vector rdns = new Vector(len / 3 + 10); // leave room for growth
Vector<Rdn> rdns = new Vector<>(len / 3 + 10); // leave room for growth
if (len == 0) {
return rdns;
......@@ -595,7 +597,7 @@ public final class LdapName implements Name {
* A vector of the TypeAndValue elements of this Rdn.
* It is sorted to facilitate set operations.
*/
private final Vector tvs = new Vector();
private final Vector<TypeAndValue> tvs = new Vector<>();
void add(TypeAndValue tv) {
......@@ -636,7 +638,7 @@ public final class LdapName implements Name {
int minSize = Math.min(tvs.size(), that.tvs.size());
for (int i = 0; i < minSize; i++) {
// Compare a single pair of type/value pairs.
TypeAndValue tv = (TypeAndValue)tvs.elementAt(i);
TypeAndValue tv = tvs.elementAt(i);
int diff = tv.compareTo(that.tvs.elementAt(i));
if (diff != 0) {
return diff;
......@@ -662,7 +664,7 @@ public final class LdapName implements Name {
Attribute attr;
for (int i = 0; i < tvs.size(); i++) {
tv = (TypeAndValue) tvs.elementAt(i);
tv = tvs.elementAt(i);
if ((attr = attrs.get(tv.getType())) == null) {
attrs.put(tv.getType(), tv.getUnescapedValue());
} else {
......@@ -706,7 +708,7 @@ public final class LdapName implements Name {
TypeAndValue that = (TypeAndValue)obj;
int diff = type.toUpperCase().compareTo(that.type.toUpperCase());
int diff = type.compareToIgnoreCase(that.type);
if (diff != 0) {
return diff;
}
......@@ -729,7 +731,7 @@ public final class LdapName implements Name {
public int hashCode() {
// If two objects are equal, their hash codes must match.
return (type.toUpperCase().hashCode() +
return (type.toUpperCase(Locale.ENGLISH).hashCode() +
getValueComparable().hashCode());
}
......@@ -763,11 +765,12 @@ public final class LdapName implements Name {
// cache result
if (binary) {
comparable = value.toUpperCase();
comparable = value.toUpperCase(Locale.ENGLISH);
} else {
comparable = (String)unescapeValue(value);
if (!valueCaseSensitive) {
comparable = comparable.toUpperCase(); // ignore case
// ignore case
comparable = comparable.toUpperCase(Locale.ENGLISH);
}
}
return comparable;
......@@ -835,7 +838,7 @@ public final class LdapName implements Name {
buf.append(Character.forDigit(0xF & b, 16));
}
return (new String(buf)).toUpperCase();
return (new String(buf)).toUpperCase(Locale.ENGLISH);
}
/*
......
/*
* Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -26,7 +26,6 @@
package com.sun.jndi.ldap;
import javax.naming.*;
import javax.naming.spi.*;
import javax.naming.ldap.Control;
import java.util.Hashtable;
......@@ -67,15 +66,16 @@ import java.util.Vector;
*/
final public class LdapReferralException extends
javax.naming.ldap.LdapReferralException {
private static final long serialVersionUID = 627059076356906399L;
// ----------- fields initialized in constructor ---------------
private int handleReferrals;
private Hashtable envprops;
private Hashtable<?,?> envprops;
private String nextName;
private Control[] reqCtls;
// ----------- fields that have defaults -----------------------
private Vector referrals = null; // alternatives,set by setReferralInfo()
private Vector<?> referrals = null; // alternatives,set by setReferralInfo()
private int referralIndex = 0; // index into referrals
private int referralCount = 0; // count of referrals
private boolean foundEntry = false; // will stop when entry is found
......@@ -98,7 +98,7 @@ final public class LdapReferralException extends
Object resolvedObj,
Name remainingName,
String explanation,
Hashtable envprops,
Hashtable<?,?> envprops,
String nextName,
int handleReferrals,
Control[] reqCtls) {
......@@ -210,7 +210,7 @@ final public class LdapReferralException extends
/**
* Sets referral information.
*/
void setReferralInfo(Vector referrals, boolean continuationRef) {
void setReferralInfo(Vector<?> referrals, boolean continuationRef) {
// %%% continuationRef is currently ignored
if (debug)
......
/*
* Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2011, 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
......@@ -133,7 +133,7 @@ final class NotifierArgs {
private int controlsCode() {
if (controls == null) return 0;
int total = (int)controls.getTimeLimit() + (int)controls.getCountLimit() +
int total = controls.getTimeLimit() + (int)controls.getCountLimit() +
(controls.getDerefLinkFlag() ? 1 : 0) +
(controls.getReturningObjFlag() ? 1 : 0);
......
/*
* Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2011, 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
......@@ -27,6 +27,6 @@ package com.sun.jndi.ldap;
import javax.naming.NamingEnumeration;
interface ReferralEnumeration extends NamingEnumeration {
interface ReferralEnumeration<T> extends NamingEnumeration<T> {
void appendUnprocessedReferrals(LdapReferralException ex);
}
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册