diff --git a/.hgtags b/.hgtags index 8a91ce7fabc4260c84be51f037b58a2ad6070c8c..4ab2cd9e5c08681d05d88b1ccbf6500bc3921035 100644 --- a/.hgtags +++ b/.hgtags @@ -12,3 +12,10 @@ fa4c0a6cdd25d97d4e6f5d7aa180bcbb0e0d56af jdk7-b33 cf4894b78ceb966326e93bf221db0c2d14d59218 jdk7-b35 134fd1a656ea85acd1f97f6700f75029b9b472a0 jdk7-b36 14f50aee4989b75934d385c56a83da0c23d2f68b jdk7-b37 +cc5f810b5af8a3a83b0df5a29d9e24d7a0ff8086 jdk7-b38 +4e51997582effa006dde5c6d8b8820b2045b9c7f jdk7-b39 +2201dad60231a3c3e0346e3a0250d69ca3b71fd4 jdk7-b40 +44941f893cea95ecdd5987b12e548069bd803849 jdk7-b41 +3ef0bdfa7609f79d4f2ea621f30cf593a2e432ce jdk7-b42 +50c67678b0d180063ade199d398b67a54063fa7f jdk7-b43 +d8eb2738db6b148911177d9bcfe888109b7f2f71 jdk7-b44 diff --git a/make/com/sun/java/pack/Makefile b/make/com/sun/java/pack/Makefile index c8b4e990984a2cc24cef84542f9540d2f95fc45e..afb84d3657491e888cc6923da9154c9012b09e28 100644 --- a/make/com/sun/java/pack/Makefile +++ b/make/com/sun/java/pack/Makefile @@ -142,9 +142,11 @@ endif $(UNPACK_EXE): $(UNPACK_EXE_FILES_o) winres $(prep-target) $(LINKER) $(LDDFLAGS) $(UNPACK_EXE_FILES_o) $(RES) $(LIBCXX) $(LDOUTPUT)$(TEMPDIR)/unpack200$(EXE_SUFFIX) +ifdef MT + $(MT) /manifest $(TEMPDIR)/unpack200$(EXE_SUFFIX).manifest /outputresource:$(TEMPDIR)/unpack200$(EXE_SUFFIX);#1 +endif $(CP) $(TEMPDIR)/unpack200$(EXE_SUFFIX) $(UNPACK_EXE) - ifeq ($(PLATFORM), windows) $(RES):: $(VERSIONINFO_RESOURCE) $(prep-target) diff --git a/make/common/Defs-windows.gmk b/make/common/Defs-windows.gmk index 4ec2a0467a8219b6134e8e744ba9d4e5dd9df054..7b178497e128fbe448ca7fc14163bfc639c318ce 100644 --- a/make/common/Defs-windows.gmk +++ b/make/common/Defs-windows.gmk @@ -68,11 +68,24 @@ PLATFORM_INCLUDE = $(INCLUDEDIR)/$(PLATFORM_INCLUDE_NAME) # The following DLL's are considered MS runtime libraries and should # not to be REBASEd, see deploy/make/common/Release.gmk. -# msvcrt.dll, msvcr71.dll: Microsoft runtimes +# msvcrt.dll, msvcrnn.dll [msvcr71 or msvcr80 or msvcr90] : Microsoft runtimes MS_RUNTIME_LIBRARIES = msvcrt.dll +MSVCRNN_DLL = ifeq ($(ARCH_DATA_MODEL), 32) ifeq ($(COMPILER_VERSION), VS2003) - MS_RUNTIME_LIBRARIES += msvcr71.dll + MSVCRNN_DLL = msvcr71.dll + MSVCPNN_DLL = msvcp71.dll + MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL) + endif + ifeq ($(COMPILER_VERSION), VS2005) + MSVCRNN_DLL = msvcr80.dll + MSVCPNN_DLL = msvcp80.dll + MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL) + endif + ifeq ($(COMPILER_VERSION), VS2008) + MSVCRNN_DLL = msvcr90.dll + MSVCPNN_DLL = msvcp90.dll + MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL) endif endif @@ -178,9 +191,22 @@ ifeq ($(CC_VERSION),msvc) CC_OPT/LOWER = -O1 endif endif + ifeq ($(COMPILER_VERSION), VS2008) + # Automatic precompiled header option to use (if COMPILE_APPROACH=batch) + AUTOMATIC_PCH_OPTION = + GX_OPTION = -EHsc + ifeq ($(ARCH_DATA_MODEL), 32) + CC_OPT/HIGHEST = -O2 + CC_OPT/HIGHER = -O1 + CC_OPT/LOWER = -O1 + else + CC_OPT/HIGHEST = -O2 + CC_OPT/HIGHER = -O1 + CC_OPT/LOWER = -O1 + endif + endif else # CC_VERSION - # GCC not supported, but left for historical reference... CC_OPT/NONE = CC_OPT/LOWER = -O2 @@ -200,10 +226,13 @@ CC_OPT = $(CC_OPT/$(OPTIMIZATION_LEVEL)) # -MTd Use static debug version (better than -MDd, no runtime issues) # -D_DEBUG Change use of malloc/free/etc to use special debug ones (-MTd) # -# NOTE: We also will use /D _STATIC_CPPLIB so we don't need msvcp71.dll +# NOTE: We also will use /D _STATIC_CPPLIB so we don't need msvcpnn.dll # +# If MS_RUNTIME_STATIC is requested, use -MT only with VS2003. ifeq ($(MS_RUNTIME_STATIC),true) - MS_RUNTIME_OPTION=-MT + ifeq ($(COMPILER_VERSION), VS2003) + MS_RUNTIME_OPTION=-MT + endif else MS_RUNTIME_OPTION=-MD endif @@ -238,7 +267,7 @@ ifeq ($(CC_VERSION),msvc) # -YX -Fp/.../foobar.pch Use precompiled headers (try someday?) # -nologo Don't print out startup message # /D _STATIC_CPPLIB - # Use static link for the C++ runtime (so msvcp71.dll not needed) + # Use static link for the C++ runtime (so msvcpnn.dll not needed) # CFLAGS_COMMON += -Zi -nologo CFLAGS_OPT = $(CC_OPT) @@ -277,8 +306,16 @@ ifeq ($(CC_VERSION),msvc) # Always add bufferoverflowU.lib to VS2005 link commands (pack uses LDDFLAGS) LFLAGS_VS2005 = $(BUFFEROVERFLOWLIB) + # VS2008 has bufferoverflow baked in: + LFLAGS_VS2008 = + # LFLAGS are the flags given to $(LINK) and used to build the actual DLL file BASELFLAGS = -nologo /opt:REF /incremental:no +ifdef MT + # VS2005, VS2008, and beyond: ask LINK to generate manifests for .dll & .exe + BASELFLAGS += /manifest +endif + LFLAGS = $(BASELFLAGS) $(LDEBUG) $(EXTRA_LFLAGS) $(LFLAGS_$(COMPILER_VERSION)) LDDFLAGS += $(LFLAGS_$(COMPILER_VERSION)) diff --git a/make/common/Library.gmk b/make/common/Library.gmk index 3e4318ecd2323120d8ecf4c093ec842936b2113b..0093c8e3a7ea14eadd4103495c6424f30aa20a14 100644 --- a/make/common/Library.gmk +++ b/make/common/Library.gmk @@ -179,6 +179,9 @@ else # LIBRARY # build it into $(OBJDIR) so that the other generated files get put # there, then copy just the DLL (and MAP file) to the requested directory. # +# In VS2005 or VS2008 the link command creates a .manifest file that we want +# to insert into the linked artifact so we do not need to track it separately. +# Use ";#2" for .dll and ";#1" for .exe in the MT command below: $(ACTUAL_LIBRARY):: $(OBJDIR)/$(LIBRARY).lcf @$(prep-target) @$(MKDIR) -p $(OBJDIR) @@ -186,6 +189,9 @@ $(ACTUAL_LIBRARY):: $(OBJDIR)/$(LIBRARY).lcf -map:$(OBJDIR)/$(LIBRARY).map \ $(LFLAGS) @$(OBJDIR)/$(LIBRARY).lcf \ $(OTHER_LCF) $(JAVALIB) $(LDLIBS) +ifdef MT + $(MT) /manifest $(OBJDIR)/$(@F).manifest /outputresource:$(OBJDIR)/$(@F);#2 +endif $(CP) $(OBJDIR)/$(@F) $@ $(CP) $(OBJDIR)/$(LIBRARY).map $(@D) $(CP) $(OBJDIR)/$(LIBRARY).pdb $(@D) diff --git a/make/common/Program.gmk b/make/common/Program.gmk index 85a5be3645ea5578715fad75df8080524bdfdf14..22aa7f9dbd0664f9a802f9d50262c3a407444844 100644 --- a/make/common/Program.gmk +++ b/make/common/Program.gmk @@ -153,6 +153,9 @@ else STACK_SIZE=1048576 endif +# In VS2005 or VS2008 the link command creates a .manifest file that we want +# to insert into the linked artifact so we do not need to track it separately. +# Use ";#2" for .dll and ";#1" for .exe in the MT command below: $(OBJDIR)/$(PROGRAM)$(EXE_SUFFIX):: $(OBJDIR)/$(PROGRAM).lcf $(FILES_o) $(JLI_LCF) @$(prep-target) @set -- $?; \ @@ -160,6 +163,9 @@ $(OBJDIR)/$(PROGRAM)$(EXE_SUFFIX):: $(OBJDIR)/$(PROGRAM).lcf $(FILES_o) $(JLI_LC $(LINK) -out:$@ /STACK:$(STACK_SIZE) \ -map:$(OBJDIR)/$(PROGRAM).map $(LFLAGS) $(LDFLAGS) \ @$(OBJDIR)/$(PROGRAM).lcf $(LDLIBS) +ifdef MT + $(MT) /manifest $(OBJDIR)/$(PROGRAM).exe.manifest /outputresource:$@;#1 +endif else # PLATFORM diff --git a/make/common/shared/Compiler-msvc.gmk b/make/common/shared/Compiler-msvc.gmk index a4b6261781012aaf6fc12bcecb4ce3d835765cdb..d23529f39357bf2c03539935cfb4a6eaf80e9d2c 100644 --- a/make/common/shared/Compiler-msvc.gmk +++ b/make/common/shared/Compiler-msvc.gmk @@ -54,17 +54,10 @@ ifeq ($(PLATFORM), windows) ifeq ($(ARCH_DATA_MODEL), 32) LINK_VER := $(shell $(LINK) | $(HEAD) -n 1 | $(NAWK) '{print $$6}') CC_MAJORVER :=$(call MajorVersion,$(CC_VER)) - REQUIRED_CC_VER = 13.10.3077 - REQUIRED_LINK_VER = 7.10.3077 - ifeq ($(CC_MAJORVER), 12) - # This should be: CC_VER=12.00.8168 LINK_VER=6.00.8447 - COMPILER_NAME=Visual C++ 6.0 Professional + VC6-SP 3 - COMPILER_VERSION=VC6 - REBASE = $(COMPILER_PATH)rebase - MTL = $(COMPILER_PATH)midl - endif ifeq ($(CC_MAJORVER), 13) # This should be: CC_VER=13.10.3077 LINK_VER=7.10.3077 + REQUIRED_CC_VER = 13.10.3077 + REQUIRED_LINK_VER = 7.10.3077 COMPILER_NAME=Visual Studio .NET 2003 Professional C++ COMPILER_VERSION=VS2003 REBASE = $(COMPILER_PATH)../../Common7/Tools/Bin/rebase @@ -74,17 +67,34 @@ ifeq ($(PLATFORM), windows) endif endif ifeq ($(CC_MAJORVER), 14) - # This should be: CC_VER=14.00.0000 LINK_VER=8.00.0000 - # NOTE: This compiler has not been tried yet on 32bit systems - COMPILER_NAME=Visual Studio .NET 2005 + # This should be: CC_VER=14.00.50727.42 LINK_VER=8.00.50727.42 + REQUIRED_CC_VER = 14.00.50727.42 + REQUIRED_LINK_VER = 8.00.50727.42 + COMPILER_NAME=Visual Studio 8 COMPILER_VERSION=VS2005 REBASE = $(COMPILER_PATH)../../Common8/Tools/Bin/rebase MTL = $(COMPILER_PATH)../../Common8/Tools/Bin/midl + MT = $(MSDEVTOOLS_PATH)mt + ifndef COMPILER_PATH + COMPILER_PATH := $(error COMPILER_PATH cannot be empty here) + endif + endif + ifeq ($(CC_MAJORVER), 15) + # This should be: CC_VER=15.00.21022.08 LINK_VER=9.00.21022.08 + REQUIRED_CC_VER = 15.00.21022.08 + REQUIRED_LINK_VER = 9.00.21022.08 + COMPILER_NAME=Visual Studio 9 + COMPILER_VERSION=VS2008 + #rebase and midl moved out of Visual Studio into the SDK: + REBASE = $(MSDEVTOOLS_PATH)/rebase + MTL = $(MSDEVTOOLS_PATH)/midl.exe + MT = $(MSDEVTOOLS_PATH)mt ifndef COMPILER_PATH COMPILER_PATH := $(error COMPILER_PATH cannot be empty here) endif endif else + # else ARCH_DATA_MODEL is 64 LINK_VER := $(shell $(LINK) | $(HEAD) -n 1 | $(NAWK) '{print $$6}') CC_MAJORVER :=$(call MajorVersion,$(CC_VER)) CC_MINORVER :=$(call MinorVersion,$(CC_VER)) diff --git a/make/common/shared/Defs-windows.gmk b/make/common/shared/Defs-windows.gmk index 35fa8ce344fbf1b1529aea85b0fbc48c3b92b0d7..1ceb017b2f958fec9c294c44ff3e363184c34346 100644 --- a/make/common/shared/Defs-windows.gmk +++ b/make/common/shared/Defs-windows.gmk @@ -74,7 +74,7 @@ override INCREMENTAL_BUILD = false # The ALT values should never really have spaces or use \. # Suspect these environment variables to have spaces and/or \ characters: # SYSTEMROOT, SystemRoot, WINDIR, windir, PROGRAMFILES, ProgramFiles, -# DXSDK_DIR, MSTOOLS, Mstools, MSSDK, MSSdk, VC71COMNTOOLS, +# DXSDK_DIR, MSTOOLS, Mstools, MSSDK, MSSdk, VCnnCOMNTOOLS, # MSVCDIR, MSVCDir. # So use $(subst \,/,) on them first adding quotes and placing them in # their own variable assigned with :=, then use FullPath. @@ -247,22 +247,36 @@ ifeq ($(ARCH_DATA_MODEL), 32) endif endif endif - ifneq ($(subst MSDev98,OLDOLDOLD,$(_msvc_dir)),$(_msvc_dir)) - _msvc_dir := - endif - # If we still don't have it, look for VS71COMNTOOLS, setup by installer? + # If we still don't have it, look for VSnnCOMNTOOLS (newest first), + # set by installer? ifeq ($(_msvc_dir),) + ifdef VS90COMNTOOLS # /Common/Tools directory, use ../../Vc + xVS90COMNTOOLS :="$(subst \,/,$(VS90COMNTOOLS))" + _vs90tools :=$(call FullPath,$(xVS90COMNTOOLS)) + endif + ifneq ($(_vs90tools),) + _msvc_dir :=$(_vs90tools)/../../Vc + _redist_sdk :=$(_msvc_dir)/../SDK/v3.5/Bin + endif + ifdef VS80COMNTOOLS # /Common/Tools directory, use ../../Vc + xVS80COMNTOOLS :="$(subst \,/,$(VS80COMNTOOLS))" + _vs80tools :=$(call FullPath,$(xVS80COMNTOOLS)) + endif + ifneq ($(_vs80tools),) + _msvc_dir :=$(_vs80tools)/../../Vc + _redist_sdk :=$(_msvc_dir)/../SDK/v2.0/Bin + endif ifdef VS71COMNTOOLS # /Common/Tools directory, use ../../Vc7 xVS71COMNTOOLS :="$(subst \,/,$(VS71COMNTOOLS))" _vs71tools :=$(call FullPath,$(xVS71COMNTOOLS)) endif ifneq ($(_vs71tools),) _msvc_dir :=$(_vs71tools)/../../Vc7 + _redist_sdk :=$(_vs71tools)/../.. endif endif ifneq ($(_msvc_dir),) _compiler_bin :=$(_msvc_dir)/Bin - _redist_sdk :=$(_msvc_dir)/../SDK/v1.1/Bin _ms_sdk :=$(_msvc_dir)/PlatformSDK endif endif @@ -410,8 +424,8 @@ _REDIST_SDK_EXISTS := $(shell \ else \ echo "false"; \ fi) -_REDIST71_SDK_EXISTS := $(shell \ - if [ -f "$(_redist_sdk)/msvcr71.dll" ]; then \ +_REDISTNN_SDK_EXISTS := $(shell \ + if [ -f "$(_redist_sdk)/$(MSVCRNN_DLL)" ]; then \ echo "true"; \ else \ echo "false"; \ @@ -435,20 +449,20 @@ ifeq ($(ARCH_DATA_MODEL), 32) MSVCRT_DLL_PATH:=$(call AltCheckSpaces,MSVCRT_DLL_PATH) MSVCRT_DLL_PATH:=$(call AltCheckValue,MSVCRT_DLL_PATH) - # MSVCR71_DLL_PATH: location of msvcr71.dll that will be re-distributed - ifdef ALT_MSVCR71_DLL_PATH - xALT_MSVCR71_DLL_PATH :="$(subst \,/,$(ALT_MSVCR71_DLL_PATH))" - MSVCR71_DLL_PATH :=$(call FullPath,$(xALT_MSVCR71_DLL_PATH)) + # MSVCRNN_DLL_PATH: location of msvcrnn.dll that will be re-distributed + ifdef ALT_MSVCRNN_DLL_PATH + xALT_MSVCRNN_DLL_PATH :="$(subst \,/,$(ALT_MSVCRNN_DLL_PATH))" + MSVCRNN_DLL_PATH :=$(call FullPath,$(xALT_MSVCRNN_DLL_PATH)) else - ifeq ($(_REDIST71_SDK_EXISTS), true) - xREDIST71_DIR :=$(_redist_sdk) + ifeq ($(_REDISTNN_SDK_EXISTS), true) + xREDISTNN_DIR :=$(_redist_sdk) else - xREDIST71_DIR :=$(_system_root)/system32 + xREDISTNN_DIR :=$(_system_root)/system32 endif - MSVCR71_DLL_PATH :=$(call FullPath,$(xREDIST71_DIR)) + MSVCRNN_DLL_PATH :=$(call FullPath,$(xREDISTNN_DIR)) endif - MSVCR71_DLL_PATH :=$(call AltCheckSpaces,MSVCR71_DLL_PATH) - MSVCR71_DLL_PATH:=$(call AltCheckValue,MSVCR71_DLL_PATH) + MSVCRNN_DLL_PATH :=$(call AltCheckSpaces,MSVCRNN_DLL_PATH) + MSVCRNN_DLL_PATH:=$(call AltCheckValue,MSVCRNN_DLL_PATH) else diff --git a/make/common/shared/Sanity-Settings.gmk b/make/common/shared/Sanity-Settings.gmk index 911327f5a881fbc539f44678626d8273cedefef7..f3ea2b35a79f12cc7552ce8e5d87f29178fda838 100644 --- a/make/common/shared/Sanity-Settings.gmk +++ b/make/common/shared/Sanity-Settings.gmk @@ -98,7 +98,7 @@ endif ifeq ($(PLATFORM),windows) ALL_SETTINGS+=$(call addAltSetting,MSVCRT_DLL_PATH) ifeq ($(ARCH_DATA_MODEL), 32) - ALL_SETTINGS+=$(call addAltSetting,MSVCR71_DLL_PATH) + ALL_SETTINGS+=$(call addAltSetting,MSVCRNN_DLL_PATH) endif ALL_SETTINGS+=$(call addAltSetting,MSDEVTOOLS_PATH) endif diff --git a/make/common/shared/Sanity.gmk b/make/common/shared/Sanity.gmk index b2cbab12b3f5cbffa7a3658b0d6a2014ad177b52..997e848904a3ce97b2fe10f0f58db1671135143b 100644 --- a/make/common/shared/Sanity.gmk +++ b/make/common/shared/Sanity.gmk @@ -835,15 +835,13 @@ ifeq ($(PLATFORM), windows) "" >> $(ERROR_FILE) ; \ fi ifeq ($(ARCH_DATA_MODEL), 32) - ifeq ($(COMPILER_VERSION), VS2003) - @if [ ! -r "$(MSVCR71_DLL_PATH)/msvcr71.dll" ]; then \ - $(ECHO) "ERROR: You do not have access to msvcr71.dll. \n" \ + @if [ ! -r "$(MSVCRNN_DLL_PATH)/$(MSVCRNN_DLL)" ]; then \ + $(ECHO) "ERROR: You do not have access to $(MSVCRNN_DLL). \n" \ " Please check your access to \n" \ - " $(MSVCR71_DLL_PATH) \n" \ - " and/or check your value of ALT_MSVCR71_DLL_PATH. \n" \ + " $(MSVCRNN_DLL_PATH) \n" \ + " and/or check your value of ALT_MSVCRNN_DLL_PATH. \n" \ "" >> $(ERROR_FILE) ; \ fi - endif endif endif @@ -1350,10 +1348,11 @@ $(ALSA_VERSION_CHECK): $(ALSA_VERSION_CHECK).c $(ALSA_VERSION_CHECK).c: @$(prep-target) @$(ECHO) "#include \n" \ - "int main(char** argv, int argc) {\n" \ - " printf(\"%s\", SND_LIB_VERSION_STR);\n" \ - " return 0;\n" \ - "}\n" \ + "#include \n" \ + "int main(int argc, char** argv) {\n" \ + " printf(\"%s\", SND_LIB_VERSION_STR);\n" \ + " return 0;\n" \ + "}\n" \ > $@ endif diff --git a/make/docs/Makefile b/make/docs/Makefile index 21d7825d3a5b516d301ee7217614b4368aff4f27..07fe50e64167bb6ddb5c5ff2856d30e9cf41bde2 100644 --- a/make/docs/Makefile +++ b/make/docs/Makefile @@ -64,7 +64,7 @@ CORE_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \ -bottom $(JAVADOCBOTTOM_SWITCH) \ $(OVERVIEW_OPTION) -DRAFT = '
DRAFT '$(MILESTONE)-$(BUILD_NUMBER)'' +DRAFT = '
DRAFT '$(MILESTONE)-$(BUILD_NUMBER)'' THIS_YEAR := $(shell $(DATE) | $(SED) -e 's/ / /g' | $(CUT) -d' ' -f6) TRADEMARK = &\#x2122; @@ -95,7 +95,7 @@ endif JAVADOCTITLE = 'Java$(TRADEMARK) Platform, Standard Edition $(JDK_MINOR_VERSION)
API Specification' JAVADOCWINDOWTITLE = 'Java Platform SE $(JDK_MINOR_VERSION)' -JAVADOCHEADER = 'Java$(TRADEMARK) Platform
Standard Ed. $(JDK_MINOR_VERSION)
' +JAVADOCHEADER = 'Java$(TRADEMARK) Platform
Standard Ed. $(JDK_MINOR_VERSION)
' JAVADOCBOTTOM = 'Submit a bug or feature
For further API reference and developer documentation, see Java SE Developer Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.

Copyright $(THIS_YEAR) Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms. Also see the documentation redistribution policy.' JAVADOCOVERVIEW = $(SHARE_SRC)/classes/overview-core.html @@ -120,7 +120,7 @@ DOMAPI_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \ -group $(DOMAPI_GROUPNAME) $(DOMAPI_REGEXP) DOMAPI_JAVADOCTITLE = 'Common DOM API' DOMAPI_JAVADOCWINDOWTITLE = 'Common DOM API' -DOMAPI_JAVADOCHEADER = 'Common DOM API' +DOMAPI_JAVADOCHEADER = 'Common DOM API' DOMAPI_JAVADOCBOTTOM = 'Submit a bug or feature
Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.
Copyright $(THIS_YEAR) Sun Microsystems, Inc. 4150 Network Circle
Santa Clara, California, 95054, U.S.A. All Rights Reserved.
' DOMAPI_GROUPNAME = "Packages" DOMAPI_REGEXP = "com.sun.java.browser.dom:org.w3c.dom*" @@ -140,7 +140,7 @@ MIRROR_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \ -overview $(MIRROR_OVERVIEW) MIRROR_JAVADOCTITLE = 'Mirror API' MIRROR_JAVADOCWINDOWTITLE = 'Mirror API' -MIRROR_JAVADOCHEADER = 'Mirror API' +MIRROR_JAVADOCHEADER = 'Mirror API' MIRROR_JAVADOCBOTTOM = 'Report a bug or request a feature.
Copyright $(THIS_YEAR) Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.
' MIRROR_GROUPNAME = "Packages" MIRROR_OVERVIEW = $(IMPORTSRCDIR)/com/sun/mirror/overview.html @@ -163,7 +163,7 @@ DOCLETAPI_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \ -group $(DOCLETAPI_GROUPNAME) $(DOCLETAPI_REGEXP) DOCLETAPI_JAVADOCTITLE = 'Doclet API' DOCLETAPI_JAVADOCWINDOWTITLE = 'Doclet API' -DOCLETAPI_JAVADOCHEADER = 'Doclet API' +DOCLETAPI_JAVADOCHEADER = 'Doclet API' DOCLETAPI_JAVADOCBOTTOM = 'Submit a bug or feature
Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.
Copyright 1993-$(THIS_YEAR) Sun Microsystems, Inc. 4150 Network Circle
Santa Clara, California, 95054, U.S.A. All Rights Reserved.
' DOCLETAPI_GROUPNAME = "Packages" DOCLETAPI_REGEXP = "com.sun.javadoc" @@ -407,7 +407,7 @@ TREEAPI_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \ # TREEAPI_JAVADOCTITLE = 'Compiler Tree API' TREEAPI_JAVADOCWINDOWTITLE = 'Compiler Tree API' -TREEAPI_JAVADOCHEADER = 'Compiler Tree API' +TREEAPI_JAVADOCHEADER = 'Compiler Tree API' TREEAPI_JAVADOCBOTTOM = 'Report a bug or request a feature.
Copyright $(THIS_YEAR) Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.
' TREEAPI_GROUPNAME = "Packages" TREEAPI_OVERVIEW = $(SHARE_SRC)/classes/com/sun/source/overview.html diff --git a/make/java/main/java/Makefile b/make/java/main/java/Makefile index 140a3001f80348064be1085f1e25c2579961b158..b4cf42f648f716ccf80092da82566c62372ecf06 100644 --- a/make/java/main/java/Makefile +++ b/make/java/main/java/Makefile @@ -28,11 +28,10 @@ PROGRAM = java PRODUCT = java # -# Statically link java to avoid the dependency on msvcr71.dll. This +# Statically link java to avoid the dependency on msvcrNN.dll. This # must be set before Defs.gmk is included. # MS_RUNTIME_STATIC = true - # # Statically link java to avoid the dependency on jli.dll. This # must be set before Program.gmk is included. @@ -44,6 +43,7 @@ include $(BUILDDIR)/common/Defs.gmk # Override the default version info with our own resource file (see 5106536) ifeq ($(PLATFORM), windows) LDLIBS_COMMON += user32.lib comctl32.lib + ifdef OPENJDK RC_FLAGS += -i "$(PLATFORM_SRC)/resource/icons" else diff --git a/make/java/main/javaw/Makefile b/make/java/main/javaw/Makefile index 1ed70daa87ee96aa0ef5b55a7a7ccbb1563ba693..fb4479afad3bffb034401a30dc3320d64dae5cb0 100644 --- a/make/java/main/javaw/Makefile +++ b/make/java/main/javaw/Makefile @@ -32,11 +32,10 @@ PROGRAM = javaw PRODUCT = java # -# Statically link javaw to avoid the dependency on msvcr71.dll. This +# Statically link javaw to avoid the dependency on msvcrNN.dll. This # must be set before Defs.gmk is included. # MS_RUNTIME_STATIC = true - # # Statically link javaw to avoid the dependency on jli.dll. This # must be set before Program.gmk is included. diff --git a/make/java/nio/FILES_java.gmk b/make/java/nio/FILES_java.gmk index 0e8c70906aa6ce8ebc4e5d137ddb17defbffae13..29f1f8f42c45ddfd8505522281577b1063fe999b 100644 --- a/make/java/nio/FILES_java.gmk +++ b/make/java/nio/FILES_java.gmk @@ -113,8 +113,7 @@ FILES_src = \ sun/nio/cs/FastCharsetProvider.java \ sun/nio/cs/HistoricallyNamedCharset.java \ sun/nio/cs/ISO_8859_1.java \ - sun/nio/cs/ISO_8859_15.java \ - sun/nio/cs/MS1252.java \ + sun/nio/cs/SingleByte.java \ sun/nio/cs/SingleByteDecoder.java \ sun/nio/cs/SingleByteEncoder.java \ sun/nio/cs/StreamEncoder.java \ @@ -268,6 +267,34 @@ FILES_gen_ex = \ java/nio/charset/IllegalCharsetNameException.java \ java/nio/charset/UnsupportedCharsetException.java +FILES_gen_sbcs = \ + sun/nio/cs/ISO_8859_2.java \ + sun/nio/cs/ISO_8859_4.java \ + sun/nio/cs/ISO_8859_5.java \ + sun/nio/cs/ISO_8859_7.java \ + sun/nio/cs/ISO_8859_9.java \ + sun/nio/cs/ISO_8859_13.java \ + sun/nio/cs/ISO_8859_15.java \ + sun/nio/cs/IBM437.java \ + sun/nio/cs/IBM737.java \ + sun/nio/cs/IBM775.java \ + sun/nio/cs/IBM850.java \ + sun/nio/cs/IBM852.java \ + sun/nio/cs/IBM855.java \ + sun/nio/cs/IBM857.java \ + sun/nio/cs/IBM858.java \ + sun/nio/cs/IBM862.java \ + sun/nio/cs/IBM866.java \ + sun/nio/cs/IBM874.java \ + sun/nio/cs/KOI8_R.java \ + sun/nio/cs/KOI8_U.java \ + sun/nio/cs/MS1250.java \ + sun/nio/cs/MS1251.java \ + sun/nio/cs/MS1252.java \ + sun/nio/cs/MS1253.java \ + sun/nio/cs/MS1254.java \ + sun/nio/cs/MS1257.java + FILES_gen_csp = sun/nio/cs/StandardCharsets.java FILES_gen_sor = sun/nio/ch/SocketOptionRegistry.java @@ -275,4 +302,4 @@ FILES_gen_sor = sun/nio/ch/SocketOptionRegistry.java FILES_gen = $(FILES_gen_coder) $(FILES_gen_buffer) $(FILES_gen_ex) \ $(FILES_gen_csp) $(FILES_gen_sor) -FILES_java = $(FILES_src) $(FILES_gen) +FILES_java = $(FILES_src) $(FILES_gen) $(FILES_gen_sbcs) diff --git a/make/java/nio/Makefile b/make/java/nio/Makefile index 26c2f2fc68d0218fc30fad31bbaa39959878b1d6..bf7bc2e02365cca74ee5228eebdfc05abff6ddb1 100644 --- a/make/java/nio/Makefile +++ b/make/java/nio/Makefile @@ -182,7 +182,9 @@ CS_GEN=$(NIO_GEN)/charset SCH_GEN=$(SNIO_GEN)/ch SCS_GEN=$(SNIO_GEN)/cs -sources: $(SPP_JARFILE) $(FILES_genout) +FILES_gensbcs_out = $(FILES_gen_sbcs:%.java=$(GENSRCDIR)/%.java) + +sources: $(SPP_JARFILE) $(FILES_genout) $(FILES_gensbcs_out) # # Generated buffer classes @@ -657,4 +659,15 @@ $(SCH_GEN)/SocketOptionRegistry.java: $(GENSOR_EXE) NAWK="$(NAWK)" SH="$(SH)" $(SH) -e addNotices.sh $(SOR_COPYRIGHT_YEARS) > $@ $(GENSOR_EXE) >> $@ +# +# Generated sun.nio.cs SingleByte classes +# +GENCSSRC = $(BUILDDIR)/tools/CharsetMapping +CHARSETMAPPING_JARFILE = $(BUILDTOOLJARDIR)/charsetmapping.jar + +$(FILES_gensbcs_out): $(GENCSSRC)/SingleByte-X.java $(GENCSSRC)/sbcs + @$(prep-target) + $(BOOT_JAVA_CMD) -cp $(CHARSETMAPPING_JARFILE) build.tools.charsetmapping.GenerateSBCS \ + $(GENCSSRC) $(SCS_GEN) sbcs + .PHONY: sources diff --git a/make/java/redist/Makefile b/make/java/redist/Makefile index 832cd62f1d6710c5f43442699e774d90169d5f8b..159c247b3f367240b15c5a654ad6dc69ba30baa6 100644 --- a/make/java/redist/Makefile +++ b/make/java/redist/Makefile @@ -109,7 +109,7 @@ IMPORT_LIST += $(MS_RUNTIME_LIBRARIES:%=$(BINDIR)/%) $(BINDIR)/msvcrt.dll: $(MSVCRT_DLL_PATH)/msvcrt.dll $(install-import-file) $(CHMOD) a+x $@ -$(BINDIR)/msvcr71.dll: $(MSVCR71_DLL_PATH)/msvcr71.dll +$(BINDIR)/$(MSVCRNN_DLL): $(MSVCRNN_DLL_PATH)/$(MSVCRNN_DLL) $(install-import-file) $(CHMOD) a+x $@ diff --git a/make/javax/swing/Makefile b/make/javax/swing/Makefile index e112e609cd9ac46c277efdc0901033cfd0263c4b..1f3fa6c0f39b6c47854a19ccda8357da85e9839a 100644 --- a/make/javax/swing/Makefile +++ b/make/javax/swing/Makefile @@ -1,5 +1,5 @@ # -# Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it diff --git a/make/netbeans/jmx/build.xml b/make/netbeans/jmx/build.xml index 6e2696ebb8f2e56879e97d559b977b0e87b53618..7bff95ae4058d5c6f5bfc62200380648a3c24476 100644 --- a/make/netbeans/jmx/build.xml +++ b/make/netbeans/jmx/build.xml @@ -1,5 +1,5 @@ - - + @@ -58,13 +58,13 @@ - + @@ -96,7 +96,7 @@ - + - - @@ -131,7 +131,7 @@ - @@ -144,7 +144,7 @@ - + diff --git a/make/sun/net/spi/Makefile b/make/sun/net/spi/Makefile index f969b87992acf8228384a1386ad924abb94b3b81..7fa860032e696bcbf4cd1ade071193111d87a786 100644 --- a/make/sun/net/spi/Makefile +++ b/make/sun/net/spi/Makefile @@ -1,5 +1,5 @@ # -# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it diff --git a/make/sun/net/spi/nameservice/Makefile b/make/sun/net/spi/nameservice/Makefile index b0ff374de3d09be753c34964cf9d298fd9ffb8f2..4c9aba37a8fcde7d98659cbf49a2ba704420b73d 100644 --- a/make/sun/net/spi/nameservice/Makefile +++ b/make/sun/net/spi/nameservice/Makefile @@ -1,5 +1,5 @@ # -# Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it diff --git a/make/sun/nio/FILES_java.gmk b/make/sun/nio/FILES_java.gmk index 21a95a8cffd2543758bc072ed53d7f5a92265f9e..250c8a812fee89c75f617d5f9ac3c7f3ab3d5781 100644 --- a/make/sun/nio/FILES_java.gmk +++ b/make/sun/nio/FILES_java.gmk @@ -29,7 +29,7 @@ # Core character converters are built from make/java/java. # -FILES_java = \ +FILES_src = \ sun/io/ByteToCharDoubleByte.java \ sun/io/ByteToCharDBCS_ASCII.java \ sun/io/ByteToCharDBCS_EBCDIC.java \ @@ -303,3 +303,77 @@ FILES_java = \ sun/io/CharToByteMacTurkish.java \ sun/io/CharToByteMacUkraine.java \ sun/io/CharToByteTIS620.java + +FILES_gen_extsbcs = \ + sun/nio/cs/ext/IBM037.java \ + sun/nio/cs/ext/IBM1006.java \ + sun/nio/cs/ext/IBM1025.java \ + sun/nio/cs/ext/IBM1026.java \ + sun/nio/cs/ext/IBM1046.java \ + sun/nio/cs/ext/IBM1047.java \ + sun/nio/cs/ext/IBM1097.java \ + sun/nio/cs/ext/IBM1098.java \ + sun/nio/cs/ext/IBM1112.java \ + sun/nio/cs/ext/IBM1122.java \ + sun/nio/cs/ext/IBM1123.java \ + sun/nio/cs/ext/IBM1124.java \ + sun/nio/cs/ext/IBM1140.java \ + sun/nio/cs/ext/IBM1141.java \ + sun/nio/cs/ext/IBM1142.java \ + sun/nio/cs/ext/IBM1143.java \ + sun/nio/cs/ext/IBM1144.java \ + sun/nio/cs/ext/IBM1145.java \ + sun/nio/cs/ext/IBM1146.java \ + sun/nio/cs/ext/IBM1147.java \ + sun/nio/cs/ext/IBM1148.java \ + sun/nio/cs/ext/IBM1149.java \ + sun/nio/cs/ext/IBM273.java \ + sun/nio/cs/ext/IBM277.java \ + sun/nio/cs/ext/IBM278.java \ + sun/nio/cs/ext/IBM280.java \ + sun/nio/cs/ext/IBM284.java \ + sun/nio/cs/ext/IBM285.java \ + sun/nio/cs/ext/IBM297.java \ + sun/nio/cs/ext/IBM420.java \ + sun/nio/cs/ext/IBM424.java \ + sun/nio/cs/ext/IBM500.java \ + sun/nio/cs/ext/IBM838.java \ + sun/nio/cs/ext/IBM856.java \ + sun/nio/cs/ext/IBM860.java \ + sun/nio/cs/ext/IBM861.java \ + sun/nio/cs/ext/IBM863.java \ + sun/nio/cs/ext/IBM864.java \ + sun/nio/cs/ext/IBM865.java \ + sun/nio/cs/ext/IBM868.java \ + sun/nio/cs/ext/IBM869.java \ + sun/nio/cs/ext/IBM870.java \ + sun/nio/cs/ext/IBM871.java \ + sun/nio/cs/ext/IBM875.java \ + sun/nio/cs/ext/IBM918.java \ + sun/nio/cs/ext/IBM921.java \ + sun/nio/cs/ext/IBM922.java \ + sun/nio/cs/ext/ISO_8859_11.java \ + sun/nio/cs/ext/ISO_8859_3.java \ + sun/nio/cs/ext/ISO_8859_6.java \ + sun/nio/cs/ext/ISO_8859_8.java \ + sun/nio/cs/ext/MS1255.java \ + sun/nio/cs/ext/MS1256.java \ + sun/nio/cs/ext/MS1258.java \ + sun/nio/cs/ext/MS874.java \ + sun/nio/cs/ext/MacArabic.java \ + sun/nio/cs/ext/MacCentralEurope.java \ + sun/nio/cs/ext/MacCroatian.java \ + sun/nio/cs/ext/MacCyrillic.java \ + sun/nio/cs/ext/MacDingbat.java \ + sun/nio/cs/ext/MacGreek.java \ + sun/nio/cs/ext/MacHebrew.java \ + sun/nio/cs/ext/MacIceland.java \ + sun/nio/cs/ext/MacRoman.java \ + sun/nio/cs/ext/MacRomania.java \ + sun/nio/cs/ext/MacSymbol.java \ + sun/nio/cs/ext/MacThai.java \ + sun/nio/cs/ext/MacTurkish.java \ + sun/nio/cs/ext/MacUkraine.java \ + sun/nio/cs/ext/TIS_620.java + +FILES_java = $(FILES_src) $(FILES_gen_extsbcs) \ No newline at end of file diff --git a/make/sun/nio/Makefile b/make/sun/nio/Makefile index 8dd1f98ccfb9f30eb4d80765d18d1453611d074e..f149b8510ce7fc5831863eafe257e4c3f874076d 100644 --- a/make/sun/nio/Makefile +++ b/make/sun/nio/Makefile @@ -60,12 +60,15 @@ endif # PLATFORM # this define is for the rule: CHARSETS_JAR = $(LIBDIR)/charsets.jar +# extsbcs +FILES_genout_extsbcs = $(FILES_gen_extsbcs:%.java=$(GENSRCDIR)/%.java) + # # Rules # include $(BUILDDIR)/common/Classes.gmk -build: $(CHARSETS_JAR) +build: $(FILES_genout_extsbcs) $(CHARSETS_JAR) # # Extra rules to build character converters. @@ -74,6 +77,8 @@ SERVICE_DESCRIPTION = java.nio.charset.spi.CharsetProvider SERVICE_DESCRIPTION_PATH = META-INF/services/$(SERVICE_DESCRIPTION) GENCSDATASRC = $(BUILDDIR)/tools/CharsetMapping +GENCSEXT = $(GENSRCDIR)/sun/nio/cs/ext + FILES_MAP = $(GENCSDATASRC)/sjis0213.map FILES_DAT = $(CLASSDESTDIR)/sun/nio/cs/ext/sjis0213.dat CHARSETMAPPING_JARFILE = $(BUILDTOOLJARDIR)/charsetmapping.jar @@ -83,6 +88,15 @@ $(FILES_DAT): $(FILES_MAP) $(BOOT_JAVA_CMD) -jar $(CHARSETMAPPING_JARFILE) \ $(FILES_MAP) $(FILES_DAT) + +$(FILES_genout_extsbcs): $(GENCSDATASRC)/SingleByte-X.java $(GENCSDATASRC)/extsbcs + @$(prep-target) + $(RM) -r $(GENCSEXT) + $(MKDIR) -p $(GENCSEXT) + $(BOOT_JAVA_CMD) -cp $(CHARSETMAPPING_JARFILE) build.tools.charsetmapping.GenerateSBCS \ + $(GENCSDATASRC) $(GENCSEXT) extsbcs + + $(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH): \ $(SHARE_SRC)/classes/sun/nio/cs/ext/$(SERVICE_DESCRIPTION_PATH) $(install-file) diff --git a/make/tools/CharsetMapping/IBM037.c2b b/make/tools/CharsetMapping/IBM037.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM037.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM037.map b/make/tools/CharsetMapping/IBM037.map new file mode 100644 index 0000000000000000000000000000000000000000..f542aa42d2944a8b1ebe61d5ae5b7d1077d05be3 --- /dev/null +++ b/make/tools/CharsetMapping/IBM037.map @@ -0,0 +1,257 @@ +#Generated from IBM037.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+00e5 +0x48 U+00e7 +0x49 U+00f1 +0x4a U+00a2 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+007c +0x50 U+0026 +0x51 U+00e9 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+0021 +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+00ac +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+00c5 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00a6 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+0060 +0x7a U+003a +0x7b U+0023 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+00a4 +0xa0 U+00b5 +0xa1 U+007e +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+00dd +0xae U+00de +0xaf U+00ae +0xb0 U+005e +0xb1 U+00a3 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+00a7 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+005b +0xbb U+005d +0xbc U+00af +0xbd U+00a8 +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+007b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00f6 +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+007d +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+00fc +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+005c +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+00d6 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM037.nr b/make/tools/CharsetMapping/IBM037.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM037.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM1006.map b/make/tools/CharsetMapping/IBM1006.map new file mode 100644 index 0000000000000000000000000000000000000000..9ae5537d4b37b1ce948a48f401b3b67fc95478d4 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1006.map @@ -0,0 +1,257 @@ +#Generated from IBM1006.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0080 +0x81 U+0081 +0x82 U+0082 +0x83 U+0083 +0x84 U+0084 +0x85 U+0085 +0x86 U+0086 +0x87 U+0087 +0x88 U+0088 +0x89 U+0089 +0x8a U+008a +0x8b U+008b +0x8c U+008c +0x8d U+008d +0x8e U+008e +0x8f U+008f +0x90 U+0090 +0x91 U+0091 +0x92 U+0092 +0x93 U+0093 +0x94 U+0094 +0x95 U+0095 +0x96 U+0096 +0x97 U+0097 +0x98 U+0098 +0x99 U+0099 +0x9a U+009a +0x9b U+009b +0x9c U+009c +0x9d U+009d +0x9e U+009e +0x9f U+009f +0xa0 U+00a0 +0xa1 U+06f0 +0xa2 U+06f1 +0xa3 U+06f2 +0xa4 U+06f3 +0xa5 U+06f4 +0xa6 U+06f5 +0xa7 U+06f6 +0xa8 U+06f7 +0xa9 U+06f8 +0xaa U+06f9 +0xab U+060c +0xac U+061b +0xad U+00ad +0xae U+061f +0xaf U+fe81 +0xb0 U+fe8d +0xb1 U+fe8e +0xb2 U+f8fb +0xb3 U+fe8f +0xb4 U+fe91 +0xb5 U+fb56 +0xb6 U+fb58 +0xb7 U+fe93 +0xb8 U+fe95 +0xb9 U+fe97 +0xba U+fb66 +0xbb U+fb68 +0xbc U+fe99 +0xbd U+fe9b +0xbe U+fe9d +0xbf U+fe9f +0xc0 U+fb7a +0xc1 U+fb7c +0xc2 U+fea1 +0xc3 U+fea3 +0xc4 U+fea5 +0xc5 U+fea7 +0xc6 U+fea9 +0xc7 U+fb88 +0xc8 U+feab +0xc9 U+fead +0xca U+fb8c +0xcb U+feaf +0xcc U+fb8a +0xcd U+feb1 +0xce U+feb3 +0xcf U+feb5 +0xd0 U+feb7 +0xd1 U+feb9 +0xd2 U+febb +0xd3 U+febd +0xd4 U+febf +0xd5 U+fec3 +0xd6 U+fec7 +0xd7 U+fec9 +0xd8 U+feca +0xd9 U+fecb +0xda U+fecc +0xdb U+fecd +0xdc U+fece +0xdd U+fecf +0xde U+fed0 +0xdf U+fed1 +0xe0 U+fed3 +0xe1 U+fed5 +0xe2 U+fed7 +0xe3 U+fb8e +0xe4 U+fedb +0xe5 U+fb92 +0xe6 U+fb94 +0xe7 U+fedd +0xe8 U+fedf +0xe9 U+fee0 +0xea U+fee1 +0xeb U+fee3 +0xec U+fb9e +0xed U+fee5 +0xee U+fee7 +0xef U+fe85 +0xf0 U+feed +0xf1 U+fba6 +0xf2 U+fba8 +0xf3 U+fba9 +0xf4 U+fbaa +0xf5 U+fe80 +0xf6 U+fe89 +0xf7 U+fe8a +0xf8 U+fe8b +0xf9 U+fbfc +0xfa U+fbfd +0xfb U+fbfe +0xfc U+fbb0 +0xfd U+fbae +0xfe U+fe7c +0xff U+fe7d diff --git a/make/tools/CharsetMapping/IBM1025.c2b b/make/tools/CharsetMapping/IBM1025.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1025.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM1025.map b/make/tools/CharsetMapping/IBM1025.map new file mode 100644 index 0000000000000000000000000000000000000000..e56dbe081072684d7bc5680d089ef9d53e65b2df --- /dev/null +++ b/make/tools/CharsetMapping/IBM1025.map @@ -0,0 +1,257 @@ +#Generated from IBM1025.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+0452 +0x43 U+0453 +0x44 U+0451 +0x45 U+0454 +0x46 U+0455 +0x47 U+0456 +0x48 U+0457 +0x49 U+0458 +0x4a U+005b +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+0459 +0x52 U+045a +0x53 U+045b +0x54 U+045c +0x55 U+045e +0x56 U+045f +0x57 U+042a +0x58 U+2116 +0x59 U+0402 +0x5a U+005d +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+0403 +0x63 U+0401 +0x64 U+0404 +0x65 U+0405 +0x66 U+0406 +0x67 U+0407 +0x68 U+0408 +0x69 U+0409 +0x6a U+007c +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+040a +0x71 U+040b +0x72 U+040c +0x73 U+00ad +0x74 U+040e +0x75 U+040f +0x76 U+044e +0x77 U+0430 +0x78 U+0431 +0x79 U+0060 +0x7a U+003a +0x7b U+0023 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+0446 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+0434 +0x8b U+0435 +0x8c U+0444 +0x8d U+0433 +0x8e U+0445 +0x8f U+0438 +0x90 U+0439 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+043a +0x9b U+043b +0x9c U+043c +0x9d U+043d +0x9e U+043e +0x9f U+043f +0xa0 U+044f +0xa1 U+007e +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+0440 +0xab U+0441 +0xac U+0442 +0xad U+0443 +0xae U+0436 +0xaf U+0432 +0xb0 U+044c +0xb1 U+044b +0xb2 U+0437 +0xb3 U+0448 +0xb4 U+044d +0xb5 U+0449 +0xb6 U+0447 +0xb7 U+044a +0xb8 U+042e +0xb9 U+0410 +0xba U+0411 +0xbb U+0426 +0xbc U+0414 +0xbd U+0415 +0xbe U+0424 +0xbf U+0413 +0xc0 U+007b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+0425 +0xcb U+0418 +0xcc U+0419 +0xcd U+041a +0xce U+041b +0xcf U+041c +0xd0 U+007d +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+041d +0xdb U+041e +0xdc U+041f +0xdd U+042f +0xde U+0420 +0xdf U+0421 +0xe0 U+005c +0xe1 U+00a7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+0422 +0xeb U+0423 +0xec U+0416 +0xed U+0412 +0xee U+042c +0xef U+042b +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+0417 +0xfb U+0428 +0xfc U+042d +0xfd U+0429 +0xfe U+0427 +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM1025.nr b/make/tools/CharsetMapping/IBM1025.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1025.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM1026.c2b b/make/tools/CharsetMapping/IBM1026.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1026.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM1026.map b/make/tools/CharsetMapping/IBM1026.map new file mode 100644 index 0000000000000000000000000000000000000000..56fa74a05b30123b59668398022ec840edf840f5 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1026.map @@ -0,0 +1,257 @@ +#Generated from IBM1026.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+00e5 +0x48 U+007b +0x49 U+00f1 +0x4a U+00c7 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+00e9 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+011e +0x5b U+0130 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+00c5 +0x68 U+005b +0x69 U+00d1 +0x6a U+015f +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+0131 +0x7a U+003a +0x7b U+00d6 +0x7c U+015e +0x7d U+0027 +0x7e U+003d +0x7f U+00dc +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+007d +0x8d U+0060 +0x8e U+00a6 +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+00a4 +0xa0 U+00b5 +0xa1 U+00f6 +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+005d +0xad U+0024 +0xae U+0040 +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+00a3 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+00a7 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+00ac +0xbb U+007c +0xbc U+00af +0xbd U+00a8 +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+00e7 +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+007e +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+011f +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+005c +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+00fc +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+0023 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+0022 +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM1026.nr b/make/tools/CharsetMapping/IBM1026.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1026.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM1046.map b/make/tools/CharsetMapping/IBM1046.map new file mode 100644 index 0000000000000000000000000000000000000000..28a25d772d01c0347ecb4e31e3e87689e0b9ec80 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1046.map @@ -0,0 +1,257 @@ +#Generated from IBM1046.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+fe88 +0x81 U+00d7 +0x82 U+00f7 +0x83 U+f8f6 +0x84 U+f8f5 +0x85 U+f8f4 +0x86 U+f8f7 +0x87 U+fe71 +0x88 U+0088 +0x89 U+25a0 +0x8a U+2502 +0x8b U+2500 +0x8c U+2510 +0x8d U+250c +0x8e U+2514 +0x8f U+2518 +0x90 U+fe79 +0x91 U+fe7b +0x92 U+fe7d +0x93 U+fe7f +0x94 U+fe77 +0x95 U+fe8a +0x96 U+fef0 +0x97 U+fef3 +0x98 U+fef2 +0x99 U+fece +0x9a U+fecf +0x9b U+fed0 +0x9c U+fef6 +0x9d U+fef8 +0x9e U+fefa +0x9f U+fefc +0xa0 U+00a0 +0xa1 U+f8fa +0xa2 U+f8f9 +0xa3 U+f8f8 +0xa4 U+00a4 +0xa5 U+f8fb +0xa6 U+fe8b +0xa7 U+fe91 +0xa8 U+fe97 +0xa9 U+fe9b +0xaa U+fe9f +0xab U+fea3 +0xac U+060c +0xad U+00ad +0xae U+fea7 +0xaf U+feb3 +0xb0 U+0660 +0xb1 U+0661 +0xb2 U+0662 +0xb3 U+0663 +0xb4 U+0664 +0xb5 U+0665 +0xb6 U+0666 +0xb7 U+0667 +0xb8 U+0668 +0xb9 U+0669 +0xba U+feb7 +0xbb U+061b +0xbc U+febb +0xbd U+febf +0xbe U+feca +0xbf U+061f +0xc0 U+fecb +0xc1 U+fe80 +0xc2 U+fe81 +0xc3 U+fe83 +0xc4 U+fe85 +0xc5 U+fe87 +0xc6 U+fe89 +0xc7 U+fe8d +0xc8 U+fe8f +0xc9 U+fe93 +0xca U+fe95 +0xcb U+fe99 +0xcc U+fe9d +0xcd U+fea1 +0xce U+fea5 +0xcf U+fea9 +0xd0 U+feab +0xd1 U+fead +0xd2 U+feaf +0xd3 U+feb1 +0xd4 U+feb5 +0xd5 U+feb9 +0xd6 U+febd +0xd7 U+fec3 +0xd8 U+fec7 +0xd9 U+fec9 +0xda U+fecd +0xdb U+fecc +0xdc U+fe82 +0xdd U+fe84 +0xde U+fe8e +0xdf U+fed3 +0xe0 U+0640 +0xe1 U+fed1 +0xe2 U+fed5 +0xe3 U+fed9 +0xe4 U+fedd +0xe5 U+fee1 +0xe6 U+fee5 +0xe7 U+feeb +0xe8 U+feed +0xe9 U+feef +0xea U+fef1 +0xeb U+fe70 +0xec U+fe72 +0xed U+fe74 +0xee U+fe76 +0xef U+fe78 +0xf0 U+fe7a +0xf1 U+fe7c +0xf2 U+fe7e +0xf3 U+fed7 +0xf4 U+fedb +0xf5 U+fedf +0xf6 U+f8fc +0xf7 U+fef5 +0xf8 U+fef7 +0xf9 U+fef9 +0xfa U+fefb +0xfb U+fee3 +0xfc U+fee7 +0xfd U+feec +0xfe U+fee9 +0xff U+fffd diff --git a/make/tools/CharsetMapping/IBM1047.map b/make/tools/CharsetMapping/IBM1047.map new file mode 100644 index 0000000000000000000000000000000000000000..fcbae725c89af8a645c927f9e93c3bc4f344c0f1 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1047.map @@ -0,0 +1,257 @@ +#Generated from IBM1047.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+0085 +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+00e5 +0x48 U+00e7 +0x49 U+00f1 +0x4a U+00a2 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+007c +0x50 U+0026 +0x51 U+00e9 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+0021 +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+00c5 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00a6 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+0060 +0x7a U+003a +0x7b U+0023 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+00a4 +0xa0 U+00b5 +0xa1 U+007e +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+005b +0xae U+00de +0xaf U+00ae +0xb0 U+00ac +0xb1 U+00a3 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+00a7 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+00dd +0xbb U+00a8 +0xbc U+00af +0xbd U+005d +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+007b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00f6 +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+007d +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+00fc +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+005c +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+00d6 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM1097.map b/make/tools/CharsetMapping/IBM1097.map new file mode 100644 index 0000000000000000000000000000000000000000..4bffa824c9253c144d73aa0368e2de6f08356398 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1097.map @@ -0,0 +1,257 @@ +#Generated from IBM1097.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+0085 +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+060c +0x43 U+064b +0x44 U+fe81 +0x45 U+fe82 +0x46 U+f8fa +0x47 U+fe8d +0x48 U+fe8e +0x49 U+f8fb +0x4a U+00a4 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+007c +0x50 U+0026 +0x51 U+fe80 +0x52 U+fe83 +0x53 U+fe84 +0x54 U+f8f9 +0x55 U+fe85 +0x56 U+fe8b +0x57 U+fe8f +0x58 U+fe91 +0x59 U+fb56 +0x5a U+0021 +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+00ac +0x60 U+002d +0x61 U+002f +0x62 U+fb58 +0x63 U+fe95 +0x64 U+fe97 +0x65 U+fe99 +0x66 U+fe9b +0x67 U+fe9d +0x68 U+fe9f +0x69 U+fb7a +0x6a U+061b +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+fb7c +0x71 U+fea1 +0x72 U+fea3 +0x73 U+fea5 +0x74 U+fea7 +0x75 U+fea9 +0x76 U+feab +0x77 U+fead +0x78 U+feaf +0x79 U+0060 +0x7a U+003a +0x7b U+0023 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+fb8a +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+feb1 +0x8d U+feb3 +0x8e U+feb5 +0x8f U+feb7 +0x90 U+feb9 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+febb +0x9b U+febd +0x9c U+febf +0x9d U+fec1 +0x9e U+fec3 +0x9f U+fec5 +0xa0 U+fec7 +0xa1 U+007e +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+fec9 +0xab U+feca +0xac U+fecb +0xad U+fecc +0xae U+fecd +0xaf U+fece +0xb0 U+fecf +0xb1 U+fed0 +0xb2 U+fed1 +0xb3 U+fed3 +0xb4 U+fed5 +0xb5 U+fed7 +0xb6 U+fb8e +0xb7 U+fedb +0xb8 U+fb92 +0xb9 U+fb94 +0xba U+005b +0xbb U+005d +0xbc U+fedd +0xbd U+fedf +0xbe U+fee1 +0xbf U+00d7 +0xc0 U+007b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+fee3 +0xcc U+fee5 +0xcd U+fee7 +0xce U+feed +0xcf U+fee9 +0xd0 U+007d +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+feeb +0xdb U+feec +0xdc U+fba4 +0xdd U+fbfc +0xde U+fbfd +0xdf U+fbfe +0xe0 U+005c +0xe1 U+061f +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+0640 +0xeb U+06f0 +0xec U+06f1 +0xed U+06f2 +0xee U+06f3 +0xef U+06f4 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+06f5 +0xfb U+06f6 +0xfc U+06f7 +0xfd U+06f8 +0xfe U+06f9 +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM1098.map b/make/tools/CharsetMapping/IBM1098.map new file mode 100644 index 0000000000000000000000000000000000000000..6996d6ab250ed002efd2e2a5f78e4ee53ec5462a --- /dev/null +++ b/make/tools/CharsetMapping/IBM1098.map @@ -0,0 +1,257 @@ +#Generated from IBM1098.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+fffd +0x81 U+fffd +0x82 U+060c +0x83 U+061b +0x84 U+061f +0x85 U+064b +0x86 U+fe81 +0x87 U+fe82 +0x88 U+f8fa +0x89 U+fe8d +0x8a U+fe8e +0x8b U+f8fb +0x8c U+fe80 +0x8d U+fe83 +0x8e U+fe84 +0x8f U+f8f9 +0x90 U+fe85 +0x91 U+fe8b +0x92 U+fe8f +0x93 U+fe91 +0x94 U+fb56 +0x95 U+fb58 +0x96 U+fe95 +0x97 U+fe97 +0x98 U+fe99 +0x99 U+fe9b +0x9a U+fe9d +0x9b U+fe9f +0x9c U+fb7a +0x9d U+fb7c +0x9e U+00d7 +0x9f U+fea1 +0xa0 U+fea3 +0xa1 U+fea5 +0xa2 U+fea7 +0xa3 U+fea9 +0xa4 U+feab +0xa5 U+fead +0xa6 U+feaf +0xa7 U+fb8a +0xa8 U+feb1 +0xa9 U+feb3 +0xaa U+feb5 +0xab U+feb7 +0xac U+feb9 +0xad U+febb +0xae U+00ab +0xaf U+00bb +0xb0 U+2591 +0xb1 U+2592 +0xb2 U+2593 +0xb3 U+2502 +0xb4 U+2524 +0xb5 U+febd +0xb6 U+febf +0xb7 U+fec1 +0xb8 U+fec3 +0xb9 U+2563 +0xba U+2551 +0xbb U+2557 +0xbc U+255d +0xbd U+00a4 +0xbe U+fec5 +0xbf U+2510 +0xc0 U+2514 +0xc1 U+2534 +0xc2 U+252c +0xc3 U+251c +0xc4 U+2500 +0xc5 U+253c +0xc6 U+fec7 +0xc7 U+fec9 +0xc8 U+255a +0xc9 U+2554 +0xca U+2569 +0xcb U+2566 +0xcc U+2560 +0xcd U+2550 +0xce U+256c +0xcf U+fffd +0xd0 U+feca +0xd1 U+fecb +0xd2 U+fecc +0xd3 U+fecd +0xd4 U+fece +0xd5 U+fecf +0xd6 U+fed0 +0xd7 U+fed1 +0xd8 U+fed3 +0xd9 U+2518 +0xda U+250c +0xdb U+2588 +0xdc U+2584 +0xdd U+fed5 +0xde U+fed7 +0xdf U+2580 +0xe0 U+fb8e +0xe1 U+fedb +0xe2 U+fb92 +0xe3 U+fb94 +0xe4 U+fedd +0xe5 U+fedf +0xe6 U+fee1 +0xe7 U+fee3 +0xe8 U+fee5 +0xe9 U+fee7 +0xea U+feed +0xeb U+fee9 +0xec U+feeb +0xed U+feec +0xee U+fba4 +0xef U+fbfc +0xf0 U+00ad +0xf1 U+fbfd +0xf2 U+fbfe +0xf3 U+0640 +0xf4 U+06f0 +0xf5 U+06f1 +0xf6 U+06f2 +0xf7 U+06f3 +0xf8 U+06f4 +0xf9 U+06f5 +0xfa U+06f6 +0xfb U+06f7 +0xfc U+06f8 +0xfd U+06f9 +0xfe U+25a0 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM1112.c2b b/make/tools/CharsetMapping/IBM1112.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1112.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM1112.map b/make/tools/CharsetMapping/IBM1112.map new file mode 100644 index 0000000000000000000000000000000000000000..2439ea21c92be6952bf64648bfa959bd15c4f3df --- /dev/null +++ b/make/tools/CharsetMapping/IBM1112.map @@ -0,0 +1,257 @@ +#Generated from IBM1112.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+0161 +0x43 U+00e4 +0x44 U+0105 +0x45 U+012f +0x46 U+016b +0x47 U+00e5 +0x48 U+0113 +0x49 U+017e +0x4a U+00a2 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+007c +0x50 U+0026 +0x51 U+00e9 +0x52 U+0119 +0x53 U+0117 +0x54 U+010d +0x55 U+0173 +0x56 U+201e +0x57 U+201c +0x58 U+0123 +0x59 U+00df +0x5a U+0021 +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+00ac +0x60 U+002d +0x61 U+002f +0x62 U+0160 +0x63 U+00c4 +0x64 U+0104 +0x65 U+012e +0x66 U+016a +0x67 U+00c5 +0x68 U+0112 +0x69 U+017d +0x6a U+00a6 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+0118 +0x73 U+0116 +0x74 U+010c +0x75 U+0172 +0x76 U+012a +0x77 U+013b +0x78 U+0122 +0x79 U+0060 +0x7a U+003a +0x7b U+0023 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+0101 +0x8d U+017c +0x8e U+0144 +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+0156 +0x9b U+0157 +0x9c U+00e6 +0x9d U+0137 +0x9e U+00c6 +0x9f U+00a4 +0xa0 U+00b5 +0xa1 U+007e +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+201d +0xab U+017a +0xac U+0100 +0xad U+017b +0xae U+0143 +0xaf U+00ae +0xb0 U+005e +0xb1 U+00a3 +0xb2 U+012b +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+00a7 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+005b +0xbb U+005d +0xbc U+0179 +0xbd U+0136 +0xbe U+013c +0xbf U+00d7 +0xc0 U+007b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+014d +0xcc U+00f6 +0xcd U+0146 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+007d +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+0107 +0xdc U+00fc +0xdd U+0142 +0xde U+015b +0xdf U+2019 +0xe0 U+005c +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+014c +0xec U+00d6 +0xed U+0145 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+0106 +0xfc U+00dc +0xfd U+0141 +0xfe U+015a +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM1112.nr b/make/tools/CharsetMapping/IBM1112.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1112.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM1122.c2b b/make/tools/CharsetMapping/IBM1122.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1122.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM1122.map b/make/tools/CharsetMapping/IBM1122.map new file mode 100644 index 0000000000000000000000000000000000000000..3dfb45f0de542364e15a529c6f974271a27a581b --- /dev/null +++ b/make/tools/CharsetMapping/IBM1122.map @@ -0,0 +1,257 @@ +#Generated from IBM1122.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+007b +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+007d +0x48 U+00e7 +0x49 U+00f1 +0x4a U+00a7 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+0060 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+00a4 +0x5b U+00c5 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+0023 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+0024 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00f6 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+005c +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+00e9 +0x7a U+003a +0x7b U+00c4 +0x7c U+00d6 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+0161 +0x8d U+00fd +0x8e U+017e +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+005d +0xa0 U+00b5 +0xa1 U+00fc +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+0160 +0xad U+00dd +0xae U+017d +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+00a3 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+005b +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+00ac +0xbb U+007c +0xbc U+203e +0xbd U+00a8 +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+00e4 +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00a6 +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+00e5 +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+007e +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+00c9 +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+0040 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM1122.nr b/make/tools/CharsetMapping/IBM1122.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1122.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM1123.c2b b/make/tools/CharsetMapping/IBM1123.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1123.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM1123.map b/make/tools/CharsetMapping/IBM1123.map new file mode 100644 index 0000000000000000000000000000000000000000..16857071ab87206063d67ecec88b2ddfaea50976 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1123.map @@ -0,0 +1,257 @@ +#Generated from IBM1123.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+0452 +0x43 U+0491 +0x44 U+0451 +0x45 U+0454 +0x46 U+0455 +0x47 U+0456 +0x48 U+0457 +0x49 U+0458 +0x4a U+005b +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+0459 +0x52 U+045a +0x53 U+045b +0x54 U+045c +0x55 U+045e +0x56 U+045f +0x57 U+042a +0x58 U+2116 +0x59 U+0402 +0x5a U+005d +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+0490 +0x63 U+0401 +0x64 U+0404 +0x65 U+0405 +0x66 U+0406 +0x67 U+0407 +0x68 U+0408 +0x69 U+0409 +0x6a U+007c +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+040a +0x71 U+040b +0x72 U+040c +0x73 U+00ad +0x74 U+040e +0x75 U+040f +0x76 U+044e +0x77 U+0430 +0x78 U+0431 +0x79 U+0060 +0x7a U+003a +0x7b U+0023 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+0446 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+0434 +0x8b U+0435 +0x8c U+0444 +0x8d U+0433 +0x8e U+0445 +0x8f U+0438 +0x90 U+0439 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+043a +0x9b U+043b +0x9c U+043c +0x9d U+043d +0x9e U+043e +0x9f U+043f +0xa0 U+044f +0xa1 U+007e +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+0440 +0xab U+0441 +0xac U+0442 +0xad U+0443 +0xae U+0436 +0xaf U+0432 +0xb0 U+044c +0xb1 U+044b +0xb2 U+0437 +0xb3 U+0448 +0xb4 U+044d +0xb5 U+0449 +0xb6 U+0447 +0xb7 U+044a +0xb8 U+042e +0xb9 U+0410 +0xba U+0411 +0xbb U+0426 +0xbc U+0414 +0xbd U+0415 +0xbe U+0424 +0xbf U+0413 +0xc0 U+007b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+0425 +0xcb U+0418 +0xcc U+0419 +0xcd U+041a +0xce U+041b +0xcf U+041c +0xd0 U+007d +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+041d +0xdb U+041e +0xdc U+041f +0xdd U+042f +0xde U+0420 +0xdf U+0421 +0xe0 U+005c +0xe1 U+00a7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+0422 +0xeb U+0423 +0xec U+0416 +0xed U+0412 +0xee U+042c +0xef U+042b +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+0417 +0xfb U+0428 +0xfc U+042d +0xfd U+0429 +0xfe U+0427 +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM1123.nr b/make/tools/CharsetMapping/IBM1123.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1123.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM1124.map b/make/tools/CharsetMapping/IBM1124.map new file mode 100644 index 0000000000000000000000000000000000000000..4cca8021b112829b7457f385f90caeb2eebedcba --- /dev/null +++ b/make/tools/CharsetMapping/IBM1124.map @@ -0,0 +1,257 @@ +#Generated from IBM1124.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0080 +0x81 U+0081 +0x82 U+0082 +0x83 U+0083 +0x84 U+0084 +0x85 U+0085 +0x86 U+0086 +0x87 U+0087 +0x88 U+0088 +0x89 U+0089 +0x8a U+008a +0x8b U+008b +0x8c U+008c +0x8d U+008d +0x8e U+008e +0x8f U+008f +0x90 U+0090 +0x91 U+0091 +0x92 U+0092 +0x93 U+0093 +0x94 U+0094 +0x95 U+0095 +0x96 U+0096 +0x97 U+0097 +0x98 U+0098 +0x99 U+0099 +0x9a U+009a +0x9b U+009b +0x9c U+009c +0x9d U+009d +0x9e U+009e +0x9f U+009f +0xa0 U+00a0 +0xa1 U+0401 +0xa2 U+0402 +0xa3 U+0490 +0xa4 U+0404 +0xa5 U+0405 +0xa6 U+0406 +0xa7 U+0407 +0xa8 U+0408 +0xa9 U+0409 +0xaa U+040a +0xab U+040b +0xac U+040c +0xad U+00ad +0xae U+040e +0xaf U+040f +0xb0 U+0410 +0xb1 U+0411 +0xb2 U+0412 +0xb3 U+0413 +0xb4 U+0414 +0xb5 U+0415 +0xb6 U+0416 +0xb7 U+0417 +0xb8 U+0418 +0xb9 U+0419 +0xba U+041a +0xbb U+041b +0xbc U+041c +0xbd U+041d +0xbe U+041e +0xbf U+041f +0xc0 U+0420 +0xc1 U+0421 +0xc2 U+0422 +0xc3 U+0423 +0xc4 U+0424 +0xc5 U+0425 +0xc6 U+0426 +0xc7 U+0427 +0xc8 U+0428 +0xc9 U+0429 +0xca U+042a +0xcb U+042b +0xcc U+042c +0xcd U+042d +0xce U+042e +0xcf U+042f +0xd0 U+0430 +0xd1 U+0431 +0xd2 U+0432 +0xd3 U+0433 +0xd4 U+0434 +0xd5 U+0435 +0xd6 U+0436 +0xd7 U+0437 +0xd8 U+0438 +0xd9 U+0439 +0xda U+043a +0xdb U+043b +0xdc U+043c +0xdd U+043d +0xde U+043e +0xdf U+043f +0xe0 U+0440 +0xe1 U+0441 +0xe2 U+0442 +0xe3 U+0443 +0xe4 U+0444 +0xe5 U+0445 +0xe6 U+0446 +0xe7 U+0447 +0xe8 U+0448 +0xe9 U+0449 +0xea U+044a +0xeb U+044b +0xec U+044c +0xed U+044d +0xee U+044e +0xef U+044f +0xf0 U+2116 +0xf1 U+0451 +0xf2 U+0452 +0xf3 U+0491 +0xf4 U+0454 +0xf5 U+0455 +0xf6 U+0456 +0xf7 U+0457 +0xf8 U+0458 +0xf9 U+0459 +0xfa U+045a +0xfb U+045b +0xfc U+045c +0xfd U+00a7 +0xfe U+045e +0xff U+045f diff --git a/make/tools/CharsetMapping/IBM1140.c2b b/make/tools/CharsetMapping/IBM1140.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1140.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM1140.map b/make/tools/CharsetMapping/IBM1140.map new file mode 100644 index 0000000000000000000000000000000000000000..6a79f6cba5a1c188a34e262388660c5fc450ce9b --- /dev/null +++ b/make/tools/CharsetMapping/IBM1140.map @@ -0,0 +1,257 @@ +#Generated from IBM037.java with 0x9f <-> u+20ac +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+00e5 +0x48 U+00e7 +0x49 U+00f1 +0x4a U+00a2 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+007c +0x50 U+0026 +0x51 U+00e9 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+0021 +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+00ac +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+00c5 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00a6 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+0060 +0x7a U+003a +0x7b U+0023 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+20ac +0xa0 U+00b5 +0xa1 U+007e +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+00dd +0xae U+00de +0xaf U+00ae +0xb0 U+005e +0xb1 U+00a3 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+00a7 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+005b +0xbb U+005d +0xbc U+00af +0xbd U+00a8 +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+007b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00f6 +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+007d +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+00fc +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+005c +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+00d6 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM1141.c2b b/make/tools/CharsetMapping/IBM1141.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1141.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM1141.map b/make/tools/CharsetMapping/IBM1141.map new file mode 100644 index 0000000000000000000000000000000000000000..b524b109f2bb665afaeafe5cde761052b5e7ced6 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1141.map @@ -0,0 +1,257 @@ +#Generated from IBM273.java with 0x9f <-> u+20ac +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+007b +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+00e5 +0x48 U+00e7 +0x49 U+00f1 +0x4a U+00c4 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+00e9 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+007e +0x5a U+00dc +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+005b +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+00c5 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00f6 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+0060 +0x7a U+003a +0x7b U+0023 +0x7c U+00a7 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+20ac +0xa0 U+00b5 +0xa1 U+00df +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+00dd +0xae U+00de +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+00a3 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+0040 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+00ac +0xbb U+007c +0xbc U+00af +0xbd U+00a8 +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+00e4 +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00a6 +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+00fc +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+007d +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+00d6 +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+005c +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+005d +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM1142.c2b b/make/tools/CharsetMapping/IBM1142.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1142.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM1142.map b/make/tools/CharsetMapping/IBM1142.map new file mode 100644 index 0000000000000000000000000000000000000000..8ebdb3b5d6a439cb7c206214089f14ed3ef3ffee --- /dev/null +++ b/make/tools/CharsetMapping/IBM1142.map @@ -0,0 +1,257 @@ +#Generated from IBM277.java with 0x5a <-> u+20ac +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+007d +0x48 U+00e7 +0x49 U+00f1 +0x4a U+0023 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+00e9 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+20ac +0x5b U+00c5 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+0024 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00f8 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00a6 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+0060 +0x7a U+003a +0x7b U+00c6 +0x7c U+00d8 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+0040 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+007b +0x9d U+00b8 +0x9e U+005b +0x9f U+005d +0xa0 U+00b5 +0xa1 U+00fc +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+00dd +0xae U+00de +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+00a3 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+00a7 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+00ac +0xbb U+007c +0xbc U+00af +0xbd U+00a8 +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+00e6 +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00f6 +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+00e5 +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+007e +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+005c +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+00d6 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM1143.c2b b/make/tools/CharsetMapping/IBM1143.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1143.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM1143.map b/make/tools/CharsetMapping/IBM1143.map new file mode 100644 index 0000000000000000000000000000000000000000..3bac32ae83e86f231a57354c4e969f31bdd05ca6 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1143.map @@ -0,0 +1,257 @@ +#Generated from IBM278.java with 0x5a <-> u+20ac +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+007b +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+007d +0x48 U+00e7 +0x49 U+00f1 +0x4a U+00a7 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+0060 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+20ac +0x5b U+00c5 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+0023 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+0024 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00f6 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+005c +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+00e9 +0x7a U+003a +0x7b U+00c4 +0x7c U+00d6 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+005d +0xa0 U+00b5 +0xa1 U+00fc +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+00dd +0xae U+00de +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+00a3 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+005b +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+00ac +0xbb U+007c +0xbc U+00af +0xbd U+00a8 +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+00e4 +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00a6 +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+00e5 +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+007e +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+00c9 +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+0040 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM1144.c2b b/make/tools/CharsetMapping/IBM1144.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1144.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM1144.map b/make/tools/CharsetMapping/IBM1144.map new file mode 100644 index 0000000000000000000000000000000000000000..6c1ea6e577607103a7a7b24959f7632ea8500334 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1144.map @@ -0,0 +1,257 @@ +#Generated from IBM280.java with 0x9f <-> u+20ac +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+007b +0x45 U+00e1 +0x46 U+00e3 +0x47 U+00e5 +0x48 U+005c +0x49 U+00f1 +0x4a U+00b0 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+005d +0x52 U+00ea +0x53 U+00eb +0x54 U+007d +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+007e +0x59 U+00df +0x5a U+00e9 +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+00c5 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00f2 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+00f9 +0x7a U+003a +0x7b U+00a3 +0x7c U+00a7 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+005b +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+20ac +0xa0 U+00b5 +0xa1 U+00ec +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+00dd +0xae U+00de +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+0023 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+0040 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+00ac +0xbb U+007c +0xbc U+00af +0xbd U+00a8 +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+00e0 +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00f6 +0xcd U+00a6 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+00e8 +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+00fc +0xdd U+0060 +0xde U+00fa +0xdf U+00ff +0xe0 U+00e7 +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+00d6 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM1145.c2b b/make/tools/CharsetMapping/IBM1145.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1145.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM1145.map b/make/tools/CharsetMapping/IBM1145.map new file mode 100644 index 0000000000000000000000000000000000000000..e009383b3d0e9e0847ed46797604394cc13a9cc8 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1145.map @@ -0,0 +1,257 @@ +#Generated from IBM284.java with 0x9f <-> u+20ac +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+00e5 +0x48 U+00e7 +0x49 U+00a6 +0x4a U+005b +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+007c +0x50 U+0026 +0x51 U+00e9 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+005d +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+00ac +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+00c5 +0x68 U+00c7 +0x69 U+0023 +0x6a U+00f1 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+0060 +0x7a U+003a +0x7b U+00d1 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+20ac +0xa0 U+00b5 +0xa1 U+00a8 +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+00dd +0xae U+00de +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+00a3 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+00a7 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+005e +0xbb U+0021 +0xbc U+00af +0xbd U+007e +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+007b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00f6 +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+007d +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+00fc +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+005c +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+00d6 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM1146.c2b b/make/tools/CharsetMapping/IBM1146.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1146.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM1146.map b/make/tools/CharsetMapping/IBM1146.map new file mode 100644 index 0000000000000000000000000000000000000000..8ce57843f40c1c11f2499fbc427b8afe7a8ca0a1 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1146.map @@ -0,0 +1,257 @@ +#Generated from IBM285.java with 0x9f <-> u+20ac +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+00e5 +0x48 U+00e7 +0x49 U+00f1 +0x4a U+0024 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+007c +0x50 U+0026 +0x51 U+00e9 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+0021 +0x5b U+00a3 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+00ac +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+00c5 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00a6 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+0060 +0x7a U+003a +0x7b U+0023 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+20ac +0xa0 U+00b5 +0xa1 U+00af +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+00dd +0xae U+00de +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+005b +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+00a7 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+005e +0xbb U+005d +0xbc U+007e +0xbd U+00a8 +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+007b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00f6 +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+007d +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+00fc +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+005c +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+00d6 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM1147.c2b b/make/tools/CharsetMapping/IBM1147.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1147.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM1147.map b/make/tools/CharsetMapping/IBM1147.map new file mode 100644 index 0000000000000000000000000000000000000000..415628a435b54fce598be30716dc61c72e10311a --- /dev/null +++ b/make/tools/CharsetMapping/IBM1147.map @@ -0,0 +1,257 @@ +#Generated from IBM297.java 0x9f <-> u+20ac +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+0040 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+00e5 +0x48 U+005c +0x49 U+00f1 +0x4a U+00b0 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+007b +0x52 U+00ea +0x53 U+00eb +0x54 U+007d +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+00a7 +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+00c5 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00f9 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+00b5 +0x7a U+003a +0x7b U+00a3 +0x7c U+00e0 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+005b +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+20ac +0xa0 U+0060 +0xa1 U+00a8 +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+00dd +0xae U+00de +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+0023 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+005d +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+00ac +0xbb U+007c +0xbc U+00af +0xbd U+007e +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+00e9 +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00f6 +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+00e8 +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+00fc +0xdd U+00a6 +0xde U+00fa +0xdf U+00ff +0xe0 U+00e7 +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+00d6 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM1148.c2b b/make/tools/CharsetMapping/IBM1148.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1148.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM1148.map b/make/tools/CharsetMapping/IBM1148.map new file mode 100644 index 0000000000000000000000000000000000000000..3f58284847cee1143f313679a69413766c8ab6fe --- /dev/null +++ b/make/tools/CharsetMapping/IBM1148.map @@ -0,0 +1,257 @@ +#Generated from IBM500.java 0x9f <-> u+20ac +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+00e5 +0x48 U+00e7 +0x49 U+00f1 +0x4a U+005b +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+00e9 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+005d +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+00c5 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00a6 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+0060 +0x7a U+003a +0x7b U+0023 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+20ac +0xa0 U+00b5 +0xa1 U+007e +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+00dd +0xae U+00de +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+00a3 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+00a7 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+00ac +0xbb U+007c +0xbc U+00af +0xbd U+00a8 +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+007b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00f6 +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+007d +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+00fc +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+005c +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+00d6 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM1149.c2b b/make/tools/CharsetMapping/IBM1149.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM1149.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM1149.map b/make/tools/CharsetMapping/IBM1149.map new file mode 100644 index 0000000000000000000000000000000000000000..8d452004860c3f944972515f35bd8cd56d0a428b --- /dev/null +++ b/make/tools/CharsetMapping/IBM1149.map @@ -0,0 +1,257 @@ +#Generated from IBM871.java 0x9f <-> u+20ac +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+00e5 +0x48 U+00e7 +0x49 U+00f1 +0x4a U+00de +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+00e9 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+00c6 +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+00d6 +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+00c5 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00a6 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+00f0 +0x7a U+003a +0x7b U+0023 +0x7c U+00d0 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+0060 +0x8d U+00fd +0x8e U+007b +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+007d +0x9d U+00b8 +0x9e U+005d +0x9f U+20ac +0xa0 U+00b5 +0xa1 U+00f6 +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+0040 +0xad U+00dd +0xae U+005b +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+00a3 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+00a7 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+00ac +0xbb U+007c +0xbc U+00af +0xbd U+00a8 +0xbe U+005c +0xbf U+00d7 +0xc0 U+00fe +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+007e +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+00e6 +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+00fc +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+00b4 +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+005e +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM273.c2b b/make/tools/CharsetMapping/IBM273.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM273.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM273.map b/make/tools/CharsetMapping/IBM273.map new file mode 100644 index 0000000000000000000000000000000000000000..690858d02637e5e71b46b761cc0c91dbf0906c56 --- /dev/null +++ b/make/tools/CharsetMapping/IBM273.map @@ -0,0 +1,257 @@ +#Generated from IBM273.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+007b +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+00e5 +0x48 U+00e7 +0x49 U+00f1 +0x4a U+00c4 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+00e9 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+007e +0x5a U+00dc +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+005b +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+00c5 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00f6 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+0060 +0x7a U+003a +0x7b U+0023 +0x7c U+00a7 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+00a4 +0xa0 U+00b5 +0xa1 U+00df +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+00dd +0xae U+00de +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+00a3 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+0040 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+00ac +0xbb U+007c +0xbc U+00af +0xbd U+00a8 +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+00e4 +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00a6 +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+00fc +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+007d +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+00d6 +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+005c +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+005d +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM273.nr b/make/tools/CharsetMapping/IBM273.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM273.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM277.c2b b/make/tools/CharsetMapping/IBM277.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM277.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM277.map b/make/tools/CharsetMapping/IBM277.map new file mode 100644 index 0000000000000000000000000000000000000000..957f516c3a58b9c9546f1fde844020b948f0737b --- /dev/null +++ b/make/tools/CharsetMapping/IBM277.map @@ -0,0 +1,257 @@ +#Generated from IBM277.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+007d +0x48 U+00e7 +0x49 U+00f1 +0x4a U+0023 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+00e9 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+00a4 +0x5b U+00c5 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+0024 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00f8 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00a6 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+0060 +0x7a U+003a +0x7b U+00c6 +0x7c U+00d8 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+0040 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+007b +0x9d U+00b8 +0x9e U+005b +0x9f U+005d +0xa0 U+00b5 +0xa1 U+00fc +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+00dd +0xae U+00de +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+00a3 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+00a7 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+00ac +0xbb U+007c +0xbc U+00af +0xbd U+00a8 +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+00e6 +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00f6 +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+00e5 +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+007e +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+005c +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+00d6 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM277.nr b/make/tools/CharsetMapping/IBM277.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM277.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM278.c2b b/make/tools/CharsetMapping/IBM278.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM278.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM278.map b/make/tools/CharsetMapping/IBM278.map new file mode 100644 index 0000000000000000000000000000000000000000..51eac1ffa4d31e48162bef2abd8231756d25c5b9 --- /dev/null +++ b/make/tools/CharsetMapping/IBM278.map @@ -0,0 +1,257 @@ +#Generated from IBM278.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+007b +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+007d +0x48 U+00e7 +0x49 U+00f1 +0x4a U+00a7 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+0060 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+00a4 +0x5b U+00c5 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+0023 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+0024 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00f6 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+005c +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+00e9 +0x7a U+003a +0x7b U+00c4 +0x7c U+00d6 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+005d +0xa0 U+00b5 +0xa1 U+00fc +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+00dd +0xae U+00de +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+00a3 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+005b +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+00ac +0xbb U+007c +0xbc U+00af +0xbd U+00a8 +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+00e4 +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00a6 +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+00e5 +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+007e +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+00c9 +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+0040 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM278.nr b/make/tools/CharsetMapping/IBM278.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM278.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM280.c2b b/make/tools/CharsetMapping/IBM280.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM280.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM280.map b/make/tools/CharsetMapping/IBM280.map new file mode 100644 index 0000000000000000000000000000000000000000..77fe94f5e8c59f80305868ed952d13f627e532dc --- /dev/null +++ b/make/tools/CharsetMapping/IBM280.map @@ -0,0 +1,257 @@ +#Generated from IBM280.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+007b +0x45 U+00e1 +0x46 U+00e3 +0x47 U+00e5 +0x48 U+005c +0x49 U+00f1 +0x4a U+00b0 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+005d +0x52 U+00ea +0x53 U+00eb +0x54 U+007d +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+007e +0x59 U+00df +0x5a U+00e9 +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+00c5 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00f2 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+00f9 +0x7a U+003a +0x7b U+00a3 +0x7c U+00a7 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+005b +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+00a4 +0xa0 U+00b5 +0xa1 U+00ec +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+00dd +0xae U+00de +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+0023 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+0040 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+00ac +0xbb U+007c +0xbc U+00af +0xbd U+00a8 +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+00e0 +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00f6 +0xcd U+00a6 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+00e8 +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+00fc +0xdd U+0060 +0xde U+00fa +0xdf U+00ff +0xe0 U+00e7 +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+00d6 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM280.nr b/make/tools/CharsetMapping/IBM280.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM280.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM284.c2b b/make/tools/CharsetMapping/IBM284.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM284.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM284.map b/make/tools/CharsetMapping/IBM284.map new file mode 100644 index 0000000000000000000000000000000000000000..c3be08c84752ae374ccfd012554e6e838d54f6d4 --- /dev/null +++ b/make/tools/CharsetMapping/IBM284.map @@ -0,0 +1,257 @@ +#Generated from IBM284.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+00e5 +0x48 U+00e7 +0x49 U+00a6 +0x4a U+005b +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+007c +0x50 U+0026 +0x51 U+00e9 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+005d +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+00ac +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+00c5 +0x68 U+00c7 +0x69 U+0023 +0x6a U+00f1 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+0060 +0x7a U+003a +0x7b U+00d1 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+00a4 +0xa0 U+00b5 +0xa1 U+00a8 +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+00dd +0xae U+00de +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+00a3 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+00a7 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+005e +0xbb U+0021 +0xbc U+00af +0xbd U+007e +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+007b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00f6 +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+007d +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+00fc +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+005c +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+00d6 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM284.nr b/make/tools/CharsetMapping/IBM284.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM284.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM285.c2b b/make/tools/CharsetMapping/IBM285.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM285.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM285.map b/make/tools/CharsetMapping/IBM285.map new file mode 100644 index 0000000000000000000000000000000000000000..3fca86cd558a2b8312b98c1681808ac977050b5c --- /dev/null +++ b/make/tools/CharsetMapping/IBM285.map @@ -0,0 +1,257 @@ +#Generated from IBM285.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+00e5 +0x48 U+00e7 +0x49 U+00f1 +0x4a U+0024 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+007c +0x50 U+0026 +0x51 U+00e9 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+0021 +0x5b U+00a3 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+00ac +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+00c5 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00a6 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+0060 +0x7a U+003a +0x7b U+0023 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+00a4 +0xa0 U+00b5 +0xa1 U+00af +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+00dd +0xae U+00de +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+005b +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+00a7 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+005e +0xbb U+005d +0xbc U+007e +0xbd U+00a8 +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+007b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00f6 +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+007d +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+00fc +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+005c +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+00d6 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM285.nr b/make/tools/CharsetMapping/IBM285.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM285.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM297.c2b b/make/tools/CharsetMapping/IBM297.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM297.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM297.map b/make/tools/CharsetMapping/IBM297.map new file mode 100644 index 0000000000000000000000000000000000000000..148087df03b1b6d17281124c31699c75b3c03337 --- /dev/null +++ b/make/tools/CharsetMapping/IBM297.map @@ -0,0 +1,257 @@ +#Generated from IBM297.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+0040 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+00e5 +0x48 U+005c +0x49 U+00f1 +0x4a U+00b0 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+007b +0x52 U+00ea +0x53 U+00eb +0x54 U+007d +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+00a7 +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+00c5 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00f9 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+00b5 +0x7a U+003a +0x7b U+00a3 +0x7c U+00e0 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+005b +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+00a4 +0xa0 U+0060 +0xa1 U+00a8 +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+00dd +0xae U+00de +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+0023 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+005d +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+00ac +0xbb U+007c +0xbc U+00af +0xbd U+007e +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+00e9 +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00f6 +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+00e8 +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+00fc +0xdd U+00a6 +0xde U+00fa +0xdf U+00ff +0xe0 U+00e7 +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+00d6 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM297.nr b/make/tools/CharsetMapping/IBM297.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM297.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM420.c2b b/make/tools/CharsetMapping/IBM420.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM420.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM420.map b/make/tools/CharsetMapping/IBM420.map new file mode 100644 index 0000000000000000000000000000000000000000..d4ce19249b3dd74cf9c3707f2401c1d394eec7cd --- /dev/null +++ b/make/tools/CharsetMapping/IBM420.map @@ -0,0 +1,257 @@ +#Generated from IBM420.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+fe7c +0x43 U+fe7d +0x44 U+0640 +0x45 U+f8fc +0x46 U+fe80 +0x47 U+fe81 +0x48 U+fe82 +0x49 U+fe83 +0x4a U+00a2 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+007c +0x50 U+0026 +0x51 U+fe84 +0x52 U+fe85 +0x53 U+fffd +0x54 U+fffd +0x55 U+fe8b +0x56 U+fe8d +0x57 U+fe8e +0x58 U+fe8f +0x59 U+fe91 +0x5a U+0021 +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+00ac +0x60 U+002d +0x61 U+002f +0x62 U+fe93 +0x63 U+fe95 +0x64 U+fe97 +0x65 U+fe99 +0x66 U+fe9b +0x67 U+fe9d +0x68 U+fe9f +0x69 U+fea1 +0x6a U+00a6 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+fea3 +0x71 U+fea5 +0x72 U+fea7 +0x73 U+fea9 +0x74 U+feab +0x75 U+fead +0x76 U+feaf +0x77 U+f8f6 +0x78 U+feb3 +0x79 U+060c +0x7a U+003a +0x7b U+0023 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+f8f5 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+feb7 +0x8b U+f8f4 +0x8c U+febb +0x8d U+f8f7 +0x8e U+febf +0x8f U+fec3 +0x90 U+fec7 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+fec9 +0x9b U+feca +0x9c U+fecb +0x9d U+fecc +0x9e U+fecd +0x9f U+fece +0xa0 U+fecf +0xa1 U+00f7 +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+fed0 +0xab U+fed1 +0xac U+fed3 +0xad U+fed5 +0xae U+fed7 +0xaf U+fed9 +0xb0 U+fedb +0xb1 U+fedd +0xb2 U+fef5 +0xb3 U+fef6 +0xb4 U+fef7 +0xb5 U+fef8 +0xb6 U+fffd +0xb7 U+fffd +0xb8 U+fefb +0xb9 U+fefc +0xba U+fedf +0xbb U+fee1 +0xbc U+fee3 +0xbd U+fee5 +0xbe U+fee7 +0xbf U+fee9 +0xc0 U+061b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+feeb +0xcc U+fffd +0xcd U+feec +0xce U+fffd +0xcf U+feed +0xd0 U+061f +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+feef +0xdb U+fef0 +0xdc U+fef1 +0xdd U+fef2 +0xde U+fef3 +0xdf U+0660 +0xe0 U+00d7 +0xe1 U+2007 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+0661 +0xeb U+0662 +0xec U+fffd +0xed U+0663 +0xee U+0664 +0xef U+0665 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+fffd +0xfb U+0666 +0xfc U+0667 +0xfd U+0668 +0xfe U+0669 +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM420.nr b/make/tools/CharsetMapping/IBM420.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM420.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM424.c2b b/make/tools/CharsetMapping/IBM424.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM424.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM424.map b/make/tools/CharsetMapping/IBM424.map new file mode 100644 index 0000000000000000000000000000000000000000..da580c5d23256e8e6540d83b306a42cd15a51c31 --- /dev/null +++ b/make/tools/CharsetMapping/IBM424.map @@ -0,0 +1,257 @@ +#Generated from IBM424.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+05d0 +0x42 U+05d1 +0x43 U+05d2 +0x44 U+05d3 +0x45 U+05d4 +0x46 U+05d5 +0x47 U+05d6 +0x48 U+05d7 +0x49 U+05d8 +0x4a U+00a2 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+007c +0x50 U+0026 +0x51 U+05d9 +0x52 U+05da +0x53 U+05db +0x54 U+05dc +0x55 U+05dd +0x56 U+05de +0x57 U+05df +0x58 U+05e0 +0x59 U+05e1 +0x5a U+0021 +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+00ac +0x60 U+002d +0x61 U+002f +0x62 U+05e2 +0x63 U+05e3 +0x64 U+05e4 +0x65 U+05e5 +0x66 U+05e6 +0x67 U+05e7 +0x68 U+05e8 +0x69 U+05e9 +0x6a U+00a6 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+fffd +0x71 U+05ea +0x72 U+fffd +0x73 U+fffd +0x74 U+00a0 +0x75 U+fffd +0x76 U+fffd +0x77 U+fffd +0x78 U+2017 +0x79 U+0060 +0x7a U+003a +0x7b U+0023 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+fffd +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+fffd +0x8d U+fffd +0x8e U+fffd +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+fffd +0x9b U+fffd +0x9c U+fffd +0x9d U+00b8 +0x9e U+fffd +0x9f U+00a4 +0xa0 U+00b5 +0xa1 U+007e +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+fffd +0xab U+fffd +0xac U+fffd +0xad U+fffd +0xae U+fffd +0xaf U+00ae +0xb0 U+005e +0xb1 U+00a3 +0xb2 U+00a5 +0xb3 U+2022 +0xb4 U+00a9 +0xb5 U+00a7 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+005b +0xbb U+005d +0xbc U+203e +0xbd U+00a8 +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+007b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+fffd +0xcc U+fffd +0xcd U+fffd +0xce U+fffd +0xcf U+fffd +0xd0 U+007d +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+fffd +0xdc U+fffd +0xdd U+fffd +0xde U+fffd +0xdf U+fffd +0xe0 U+005c +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+fffd +0xec U+fffd +0xed U+fffd +0xee U+fffd +0xef U+fffd +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+fffd +0xfc U+fffd +0xfd U+fffd +0xfe U+fffd +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM424.nr b/make/tools/CharsetMapping/IBM424.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM424.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM437.map b/make/tools/CharsetMapping/IBM437.map new file mode 100644 index 0000000000000000000000000000000000000000..2ef0f79cd3bc0814810ebc5b458fd9a3dd8e19fb --- /dev/null +++ b/make/tools/CharsetMapping/IBM437.map @@ -0,0 +1,257 @@ +#Generated from IBM437.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00c7 +0x81 U+00fc +0x82 U+00e9 +0x83 U+00e2 +0x84 U+00e4 +0x85 U+00e0 +0x86 U+00e5 +0x87 U+00e7 +0x88 U+00ea +0x89 U+00eb +0x8a U+00e8 +0x8b U+00ef +0x8c U+00ee +0x8d U+00ec +0x8e U+00c4 +0x8f U+00c5 +0x90 U+00c9 +0x91 U+00e6 +0x92 U+00c6 +0x93 U+00f4 +0x94 U+00f6 +0x95 U+00f2 +0x96 U+00fb +0x97 U+00f9 +0x98 U+00ff +0x99 U+00d6 +0x9a U+00dc +0x9b U+00a2 +0x9c U+00a3 +0x9d U+00a5 +0x9e U+20a7 +0x9f U+0192 +0xa0 U+00e1 +0xa1 U+00ed +0xa2 U+00f3 +0xa3 U+00fa +0xa4 U+00f1 +0xa5 U+00d1 +0xa6 U+00aa +0xa7 U+00ba +0xa8 U+00bf +0xa9 U+2310 +0xaa U+00ac +0xab U+00bd +0xac U+00bc +0xad U+00a1 +0xae U+00ab +0xaf U+00bb +0xb0 U+2591 +0xb1 U+2592 +0xb2 U+2593 +0xb3 U+2502 +0xb4 U+2524 +0xb5 U+2561 +0xb6 U+2562 +0xb7 U+2556 +0xb8 U+2555 +0xb9 U+2563 +0xba U+2551 +0xbb U+2557 +0xbc U+255d +0xbd U+255c +0xbe U+255b +0xbf U+2510 +0xc0 U+2514 +0xc1 U+2534 +0xc2 U+252c +0xc3 U+251c +0xc4 U+2500 +0xc5 U+253c +0xc6 U+255e +0xc7 U+255f +0xc8 U+255a +0xc9 U+2554 +0xca U+2569 +0xcb U+2566 +0xcc U+2560 +0xcd U+2550 +0xce U+256c +0xcf U+2567 +0xd0 U+2568 +0xd1 U+2564 +0xd2 U+2565 +0xd3 U+2559 +0xd4 U+2558 +0xd5 U+2552 +0xd6 U+2553 +0xd7 U+256b +0xd8 U+256a +0xd9 U+2518 +0xda U+250c +0xdb U+2588 +0xdc U+2584 +0xdd U+258c +0xde U+2590 +0xdf U+2580 +0xe0 U+03b1 +0xe1 U+00df +0xe2 U+0393 +0xe3 U+03c0 +0xe4 U+03a3 +0xe5 U+03c3 +0xe6 U+00b5 +0xe7 U+03c4 +0xe8 U+03a6 +0xe9 U+0398 +0xea U+03a9 +0xeb U+03b4 +0xec U+221e +0xed U+03c6 +0xee U+03b5 +0xef U+2229 +0xf0 U+2261 +0xf1 U+00b1 +0xf2 U+2265 +0xf3 U+2264 +0xf4 U+2320 +0xf5 U+2321 +0xf6 U+00f7 +0xf7 U+2248 +0xf8 U+00b0 +0xf9 U+2219 +0xfa U+00b7 +0xfb U+221a +0xfc U+207f +0xfd U+00b2 +0xfe U+25a0 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM500.c2b b/make/tools/CharsetMapping/IBM500.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM500.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM500.map b/make/tools/CharsetMapping/IBM500.map new file mode 100644 index 0000000000000000000000000000000000000000..31d11e2d10ec0f4a0265c908110e0eb210a6b0dc --- /dev/null +++ b/make/tools/CharsetMapping/IBM500.map @@ -0,0 +1,257 @@ +#Generated from IBM500.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+00e5 +0x48 U+00e7 +0x49 U+00f1 +0x4a U+005b +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+00e9 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+005d +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+00c5 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00a6 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+0060 +0x7a U+003a +0x7b U+0023 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+00f0 +0x8d U+00fd +0x8e U+00fe +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+00e6 +0x9d U+00b8 +0x9e U+00c6 +0x9f U+00a4 +0xa0 U+00b5 +0xa1 U+007e +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+00d0 +0xad U+00dd +0xae U+00de +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+00a3 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+00a7 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+00ac +0xbb U+007c +0xbc U+00af +0xbd U+00a8 +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+007b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00f6 +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+007d +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+00fc +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+005c +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+00d6 +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM500.nr b/make/tools/CharsetMapping/IBM500.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM500.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM737.map b/make/tools/CharsetMapping/IBM737.map new file mode 100644 index 0000000000000000000000000000000000000000..c171b421f4e45924dbb958b08dc95f7690e6ef22 --- /dev/null +++ b/make/tools/CharsetMapping/IBM737.map @@ -0,0 +1,257 @@ +#Generated from IBM737.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0391 +0x81 U+0392 +0x82 U+0393 +0x83 U+0394 +0x84 U+0395 +0x85 U+0396 +0x86 U+0397 +0x87 U+0398 +0x88 U+0399 +0x89 U+039a +0x8a U+039b +0x8b U+039c +0x8c U+039d +0x8d U+039e +0x8e U+039f +0x8f U+03a0 +0x90 U+03a1 +0x91 U+03a3 +0x92 U+03a4 +0x93 U+03a5 +0x94 U+03a6 +0x95 U+03a7 +0x96 U+03a8 +0x97 U+03a9 +0x98 U+03b1 +0x99 U+03b2 +0x9a U+03b3 +0x9b U+03b4 +0x9c U+03b5 +0x9d U+03b6 +0x9e U+03b7 +0x9f U+03b8 +0xa0 U+03b9 +0xa1 U+03ba +0xa2 U+03bb +0xa3 U+03bc +0xa4 U+03bd +0xa5 U+03be +0xa6 U+03bf +0xa7 U+03c0 +0xa8 U+03c1 +0xa9 U+03c3 +0xaa U+03c2 +0xab U+03c4 +0xac U+03c5 +0xad U+03c6 +0xae U+03c7 +0xaf U+03c8 +0xb0 U+2591 +0xb1 U+2592 +0xb2 U+2593 +0xb3 U+2502 +0xb4 U+2524 +0xb5 U+2561 +0xb6 U+2562 +0xb7 U+2556 +0xb8 U+2555 +0xb9 U+2563 +0xba U+2551 +0xbb U+2557 +0xbc U+255d +0xbd U+255c +0xbe U+255b +0xbf U+2510 +0xc0 U+2514 +0xc1 U+2534 +0xc2 U+252c +0xc3 U+251c +0xc4 U+2500 +0xc5 U+253c +0xc6 U+255e +0xc7 U+255f +0xc8 U+255a +0xc9 U+2554 +0xca U+2569 +0xcb U+2566 +0xcc U+2560 +0xcd U+2550 +0xce U+256c +0xcf U+2567 +0xd0 U+2568 +0xd1 U+2564 +0xd2 U+2565 +0xd3 U+2559 +0xd4 U+2558 +0xd5 U+2552 +0xd6 U+2553 +0xd7 U+256b +0xd8 U+256a +0xd9 U+2518 +0xda U+250c +0xdb U+2588 +0xdc U+2584 +0xdd U+258c +0xde U+2590 +0xdf U+2580 +0xe0 U+03c9 +0xe1 U+03ac +0xe2 U+03ad +0xe3 U+03ae +0xe4 U+03ca +0xe5 U+03af +0xe6 U+03cc +0xe7 U+03cd +0xe8 U+03cb +0xe9 U+03ce +0xea U+0386 +0xeb U+0388 +0xec U+0389 +0xed U+038a +0xee U+038c +0xef U+038e +0xf0 U+038f +0xf1 U+00b1 +0xf2 U+2265 +0xf3 U+2264 +0xf4 U+03aa +0xf5 U+03ab +0xf6 U+00f7 +0xf7 U+2248 +0xf8 U+00b0 +0xf9 U+2219 +0xfa U+00b7 +0xfb U+221a +0xfc U+207f +0xfd U+00b2 +0xfe U+25a0 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM775.map b/make/tools/CharsetMapping/IBM775.map new file mode 100644 index 0000000000000000000000000000000000000000..a023d0e1bf1476f9ac875571cbe70e50bc40dedd --- /dev/null +++ b/make/tools/CharsetMapping/IBM775.map @@ -0,0 +1,257 @@ +#Generated from IBM775.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0106 +0x81 U+00fc +0x82 U+00e9 +0x83 U+0101 +0x84 U+00e4 +0x85 U+0123 +0x86 U+00e5 +0x87 U+0107 +0x88 U+0142 +0x89 U+0113 +0x8a U+0156 +0x8b U+0157 +0x8c U+012b +0x8d U+0179 +0x8e U+00c4 +0x8f U+00c5 +0x90 U+00c9 +0x91 U+00e6 +0x92 U+00c6 +0x93 U+014d +0x94 U+00f6 +0x95 U+0122 +0x96 U+00a2 +0x97 U+015a +0x98 U+015b +0x99 U+00d6 +0x9a U+00dc +0x9b U+00f8 +0x9c U+00a3 +0x9d U+00d8 +0x9e U+00d7 +0x9f U+00a4 +0xa0 U+0100 +0xa1 U+012a +0xa2 U+00f3 +0xa3 U+017b +0xa4 U+017c +0xa5 U+017a +0xa6 U+201d +0xa7 U+00a6 +0xa8 U+00a9 +0xa9 U+00ae +0xaa U+00ac +0xab U+00bd +0xac U+00bc +0xad U+0141 +0xae U+00ab +0xaf U+00bb +0xb0 U+2591 +0xb1 U+2592 +0xb2 U+2593 +0xb3 U+2502 +0xb4 U+2524 +0xb5 U+0104 +0xb6 U+010c +0xb7 U+0118 +0xb8 U+0116 +0xb9 U+2563 +0xba U+2551 +0xbb U+2557 +0xbc U+255d +0xbd U+012e +0xbe U+0160 +0xbf U+2510 +0xc0 U+2514 +0xc1 U+2534 +0xc2 U+252c +0xc3 U+251c +0xc4 U+2500 +0xc5 U+253c +0xc6 U+0172 +0xc7 U+016a +0xc8 U+255a +0xc9 U+2554 +0xca U+2569 +0xcb U+2566 +0xcc U+2560 +0xcd U+2550 +0xce U+256c +0xcf U+017d +0xd0 U+0105 +0xd1 U+010d +0xd2 U+0119 +0xd3 U+0117 +0xd4 U+012f +0xd5 U+0161 +0xd6 U+0173 +0xd7 U+016b +0xd8 U+017e +0xd9 U+2518 +0xda U+250c +0xdb U+2588 +0xdc U+2584 +0xdd U+258c +0xde U+2590 +0xdf U+2580 +0xe0 U+00d3 +0xe1 U+00df +0xe2 U+014c +0xe3 U+0143 +0xe4 U+00f5 +0xe5 U+00d5 +0xe6 U+00b5 +0xe7 U+0144 +0xe8 U+0136 +0xe9 U+0137 +0xea U+013b +0xeb U+013c +0xec U+0146 +0xed U+0112 +0xee U+0145 +0xef U+2019 +0xf0 U+00ad +0xf1 U+00b1 +0xf2 U+201c +0xf3 U+00be +0xf4 U+00b6 +0xf5 U+00a7 +0xf6 U+00f7 +0xf7 U+201e +0xf8 U+00b0 +0xf9 U+2219 +0xfa U+00b7 +0xfb U+00b9 +0xfc U+00b3 +0xfd U+00b2 +0xfe U+25a0 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM838.c2b b/make/tools/CharsetMapping/IBM838.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM838.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM838.map b/make/tools/CharsetMapping/IBM838.map new file mode 100644 index 0000000000000000000000000000000000000000..eb587e71fc85f17769c8d8a6347596df88a2d447 --- /dev/null +++ b/make/tools/CharsetMapping/IBM838.map @@ -0,0 +1,257 @@ +#Generated from IBM838.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+0e01 +0x43 U+0e02 +0x44 U+0e03 +0x45 U+0e04 +0x46 U+0e05 +0x47 U+0e06 +0x48 U+0e07 +0x49 U+005b +0x4a U+00a2 +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+007c +0x50 U+0026 +0x51 U+0e48 +0x52 U+0e08 +0x53 U+0e09 +0x54 U+0e0a +0x55 U+0e0b +0x56 U+0e0c +0x57 U+0e0d +0x58 U+0e0e +0x59 U+005d +0x5a U+0021 +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+00ac +0x60 U+002d +0x61 U+002f +0x62 U+0e0f +0x63 U+0e10 +0x64 U+0e11 +0x65 U+0e12 +0x66 U+0e13 +0x67 U+0e14 +0x68 U+0e15 +0x69 U+005e +0x6a U+00a6 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+0e3f +0x71 U+0e4e +0x72 U+0e16 +0x73 U+0e17 +0x74 U+0e18 +0x75 U+0e19 +0x76 U+0e1a +0x77 U+0e1b +0x78 U+0e1c +0x79 U+0060 +0x7a U+003a +0x7b U+0023 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+0e4f +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+0e1d +0x8b U+0e1e +0x8c U+0e1f +0x8d U+0e20 +0x8e U+0e21 +0x8f U+0e22 +0x90 U+0e5a +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+0e23 +0x9b U+0e24 +0x9c U+0e25 +0x9d U+0e26 +0x9e U+0e27 +0x9f U+0e28 +0xa0 U+0e5b +0xa1 U+007e +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+0e29 +0xab U+0e2a +0xac U+0e2b +0xad U+0e2c +0xae U+0e2d +0xaf U+0e2e +0xb0 U+0e50 +0xb1 U+0e51 +0xb2 U+0e52 +0xb3 U+0e53 +0xb4 U+0e54 +0xb5 U+0e55 +0xb6 U+0e56 +0xb7 U+0e57 +0xb8 U+0e58 +0xb9 U+0e59 +0xba U+0e2f +0xbb U+0e30 +0xbc U+0e31 +0xbd U+0e32 +0xbe U+0e33 +0xbf U+0e34 +0xc0 U+007b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+0e49 +0xcb U+0e35 +0xcc U+0e36 +0xcd U+0e37 +0xce U+0e38 +0xcf U+0e39 +0xd0 U+007d +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+0e3a +0xdb U+0e40 +0xdc U+0e41 +0xdd U+0e42 +0xde U+0e43 +0xdf U+0e44 +0xe0 U+005c +0xe1 U+0e4a +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+0e45 +0xeb U+0e46 +0xec U+0e47 +0xed U+0e48 +0xee U+0e49 +0xef U+0e4a +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+0e4b +0xfb U+0e4c +0xfc U+0e4d +0xfd U+0e4b +0xfe U+0e4c +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM838.nr b/make/tools/CharsetMapping/IBM838.nr new file mode 100644 index 0000000000000000000000000000000000000000..3b3d08b0d165eb2dd4340832261905820610be72 --- /dev/null +++ b/make/tools/CharsetMapping/IBM838.nr @@ -0,0 +1,6 @@ +0x25 U+000a +0x51 U+0e48 +0xca U+0e49 +0xe1 U+0e4a +0xfd U+0e4b +0xfe U+0e4c diff --git a/make/tools/CharsetMapping/IBM850.map b/make/tools/CharsetMapping/IBM850.map new file mode 100644 index 0000000000000000000000000000000000000000..981356f85b2696f5ee3ab40ca522f445e4b00a70 --- /dev/null +++ b/make/tools/CharsetMapping/IBM850.map @@ -0,0 +1,257 @@ +#Generated from IBM850.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00c7 +0x81 U+00fc +0x82 U+00e9 +0x83 U+00e2 +0x84 U+00e4 +0x85 U+00e0 +0x86 U+00e5 +0x87 U+00e7 +0x88 U+00ea +0x89 U+00eb +0x8a U+00e8 +0x8b U+00ef +0x8c U+00ee +0x8d U+00ec +0x8e U+00c4 +0x8f U+00c5 +0x90 U+00c9 +0x91 U+00e6 +0x92 U+00c6 +0x93 U+00f4 +0x94 U+00f6 +0x95 U+00f2 +0x96 U+00fb +0x97 U+00f9 +0x98 U+00ff +0x99 U+00d6 +0x9a U+00dc +0x9b U+00f8 +0x9c U+00a3 +0x9d U+00d8 +0x9e U+00d7 +0x9f U+0192 +0xa0 U+00e1 +0xa1 U+00ed +0xa2 U+00f3 +0xa3 U+00fa +0xa4 U+00f1 +0xa5 U+00d1 +0xa6 U+00aa +0xa7 U+00ba +0xa8 U+00bf +0xa9 U+00ae +0xaa U+00ac +0xab U+00bd +0xac U+00bc +0xad U+00a1 +0xae U+00ab +0xaf U+00bb +0xb0 U+2591 +0xb1 U+2592 +0xb2 U+2593 +0xb3 U+2502 +0xb4 U+2524 +0xb5 U+00c1 +0xb6 U+00c2 +0xb7 U+00c0 +0xb8 U+00a9 +0xb9 U+2563 +0xba U+2551 +0xbb U+2557 +0xbc U+255d +0xbd U+00a2 +0xbe U+00a5 +0xbf U+2510 +0xc0 U+2514 +0xc1 U+2534 +0xc2 U+252c +0xc3 U+251c +0xc4 U+2500 +0xc5 U+253c +0xc6 U+00e3 +0xc7 U+00c3 +0xc8 U+255a +0xc9 U+2554 +0xca U+2569 +0xcb U+2566 +0xcc U+2560 +0xcd U+2550 +0xce U+256c +0xcf U+00a4 +0xd0 U+00f0 +0xd1 U+00d0 +0xd2 U+00ca +0xd3 U+00cb +0xd4 U+00c8 +0xd5 U+0131 +0xd6 U+00cd +0xd7 U+00ce +0xd8 U+00cf +0xd9 U+2518 +0xda U+250c +0xdb U+2588 +0xdc U+2584 +0xdd U+00a6 +0xde U+00cc +0xdf U+2580 +0xe0 U+00d3 +0xe1 U+00df +0xe2 U+00d4 +0xe3 U+00d2 +0xe4 U+00f5 +0xe5 U+00d5 +0xe6 U+00b5 +0xe7 U+00fe +0xe8 U+00de +0xe9 U+00da +0xea U+00db +0xeb U+00d9 +0xec U+00fd +0xed U+00dd +0xee U+00af +0xef U+00b4 +0xf0 U+00ad +0xf1 U+00b1 +0xf2 U+2017 +0xf3 U+00be +0xf4 U+00b6 +0xf5 U+00a7 +0xf6 U+00f7 +0xf7 U+00b8 +0xf8 U+00b0 +0xf9 U+00a8 +0xfa U+00b7 +0xfb U+00b9 +0xfc U+00b3 +0xfd U+00b2 +0xfe U+25a0 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM852.map b/make/tools/CharsetMapping/IBM852.map new file mode 100644 index 0000000000000000000000000000000000000000..1c5768a01b60a8c6e81e13ba9eb69c781affb33b --- /dev/null +++ b/make/tools/CharsetMapping/IBM852.map @@ -0,0 +1,257 @@ +#Generated from IBM852.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00c7 +0x81 U+00fc +0x82 U+00e9 +0x83 U+00e2 +0x84 U+00e4 +0x85 U+016f +0x86 U+0107 +0x87 U+00e7 +0x88 U+0142 +0x89 U+00eb +0x8a U+0150 +0x8b U+0151 +0x8c U+00ee +0x8d U+0179 +0x8e U+00c4 +0x8f U+0106 +0x90 U+00c9 +0x91 U+0139 +0x92 U+013a +0x93 U+00f4 +0x94 U+00f6 +0x95 U+013d +0x96 U+013e +0x97 U+015a +0x98 U+015b +0x99 U+00d6 +0x9a U+00dc +0x9b U+0164 +0x9c U+0165 +0x9d U+0141 +0x9e U+00d7 +0x9f U+010d +0xa0 U+00e1 +0xa1 U+00ed +0xa2 U+00f3 +0xa3 U+00fa +0xa4 U+0104 +0xa5 U+0105 +0xa6 U+017d +0xa7 U+017e +0xa8 U+0118 +0xa9 U+0119 +0xaa U+00ac +0xab U+017a +0xac U+010c +0xad U+015f +0xae U+00ab +0xaf U+00bb +0xb0 U+2591 +0xb1 U+2592 +0xb2 U+2593 +0xb3 U+2502 +0xb4 U+2524 +0xb5 U+00c1 +0xb6 U+00c2 +0xb7 U+011a +0xb8 U+015e +0xb9 U+2563 +0xba U+2551 +0xbb U+2557 +0xbc U+255d +0xbd U+017b +0xbe U+017c +0xbf U+2510 +0xc0 U+2514 +0xc1 U+2534 +0xc2 U+252c +0xc3 U+251c +0xc4 U+2500 +0xc5 U+253c +0xc6 U+0102 +0xc7 U+0103 +0xc8 U+255a +0xc9 U+2554 +0xca U+2569 +0xcb U+2566 +0xcc U+2560 +0xcd U+2550 +0xce U+256c +0xcf U+00a4 +0xd0 U+0111 +0xd1 U+0110 +0xd2 U+010e +0xd3 U+00cb +0xd4 U+010f +0xd5 U+0147 +0xd6 U+00cd +0xd7 U+00ce +0xd8 U+011b +0xd9 U+2518 +0xda U+250c +0xdb U+2588 +0xdc U+2584 +0xdd U+0162 +0xde U+016e +0xdf U+2580 +0xe0 U+00d3 +0xe1 U+00df +0xe2 U+00d4 +0xe3 U+0143 +0xe4 U+0144 +0xe5 U+0148 +0xe6 U+0160 +0xe7 U+0161 +0xe8 U+0154 +0xe9 U+00da +0xea U+0155 +0xeb U+0170 +0xec U+00fd +0xed U+00dd +0xee U+0163 +0xef U+00b4 +0xf0 U+00ad +0xf1 U+02dd +0xf2 U+02db +0xf3 U+02c7 +0xf4 U+02d8 +0xf5 U+00a7 +0xf6 U+00f7 +0xf7 U+00b8 +0xf8 U+00b0 +0xf9 U+00a8 +0xfa U+02d9 +0xfb U+0171 +0xfc U+0158 +0xfd U+0159 +0xfe U+25a0 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM855.map b/make/tools/CharsetMapping/IBM855.map new file mode 100644 index 0000000000000000000000000000000000000000..4efc220a97c24a9063af6a0ebec8da9970de45d4 --- /dev/null +++ b/make/tools/CharsetMapping/IBM855.map @@ -0,0 +1,257 @@ +#Generated from IBM855.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0452 +0x81 U+0402 +0x82 U+0453 +0x83 U+0403 +0x84 U+0451 +0x85 U+0401 +0x86 U+0454 +0x87 U+0404 +0x88 U+0455 +0x89 U+0405 +0x8a U+0456 +0x8b U+0406 +0x8c U+0457 +0x8d U+0407 +0x8e U+0458 +0x8f U+0408 +0x90 U+0459 +0x91 U+0409 +0x92 U+045a +0x93 U+040a +0x94 U+045b +0x95 U+040b +0x96 U+045c +0x97 U+040c +0x98 U+045e +0x99 U+040e +0x9a U+045f +0x9b U+040f +0x9c U+044e +0x9d U+042e +0x9e U+044a +0x9f U+042a +0xa0 U+0430 +0xa1 U+0410 +0xa2 U+0431 +0xa3 U+0411 +0xa4 U+0446 +0xa5 U+0426 +0xa6 U+0434 +0xa7 U+0414 +0xa8 U+0435 +0xa9 U+0415 +0xaa U+0444 +0xab U+0424 +0xac U+0433 +0xad U+0413 +0xae U+00ab +0xaf U+00bb +0xb0 U+2591 +0xb1 U+2592 +0xb2 U+2593 +0xb3 U+2502 +0xb4 U+2524 +0xb5 U+0445 +0xb6 U+0425 +0xb7 U+0438 +0xb8 U+0418 +0xb9 U+2563 +0xba U+2551 +0xbb U+2557 +0xbc U+255d +0xbd U+0439 +0xbe U+0419 +0xbf U+2510 +0xc0 U+2514 +0xc1 U+2534 +0xc2 U+252c +0xc3 U+251c +0xc4 U+2500 +0xc5 U+253c +0xc6 U+043a +0xc7 U+041a +0xc8 U+255a +0xc9 U+2554 +0xca U+2569 +0xcb U+2566 +0xcc U+2560 +0xcd U+2550 +0xce U+256c +0xcf U+00a4 +0xd0 U+043b +0xd1 U+041b +0xd2 U+043c +0xd3 U+041c +0xd4 U+043d +0xd5 U+041d +0xd6 U+043e +0xd7 U+041e +0xd8 U+043f +0xd9 U+2518 +0xda U+250c +0xdb U+2588 +0xdc U+2584 +0xdd U+041f +0xde U+044f +0xdf U+2580 +0xe0 U+042f +0xe1 U+0440 +0xe2 U+0420 +0xe3 U+0441 +0xe4 U+0421 +0xe5 U+0442 +0xe6 U+0422 +0xe7 U+0443 +0xe8 U+0423 +0xe9 U+0436 +0xea U+0416 +0xeb U+0432 +0xec U+0412 +0xed U+044c +0xee U+042c +0xef U+2116 +0xf0 U+00ad +0xf1 U+044b +0xf2 U+042b +0xf3 U+0437 +0xf4 U+0417 +0xf5 U+0448 +0xf6 U+0428 +0xf7 U+044d +0xf8 U+042d +0xf9 U+0449 +0xfa U+0429 +0xfb U+0447 +0xfc U+0427 +0xfd U+00a7 +0xfe U+25a0 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM856.map b/make/tools/CharsetMapping/IBM856.map new file mode 100644 index 0000000000000000000000000000000000000000..8e703c6e53e216e25862aa2de523227bad2691a7 --- /dev/null +++ b/make/tools/CharsetMapping/IBM856.map @@ -0,0 +1,257 @@ +#Generated from IBM856.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+05d0 +0x81 U+05d1 +0x82 U+05d2 +0x83 U+05d3 +0x84 U+05d4 +0x85 U+05d5 +0x86 U+05d6 +0x87 U+05d7 +0x88 U+05d8 +0x89 U+05d9 +0x8a U+05da +0x8b U+05db +0x8c U+05dc +0x8d U+05dd +0x8e U+05de +0x8f U+05df +0x90 U+05e0 +0x91 U+05e1 +0x92 U+05e2 +0x93 U+05e3 +0x94 U+05e4 +0x95 U+05e5 +0x96 U+05e6 +0x97 U+05e7 +0x98 U+05e8 +0x99 U+05e9 +0x9a U+05ea +0x9b U+fffd +0x9c U+00a3 +0x9d U+fffd +0x9e U+00d7 +0x9f U+fffd +0xa0 U+fffd +0xa1 U+fffd +0xa2 U+fffd +0xa3 U+fffd +0xa4 U+fffd +0xa5 U+fffd +0xa6 U+fffd +0xa7 U+fffd +0xa8 U+fffd +0xa9 U+00ae +0xaa U+00ac +0xab U+00bd +0xac U+00bc +0xad U+fffd +0xae U+00ab +0xaf U+00bb +0xb0 U+2591 +0xb1 U+2592 +0xb2 U+2593 +0xb3 U+2502 +0xb4 U+2524 +0xb5 U+fffd +0xb6 U+fffd +0xb7 U+fffd +0xb8 U+00a9 +0xb9 U+2563 +0xba U+2551 +0xbb U+2557 +0xbc U+255d +0xbd U+00a2 +0xbe U+00a5 +0xbf U+2510 +0xc0 U+2514 +0xc1 U+2534 +0xc2 U+252c +0xc3 U+251c +0xc4 U+2500 +0xc5 U+253c +0xc6 U+fffd +0xc7 U+fffd +0xc8 U+255a +0xc9 U+2554 +0xca U+2569 +0xcb U+2566 +0xcc U+2560 +0xcd U+2550 +0xce U+256c +0xcf U+00a4 +0xd0 U+fffd +0xd1 U+fffd +0xd2 U+fffd +0xd3 U+fffd +0xd4 U+fffd +0xd5 U+fffd +0xd6 U+fffd +0xd7 U+fffd +0xd8 U+fffd +0xd9 U+2518 +0xda U+250c +0xdb U+2588 +0xdc U+2584 +0xdd U+00a6 +0xde U+fffd +0xdf U+2580 +0xe0 U+fffd +0xe1 U+fffd +0xe2 U+fffd +0xe3 U+fffd +0xe4 U+fffd +0xe5 U+fffd +0xe6 U+00b5 +0xe7 U+fffd +0xe8 U+fffd +0xe9 U+fffd +0xea U+fffd +0xeb U+fffd +0xec U+fffd +0xed U+fffd +0xee U+203e +0xef U+00b4 +0xf0 U+00ad +0xf1 U+00b1 +0xf2 U+2017 +0xf3 U+00be +0xf4 U+00b6 +0xf5 U+00a7 +0xf6 U+00f7 +0xf7 U+00b8 +0xf8 U+00b0 +0xf9 U+00a8 +0xfa U+2022 +0xfb U+00b9 +0xfc U+00b3 +0xfd U+00b2 +0xfe U+25a0 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM857.map b/make/tools/CharsetMapping/IBM857.map new file mode 100644 index 0000000000000000000000000000000000000000..e85b12bc7fdf9080aca99f2dab1ccc8c375baf90 --- /dev/null +++ b/make/tools/CharsetMapping/IBM857.map @@ -0,0 +1,257 @@ +#Generated from IBM857.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00c7 +0x81 U+00fc +0x82 U+00e9 +0x83 U+00e2 +0x84 U+00e4 +0x85 U+00e0 +0x86 U+00e5 +0x87 U+00e7 +0x88 U+00ea +0x89 U+00eb +0x8a U+00e8 +0x8b U+00ef +0x8c U+00ee +0x8d U+0131 +0x8e U+00c4 +0x8f U+00c5 +0x90 U+00c9 +0x91 U+00e6 +0x92 U+00c6 +0x93 U+00f4 +0x94 U+00f6 +0x95 U+00f2 +0x96 U+00fb +0x97 U+00f9 +0x98 U+0130 +0x99 U+00d6 +0x9a U+00dc +0x9b U+00f8 +0x9c U+00a3 +0x9d U+00d8 +0x9e U+015e +0x9f U+015f +0xa0 U+00e1 +0xa1 U+00ed +0xa2 U+00f3 +0xa3 U+00fa +0xa4 U+00f1 +0xa5 U+00d1 +0xa6 U+011e +0xa7 U+011f +0xa8 U+00bf +0xa9 U+00ae +0xaa U+00ac +0xab U+00bd +0xac U+00bc +0xad U+00a1 +0xae U+00ab +0xaf U+00bb +0xb0 U+2591 +0xb1 U+2592 +0xb2 U+2593 +0xb3 U+2502 +0xb4 U+2524 +0xb5 U+00c1 +0xb6 U+00c2 +0xb7 U+00c0 +0xb8 U+00a9 +0xb9 U+2563 +0xba U+2551 +0xbb U+2557 +0xbc U+255d +0xbd U+00a2 +0xbe U+00a5 +0xbf U+2510 +0xc0 U+2514 +0xc1 U+2534 +0xc2 U+252c +0xc3 U+251c +0xc4 U+2500 +0xc5 U+253c +0xc6 U+00e3 +0xc7 U+00c3 +0xc8 U+255a +0xc9 U+2554 +0xca U+2569 +0xcb U+2566 +0xcc U+2560 +0xcd U+2550 +0xce U+256c +0xcf U+00a4 +0xd0 U+00ba +0xd1 U+00aa +0xd2 U+00ca +0xd3 U+00cb +0xd4 U+00c8 +0xd5 U+fffd +0xd6 U+00cd +0xd7 U+00ce +0xd8 U+00cf +0xd9 U+2518 +0xda U+250c +0xdb U+2588 +0xdc U+2584 +0xdd U+00a6 +0xde U+00cc +0xdf U+2580 +0xe0 U+00d3 +0xe1 U+00df +0xe2 U+00d4 +0xe3 U+00d2 +0xe4 U+00f5 +0xe5 U+00d5 +0xe6 U+00b5 +0xe7 U+fffd +0xe8 U+00d7 +0xe9 U+00da +0xea U+00db +0xeb U+00d9 +0xec U+00ec +0xed U+00ff +0xee U+00af +0xef U+00b4 +0xf0 U+00ad +0xf1 U+00b1 +0xf2 U+fffd +0xf3 U+00be +0xf4 U+00b6 +0xf5 U+00a7 +0xf6 U+00f7 +0xf7 U+00b8 +0xf8 U+00b0 +0xf9 U+00a8 +0xfa U+00b7 +0xfb U+00b9 +0xfc U+00b3 +0xfd U+00b2 +0xfe U+25a0 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM858.map b/make/tools/CharsetMapping/IBM858.map new file mode 100644 index 0000000000000000000000000000000000000000..c2878044020503daf08cd443d1c0ee6e0eed0c94 --- /dev/null +++ b/make/tools/CharsetMapping/IBM858.map @@ -0,0 +1,257 @@ +#Generated from IBM858.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00c7 +0x81 U+00fc +0x82 U+00e9 +0x83 U+00e2 +0x84 U+00e4 +0x85 U+00e0 +0x86 U+00e5 +0x87 U+00e7 +0x88 U+00ea +0x89 U+00eb +0x8a U+00e8 +0x8b U+00ef +0x8c U+00ee +0x8d U+00ec +0x8e U+00c4 +0x8f U+00c5 +0x90 U+00c9 +0x91 U+00e6 +0x92 U+00c6 +0x93 U+00f4 +0x94 U+00f6 +0x95 U+00f2 +0x96 U+00fb +0x97 U+00f9 +0x98 U+00ff +0x99 U+00d6 +0x9a U+00dc +0x9b U+00f8 +0x9c U+00a3 +0x9d U+00d8 +0x9e U+00d7 +0x9f U+0192 +0xa0 U+00e1 +0xa1 U+00ed +0xa2 U+00f3 +0xa3 U+00fa +0xa4 U+00f1 +0xa5 U+00d1 +0xa6 U+00aa +0xa7 U+00ba +0xa8 U+00bf +0xa9 U+00ae +0xaa U+00ac +0xab U+00bd +0xac U+00bc +0xad U+00a1 +0xae U+00ab +0xaf U+00bb +0xb0 U+2591 +0xb1 U+2592 +0xb2 U+2593 +0xb3 U+2502 +0xb4 U+2524 +0xb5 U+00c1 +0xb6 U+00c2 +0xb7 U+00c0 +0xb8 U+00a9 +0xb9 U+2563 +0xba U+2551 +0xbb U+2557 +0xbc U+255d +0xbd U+00a2 +0xbe U+00a5 +0xbf U+2510 +0xc0 U+2514 +0xc1 U+2534 +0xc2 U+252c +0xc3 U+251c +0xc4 U+2500 +0xc5 U+253c +0xc6 U+00e3 +0xc7 U+00c3 +0xc8 U+255a +0xc9 U+2554 +0xca U+2569 +0xcb U+2566 +0xcc U+2560 +0xcd U+2550 +0xce U+256c +0xcf U+00a4 +0xd0 U+00f0 +0xd1 U+00d0 +0xd2 U+00ca +0xd3 U+00cb +0xd4 U+00c8 +0xd5 U+20ac +0xd6 U+00cd +0xd7 U+00ce +0xd8 U+00cf +0xd9 U+2518 +0xda U+250c +0xdb U+2588 +0xdc U+2584 +0xdd U+00a6 +0xde U+00cc +0xdf U+2580 +0xe0 U+00d3 +0xe1 U+00df +0xe2 U+00d4 +0xe3 U+00d2 +0xe4 U+00f5 +0xe5 U+00d5 +0xe6 U+00b5 +0xe7 U+00fe +0xe8 U+00de +0xe9 U+00da +0xea U+00db +0xeb U+00d9 +0xec U+00fd +0xed U+00dd +0xee U+00af +0xef U+00b4 +0xf0 U+00ad +0xf1 U+00b1 +0xf2 U+2017 +0xf3 U+00be +0xf4 U+00b6 +0xf5 U+00a7 +0xf6 U+00f7 +0xf7 U+00b8 +0xf8 U+00b0 +0xf9 U+00a8 +0xfa U+00b7 +0xfb U+00b9 +0xfc U+00b3 +0xfd U+00b2 +0xfe U+25a0 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM860.map b/make/tools/CharsetMapping/IBM860.map new file mode 100644 index 0000000000000000000000000000000000000000..88ddee0689457b74bf1c7ecffaa0a0f96d0ee2f9 --- /dev/null +++ b/make/tools/CharsetMapping/IBM860.map @@ -0,0 +1,257 @@ +#Generated from IBM860.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00c7 +0x81 U+00fc +0x82 U+00e9 +0x83 U+00e2 +0x84 U+00e3 +0x85 U+00e0 +0x86 U+00c1 +0x87 U+00e7 +0x88 U+00ea +0x89 U+00ca +0x8a U+00e8 +0x8b U+00cd +0x8c U+00d4 +0x8d U+00ec +0x8e U+00c3 +0x8f U+00c2 +0x90 U+00c9 +0x91 U+00c0 +0x92 U+00c8 +0x93 U+00f4 +0x94 U+00f5 +0x95 U+00f2 +0x96 U+00da +0x97 U+00f9 +0x98 U+00cc +0x99 U+00d5 +0x9a U+00dc +0x9b U+00a2 +0x9c U+00a3 +0x9d U+00d9 +0x9e U+20a7 +0x9f U+00d3 +0xa0 U+00e1 +0xa1 U+00ed +0xa2 U+00f3 +0xa3 U+00fa +0xa4 U+00f1 +0xa5 U+00d1 +0xa6 U+00aa +0xa7 U+00ba +0xa8 U+00bf +0xa9 U+00d2 +0xaa U+00ac +0xab U+00bd +0xac U+00bc +0xad U+00a1 +0xae U+00ab +0xaf U+00bb +0xb0 U+2591 +0xb1 U+2592 +0xb2 U+2593 +0xb3 U+2502 +0xb4 U+2524 +0xb5 U+2561 +0xb6 U+2562 +0xb7 U+2556 +0xb8 U+2555 +0xb9 U+2563 +0xba U+2551 +0xbb U+2557 +0xbc U+255d +0xbd U+255c +0xbe U+255b +0xbf U+2510 +0xc0 U+2514 +0xc1 U+2534 +0xc2 U+252c +0xc3 U+251c +0xc4 U+2500 +0xc5 U+253c +0xc6 U+255e +0xc7 U+255f +0xc8 U+255a +0xc9 U+2554 +0xca U+2569 +0xcb U+2566 +0xcc U+2560 +0xcd U+2550 +0xce U+256c +0xcf U+2567 +0xd0 U+2568 +0xd1 U+2564 +0xd2 U+2565 +0xd3 U+2559 +0xd4 U+2558 +0xd5 U+2552 +0xd6 U+2553 +0xd7 U+256b +0xd8 U+256a +0xd9 U+2518 +0xda U+250c +0xdb U+2588 +0xdc U+2584 +0xdd U+258c +0xde U+2590 +0xdf U+2580 +0xe0 U+03b1 +0xe1 U+00df +0xe2 U+0393 +0xe3 U+03c0 +0xe4 U+03a3 +0xe5 U+03c3 +0xe6 U+00b5 +0xe7 U+03c4 +0xe8 U+03a6 +0xe9 U+0398 +0xea U+03a9 +0xeb U+03b4 +0xec U+221e +0xed U+03c6 +0xee U+03b5 +0xef U+2229 +0xf0 U+2261 +0xf1 U+00b1 +0xf2 U+2265 +0xf3 U+2264 +0xf4 U+2320 +0xf5 U+2321 +0xf6 U+00f7 +0xf7 U+2248 +0xf8 U+00b0 +0xf9 U+2219 +0xfa U+00b7 +0xfb U+221a +0xfc U+207f +0xfd U+00b2 +0xfe U+25a0 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM861.map b/make/tools/CharsetMapping/IBM861.map new file mode 100644 index 0000000000000000000000000000000000000000..05a1f5b0bb9c95c8fd193cb4ed593ae160522977 --- /dev/null +++ b/make/tools/CharsetMapping/IBM861.map @@ -0,0 +1,257 @@ +#Generated from IBM861.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00c7 +0x81 U+00fc +0x82 U+00e9 +0x83 U+00e2 +0x84 U+00e4 +0x85 U+00e0 +0x86 U+00e5 +0x87 U+00e7 +0x88 U+00ea +0x89 U+00eb +0x8a U+00e8 +0x8b U+00d0 +0x8c U+00f0 +0x8d U+00de +0x8e U+00c4 +0x8f U+00c5 +0x90 U+00c9 +0x91 U+00e6 +0x92 U+00c6 +0x93 U+00f4 +0x94 U+00f6 +0x95 U+00fe +0x96 U+00fb +0x97 U+00dd +0x98 U+00fd +0x99 U+00d6 +0x9a U+00dc +0x9b U+00f8 +0x9c U+00a3 +0x9d U+00d8 +0x9e U+20a7 +0x9f U+0192 +0xa0 U+00e1 +0xa1 U+00ed +0xa2 U+00f3 +0xa3 U+00fa +0xa4 U+00c1 +0xa5 U+00cd +0xa6 U+00d3 +0xa7 U+00da +0xa8 U+00bf +0xa9 U+2310 +0xaa U+00ac +0xab U+00bd +0xac U+00bc +0xad U+00a1 +0xae U+00ab +0xaf U+00bb +0xb0 U+2591 +0xb1 U+2592 +0xb2 U+2593 +0xb3 U+2502 +0xb4 U+2524 +0xb5 U+2561 +0xb6 U+2562 +0xb7 U+2556 +0xb8 U+2555 +0xb9 U+2563 +0xba U+2551 +0xbb U+2557 +0xbc U+255d +0xbd U+255c +0xbe U+255b +0xbf U+2510 +0xc0 U+2514 +0xc1 U+2534 +0xc2 U+252c +0xc3 U+251c +0xc4 U+2500 +0xc5 U+253c +0xc6 U+255e +0xc7 U+255f +0xc8 U+255a +0xc9 U+2554 +0xca U+2569 +0xcb U+2566 +0xcc U+2560 +0xcd U+2550 +0xce U+256c +0xcf U+2567 +0xd0 U+2568 +0xd1 U+2564 +0xd2 U+2565 +0xd3 U+2559 +0xd4 U+2558 +0xd5 U+2552 +0xd6 U+2553 +0xd7 U+256b +0xd8 U+256a +0xd9 U+2518 +0xda U+250c +0xdb U+2588 +0xdc U+2584 +0xdd U+258c +0xde U+2590 +0xdf U+2580 +0xe0 U+03b1 +0xe1 U+00df +0xe2 U+0393 +0xe3 U+03c0 +0xe4 U+03a3 +0xe5 U+03c3 +0xe6 U+00b5 +0xe7 U+03c4 +0xe8 U+03a6 +0xe9 U+0398 +0xea U+03a9 +0xeb U+03b4 +0xec U+221e +0xed U+03c6 +0xee U+03b5 +0xef U+2229 +0xf0 U+2261 +0xf1 U+00b1 +0xf2 U+2265 +0xf3 U+2264 +0xf4 U+2320 +0xf5 U+2321 +0xf6 U+00f7 +0xf7 U+2248 +0xf8 U+00b0 +0xf9 U+2219 +0xfa U+00b7 +0xfb U+221a +0xfc U+207f +0xfd U+00b2 +0xfe U+25a0 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM862.map b/make/tools/CharsetMapping/IBM862.map new file mode 100644 index 0000000000000000000000000000000000000000..de3c0d16b5a55df901b066329a02700e681b436a --- /dev/null +++ b/make/tools/CharsetMapping/IBM862.map @@ -0,0 +1,257 @@ +#Generated from IBM862.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+05d0 +0x81 U+05d1 +0x82 U+05d2 +0x83 U+05d3 +0x84 U+05d4 +0x85 U+05d5 +0x86 U+05d6 +0x87 U+05d7 +0x88 U+05d8 +0x89 U+05d9 +0x8a U+05da +0x8b U+05db +0x8c U+05dc +0x8d U+05dd +0x8e U+05de +0x8f U+05df +0x90 U+05e0 +0x91 U+05e1 +0x92 U+05e2 +0x93 U+05e3 +0x94 U+05e4 +0x95 U+05e5 +0x96 U+05e6 +0x97 U+05e7 +0x98 U+05e8 +0x99 U+05e9 +0x9a U+05ea +0x9b U+00a2 +0x9c U+00a3 +0x9d U+00a5 +0x9e U+20a7 +0x9f U+0192 +0xa0 U+00e1 +0xa1 U+00ed +0xa2 U+00f3 +0xa3 U+00fa +0xa4 U+00f1 +0xa5 U+00d1 +0xa6 U+00aa +0xa7 U+00ba +0xa8 U+00bf +0xa9 U+2310 +0xaa U+00ac +0xab U+00bd +0xac U+00bc +0xad U+00a1 +0xae U+00ab +0xaf U+00bb +0xb0 U+2591 +0xb1 U+2592 +0xb2 U+2593 +0xb3 U+2502 +0xb4 U+2524 +0xb5 U+2561 +0xb6 U+2562 +0xb7 U+2556 +0xb8 U+2555 +0xb9 U+2563 +0xba U+2551 +0xbb U+2557 +0xbc U+255d +0xbd U+255c +0xbe U+255b +0xbf U+2510 +0xc0 U+2514 +0xc1 U+2534 +0xc2 U+252c +0xc3 U+251c +0xc4 U+2500 +0xc5 U+253c +0xc6 U+255e +0xc7 U+255f +0xc8 U+255a +0xc9 U+2554 +0xca U+2569 +0xcb U+2566 +0xcc U+2560 +0xcd U+2550 +0xce U+256c +0xcf U+2567 +0xd0 U+2568 +0xd1 U+2564 +0xd2 U+2565 +0xd3 U+2559 +0xd4 U+2558 +0xd5 U+2552 +0xd6 U+2553 +0xd7 U+256b +0xd8 U+256a +0xd9 U+2518 +0xda U+250c +0xdb U+2588 +0xdc U+2584 +0xdd U+258c +0xde U+2590 +0xdf U+2580 +0xe0 U+03b1 +0xe1 U+00df +0xe2 U+0393 +0xe3 U+03c0 +0xe4 U+03a3 +0xe5 U+03c3 +0xe6 U+00b5 +0xe7 U+03c4 +0xe8 U+03a6 +0xe9 U+0398 +0xea U+03a9 +0xeb U+03b4 +0xec U+221e +0xed U+03c6 +0xee U+03b5 +0xef U+2229 +0xf0 U+2261 +0xf1 U+00b1 +0xf2 U+2265 +0xf3 U+2264 +0xf4 U+2320 +0xf5 U+2321 +0xf6 U+00f7 +0xf7 U+2248 +0xf8 U+00b0 +0xf9 U+2219 +0xfa U+00b7 +0xfb U+221a +0xfc U+207f +0xfd U+00b2 +0xfe U+25a0 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM863.map b/make/tools/CharsetMapping/IBM863.map new file mode 100644 index 0000000000000000000000000000000000000000..e6bd5e77d800139691cd22b7d91983380479a5b2 --- /dev/null +++ b/make/tools/CharsetMapping/IBM863.map @@ -0,0 +1,257 @@ +#Generated from IBM863.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00c7 +0x81 U+00fc +0x82 U+00e9 +0x83 U+00e2 +0x84 U+00c2 +0x85 U+00e0 +0x86 U+00b6 +0x87 U+00e7 +0x88 U+00ea +0x89 U+00eb +0x8a U+00e8 +0x8b U+00ef +0x8c U+00ee +0x8d U+2017 +0x8e U+00c0 +0x8f U+00a7 +0x90 U+00c9 +0x91 U+00c8 +0x92 U+00ca +0x93 U+00f4 +0x94 U+00cb +0x95 U+00cf +0x96 U+00fb +0x97 U+00f9 +0x98 U+00a4 +0x99 U+00d4 +0x9a U+00dc +0x9b U+00a2 +0x9c U+00a3 +0x9d U+00d9 +0x9e U+00db +0x9f U+0192 +0xa0 U+00a6 +0xa1 U+00b4 +0xa2 U+00f3 +0xa3 U+00fa +0xa4 U+00a8 +0xa5 U+00b8 +0xa6 U+00b3 +0xa7 U+00af +0xa8 U+00ce +0xa9 U+2310 +0xaa U+00ac +0xab U+00bd +0xac U+00bc +0xad U+00be +0xae U+00ab +0xaf U+00bb +0xb0 U+2591 +0xb1 U+2592 +0xb2 U+2593 +0xb3 U+2502 +0xb4 U+2524 +0xb5 U+2561 +0xb6 U+2562 +0xb7 U+2556 +0xb8 U+2555 +0xb9 U+2563 +0xba U+2551 +0xbb U+2557 +0xbc U+255d +0xbd U+255c +0xbe U+255b +0xbf U+2510 +0xc0 U+2514 +0xc1 U+2534 +0xc2 U+252c +0xc3 U+251c +0xc4 U+2500 +0xc5 U+253c +0xc6 U+255e +0xc7 U+255f +0xc8 U+255a +0xc9 U+2554 +0xca U+2569 +0xcb U+2566 +0xcc U+2560 +0xcd U+2550 +0xce U+256c +0xcf U+2567 +0xd0 U+2568 +0xd1 U+2564 +0xd2 U+2565 +0xd3 U+2559 +0xd4 U+2558 +0xd5 U+2552 +0xd6 U+2553 +0xd7 U+256b +0xd8 U+256a +0xd9 U+2518 +0xda U+250c +0xdb U+2588 +0xdc U+2584 +0xdd U+258c +0xde U+2590 +0xdf U+2580 +0xe0 U+03b1 +0xe1 U+00df +0xe2 U+0393 +0xe3 U+03c0 +0xe4 U+03a3 +0xe5 U+03c3 +0xe6 U+00b5 +0xe7 U+03c4 +0xe8 U+03a6 +0xe9 U+0398 +0xea U+03a9 +0xeb U+03b4 +0xec U+221e +0xed U+03c6 +0xee U+03b5 +0xef U+2229 +0xf0 U+2261 +0xf1 U+00b1 +0xf2 U+2265 +0xf3 U+2264 +0xf4 U+2320 +0xf5 U+2321 +0xf6 U+00f7 +0xf7 U+2248 +0xf8 U+00b0 +0xf9 U+2219 +0xfa U+00b7 +0xfb U+221a +0xfc U+207f +0xfd U+00b2 +0xfe U+25a0 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM864.map b/make/tools/CharsetMapping/IBM864.map new file mode 100644 index 0000000000000000000000000000000000000000..9ca27253c1083dd406fa9280be8ca1980898b01c --- /dev/null +++ b/make/tools/CharsetMapping/IBM864.map @@ -0,0 +1,257 @@ +#Generated from IBM864.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+066a +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00b0 +0x81 U+00b7 +0x82 U+2219 +0x83 U+221a +0x84 U+2592 +0x85 U+2500 +0x86 U+2502 +0x87 U+253c +0x88 U+2524 +0x89 U+252c +0x8a U+251c +0x8b U+2534 +0x8c U+2510 +0x8d U+250c +0x8e U+2514 +0x8f U+2518 +0x90 U+03b2 +0x91 U+221e +0x92 U+03c6 +0x93 U+00b1 +0x94 U+00bd +0x95 U+00bc +0x96 U+2248 +0x97 U+00ab +0x98 U+00bb +0x99 U+fef7 +0x9a U+fef8 +0x9b U+fffd +0x9c U+fffd +0x9d U+fefb +0x9e U+fefc +0x9f U+fffd +0xa0 U+00a0 +0xa1 U+00ad +0xa2 U+fe82 +0xa3 U+00a3 +0xa4 U+00a4 +0xa5 U+fe84 +0xa6 U+fffd +0xa7 U+fffd +0xa8 U+fe8e +0xa9 U+fe8f +0xaa U+fe95 +0xab U+fe99 +0xac U+060c +0xad U+fe9d +0xae U+fea1 +0xaf U+fea5 +0xb0 U+0660 +0xb1 U+0661 +0xb2 U+0662 +0xb3 U+0663 +0xb4 U+0664 +0xb5 U+0665 +0xb6 U+0666 +0xb7 U+0667 +0xb8 U+0668 +0xb9 U+0669 +0xba U+fed1 +0xbb U+061b +0xbc U+feb1 +0xbd U+feb5 +0xbe U+feb9 +0xbf U+061f +0xc0 U+00a2 +0xc1 U+fe80 +0xc2 U+fe81 +0xc3 U+fe83 +0xc4 U+fe85 +0xc5 U+feca +0xc6 U+fe8b +0xc7 U+fe8d +0xc8 U+fe91 +0xc9 U+fe93 +0xca U+fe97 +0xcb U+fe9b +0xcc U+fe9f +0xcd U+fea3 +0xce U+fea7 +0xcf U+fea9 +0xd0 U+feab +0xd1 U+fead +0xd2 U+feaf +0xd3 U+feb3 +0xd4 U+feb7 +0xd5 U+febb +0xd6 U+febf +0xd7 U+fec1 +0xd8 U+fec5 +0xd9 U+fecb +0xda U+fecf +0xdb U+00a6 +0xdc U+00ac +0xdd U+00f7 +0xde U+00d7 +0xdf U+fec9 +0xe0 U+0640 +0xe1 U+fed3 +0xe2 U+fed7 +0xe3 U+fedb +0xe4 U+fedf +0xe5 U+fee3 +0xe6 U+fee7 +0xe7 U+feeb +0xe8 U+feed +0xe9 U+feef +0xea U+fef3 +0xeb U+febd +0xec U+fecc +0xed U+fece +0xee U+fecd +0xef U+fee1 +0xf0 U+fe7d +0xf1 U+0651 +0xf2 U+fee5 +0xf3 U+fee9 +0xf4 U+feec +0xf5 U+fef0 +0xf6 U+fef2 +0xf7 U+fed0 +0xf8 U+fed5 +0xf9 U+fef5 +0xfa U+fef6 +0xfb U+fedd +0xfc U+fed9 +0xfd U+fef1 +0xfe U+25a0 +0xff U+fffd diff --git a/make/tools/CharsetMapping/IBM865.map b/make/tools/CharsetMapping/IBM865.map new file mode 100644 index 0000000000000000000000000000000000000000..7271013f0f5a6fa1cc523667fd5d4c16ab49f315 --- /dev/null +++ b/make/tools/CharsetMapping/IBM865.map @@ -0,0 +1,257 @@ +#Generated from IBM865.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00c7 +0x81 U+00fc +0x82 U+00e9 +0x83 U+00e2 +0x84 U+00e4 +0x85 U+00e0 +0x86 U+00e5 +0x87 U+00e7 +0x88 U+00ea +0x89 U+00eb +0x8a U+00e8 +0x8b U+00ef +0x8c U+00ee +0x8d U+00ec +0x8e U+00c4 +0x8f U+00c5 +0x90 U+00c9 +0x91 U+00e6 +0x92 U+00c6 +0x93 U+00f4 +0x94 U+00f6 +0x95 U+00f2 +0x96 U+00fb +0x97 U+00f9 +0x98 U+00ff +0x99 U+00d6 +0x9a U+00dc +0x9b U+00f8 +0x9c U+00a3 +0x9d U+00d8 +0x9e U+20a7 +0x9f U+0192 +0xa0 U+00e1 +0xa1 U+00ed +0xa2 U+00f3 +0xa3 U+00fa +0xa4 U+00f1 +0xa5 U+00d1 +0xa6 U+00aa +0xa7 U+00ba +0xa8 U+00bf +0xa9 U+2310 +0xaa U+00ac +0xab U+00bd +0xac U+00bc +0xad U+00a1 +0xae U+00ab +0xaf U+00a4 +0xb0 U+2591 +0xb1 U+2592 +0xb2 U+2593 +0xb3 U+2502 +0xb4 U+2524 +0xb5 U+2561 +0xb6 U+2562 +0xb7 U+2556 +0xb8 U+2555 +0xb9 U+2563 +0xba U+2551 +0xbb U+2557 +0xbc U+255d +0xbd U+255c +0xbe U+255b +0xbf U+2510 +0xc0 U+2514 +0xc1 U+2534 +0xc2 U+252c +0xc3 U+251c +0xc4 U+2500 +0xc5 U+253c +0xc6 U+255e +0xc7 U+255f +0xc8 U+255a +0xc9 U+2554 +0xca U+2569 +0xcb U+2566 +0xcc U+2560 +0xcd U+2550 +0xce U+256c +0xcf U+2567 +0xd0 U+2568 +0xd1 U+2564 +0xd2 U+2565 +0xd3 U+2559 +0xd4 U+2558 +0xd5 U+2552 +0xd6 U+2553 +0xd7 U+256b +0xd8 U+256a +0xd9 U+2518 +0xda U+250c +0xdb U+2588 +0xdc U+2584 +0xdd U+258c +0xde U+2590 +0xdf U+2580 +0xe0 U+03b1 +0xe1 U+00df +0xe2 U+0393 +0xe3 U+03c0 +0xe4 U+03a3 +0xe5 U+03c3 +0xe6 U+00b5 +0xe7 U+03c4 +0xe8 U+03a6 +0xe9 U+0398 +0xea U+03a9 +0xeb U+03b4 +0xec U+221e +0xed U+03c6 +0xee U+03b5 +0xef U+2229 +0xf0 U+2261 +0xf1 U+00b1 +0xf2 U+2265 +0xf3 U+2264 +0xf4 U+2320 +0xf5 U+2321 +0xf6 U+00f7 +0xf7 U+2248 +0xf8 U+00b0 +0xf9 U+2219 +0xfa U+00b7 +0xfb U+221a +0xfc U+207f +0xfd U+00b2 +0xfe U+25a0 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM866.map b/make/tools/CharsetMapping/IBM866.map new file mode 100644 index 0000000000000000000000000000000000000000..1e28b46764e5a8e466f960295064ff6e7a41064a --- /dev/null +++ b/make/tools/CharsetMapping/IBM866.map @@ -0,0 +1,257 @@ +#Generated from IBM866.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0410 +0x81 U+0411 +0x82 U+0412 +0x83 U+0413 +0x84 U+0414 +0x85 U+0415 +0x86 U+0416 +0x87 U+0417 +0x88 U+0418 +0x89 U+0419 +0x8a U+041a +0x8b U+041b +0x8c U+041c +0x8d U+041d +0x8e U+041e +0x8f U+041f +0x90 U+0420 +0x91 U+0421 +0x92 U+0422 +0x93 U+0423 +0x94 U+0424 +0x95 U+0425 +0x96 U+0426 +0x97 U+0427 +0x98 U+0428 +0x99 U+0429 +0x9a U+042a +0x9b U+042b +0x9c U+042c +0x9d U+042d +0x9e U+042e +0x9f U+042f +0xa0 U+0430 +0xa1 U+0431 +0xa2 U+0432 +0xa3 U+0433 +0xa4 U+0434 +0xa5 U+0435 +0xa6 U+0436 +0xa7 U+0437 +0xa8 U+0438 +0xa9 U+0439 +0xaa U+043a +0xab U+043b +0xac U+043c +0xad U+043d +0xae U+043e +0xaf U+043f +0xb0 U+2591 +0xb1 U+2592 +0xb2 U+2593 +0xb3 U+2502 +0xb4 U+2524 +0xb5 U+2561 +0xb6 U+2562 +0xb7 U+2556 +0xb8 U+2555 +0xb9 U+2563 +0xba U+2551 +0xbb U+2557 +0xbc U+255d +0xbd U+255c +0xbe U+255b +0xbf U+2510 +0xc0 U+2514 +0xc1 U+2534 +0xc2 U+252c +0xc3 U+251c +0xc4 U+2500 +0xc5 U+253c +0xc6 U+255e +0xc7 U+255f +0xc8 U+255a +0xc9 U+2554 +0xca U+2569 +0xcb U+2566 +0xcc U+2560 +0xcd U+2550 +0xce U+256c +0xcf U+2567 +0xd0 U+2568 +0xd1 U+2564 +0xd2 U+2565 +0xd3 U+2559 +0xd4 U+2558 +0xd5 U+2552 +0xd6 U+2553 +0xd7 U+256b +0xd8 U+256a +0xd9 U+2518 +0xda U+250c +0xdb U+2588 +0xdc U+2584 +0xdd U+258c +0xde U+2590 +0xdf U+2580 +0xe0 U+0440 +0xe1 U+0441 +0xe2 U+0442 +0xe3 U+0443 +0xe4 U+0444 +0xe5 U+0445 +0xe6 U+0446 +0xe7 U+0447 +0xe8 U+0448 +0xe9 U+0449 +0xea U+044a +0xeb U+044b +0xec U+044c +0xed U+044d +0xee U+044e +0xef U+044f +0xf0 U+0401 +0xf1 U+0451 +0xf2 U+0404 +0xf3 U+0454 +0xf4 U+0407 +0xf5 U+0457 +0xf6 U+040e +0xf7 U+045e +0xf8 U+00b0 +0xf9 U+2219 +0xfa U+00b7 +0xfb U+221a +0xfc U+2116 +0xfd U+00a4 +0xfe U+25a0 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM868.map b/make/tools/CharsetMapping/IBM868.map new file mode 100644 index 0000000000000000000000000000000000000000..cb5a1737c193928f93453cfe75d049f3b2d93872 --- /dev/null +++ b/make/tools/CharsetMapping/IBM868.map @@ -0,0 +1,257 @@ +#Generated from IBM868.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+06f0 +0x81 U+06f1 +0x82 U+06f2 +0x83 U+06f3 +0x84 U+06f4 +0x85 U+06f5 +0x86 U+06f6 +0x87 U+06f7 +0x88 U+06f8 +0x89 U+06f9 +0x8a U+060c +0x8b U+061b +0x8c U+061f +0x8d U+fe81 +0x8e U+fe8d +0x8f U+fe8e +0x90 U+f8fb +0x91 U+fe8f +0x92 U+fe91 +0x93 U+fb56 +0x94 U+fb58 +0x95 U+fe93 +0x96 U+fe95 +0x97 U+fe97 +0x98 U+fb66 +0x99 U+fb68 +0x9a U+fe99 +0x9b U+fe9b +0x9c U+fe9d +0x9d U+fe9f +0x9e U+fb7a +0x9f U+fb7c +0xa0 U+fea1 +0xa1 U+fea3 +0xa2 U+fea5 +0xa3 U+fea7 +0xa4 U+fea9 +0xa5 U+fb88 +0xa6 U+feab +0xa7 U+fead +0xa8 U+fb8c +0xa9 U+feaf +0xaa U+fb8a +0xab U+feb1 +0xac U+feb3 +0xad U+feb5 +0xae U+00ab +0xaf U+00bb +0xb0 U+2591 +0xb1 U+2592 +0xb2 U+2593 +0xb3 U+2502 +0xb4 U+2524 +0xb5 U+feb7 +0xb6 U+feb9 +0xb7 U+febb +0xb8 U+febd +0xb9 U+2563 +0xba U+2551 +0xbb U+2557 +0xbc U+255d +0xbd U+febf +0xbe U+fec3 +0xbf U+2510 +0xc0 U+2514 +0xc1 U+2534 +0xc2 U+252c +0xc3 U+251c +0xc4 U+2500 +0xc5 U+253c +0xc6 U+fec7 +0xc7 U+fec9 +0xc8 U+255a +0xc9 U+2554 +0xca U+2569 +0xcb U+2566 +0xcc U+2560 +0xcd U+2550 +0xce U+256c +0xcf U+feca +0xd0 U+fecb +0xd1 U+fecc +0xd2 U+fecd +0xd3 U+fece +0xd4 U+fecf +0xd5 U+fed0 +0xd6 U+fed1 +0xd7 U+fed3 +0xd8 U+fed5 +0xd9 U+2518 +0xda U+250c +0xdb U+2588 +0xdc U+2584 +0xdd U+fed7 +0xde U+fb8e +0xdf U+2580 +0xe0 U+fedb +0xe1 U+fb92 +0xe2 U+fb94 +0xe3 U+fedd +0xe4 U+fedf +0xe5 U+fee0 +0xe6 U+fee1 +0xe7 U+fee3 +0xe8 U+fb9e +0xe9 U+fee5 +0xea U+fee7 +0xeb U+fe85 +0xec U+feed +0xed U+fba6 +0xee U+fba8 +0xef U+fba9 +0xf0 U+00ad +0xf1 U+fbaa +0xf2 U+fe80 +0xf3 U+fe89 +0xf4 U+fe8a +0xf5 U+fe8b +0xf6 U+fbfc +0xf7 U+fbfd +0xf8 U+fbfe +0xf9 U+fbb0 +0xfa U+fbae +0xfb U+fe7c +0xfc U+fe7d +0xfd U+fffd +0xfe U+25a0 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM869.map b/make/tools/CharsetMapping/IBM869.map new file mode 100644 index 0000000000000000000000000000000000000000..097967484f46eae9306e850c89c3b15f13a238f6 --- /dev/null +++ b/make/tools/CharsetMapping/IBM869.map @@ -0,0 +1,257 @@ +#Generated from IBM869.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+fffd +0x81 U+fffd +0x82 U+fffd +0x83 U+fffd +0x84 U+fffd +0x85 U+fffd +0x86 U+0386 +0x87 U+fffd +0x88 U+00b7 +0x89 U+00ac +0x8a U+00a6 +0x8b U+2018 +0x8c U+2019 +0x8d U+0388 +0x8e U+2015 +0x8f U+0389 +0x90 U+038a +0x91 U+03aa +0x92 U+038c +0x93 U+fffd +0x94 U+fffd +0x95 U+038e +0x96 U+03ab +0x97 U+00a9 +0x98 U+038f +0x99 U+00b2 +0x9a U+00b3 +0x9b U+03ac +0x9c U+00a3 +0x9d U+03ad +0x9e U+03ae +0x9f U+03af +0xa0 U+03ca +0xa1 U+0390 +0xa2 U+03cc +0xa3 U+03cd +0xa4 U+0391 +0xa5 U+0392 +0xa6 U+0393 +0xa7 U+0394 +0xa8 U+0395 +0xa9 U+0396 +0xaa U+0397 +0xab U+00bd +0xac U+0398 +0xad U+0399 +0xae U+00ab +0xaf U+00bb +0xb0 U+2591 +0xb1 U+2592 +0xb2 U+2593 +0xb3 U+2502 +0xb4 U+2524 +0xb5 U+039a +0xb6 U+039b +0xb7 U+039c +0xb8 U+039d +0xb9 U+2563 +0xba U+2551 +0xbb U+2557 +0xbc U+255d +0xbd U+039e +0xbe U+039f +0xbf U+2510 +0xc0 U+2514 +0xc1 U+2534 +0xc2 U+252c +0xc3 U+251c +0xc4 U+2500 +0xc5 U+253c +0xc6 U+03a0 +0xc7 U+03a1 +0xc8 U+255a +0xc9 U+2554 +0xca U+2569 +0xcb U+2566 +0xcc U+2560 +0xcd U+2550 +0xce U+256c +0xcf U+03a3 +0xd0 U+03a4 +0xd1 U+03a5 +0xd2 U+03a6 +0xd3 U+03a7 +0xd4 U+03a8 +0xd5 U+03a9 +0xd6 U+03b1 +0xd7 U+03b2 +0xd8 U+03b3 +0xd9 U+2518 +0xda U+250c +0xdb U+2588 +0xdc U+2584 +0xdd U+03b4 +0xde U+03b5 +0xdf U+2580 +0xe0 U+03b6 +0xe1 U+03b7 +0xe2 U+03b8 +0xe3 U+03b9 +0xe4 U+03ba +0xe5 U+03bb +0xe6 U+03bc +0xe7 U+03bd +0xe8 U+03be +0xe9 U+03bf +0xea U+03c0 +0xeb U+03c1 +0xec U+03c3 +0xed U+03c2 +0xee U+03c4 +0xef U+0384 +0xf0 U+00ad +0xf1 U+00b1 +0xf2 U+03c5 +0xf3 U+03c6 +0xf4 U+03c7 +0xf5 U+00a7 +0xf6 U+03c8 +0xf7 U+0385 +0xf8 U+00b0 +0xf9 U+00a8 +0xfa U+03c9 +0xfb U+03cb +0xfc U+03b0 +0xfd U+03ce +0xfe U+25a0 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM870.c2b b/make/tools/CharsetMapping/IBM870.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM870.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM870.map b/make/tools/CharsetMapping/IBM870.map new file mode 100644 index 0000000000000000000000000000000000000000..a6b1a2dd24c61c36b2aaac8da160f36bd0e77403 --- /dev/null +++ b/make/tools/CharsetMapping/IBM870.map @@ -0,0 +1,257 @@ +#Generated from IBM870.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+0163 +0x45 U+00e1 +0x46 U+0103 +0x47 U+010d +0x48 U+00e7 +0x49 U+0107 +0x4a U+005b +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+00e9 +0x52 U+0119 +0x53 U+00eb +0x54 U+016f +0x55 U+00ed +0x56 U+00ee +0x57 U+013e +0x58 U+013a +0x59 U+00df +0x5a U+005d +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+02dd +0x65 U+00c1 +0x66 U+0102 +0x67 U+010c +0x68 U+00c7 +0x69 U+0106 +0x6a U+007c +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+02c7 +0x71 U+00c9 +0x72 U+0118 +0x73 U+00cb +0x74 U+016e +0x75 U+00cd +0x76 U+00ce +0x77 U+013d +0x78 U+0139 +0x79 U+0060 +0x7a U+003a +0x7b U+0023 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+02d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+015b +0x8b U+0148 +0x8c U+0111 +0x8d U+00fd +0x8e U+0159 +0x8f U+015f +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+0142 +0x9b U+0144 +0x9c U+0161 +0x9d U+00b8 +0x9e U+02db +0x9f U+00a4 +0xa0 U+0105 +0xa1 U+007e +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+015a +0xab U+0147 +0xac U+0110 +0xad U+00dd +0xae U+0158 +0xaf U+015e +0xb0 U+02d9 +0xb1 U+0104 +0xb2 U+017c +0xb3 U+0162 +0xb4 U+017b +0xb5 U+00a7 +0xb6 U+017e +0xb7 U+017a +0xb8 U+017d +0xb9 U+0179 +0xba U+0141 +0xbb U+0143 +0xbc U+0160 +0xbd U+00a8 +0xbe U+00b4 +0xbf U+00d7 +0xc0 U+007b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+00f6 +0xcd U+0155 +0xce U+00f3 +0xcf U+0151 +0xd0 U+007d +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+011a +0xdb U+0171 +0xdc U+00fc +0xdd U+0165 +0xde U+00fa +0xdf U+011b +0xe0 U+005c +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+010f +0xeb U+00d4 +0xec U+00d6 +0xed U+0154 +0xee U+00d3 +0xef U+0150 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+010e +0xfb U+0170 +0xfc U+00dc +0xfd U+0164 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM870.nr b/make/tools/CharsetMapping/IBM870.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM870.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM871.c2b b/make/tools/CharsetMapping/IBM871.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM871.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM871.map b/make/tools/CharsetMapping/IBM871.map new file mode 100644 index 0000000000000000000000000000000000000000..0227f335d64f42d86e2e8beff6000bb34b28152a --- /dev/null +++ b/make/tools/CharsetMapping/IBM871.map @@ -0,0 +1,257 @@ +#Generated from IBM871.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+00e2 +0x43 U+00e4 +0x44 U+00e0 +0x45 U+00e1 +0x46 U+00e3 +0x47 U+00e5 +0x48 U+00e7 +0x49 U+00f1 +0x4a U+00de +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+00e9 +0x52 U+00ea +0x53 U+00eb +0x54 U+00e8 +0x55 U+00ed +0x56 U+00ee +0x57 U+00ef +0x58 U+00ec +0x59 U+00df +0x5a U+00c6 +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+00d6 +0x60 U+002d +0x61 U+002f +0x62 U+00c2 +0x63 U+00c4 +0x64 U+00c0 +0x65 U+00c1 +0x66 U+00c3 +0x67 U+00c5 +0x68 U+00c7 +0x69 U+00d1 +0x6a U+00a6 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00f8 +0x71 U+00c9 +0x72 U+00ca +0x73 U+00cb +0x74 U+00c8 +0x75 U+00cd +0x76 U+00ce +0x77 U+00cf +0x78 U+00cc +0x79 U+00f0 +0x7a U+003a +0x7b U+0023 +0x7c U+00d0 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+00d8 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+00ab +0x8b U+00bb +0x8c U+0060 +0x8d U+00fd +0x8e U+007b +0x8f U+00b1 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+00aa +0x9b U+00ba +0x9c U+007d +0x9d U+00b8 +0x9e U+005d +0x9f U+00a4 +0xa0 U+00b5 +0xa1 U+00f6 +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+00a1 +0xab U+00bf +0xac U+0040 +0xad U+00dd +0xae U+005b +0xaf U+00ae +0xb0 U+00a2 +0xb1 U+00a3 +0xb2 U+00a5 +0xb3 U+00b7 +0xb4 U+00a9 +0xb5 U+00a7 +0xb6 U+00b6 +0xb7 U+00bc +0xb8 U+00bd +0xb9 U+00be +0xba U+00ac +0xbb U+007c +0xbc U+00af +0xbd U+00a8 +0xbe U+005c +0xbf U+00d7 +0xc0 U+00fe +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+00f4 +0xcc U+007e +0xcd U+00f2 +0xce U+00f3 +0xcf U+00f5 +0xd0 U+00e6 +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b9 +0xdb U+00fb +0xdc U+00fc +0xdd U+00f9 +0xde U+00fa +0xdf U+00ff +0xe0 U+00b4 +0xe1 U+00f7 +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00d4 +0xec U+005e +0xed U+00d2 +0xee U+00d3 +0xef U+00d5 +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00db +0xfc U+00dc +0xfd U+00d9 +0xfe U+00da +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM871.nr b/make/tools/CharsetMapping/IBM871.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM871.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM874.map b/make/tools/CharsetMapping/IBM874.map new file mode 100644 index 0000000000000000000000000000000000000000..403e9ba70f5fbcd00312deda8038e0bea4e02206 --- /dev/null +++ b/make/tools/CharsetMapping/IBM874.map @@ -0,0 +1,257 @@ +#Generated from IBM874.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+20ac +0x81 U+fffd +0x82 U+fffd +0x83 U+fffd +0x84 U+fffd +0x85 U+fffd +0x86 U+fffd +0x87 U+fffd +0x88 U+fffd +0x89 U+fffd +0x8a U+fffd +0x8b U+fffd +0x8c U+fffd +0x8d U+fffd +0x8e U+fffd +0x8f U+fffd +0x90 U+fffd +0x91 U+fffd +0x92 U+fffd +0x93 U+fffd +0x94 U+fffd +0x95 U+fffd +0x96 U+fffd +0x97 U+fffd +0x98 U+fffd +0x99 U+fffd +0x9a U+fffd +0x9b U+fffd +0x9c U+fffd +0x9d U+fffd +0x9e U+fffd +0x9f U+fffd +0xa0 U+0e48 +0xa1 U+0e01 +0xa2 U+0e02 +0xa3 U+0e03 +0xa4 U+0e04 +0xa5 U+0e05 +0xa6 U+0e06 +0xa7 U+0e07 +0xa8 U+0e08 +0xa9 U+0e09 +0xaa U+0e0a +0xab U+0e0b +0xac U+0e0c +0xad U+0e0d +0xae U+0e0e +0xaf U+0e0f +0xb0 U+0e10 +0xb1 U+0e11 +0xb2 U+0e12 +0xb3 U+0e13 +0xb4 U+0e14 +0xb5 U+0e15 +0xb6 U+0e16 +0xb7 U+0e17 +0xb8 U+0e18 +0xb9 U+0e19 +0xba U+0e1a +0xbb U+0e1b +0xbc U+0e1c +0xbd U+0e1d +0xbe U+0e1e +0xbf U+0e1f +0xc0 U+0e20 +0xc1 U+0e21 +0xc2 U+0e22 +0xc3 U+0e23 +0xc4 U+0e24 +0xc5 U+0e25 +0xc6 U+0e26 +0xc7 U+0e27 +0xc8 U+0e28 +0xc9 U+0e29 +0xca U+0e2a +0xcb U+0e2b +0xcc U+0e2c +0xcd U+0e2d +0xce U+0e2e +0xcf U+0e2f +0xd0 U+0e30 +0xd1 U+0e31 +0xd2 U+0e32 +0xd3 U+0e33 +0xd4 U+0e34 +0xd5 U+0e35 +0xd6 U+0e36 +0xd7 U+0e37 +0xd8 U+0e38 +0xd9 U+0e39 +0xda U+0e3a +0xdb U+0e49 +0xdc U+0e4a +0xdd U+0e4b +0xde U+0e4c +0xdf U+0e3f +0xe0 U+0e40 +0xe1 U+0e41 +0xe2 U+0e42 +0xe3 U+0e43 +0xe4 U+0e44 +0xe5 U+0e45 +0xe6 U+0e46 +0xe7 U+0e47 +0xe8 U+0e48 +0xe9 U+0e49 +0xea U+0e4a +0xeb U+0e4b +0xec U+0e4c +0xed U+0e4d +0xee U+0e4e +0xef U+0e4f +0xf0 U+0e50 +0xf1 U+0e51 +0xf2 U+0e52 +0xf3 U+0e53 +0xf4 U+0e54 +0xf5 U+0e55 +0xf6 U+0e56 +0xf7 U+0e57 +0xf8 U+0e58 +0xf9 U+0e59 +0xfa U+0e5a +0xfb U+0e5b +0xfc U+00a2 +0xfd U+00ac +0xfe U+00a6 +0xff U+00a0 diff --git a/make/tools/CharsetMapping/IBM874.nr b/make/tools/CharsetMapping/IBM874.nr new file mode 100644 index 0000000000000000000000000000000000000000..88afffb6f22751cfad849a0f930e80e32cfbeacb --- /dev/null +++ b/make/tools/CharsetMapping/IBM874.nr @@ -0,0 +1,5 @@ +0xa0 U+0e48 +0xdb U+0e49 +0xdc U+0e4a +0xdd U+0e4b +0xde U+0e4c diff --git a/make/tools/CharsetMapping/IBM875.c2b b/make/tools/CharsetMapping/IBM875.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM875.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM875.map b/make/tools/CharsetMapping/IBM875.map new file mode 100644 index 0000000000000000000000000000000000000000..35f7d5a1a04f1077ff6af0a87497112429129ce3 --- /dev/null +++ b/make/tools/CharsetMapping/IBM875.map @@ -0,0 +1,257 @@ +#Generated from IBM875.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+0391 +0x42 U+0392 +0x43 U+0393 +0x44 U+0394 +0x45 U+0395 +0x46 U+0396 +0x47 U+0397 +0x48 U+0398 +0x49 U+0399 +0x4a U+005b +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+039a +0x52 U+039b +0x53 U+039c +0x54 U+039d +0x55 U+039e +0x56 U+039f +0x57 U+03a0 +0x58 U+03a1 +0x59 U+03a3 +0x5a U+005d +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+03a4 +0x63 U+03a5 +0x64 U+03a6 +0x65 U+03a7 +0x66 U+03a8 +0x67 U+03a9 +0x68 U+03aa +0x69 U+03ab +0x6a U+007c +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+00a8 +0x71 U+0386 +0x72 U+0388 +0x73 U+0389 +0x74 U+00a0 +0x75 U+038a +0x76 U+038c +0x77 U+038e +0x78 U+038f +0x79 U+0060 +0x7a U+003a +0x7b U+0023 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+0385 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+03b1 +0x8b U+03b2 +0x8c U+03b3 +0x8d U+03b4 +0x8e U+03b5 +0x8f U+03b6 +0x90 U+00b0 +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+03b7 +0x9b U+03b8 +0x9c U+03b9 +0x9d U+03ba +0x9e U+03bb +0x9f U+03bc +0xa0 U+00b4 +0xa1 U+007e +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+03bd +0xab U+03be +0xac U+03bf +0xad U+03c0 +0xae U+03c1 +0xaf U+03c3 +0xb0 U+00a3 +0xb1 U+03ac +0xb2 U+03ad +0xb3 U+03ae +0xb4 U+03ca +0xb5 U+03af +0xb6 U+03cc +0xb7 U+03cd +0xb8 U+03cb +0xb9 U+03ce +0xba U+03c2 +0xbb U+03c4 +0xbc U+03c5 +0xbd U+03c6 +0xbe U+03c7 +0xbf U+03c8 +0xc0 U+007b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+03c9 +0xcc U+0390 +0xcd U+03b0 +0xce U+2018 +0xcf U+2015 +0xd0 U+007d +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+00b1 +0xdb U+00bd +0xdc U+fffd +0xdd U+0387 +0xde U+2019 +0xdf U+00a6 +0xe0 U+005c +0xe1 U+fffd +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+00b2 +0xeb U+00a7 +0xec U+fffd +0xed U+fffd +0xee U+00ab +0xef U+00ac +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+00b3 +0xfb U+00a9 +0xfc U+fffd +0xfd U+fffd +0xfe U+00bb +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM875.nr b/make/tools/CharsetMapping/IBM875.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM875.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM918.c2b b/make/tools/CharsetMapping/IBM918.c2b new file mode 100644 index 0000000000000000000000000000000000000000..6cb38028124b2cc13c455b9bc686a86eaad06221 --- /dev/null +++ b/make/tools/CharsetMapping/IBM918.c2b @@ -0,0 +1 @@ +0x15 U+0085 diff --git a/make/tools/CharsetMapping/IBM918.map b/make/tools/CharsetMapping/IBM918.map new file mode 100644 index 0000000000000000000000000000000000000000..23739314781c55fd0f572922d6b6ca8eab9948cf --- /dev/null +++ b/make/tools/CharsetMapping/IBM918.map @@ -0,0 +1,257 @@ +#Generated from IBM918.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+009c +0x05 U+0009 +0x06 U+0086 +0x07 U+007f +0x08 U+0097 +0x09 U+008d +0x0a U+008e +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+009d +0x15 U+000a +0x16 U+0008 +0x17 U+0087 +0x18 U+0018 +0x19 U+0019 +0x1a U+0092 +0x1b U+008f +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0080 +0x21 U+0081 +0x22 U+0082 +0x23 U+0083 +0x24 U+0084 +0x25 U+000a +0x26 U+0017 +0x27 U+001b +0x28 U+0088 +0x29 U+0089 +0x2a U+008a +0x2b U+008b +0x2c U+008c +0x2d U+0005 +0x2e U+0006 +0x2f U+0007 +0x30 U+0090 +0x31 U+0091 +0x32 U+0016 +0x33 U+0093 +0x34 U+0094 +0x35 U+0095 +0x36 U+0096 +0x37 U+0004 +0x38 U+0098 +0x39 U+0099 +0x3a U+009a +0x3b U+009b +0x3c U+0014 +0x3d U+0015 +0x3e U+009e +0x3f U+001a +0x40 U+0020 +0x41 U+00a0 +0x42 U+060c +0x43 U+061b +0x44 U+061f +0x45 U+fe81 +0x46 U+fe8d +0x47 U+fe8e +0x48 U+f8fb +0x49 U+fe8f +0x4a U+005b +0x4b U+002e +0x4c U+003c +0x4d U+0028 +0x4e U+002b +0x4f U+0021 +0x50 U+0026 +0x51 U+fe91 +0x52 U+fb56 +0x53 U+fb58 +0x54 U+fe93 +0x55 U+fe95 +0x56 U+fe97 +0x57 U+fb66 +0x58 U+fb68 +0x59 U+fe99 +0x5a U+005d +0x5b U+0024 +0x5c U+002a +0x5d U+0029 +0x5e U+003b +0x5f U+005e +0x60 U+002d +0x61 U+002f +0x62 U+fe9b +0x63 U+fe9d +0x64 U+fe9f +0x65 U+fb7a +0x66 U+fb7c +0x67 U+fea1 +0x68 U+fea3 +0x69 U+fea5 +0x6a U+0060 +0x6b U+002c +0x6c U+0025 +0x6d U+005f +0x6e U+003e +0x6f U+003f +0x70 U+06f0 +0x71 U+06f1 +0x72 U+06f2 +0x73 U+06f3 +0x74 U+06f4 +0x75 U+06f5 +0x76 U+06f6 +0x77 U+06f7 +0x78 U+06f8 +0x79 U+06f9 +0x7a U+003a +0x7b U+0023 +0x7c U+0040 +0x7d U+0027 +0x7e U+003d +0x7f U+0022 +0x80 U+fea7 +0x81 U+0061 +0x82 U+0062 +0x83 U+0063 +0x84 U+0064 +0x85 U+0065 +0x86 U+0066 +0x87 U+0067 +0x88 U+0068 +0x89 U+0069 +0x8a U+fea9 +0x8b U+fb88 +0x8c U+feab +0x8d U+fead +0x8e U+fb8c +0x8f U+feaf +0x90 U+fb8a +0x91 U+006a +0x92 U+006b +0x93 U+006c +0x94 U+006d +0x95 U+006e +0x96 U+006f +0x97 U+0070 +0x98 U+0071 +0x99 U+0072 +0x9a U+feb1 +0x9b U+feb3 +0x9c U+feb5 +0x9d U+feb7 +0x9e U+feb9 +0x9f U+febb +0xa0 U+febd +0xa1 U+007e +0xa2 U+0073 +0xa3 U+0074 +0xa4 U+0075 +0xa5 U+0076 +0xa6 U+0077 +0xa7 U+0078 +0xa8 U+0079 +0xa9 U+007a +0xaa U+febf +0xab U+fec3 +0xac U+fec7 +0xad U+fec9 +0xae U+feca +0xaf U+fecb +0xb0 U+fecc +0xb1 U+fecd +0xb2 U+fece +0xb3 U+fecf +0xb4 U+fed0 +0xb5 U+fed1 +0xb6 U+fed3 +0xb7 U+fed5 +0xb8 U+fed7 +0xb9 U+fb8e +0xba U+fedb +0xbb U+007c +0xbc U+fb92 +0xbd U+fb94 +0xbe U+fedd +0xbf U+fedf +0xc0 U+007b +0xc1 U+0041 +0xc2 U+0042 +0xc3 U+0043 +0xc4 U+0044 +0xc5 U+0045 +0xc6 U+0046 +0xc7 U+0047 +0xc8 U+0048 +0xc9 U+0049 +0xca U+00ad +0xcb U+fee0 +0xcc U+fee1 +0xcd U+fee3 +0xce U+fb9e +0xcf U+fee5 +0xd0 U+007d +0xd1 U+004a +0xd2 U+004b +0xd3 U+004c +0xd4 U+004d +0xd5 U+004e +0xd6 U+004f +0xd7 U+0050 +0xd8 U+0051 +0xd9 U+0052 +0xda U+fee7 +0xdb U+fe85 +0xdc U+feed +0xdd U+fba6 +0xde U+fba8 +0xdf U+fba9 +0xe0 U+005c +0xe1 U+fbaa +0xe2 U+0053 +0xe3 U+0054 +0xe4 U+0055 +0xe5 U+0056 +0xe6 U+0057 +0xe7 U+0058 +0xe8 U+0059 +0xe9 U+005a +0xea U+fe80 +0xeb U+fe89 +0xec U+fe8a +0xed U+fe8b +0xee U+fbfc +0xef U+fbfd +0xf0 U+0030 +0xf1 U+0031 +0xf2 U+0032 +0xf3 U+0033 +0xf4 U+0034 +0xf5 U+0035 +0xf6 U+0036 +0xf7 U+0037 +0xf8 U+0038 +0xf9 U+0039 +0xfa U+fbfe +0xfb U+fbb0 +0xfc U+fbae +0xfd U+fe7c +0xfe U+fe7d +0xff U+009f diff --git a/make/tools/CharsetMapping/IBM918.nr b/make/tools/CharsetMapping/IBM918.nr new file mode 100644 index 0000000000000000000000000000000000000000..675451906d4bc28b66cba49593cf9c57a6a6f559 --- /dev/null +++ b/make/tools/CharsetMapping/IBM918.nr @@ -0,0 +1 @@ +0x25 U+000a diff --git a/make/tools/CharsetMapping/IBM921.map b/make/tools/CharsetMapping/IBM921.map new file mode 100644 index 0000000000000000000000000000000000000000..48487754d94bc9cf5f58983e1340ec6526c704a4 --- /dev/null +++ b/make/tools/CharsetMapping/IBM921.map @@ -0,0 +1,257 @@ +#Generated from IBM921.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0080 +0x81 U+0081 +0x82 U+0082 +0x83 U+0083 +0x84 U+0084 +0x85 U+0085 +0x86 U+0086 +0x87 U+0087 +0x88 U+0088 +0x89 U+0089 +0x8a U+008a +0x8b U+008b +0x8c U+008c +0x8d U+008d +0x8e U+008e +0x8f U+008f +0x90 U+0090 +0x91 U+0091 +0x92 U+0092 +0x93 U+0093 +0x94 U+0094 +0x95 U+0095 +0x96 U+0096 +0x97 U+0097 +0x98 U+0098 +0x99 U+0099 +0x9a U+009a +0x9b U+009b +0x9c U+009c +0x9d U+009d +0x9e U+009e +0x9f U+009f +0xa0 U+00a0 +0xa1 U+201d +0xa2 U+00a2 +0xa3 U+00a3 +0xa4 U+00a4 +0xa5 U+201e +0xa6 U+00a6 +0xa7 U+00a7 +0xa8 U+00d8 +0xa9 U+00a9 +0xaa U+0156 +0xab U+00ab +0xac U+00ac +0xad U+00ad +0xae U+00ae +0xaf U+00c6 +0xb0 U+00b0 +0xb1 U+00b1 +0xb2 U+00b2 +0xb3 U+00b3 +0xb4 U+201c +0xb5 U+00b5 +0xb6 U+00b6 +0xb7 U+00b7 +0xb8 U+00f8 +0xb9 U+00b9 +0xba U+0157 +0xbb U+00bb +0xbc U+00bc +0xbd U+00bd +0xbe U+00be +0xbf U+00e6 +0xc0 U+0104 +0xc1 U+012e +0xc2 U+0100 +0xc3 U+0106 +0xc4 U+00c4 +0xc5 U+00c5 +0xc6 U+0118 +0xc7 U+0112 +0xc8 U+010c +0xc9 U+00c9 +0xca U+0179 +0xcb U+0116 +0xcc U+0122 +0xcd U+0136 +0xce U+012a +0xcf U+013b +0xd0 U+0160 +0xd1 U+0143 +0xd2 U+0145 +0xd3 U+00d3 +0xd4 U+014c +0xd5 U+00d5 +0xd6 U+00d6 +0xd7 U+00d7 +0xd8 U+0172 +0xd9 U+0141 +0xda U+015a +0xdb U+016a +0xdc U+00dc +0xdd U+017b +0xde U+017d +0xdf U+00df +0xe0 U+0105 +0xe1 U+012f +0xe2 U+0101 +0xe3 U+0107 +0xe4 U+00e4 +0xe5 U+00e5 +0xe6 U+0119 +0xe7 U+0113 +0xe8 U+010d +0xe9 U+00e9 +0xea U+017a +0xeb U+0117 +0xec U+0123 +0xed U+0137 +0xee U+012b +0xef U+013c +0xf0 U+0161 +0xf1 U+0144 +0xf2 U+0146 +0xf3 U+00f3 +0xf4 U+014d +0xf5 U+00f5 +0xf6 U+00f6 +0xf7 U+00f7 +0xf8 U+0173 +0xf9 U+0142 +0xfa U+015b +0xfb U+016b +0xfc U+00fc +0xfd U+017c +0xfe U+017e +0xff U+2019 diff --git a/make/tools/CharsetMapping/IBM922.map b/make/tools/CharsetMapping/IBM922.map new file mode 100644 index 0000000000000000000000000000000000000000..bda95197706a0782a201479b75678e494f619f8a --- /dev/null +++ b/make/tools/CharsetMapping/IBM922.map @@ -0,0 +1,257 @@ +#Generated from IBM922.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0080 +0x81 U+0081 +0x82 U+0082 +0x83 U+0083 +0x84 U+0084 +0x85 U+0085 +0x86 U+0086 +0x87 U+0087 +0x88 U+0088 +0x89 U+0089 +0x8a U+008a +0x8b U+008b +0x8c U+008c +0x8d U+008d +0x8e U+008e +0x8f U+008f +0x90 U+0090 +0x91 U+0091 +0x92 U+0092 +0x93 U+0093 +0x94 U+0094 +0x95 U+0095 +0x96 U+0096 +0x97 U+0097 +0x98 U+0098 +0x99 U+0099 +0x9a U+009a +0x9b U+009b +0x9c U+009c +0x9d U+009d +0x9e U+009e +0x9f U+009f +0xa0 U+00a0 +0xa1 U+00a1 +0xa2 U+00a2 +0xa3 U+00a3 +0xa4 U+00a4 +0xa5 U+00a5 +0xa6 U+00a6 +0xa7 U+00a7 +0xa8 U+00a8 +0xa9 U+00a9 +0xaa U+00aa +0xab U+00ab +0xac U+00ac +0xad U+00ad +0xae U+00ae +0xaf U+203e +0xb0 U+00b0 +0xb1 U+00b1 +0xb2 U+00b2 +0xb3 U+00b3 +0xb4 U+00b4 +0xb5 U+00b5 +0xb6 U+00b6 +0xb7 U+00b7 +0xb8 U+00b8 +0xb9 U+00b9 +0xba U+00ba +0xbb U+00bb +0xbc U+00bc +0xbd U+00bd +0xbe U+00be +0xbf U+00bf +0xc0 U+00c0 +0xc1 U+00c1 +0xc2 U+00c2 +0xc3 U+00c3 +0xc4 U+00c4 +0xc5 U+00c5 +0xc6 U+00c6 +0xc7 U+00c7 +0xc8 U+00c8 +0xc9 U+00c9 +0xca U+00ca +0xcb U+00cb +0xcc U+00cc +0xcd U+00cd +0xce U+00ce +0xcf U+00cf +0xd0 U+0160 +0xd1 U+00d1 +0xd2 U+00d2 +0xd3 U+00d3 +0xd4 U+00d4 +0xd5 U+00d5 +0xd6 U+00d6 +0xd7 U+00d7 +0xd8 U+00d8 +0xd9 U+00d9 +0xda U+00da +0xdb U+00db +0xdc U+00dc +0xdd U+00dd +0xde U+017d +0xdf U+00df +0xe0 U+00e0 +0xe1 U+00e1 +0xe2 U+00e2 +0xe3 U+00e3 +0xe4 U+00e4 +0xe5 U+00e5 +0xe6 U+00e6 +0xe7 U+00e7 +0xe8 U+00e8 +0xe9 U+00e9 +0xea U+00ea +0xeb U+00eb +0xec U+00ec +0xed U+00ed +0xee U+00ee +0xef U+00ef +0xf0 U+0161 +0xf1 U+00f1 +0xf2 U+00f2 +0xf3 U+00f3 +0xf4 U+00f4 +0xf5 U+00f5 +0xf6 U+00f6 +0xf7 U+00f7 +0xf8 U+00f8 +0xf9 U+00f9 +0xfa U+00fa +0xfb U+00fb +0xfc U+00fc +0xfd U+00fd +0xfe U+017e +0xff U+00ff diff --git a/make/tools/CharsetMapping/ISO_8859_11.map b/make/tools/CharsetMapping/ISO_8859_11.map new file mode 100644 index 0000000000000000000000000000000000000000..67f75d851cfb92f4257501181579d916bac87ed4 --- /dev/null +++ b/make/tools/CharsetMapping/ISO_8859_11.map @@ -0,0 +1,257 @@ +#Generated from ISO_8859_11.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0080 +0x81 U+0081 +0x82 U+0082 +0x83 U+0083 +0x84 U+0084 +0x85 U+0085 +0x86 U+0086 +0x87 U+0087 +0x88 U+0088 +0x89 U+0089 +0x8a U+008a +0x8b U+008b +0x8c U+008c +0x8d U+008d +0x8e U+008e +0x8f U+008f +0x90 U+0090 +0x91 U+0091 +0x92 U+0092 +0x93 U+0093 +0x94 U+0094 +0x95 U+0095 +0x96 U+0096 +0x97 U+0097 +0x98 U+0098 +0x99 U+0099 +0x9a U+009a +0x9b U+009b +0x9c U+009c +0x9d U+009d +0x9e U+009e +0x9f U+009f +0xa0 U+00a0 +0xa1 U+0e01 +0xa2 U+0e02 +0xa3 U+0e03 +0xa4 U+0e04 +0xa5 U+0e05 +0xa6 U+0e06 +0xa7 U+0e07 +0xa8 U+0e08 +0xa9 U+0e09 +0xaa U+0e0a +0xab U+0e0b +0xac U+0e0c +0xad U+0e0d +0xae U+0e0e +0xaf U+0e0f +0xb0 U+0e10 +0xb1 U+0e11 +0xb2 U+0e12 +0xb3 U+0e13 +0xb4 U+0e14 +0xb5 U+0e15 +0xb6 U+0e16 +0xb7 U+0e17 +0xb8 U+0e18 +0xb9 U+0e19 +0xba U+0e1a +0xbb U+0e1b +0xbc U+0e1c +0xbd U+0e1d +0xbe U+0e1e +0xbf U+0e1f +0xc0 U+0e20 +0xc1 U+0e21 +0xc2 U+0e22 +0xc3 U+0e23 +0xc4 U+0e24 +0xc5 U+0e25 +0xc6 U+0e26 +0xc7 U+0e27 +0xc8 U+0e28 +0xc9 U+0e29 +0xca U+0e2a +0xcb U+0e2b +0xcc U+0e2c +0xcd U+0e2d +0xce U+0e2e +0xcf U+0e2f +0xd0 U+0e30 +0xd1 U+0e31 +0xd2 U+0e32 +0xd3 U+0e33 +0xd4 U+0e34 +0xd5 U+0e35 +0xd6 U+0e36 +0xd7 U+0e37 +0xd8 U+0e38 +0xd9 U+0e39 +0xda U+0e3a +0xdb U+fffd +0xdc U+fffd +0xdd U+fffd +0xde U+fffd +0xdf U+0e3f +0xe0 U+0e40 +0xe1 U+0e41 +0xe2 U+0e42 +0xe3 U+0e43 +0xe4 U+0e44 +0xe5 U+0e45 +0xe6 U+0e46 +0xe7 U+0e47 +0xe8 U+0e48 +0xe9 U+0e49 +0xea U+0e4a +0xeb U+0e4b +0xec U+0e4c +0xed U+0e4d +0xee U+0e4e +0xef U+0e4f +0xf0 U+0e50 +0xf1 U+0e51 +0xf2 U+0e52 +0xf3 U+0e53 +0xf4 U+0e54 +0xf5 U+0e55 +0xf6 U+0e56 +0xf7 U+0e57 +0xf8 U+0e58 +0xf9 U+0e59 +0xfa U+0e5a +0xfb U+0e5b +0xfc U+fffd +0xfd U+fffd +0xfe U+fffd +0xff U+fffd diff --git a/make/tools/CharsetMapping/ISO_8859_13.map b/make/tools/CharsetMapping/ISO_8859_13.map new file mode 100644 index 0000000000000000000000000000000000000000..b06dc749c29599ec57ba6bdac08813d7ee6215ce --- /dev/null +++ b/make/tools/CharsetMapping/ISO_8859_13.map @@ -0,0 +1,257 @@ +#Generated from ISO_8859_13.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0080 +0x81 U+0081 +0x82 U+0082 +0x83 U+0083 +0x84 U+0084 +0x85 U+0085 +0x86 U+0086 +0x87 U+0087 +0x88 U+0088 +0x89 U+0089 +0x8a U+008a +0x8b U+008b +0x8c U+008c +0x8d U+008d +0x8e U+008e +0x8f U+008f +0x90 U+0090 +0x91 U+0091 +0x92 U+0092 +0x93 U+0093 +0x94 U+0094 +0x95 U+0095 +0x96 U+0096 +0x97 U+0097 +0x98 U+0098 +0x99 U+0099 +0x9a U+009a +0x9b U+009b +0x9c U+009c +0x9d U+009d +0x9e U+009e +0x9f U+009f +0xa0 U+00a0 +0xa1 U+201d +0xa2 U+00a2 +0xa3 U+00a3 +0xa4 U+00a4 +0xa5 U+201e +0xa6 U+00a6 +0xa7 U+00a7 +0xa8 U+00d8 +0xa9 U+00a9 +0xaa U+0156 +0xab U+00ab +0xac U+00ac +0xad U+00ad +0xae U+00ae +0xaf U+00c6 +0xb0 U+00b0 +0xb1 U+00b1 +0xb2 U+00b2 +0xb3 U+00b3 +0xb4 U+201c +0xb5 U+00b5 +0xb6 U+00b6 +0xb7 U+00b7 +0xb8 U+00f8 +0xb9 U+00b9 +0xba U+0157 +0xbb U+00bb +0xbc U+00bc +0xbd U+00bd +0xbe U+00be +0xbf U+00e6 +0xc0 U+0104 +0xc1 U+012e +0xc2 U+0100 +0xc3 U+0106 +0xc4 U+00c4 +0xc5 U+00c5 +0xc6 U+0118 +0xc7 U+0112 +0xc8 U+010c +0xc9 U+00c9 +0xca U+0179 +0xcb U+0116 +0xcc U+0122 +0xcd U+0136 +0xce U+012a +0xcf U+013b +0xd0 U+0160 +0xd1 U+0143 +0xd2 U+0145 +0xd3 U+00d3 +0xd4 U+014c +0xd5 U+00d5 +0xd6 U+00d6 +0xd7 U+00d7 +0xd8 U+0172 +0xd9 U+0141 +0xda U+015a +0xdb U+016a +0xdc U+00dc +0xdd U+017b +0xde U+017d +0xdf U+00df +0xe0 U+0105 +0xe1 U+012f +0xe2 U+0101 +0xe3 U+0107 +0xe4 U+00e4 +0xe5 U+00e5 +0xe6 U+0119 +0xe7 U+0113 +0xe8 U+010d +0xe9 U+00e9 +0xea U+017a +0xeb U+0117 +0xec U+0123 +0xed U+0137 +0xee U+012b +0xef U+013c +0xf0 U+0161 +0xf1 U+0144 +0xf2 U+0146 +0xf3 U+00f3 +0xf4 U+014d +0xf5 U+00f5 +0xf6 U+00f6 +0xf7 U+00f7 +0xf8 U+0173 +0xf9 U+0142 +0xfa U+015b +0xfb U+016b +0xfc U+00fc +0xfd U+017c +0xfe U+017e +0xff U+2019 diff --git a/make/tools/CharsetMapping/ISO_8859_15.map b/make/tools/CharsetMapping/ISO_8859_15.map new file mode 100644 index 0000000000000000000000000000000000000000..b75e3c6a3428e15774da9f483035942653adcbb7 --- /dev/null +++ b/make/tools/CharsetMapping/ISO_8859_15.map @@ -0,0 +1,257 @@ +#Generated from ISO_8859_15.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0080 +0x81 U+0081 +0x82 U+0082 +0x83 U+0083 +0x84 U+0084 +0x85 U+0085 +0x86 U+0086 +0x87 U+0087 +0x88 U+0088 +0x89 U+0089 +0x8a U+008a +0x8b U+008b +0x8c U+008c +0x8d U+008d +0x8e U+008e +0x8f U+008f +0x90 U+0090 +0x91 U+0091 +0x92 U+0092 +0x93 U+0093 +0x94 U+0094 +0x95 U+0095 +0x96 U+0096 +0x97 U+0097 +0x98 U+0098 +0x99 U+0099 +0x9a U+009a +0x9b U+009b +0x9c U+009c +0x9d U+009d +0x9e U+009e +0x9f U+009f +0xa0 U+00a0 +0xa1 U+00a1 +0xa2 U+00a2 +0xa3 U+00a3 +0xa4 U+20ac +0xa5 U+00a5 +0xa6 U+0160 +0xa7 U+00a7 +0xa8 U+0161 +0xa9 U+00a9 +0xaa U+00aa +0xab U+00ab +0xac U+00ac +0xad U+00ad +0xae U+00ae +0xaf U+00af +0xb0 U+00b0 +0xb1 U+00b1 +0xb2 U+00b2 +0xb3 U+00b3 +0xb4 U+017d +0xb5 U+00b5 +0xb6 U+00b6 +0xb7 U+00b7 +0xb8 U+017e +0xb9 U+00b9 +0xba U+00ba +0xbb U+00bb +0xbc U+0152 +0xbd U+0153 +0xbe U+0178 +0xbf U+00bf +0xc0 U+00c0 +0xc1 U+00c1 +0xc2 U+00c2 +0xc3 U+00c3 +0xc4 U+00c4 +0xc5 U+00c5 +0xc6 U+00c6 +0xc7 U+00c7 +0xc8 U+00c8 +0xc9 U+00c9 +0xca U+00ca +0xcb U+00cb +0xcc U+00cc +0xcd U+00cd +0xce U+00ce +0xcf U+00cf +0xd0 U+00d0 +0xd1 U+00d1 +0xd2 U+00d2 +0xd3 U+00d3 +0xd4 U+00d4 +0xd5 U+00d5 +0xd6 U+00d6 +0xd7 U+00d7 +0xd8 U+00d8 +0xd9 U+00d9 +0xda U+00da +0xdb U+00db +0xdc U+00dc +0xdd U+00dd +0xde U+00de +0xdf U+00df +0xe0 U+00e0 +0xe1 U+00e1 +0xe2 U+00e2 +0xe3 U+00e3 +0xe4 U+00e4 +0xe5 U+00e5 +0xe6 U+00e6 +0xe7 U+00e7 +0xe8 U+00e8 +0xe9 U+00e9 +0xea U+00ea +0xeb U+00eb +0xec U+00ec +0xed U+00ed +0xee U+00ee +0xef U+00ef +0xf0 U+00f0 +0xf1 U+00f1 +0xf2 U+00f2 +0xf3 U+00f3 +0xf4 U+00f4 +0xf5 U+00f5 +0xf6 U+00f6 +0xf7 U+00f7 +0xf8 U+00f8 +0xf9 U+00f9 +0xfa U+00fa +0xfb U+00fb +0xfc U+00fc +0xfd U+00fd +0xfe U+00fe +0xff U+00ff diff --git a/make/tools/CharsetMapping/ISO_8859_2.map b/make/tools/CharsetMapping/ISO_8859_2.map new file mode 100644 index 0000000000000000000000000000000000000000..e3c264b014166be7845fd71e7f20d1adc7a11298 --- /dev/null +++ b/make/tools/CharsetMapping/ISO_8859_2.map @@ -0,0 +1,257 @@ +#Generated from ISO_8859_2.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0080 +0x81 U+0081 +0x82 U+0082 +0x83 U+0083 +0x84 U+0084 +0x85 U+0085 +0x86 U+0086 +0x87 U+0087 +0x88 U+0088 +0x89 U+0089 +0x8a U+008a +0x8b U+008b +0x8c U+008c +0x8d U+008d +0x8e U+008e +0x8f U+008f +0x90 U+0090 +0x91 U+0091 +0x92 U+0092 +0x93 U+0093 +0x94 U+0094 +0x95 U+0095 +0x96 U+0096 +0x97 U+0097 +0x98 U+0098 +0x99 U+0099 +0x9a U+009a +0x9b U+009b +0x9c U+009c +0x9d U+009d +0x9e U+009e +0x9f U+009f +0xa0 U+00a0 +0xa1 U+0104 +0xa2 U+02d8 +0xa3 U+0141 +0xa4 U+00a4 +0xa5 U+013d +0xa6 U+015a +0xa7 U+00a7 +0xa8 U+00a8 +0xa9 U+0160 +0xaa U+015e +0xab U+0164 +0xac U+0179 +0xad U+00ad +0xae U+017d +0xaf U+017b +0xb0 U+00b0 +0xb1 U+0105 +0xb2 U+02db +0xb3 U+0142 +0xb4 U+00b4 +0xb5 U+013e +0xb6 U+015b +0xb7 U+02c7 +0xb8 U+00b8 +0xb9 U+0161 +0xba U+015f +0xbb U+0165 +0xbc U+017a +0xbd U+02dd +0xbe U+017e +0xbf U+017c +0xc0 U+0154 +0xc1 U+00c1 +0xc2 U+00c2 +0xc3 U+0102 +0xc4 U+00c4 +0xc5 U+0139 +0xc6 U+0106 +0xc7 U+00c7 +0xc8 U+010c +0xc9 U+00c9 +0xca U+0118 +0xcb U+00cb +0xcc U+011a +0xcd U+00cd +0xce U+00ce +0xcf U+010e +0xd0 U+0110 +0xd1 U+0143 +0xd2 U+0147 +0xd3 U+00d3 +0xd4 U+00d4 +0xd5 U+0150 +0xd6 U+00d6 +0xd7 U+00d7 +0xd8 U+0158 +0xd9 U+016e +0xda U+00da +0xdb U+0170 +0xdc U+00dc +0xdd U+00dd +0xde U+0162 +0xdf U+00df +0xe0 U+0155 +0xe1 U+00e1 +0xe2 U+00e2 +0xe3 U+0103 +0xe4 U+00e4 +0xe5 U+013a +0xe6 U+0107 +0xe7 U+00e7 +0xe8 U+010d +0xe9 U+00e9 +0xea U+0119 +0xeb U+00eb +0xec U+011b +0xed U+00ed +0xee U+00ee +0xef U+010f +0xf0 U+0111 +0xf1 U+0144 +0xf2 U+0148 +0xf3 U+00f3 +0xf4 U+00f4 +0xf5 U+0151 +0xf6 U+00f6 +0xf7 U+00f7 +0xf8 U+0159 +0xf9 U+016f +0xfa U+00fa +0xfb U+0171 +0xfc U+00fc +0xfd U+00fd +0xfe U+0163 +0xff U+02d9 diff --git a/make/tools/CharsetMapping/ISO_8859_3.map b/make/tools/CharsetMapping/ISO_8859_3.map new file mode 100644 index 0000000000000000000000000000000000000000..748bd267f902f16a9023f0c716ed1e3f23971244 --- /dev/null +++ b/make/tools/CharsetMapping/ISO_8859_3.map @@ -0,0 +1,257 @@ +#Generated from ISO_8859_3.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0080 +0x81 U+0081 +0x82 U+0082 +0x83 U+0083 +0x84 U+0084 +0x85 U+0085 +0x86 U+0086 +0x87 U+0087 +0x88 U+0088 +0x89 U+0089 +0x8a U+008a +0x8b U+008b +0x8c U+008c +0x8d U+008d +0x8e U+008e +0x8f U+008f +0x90 U+0090 +0x91 U+0091 +0x92 U+0092 +0x93 U+0093 +0x94 U+0094 +0x95 U+0095 +0x96 U+0096 +0x97 U+0097 +0x98 U+0098 +0x99 U+0099 +0x9a U+009a +0x9b U+009b +0x9c U+009c +0x9d U+009d +0x9e U+009e +0x9f U+009f +0xa0 U+00a0 +0xa1 U+0126 +0xa2 U+02d8 +0xa3 U+00a3 +0xa4 U+00a4 +0xa5 U+fffd +0xa6 U+0124 +0xa7 U+00a7 +0xa8 U+00a8 +0xa9 U+0130 +0xaa U+015e +0xab U+011e +0xac U+0134 +0xad U+00ad +0xae U+fffd +0xaf U+017b +0xb0 U+00b0 +0xb1 U+0127 +0xb2 U+00b2 +0xb3 U+00b3 +0xb4 U+00b4 +0xb5 U+00b5 +0xb6 U+0125 +0xb7 U+00b7 +0xb8 U+00b8 +0xb9 U+0131 +0xba U+015f +0xbb U+011f +0xbc U+0135 +0xbd U+00bd +0xbe U+fffd +0xbf U+017c +0xc0 U+00c0 +0xc1 U+00c1 +0xc2 U+00c2 +0xc3 U+fffd +0xc4 U+00c4 +0xc5 U+010a +0xc6 U+0108 +0xc7 U+00c7 +0xc8 U+00c8 +0xc9 U+00c9 +0xca U+00ca +0xcb U+00cb +0xcc U+00cc +0xcd U+00cd +0xce U+00ce +0xcf U+00cf +0xd0 U+fffd +0xd1 U+00d1 +0xd2 U+00d2 +0xd3 U+00d3 +0xd4 U+00d4 +0xd5 U+0120 +0xd6 U+00d6 +0xd7 U+00d7 +0xd8 U+011c +0xd9 U+00d9 +0xda U+00da +0xdb U+00db +0xdc U+00dc +0xdd U+016c +0xde U+015c +0xdf U+00df +0xe0 U+00e0 +0xe1 U+00e1 +0xe2 U+00e2 +0xe3 U+fffd +0xe4 U+00e4 +0xe5 U+010b +0xe6 U+0109 +0xe7 U+00e7 +0xe8 U+00e8 +0xe9 U+00e9 +0xea U+00ea +0xeb U+00eb +0xec U+00ec +0xed U+00ed +0xee U+00ee +0xef U+00ef +0xf0 U+fffd +0xf1 U+00f1 +0xf2 U+00f2 +0xf3 U+00f3 +0xf4 U+00f4 +0xf5 U+0121 +0xf6 U+00f6 +0xf7 U+00f7 +0xf8 U+011d +0xf9 U+00f9 +0xfa U+00fa +0xfb U+00fb +0xfc U+00fc +0xfd U+016d +0xfe U+015d +0xff U+02d9 diff --git a/make/tools/CharsetMapping/ISO_8859_4.map b/make/tools/CharsetMapping/ISO_8859_4.map new file mode 100644 index 0000000000000000000000000000000000000000..fe485427c463d664900b4dbf473952ce5d615c01 --- /dev/null +++ b/make/tools/CharsetMapping/ISO_8859_4.map @@ -0,0 +1,257 @@ +#Generated from ISO_8859_4.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0080 +0x81 U+0081 +0x82 U+0082 +0x83 U+0083 +0x84 U+0084 +0x85 U+0085 +0x86 U+0086 +0x87 U+0087 +0x88 U+0088 +0x89 U+0089 +0x8a U+008a +0x8b U+008b +0x8c U+008c +0x8d U+008d +0x8e U+008e +0x8f U+008f +0x90 U+0090 +0x91 U+0091 +0x92 U+0092 +0x93 U+0093 +0x94 U+0094 +0x95 U+0095 +0x96 U+0096 +0x97 U+0097 +0x98 U+0098 +0x99 U+0099 +0x9a U+009a +0x9b U+009b +0x9c U+009c +0x9d U+009d +0x9e U+009e +0x9f U+009f +0xa0 U+00a0 +0xa1 U+0104 +0xa2 U+0138 +0xa3 U+0156 +0xa4 U+00a4 +0xa5 U+0128 +0xa6 U+013b +0xa7 U+00a7 +0xa8 U+00a8 +0xa9 U+0160 +0xaa U+0112 +0xab U+0122 +0xac U+0166 +0xad U+00ad +0xae U+017d +0xaf U+00af +0xb0 U+00b0 +0xb1 U+0105 +0xb2 U+02db +0xb3 U+0157 +0xb4 U+00b4 +0xb5 U+0129 +0xb6 U+013c +0xb7 U+02c7 +0xb8 U+00b8 +0xb9 U+0161 +0xba U+0113 +0xbb U+0123 +0xbc U+0167 +0xbd U+014a +0xbe U+017e +0xbf U+014b +0xc0 U+0100 +0xc1 U+00c1 +0xc2 U+00c2 +0xc3 U+00c3 +0xc4 U+00c4 +0xc5 U+00c5 +0xc6 U+00c6 +0xc7 U+012e +0xc8 U+010c +0xc9 U+00c9 +0xca U+0118 +0xcb U+00cb +0xcc U+0116 +0xcd U+00cd +0xce U+00ce +0xcf U+012a +0xd0 U+0110 +0xd1 U+0145 +0xd2 U+014c +0xd3 U+0136 +0xd4 U+00d4 +0xd5 U+00d5 +0xd6 U+00d6 +0xd7 U+00d7 +0xd8 U+00d8 +0xd9 U+0172 +0xda U+00da +0xdb U+00db +0xdc U+00dc +0xdd U+0168 +0xde U+016a +0xdf U+00df +0xe0 U+0101 +0xe1 U+00e1 +0xe2 U+00e2 +0xe3 U+00e3 +0xe4 U+00e4 +0xe5 U+00e5 +0xe6 U+00e6 +0xe7 U+012f +0xe8 U+010d +0xe9 U+00e9 +0xea U+0119 +0xeb U+00eb +0xec U+0117 +0xed U+00ed +0xee U+00ee +0xef U+012b +0xf0 U+0111 +0xf1 U+0146 +0xf2 U+014d +0xf3 U+0137 +0xf4 U+00f4 +0xf5 U+00f5 +0xf6 U+00f6 +0xf7 U+00f7 +0xf8 U+00f8 +0xf9 U+0173 +0xfa U+00fa +0xfb U+00fb +0xfc U+00fc +0xfd U+0169 +0xfe U+016b +0xff U+02d9 diff --git a/make/tools/CharsetMapping/ISO_8859_5.map b/make/tools/CharsetMapping/ISO_8859_5.map new file mode 100644 index 0000000000000000000000000000000000000000..d7f80137ffbf3f6c6ed7ca8f27d1709281d897ac --- /dev/null +++ b/make/tools/CharsetMapping/ISO_8859_5.map @@ -0,0 +1,257 @@ +#Generated from ISO_8859_5.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0080 +0x81 U+0081 +0x82 U+0082 +0x83 U+0083 +0x84 U+0084 +0x85 U+0085 +0x86 U+0086 +0x87 U+0087 +0x88 U+0088 +0x89 U+0089 +0x8a U+008a +0x8b U+008b +0x8c U+008c +0x8d U+008d +0x8e U+008e +0x8f U+008f +0x90 U+0090 +0x91 U+0091 +0x92 U+0092 +0x93 U+0093 +0x94 U+0094 +0x95 U+0095 +0x96 U+0096 +0x97 U+0097 +0x98 U+0098 +0x99 U+0099 +0x9a U+009a +0x9b U+009b +0x9c U+009c +0x9d U+009d +0x9e U+009e +0x9f U+009f +0xa0 U+00a0 +0xa1 U+0401 +0xa2 U+0402 +0xa3 U+0403 +0xa4 U+0404 +0xa5 U+0405 +0xa6 U+0406 +0xa7 U+0407 +0xa8 U+0408 +0xa9 U+0409 +0xaa U+040a +0xab U+040b +0xac U+040c +0xad U+00ad +0xae U+040e +0xaf U+040f +0xb0 U+0410 +0xb1 U+0411 +0xb2 U+0412 +0xb3 U+0413 +0xb4 U+0414 +0xb5 U+0415 +0xb6 U+0416 +0xb7 U+0417 +0xb8 U+0418 +0xb9 U+0419 +0xba U+041a +0xbb U+041b +0xbc U+041c +0xbd U+041d +0xbe U+041e +0xbf U+041f +0xc0 U+0420 +0xc1 U+0421 +0xc2 U+0422 +0xc3 U+0423 +0xc4 U+0424 +0xc5 U+0425 +0xc6 U+0426 +0xc7 U+0427 +0xc8 U+0428 +0xc9 U+0429 +0xca U+042a +0xcb U+042b +0xcc U+042c +0xcd U+042d +0xce U+042e +0xcf U+042f +0xd0 U+0430 +0xd1 U+0431 +0xd2 U+0432 +0xd3 U+0433 +0xd4 U+0434 +0xd5 U+0435 +0xd6 U+0436 +0xd7 U+0437 +0xd8 U+0438 +0xd9 U+0439 +0xda U+043a +0xdb U+043b +0xdc U+043c +0xdd U+043d +0xde U+043e +0xdf U+043f +0xe0 U+0440 +0xe1 U+0441 +0xe2 U+0442 +0xe3 U+0443 +0xe4 U+0444 +0xe5 U+0445 +0xe6 U+0446 +0xe7 U+0447 +0xe8 U+0448 +0xe9 U+0449 +0xea U+044a +0xeb U+044b +0xec U+044c +0xed U+044d +0xee U+044e +0xef U+044f +0xf0 U+2116 +0xf1 U+0451 +0xf2 U+0452 +0xf3 U+0453 +0xf4 U+0454 +0xf5 U+0455 +0xf6 U+0456 +0xf7 U+0457 +0xf8 U+0458 +0xf9 U+0459 +0xfa U+045a +0xfb U+045b +0xfc U+045c +0xfd U+00a7 +0xfe U+045e +0xff U+045f diff --git a/make/tools/CharsetMapping/ISO_8859_6.map b/make/tools/CharsetMapping/ISO_8859_6.map new file mode 100644 index 0000000000000000000000000000000000000000..ade727b84e5ab8ee6442c9a8e87243b8b6c7860a --- /dev/null +++ b/make/tools/CharsetMapping/ISO_8859_6.map @@ -0,0 +1,257 @@ +#Generated from ISO_8859_6.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0080 +0x81 U+0081 +0x82 U+0082 +0x83 U+0083 +0x84 U+0084 +0x85 U+0085 +0x86 U+0086 +0x87 U+0087 +0x88 U+0088 +0x89 U+0089 +0x8a U+008a +0x8b U+008b +0x8c U+008c +0x8d U+008d +0x8e U+008e +0x8f U+008f +0x90 U+0090 +0x91 U+0091 +0x92 U+0092 +0x93 U+0093 +0x94 U+0094 +0x95 U+0095 +0x96 U+0096 +0x97 U+0097 +0x98 U+0098 +0x99 U+0099 +0x9a U+009a +0x9b U+009b +0x9c U+009c +0x9d U+009d +0x9e U+009e +0x9f U+009f +0xa0 U+00a0 +0xa1 U+fffd +0xa2 U+fffd +0xa3 U+fffd +0xa4 U+00a4 +0xa5 U+fffd +0xa6 U+fffd +0xa7 U+fffd +0xa8 U+fffd +0xa9 U+fffd +0xaa U+fffd +0xab U+fffd +0xac U+060c +0xad U+00ad +0xae U+fffd +0xaf U+fffd +0xb0 U+fffd +0xb1 U+fffd +0xb2 U+fffd +0xb3 U+fffd +0xb4 U+fffd +0xb5 U+fffd +0xb6 U+fffd +0xb7 U+fffd +0xb8 U+fffd +0xb9 U+fffd +0xba U+fffd +0xbb U+061b +0xbc U+fffd +0xbd U+fffd +0xbe U+fffd +0xbf U+061f +0xc0 U+fffd +0xc1 U+0621 +0xc2 U+0622 +0xc3 U+0623 +0xc4 U+0624 +0xc5 U+0625 +0xc6 U+0626 +0xc7 U+0627 +0xc8 U+0628 +0xc9 U+0629 +0xca U+062a +0xcb U+062b +0xcc U+062c +0xcd U+062d +0xce U+062e +0xcf U+062f +0xd0 U+0630 +0xd1 U+0631 +0xd2 U+0632 +0xd3 U+0633 +0xd4 U+0634 +0xd5 U+0635 +0xd6 U+0636 +0xd7 U+0637 +0xd8 U+0638 +0xd9 U+0639 +0xda U+063a +0xdb U+fffd +0xdc U+fffd +0xdd U+fffd +0xde U+fffd +0xdf U+fffd +0xe0 U+0640 +0xe1 U+0641 +0xe2 U+0642 +0xe3 U+0643 +0xe4 U+0644 +0xe5 U+0645 +0xe6 U+0646 +0xe7 U+0647 +0xe8 U+0648 +0xe9 U+0649 +0xea U+064a +0xeb U+064b +0xec U+064c +0xed U+064d +0xee U+064e +0xef U+064f +0xf0 U+0650 +0xf1 U+0651 +0xf2 U+0652 +0xf3 U+fffd +0xf4 U+fffd +0xf5 U+fffd +0xf6 U+fffd +0xf7 U+fffd +0xf8 U+fffd +0xf9 U+fffd +0xfa U+fffd +0xfb U+fffd +0xfc U+fffd +0xfd U+fffd +0xfe U+fffd +0xff U+fffd diff --git a/make/tools/CharsetMapping/ISO_8859_7.map b/make/tools/CharsetMapping/ISO_8859_7.map new file mode 100644 index 0000000000000000000000000000000000000000..673902d99ecd43c4ba76912b673c8000adfd2ee8 --- /dev/null +++ b/make/tools/CharsetMapping/ISO_8859_7.map @@ -0,0 +1,257 @@ +#Generated from ISO_8859_7.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0080 +0x81 U+0081 +0x82 U+0082 +0x83 U+0083 +0x84 U+0084 +0x85 U+0085 +0x86 U+0086 +0x87 U+0087 +0x88 U+0088 +0x89 U+0089 +0x8a U+008a +0x8b U+008b +0x8c U+008c +0x8d U+008d +0x8e U+008e +0x8f U+008f +0x90 U+0090 +0x91 U+0091 +0x92 U+0092 +0x93 U+0093 +0x94 U+0094 +0x95 U+0095 +0x96 U+0096 +0x97 U+0097 +0x98 U+0098 +0x99 U+0099 +0x9a U+009a +0x9b U+009b +0x9c U+009c +0x9d U+009d +0x9e U+009e +0x9f U+009f +0xa0 U+00a0 +0xa1 U+2018 +0xa2 U+2019 +0xa3 U+00a3 +0xa4 U+20ac +0xa5 U+20af +0xa6 U+00a6 +0xa7 U+00a7 +0xa8 U+00a8 +0xa9 U+00a9 +0xaa U+037a +0xab U+00ab +0xac U+00ac +0xad U+00ad +0xae U+fffd +0xaf U+2015 +0xb0 U+00b0 +0xb1 U+00b1 +0xb2 U+00b2 +0xb3 U+00b3 +0xb4 U+0384 +0xb5 U+0385 +0xb6 U+0386 +0xb7 U+00b7 +0xb8 U+0388 +0xb9 U+0389 +0xba U+038a +0xbb U+00bb +0xbc U+038c +0xbd U+00bd +0xbe U+038e +0xbf U+038f +0xc0 U+0390 +0xc1 U+0391 +0xc2 U+0392 +0xc3 U+0393 +0xc4 U+0394 +0xc5 U+0395 +0xc6 U+0396 +0xc7 U+0397 +0xc8 U+0398 +0xc9 U+0399 +0xca U+039a +0xcb U+039b +0xcc U+039c +0xcd U+039d +0xce U+039e +0xcf U+039f +0xd0 U+03a0 +0xd1 U+03a1 +0xd2 U+fffd +0xd3 U+03a3 +0xd4 U+03a4 +0xd5 U+03a5 +0xd6 U+03a6 +0xd7 U+03a7 +0xd8 U+03a8 +0xd9 U+03a9 +0xda U+03aa +0xdb U+03ab +0xdc U+03ac +0xdd U+03ad +0xde U+03ae +0xdf U+03af +0xe0 U+03b0 +0xe1 U+03b1 +0xe2 U+03b2 +0xe3 U+03b3 +0xe4 U+03b4 +0xe5 U+03b5 +0xe6 U+03b6 +0xe7 U+03b7 +0xe8 U+03b8 +0xe9 U+03b9 +0xea U+03ba +0xeb U+03bb +0xec U+03bc +0xed U+03bd +0xee U+03be +0xef U+03bf +0xf0 U+03c0 +0xf1 U+03c1 +0xf2 U+03c2 +0xf3 U+03c3 +0xf4 U+03c4 +0xf5 U+03c5 +0xf6 U+03c6 +0xf7 U+03c7 +0xf8 U+03c8 +0xf9 U+03c9 +0xfa U+03ca +0xfb U+03cb +0xfc U+03cc +0xfd U+03cd +0xfe U+03ce +0xff U+fffd diff --git a/make/tools/CharsetMapping/ISO_8859_8.map b/make/tools/CharsetMapping/ISO_8859_8.map new file mode 100644 index 0000000000000000000000000000000000000000..aa05d5cbfa9959c0a7d0735dbbaf8195c62d648c --- /dev/null +++ b/make/tools/CharsetMapping/ISO_8859_8.map @@ -0,0 +1,257 @@ +#Generated from ISO_8859_8.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0080 +0x81 U+0081 +0x82 U+0082 +0x83 U+0083 +0x84 U+0084 +0x85 U+0085 +0x86 U+0086 +0x87 U+0087 +0x88 U+0088 +0x89 U+0089 +0x8a U+008a +0x8b U+008b +0x8c U+008c +0x8d U+008d +0x8e U+008e +0x8f U+008f +0x90 U+0090 +0x91 U+0091 +0x92 U+0092 +0x93 U+0093 +0x94 U+0094 +0x95 U+0095 +0x96 U+0096 +0x97 U+0097 +0x98 U+0098 +0x99 U+0099 +0x9a U+009a +0x9b U+009b +0x9c U+009c +0x9d U+009d +0x9e U+009e +0x9f U+009f +0xa0 U+00a0 +0xa1 U+fffd +0xa2 U+00a2 +0xa3 U+00a3 +0xa4 U+00a4 +0xa5 U+00a5 +0xa6 U+00a6 +0xa7 U+00a7 +0xa8 U+00a8 +0xa9 U+00a9 +0xaa U+00d7 +0xab U+00ab +0xac U+00ac +0xad U+00ad +0xae U+00ae +0xaf U+00af +0xb0 U+00b0 +0xb1 U+00b1 +0xb2 U+00b2 +0xb3 U+00b3 +0xb4 U+00b4 +0xb5 U+00b5 +0xb6 U+00b6 +0xb7 U+00b7 +0xb8 U+00b8 +0xb9 U+00b9 +0xba U+00f7 +0xbb U+00bb +0xbc U+00bc +0xbd U+00bd +0xbe U+00be +0xbf U+fffd +0xc0 U+fffd +0xc1 U+fffd +0xc2 U+fffd +0xc3 U+fffd +0xc4 U+fffd +0xc5 U+fffd +0xc6 U+fffd +0xc7 U+fffd +0xc8 U+fffd +0xc9 U+fffd +0xca U+fffd +0xcb U+fffd +0xcc U+fffd +0xcd U+fffd +0xce U+fffd +0xcf U+fffd +0xd0 U+fffd +0xd1 U+fffd +0xd2 U+fffd +0xd3 U+fffd +0xd4 U+fffd +0xd5 U+fffd +0xd6 U+fffd +0xd7 U+fffd +0xd8 U+fffd +0xd9 U+fffd +0xda U+fffd +0xdb U+fffd +0xdc U+fffd +0xdd U+fffd +0xde U+fffd +0xdf U+2017 +0xe0 U+05d0 +0xe1 U+05d1 +0xe2 U+05d2 +0xe3 U+05d3 +0xe4 U+05d4 +0xe5 U+05d5 +0xe6 U+05d6 +0xe7 U+05d7 +0xe8 U+05d8 +0xe9 U+05d9 +0xea U+05da +0xeb U+05db +0xec U+05dc +0xed U+05dd +0xee U+05de +0xef U+05df +0xf0 U+05e0 +0xf1 U+05e1 +0xf2 U+05e2 +0xf3 U+05e3 +0xf4 U+05e4 +0xf5 U+05e5 +0xf6 U+05e6 +0xf7 U+05e7 +0xf8 U+05e8 +0xf9 U+05e9 +0xfa U+05ea +0xfb U+fffd +0xfc U+fffd +0xfd U+200e +0xfe U+200f +0xff U+fffd diff --git a/make/tools/CharsetMapping/ISO_8859_9.map b/make/tools/CharsetMapping/ISO_8859_9.map new file mode 100644 index 0000000000000000000000000000000000000000..e3a8afb3d8536946dc758a1849cd951321c0dfa4 --- /dev/null +++ b/make/tools/CharsetMapping/ISO_8859_9.map @@ -0,0 +1,257 @@ +#Generated from ISO_8859_9.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0080 +0x81 U+0081 +0x82 U+0082 +0x83 U+0083 +0x84 U+0084 +0x85 U+0085 +0x86 U+0086 +0x87 U+0087 +0x88 U+0088 +0x89 U+0089 +0x8a U+008a +0x8b U+008b +0x8c U+008c +0x8d U+008d +0x8e U+008e +0x8f U+008f +0x90 U+0090 +0x91 U+0091 +0x92 U+0092 +0x93 U+0093 +0x94 U+0094 +0x95 U+0095 +0x96 U+0096 +0x97 U+0097 +0x98 U+0098 +0x99 U+0099 +0x9a U+009a +0x9b U+009b +0x9c U+009c +0x9d U+009d +0x9e U+009e +0x9f U+009f +0xa0 U+00a0 +0xa1 U+00a1 +0xa2 U+00a2 +0xa3 U+00a3 +0xa4 U+00a4 +0xa5 U+00a5 +0xa6 U+00a6 +0xa7 U+00a7 +0xa8 U+00a8 +0xa9 U+00a9 +0xaa U+00aa +0xab U+00ab +0xac U+00ac +0xad U+00ad +0xae U+00ae +0xaf U+00af +0xb0 U+00b0 +0xb1 U+00b1 +0xb2 U+00b2 +0xb3 U+00b3 +0xb4 U+00b4 +0xb5 U+00b5 +0xb6 U+00b6 +0xb7 U+00b7 +0xb8 U+00b8 +0xb9 U+00b9 +0xba U+00ba +0xbb U+00bb +0xbc U+00bc +0xbd U+00bd +0xbe U+00be +0xbf U+00bf +0xc0 U+00c0 +0xc1 U+00c1 +0xc2 U+00c2 +0xc3 U+00c3 +0xc4 U+00c4 +0xc5 U+00c5 +0xc6 U+00c6 +0xc7 U+00c7 +0xc8 U+00c8 +0xc9 U+00c9 +0xca U+00ca +0xcb U+00cb +0xcc U+00cc +0xcd U+00cd +0xce U+00ce +0xcf U+00cf +0xd0 U+011e +0xd1 U+00d1 +0xd2 U+00d2 +0xd3 U+00d3 +0xd4 U+00d4 +0xd5 U+00d5 +0xd6 U+00d6 +0xd7 U+00d7 +0xd8 U+00d8 +0xd9 U+00d9 +0xda U+00da +0xdb U+00db +0xdc U+00dc +0xdd U+0130 +0xde U+015e +0xdf U+00df +0xe0 U+00e0 +0xe1 U+00e1 +0xe2 U+00e2 +0xe3 U+00e3 +0xe4 U+00e4 +0xe5 U+00e5 +0xe6 U+00e6 +0xe7 U+00e7 +0xe8 U+00e8 +0xe9 U+00e9 +0xea U+00ea +0xeb U+00eb +0xec U+00ec +0xed U+00ed +0xee U+00ee +0xef U+00ef +0xf0 U+011f +0xf1 U+00f1 +0xf2 U+00f2 +0xf3 U+00f3 +0xf4 U+00f4 +0xf5 U+00f5 +0xf6 U+00f6 +0xf7 U+00f7 +0xf8 U+00f8 +0xf9 U+00f9 +0xfa U+00fa +0xfb U+00fb +0xfc U+00fc +0xfd U+0131 +0xfe U+015f +0xff U+00ff diff --git a/make/tools/CharsetMapping/JIS_X_0201.map b/make/tools/CharsetMapping/JIS_X_0201.map new file mode 100644 index 0000000000000000000000000000000000000000..aaa8f1150a3fec91d91bfd09768af21acd781012 --- /dev/null +++ b/make/tools/CharsetMapping/JIS_X_0201.map @@ -0,0 +1,257 @@ +#Generated from JIS_X_0201.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+fffd +0x81 U+fffd +0x82 U+fffd +0x83 U+fffd +0x84 U+fffd +0x85 U+fffd +0x86 U+fffd +0x87 U+fffd +0x88 U+fffd +0x89 U+fffd +0x8a U+fffd +0x8b U+fffd +0x8c U+fffd +0x8d U+fffd +0x8e U+fffd +0x8f U+fffd +0x90 U+fffd +0x91 U+fffd +0x92 U+fffd +0x93 U+fffd +0x94 U+fffd +0x95 U+fffd +0x96 U+fffd +0x97 U+fffd +0x98 U+fffd +0x99 U+fffd +0x9a U+fffd +0x9b U+fffd +0x9c U+fffd +0x9d U+fffd +0x9e U+fffd +0x9f U+fffd +0xa0 U+fffd +0xa1 U+ff61 +0xa2 U+ff62 +0xa3 U+ff63 +0xa4 U+ff64 +0xa5 U+ff65 +0xa6 U+ff66 +0xa7 U+ff67 +0xa8 U+ff68 +0xa9 U+ff69 +0xaa U+ff6a +0xab U+ff6b +0xac U+ff6c +0xad U+ff6d +0xae U+ff6e +0xaf U+ff6f +0xb0 U+ff70 +0xb1 U+ff71 +0xb2 U+ff72 +0xb3 U+ff73 +0xb4 U+ff74 +0xb5 U+ff75 +0xb6 U+ff76 +0xb7 U+ff77 +0xb8 U+ff78 +0xb9 U+ff79 +0xba U+ff7a +0xbb U+ff7b +0xbc U+ff7c +0xbd U+ff7d +0xbe U+ff7e +0xbf U+ff7f +0xc0 U+ff80 +0xc1 U+ff81 +0xc2 U+ff82 +0xc3 U+ff83 +0xc4 U+ff84 +0xc5 U+ff85 +0xc6 U+ff86 +0xc7 U+ff87 +0xc8 U+ff88 +0xc9 U+ff89 +0xca U+ff8a +0xcb U+ff8b +0xcc U+ff8c +0xcd U+ff8d +0xce U+ff8e +0xcf U+ff8f +0xd0 U+ff90 +0xd1 U+ff91 +0xd2 U+ff92 +0xd3 U+ff93 +0xd4 U+ff94 +0xd5 U+ff95 +0xd6 U+ff96 +0xd7 U+ff97 +0xd8 U+ff98 +0xd9 U+ff99 +0xda U+ff9a +0xdb U+ff9b +0xdc U+ff9c +0xdd U+ff9d +0xde U+ff9e +0xdf U+ff9f +0xe0 U+fffd +0xe1 U+fffd +0xe2 U+fffd +0xe3 U+fffd +0xe4 U+fffd +0xe5 U+fffd +0xe6 U+fffd +0xe7 U+fffd +0xe8 U+fffd +0xe9 U+fffd +0xea U+fffd +0xeb U+fffd +0xec U+fffd +0xed U+fffd +0xee U+fffd +0xef U+fffd +0xf0 U+fffd +0xf1 U+fffd +0xf2 U+fffd +0xf3 U+fffd +0xf4 U+fffd +0xf5 U+fffd +0xf6 U+fffd +0xf7 U+fffd +0xf8 U+fffd +0xf9 U+fffd +0xfa U+fffd +0xfb U+fffd +0xfc U+fffd +0xfd U+fffd +0xfe U+fffd +0xff U+fffd diff --git a/make/tools/CharsetMapping/KOI8_R.map b/make/tools/CharsetMapping/KOI8_R.map new file mode 100644 index 0000000000000000000000000000000000000000..c13c38de4b3abc77cbf5714f748836d47743057a --- /dev/null +++ b/make/tools/CharsetMapping/KOI8_R.map @@ -0,0 +1,257 @@ +#Generated from KOI8_R.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+2500 +0x81 U+2502 +0x82 U+250c +0x83 U+2510 +0x84 U+2514 +0x85 U+2518 +0x86 U+251c +0x87 U+2524 +0x88 U+252c +0x89 U+2534 +0x8a U+253c +0x8b U+2580 +0x8c U+2584 +0x8d U+2588 +0x8e U+258c +0x8f U+2590 +0x90 U+2591 +0x91 U+2592 +0x92 U+2593 +0x93 U+2320 +0x94 U+25a0 +0x95 U+2219 +0x96 U+221a +0x97 U+2248 +0x98 U+2264 +0x99 U+2265 +0x9a U+00a0 +0x9b U+2321 +0x9c U+00b0 +0x9d U+00b2 +0x9e U+00b7 +0x9f U+00f7 +0xa0 U+2550 +0xa1 U+2551 +0xa2 U+2552 +0xa3 U+0451 +0xa4 U+2553 +0xa5 U+2554 +0xa6 U+2555 +0xa7 U+2556 +0xa8 U+2557 +0xa9 U+2558 +0xaa U+2559 +0xab U+255a +0xac U+255b +0xad U+255c +0xae U+255d +0xaf U+255e +0xb0 U+255f +0xb1 U+2560 +0xb2 U+2561 +0xb3 U+0401 +0xb4 U+2562 +0xb5 U+2563 +0xb6 U+2564 +0xb7 U+2565 +0xb8 U+2566 +0xb9 U+2567 +0xba U+2568 +0xbb U+2569 +0xbc U+256a +0xbd U+256b +0xbe U+256c +0xbf U+00a9 +0xc0 U+044e +0xc1 U+0430 +0xc2 U+0431 +0xc3 U+0446 +0xc4 U+0434 +0xc5 U+0435 +0xc6 U+0444 +0xc7 U+0433 +0xc8 U+0445 +0xc9 U+0438 +0xca U+0439 +0xcb U+043a +0xcc U+043b +0xcd U+043c +0xce U+043d +0xcf U+043e +0xd0 U+043f +0xd1 U+044f +0xd2 U+0440 +0xd3 U+0441 +0xd4 U+0442 +0xd5 U+0443 +0xd6 U+0436 +0xd7 U+0432 +0xd8 U+044c +0xd9 U+044b +0xda U+0437 +0xdb U+0448 +0xdc U+044d +0xdd U+0449 +0xde U+0447 +0xdf U+044a +0xe0 U+042e +0xe1 U+0410 +0xe2 U+0411 +0xe3 U+0426 +0xe4 U+0414 +0xe5 U+0415 +0xe6 U+0424 +0xe7 U+0413 +0xe8 U+0425 +0xe9 U+0418 +0xea U+0419 +0xeb U+041a +0xec U+041b +0xed U+041c +0xee U+041d +0xef U+041e +0xf0 U+041f +0xf1 U+042f +0xf2 U+0420 +0xf3 U+0421 +0xf4 U+0422 +0xf5 U+0423 +0xf6 U+0416 +0xf7 U+0412 +0xf8 U+042c +0xf9 U+042b +0xfa U+0417 +0xfb U+0428 +0xfc U+042d +0xfd U+0429 +0xfe U+0427 +0xff U+042a diff --git a/make/tools/CharsetMapping/KOI8_U.map b/make/tools/CharsetMapping/KOI8_U.map new file mode 100644 index 0000000000000000000000000000000000000000..1f91e8f832d2010ca0a9f4958d117c5c1c4e6d59 --- /dev/null +++ b/make/tools/CharsetMapping/KOI8_U.map @@ -0,0 +1,257 @@ +#Generated from KOI8_U.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+2500 +0x81 U+2502 +0x82 U+250c +0x83 U+2510 +0x84 U+2514 +0x85 U+2518 +0x86 U+251c +0x87 U+2524 +0x88 U+252c +0x89 U+2534 +0x8a U+253c +0x8b U+2580 +0x8c U+2584 +0x8d U+2588 +0x8e U+258c +0x8f U+2590 +0x90 U+2591 +0x91 U+2592 +0x92 U+2593 +0x93 U+2320 +0x94 U+25a0 +0x95 U+2219 +0x96 U+221a +0x97 U+2248 +0x98 U+2264 +0x99 U+2265 +0x9a U+00a0 +0x9b U+2321 +0x9c U+00b0 +0x9d U+00b2 +0x9e U+00b7 +0x9f U+00f7 +0xa0 U+2550 +0xa1 U+2551 +0xa2 U+2552 +0xa3 U+0451 +0xa4 U+0454 +0xa5 U+2554 +0xa6 U+0456 +0xa7 U+0457 +0xa8 U+2557 +0xa9 U+2558 +0xaa U+2559 +0xab U+255a +0xac U+255b +0xad U+0491 +0xae U+255d +0xaf U+255e +0xb0 U+255f +0xb1 U+2560 +0xb2 U+2561 +0xb3 U+0401 +0xb4 U+0404 +0xb5 U+2563 +0xb6 U+0406 +0xb7 U+0407 +0xb8 U+2566 +0xb9 U+2567 +0xba U+2568 +0xbb U+2569 +0xbc U+256a +0xbd U+0490 +0xbe U+256c +0xbf U+00a9 +0xc0 U+044e +0xc1 U+0430 +0xc2 U+0431 +0xc3 U+0446 +0xc4 U+0434 +0xc5 U+0435 +0xc6 U+0444 +0xc7 U+0433 +0xc8 U+0445 +0xc9 U+0438 +0xca U+0439 +0xcb U+043a +0xcc U+043b +0xcd U+043c +0xce U+043d +0xcf U+043e +0xd0 U+043f +0xd1 U+044f +0xd2 U+0440 +0xd3 U+0441 +0xd4 U+0442 +0xd5 U+0443 +0xd6 U+0436 +0xd7 U+0432 +0xd8 U+044c +0xd9 U+044b +0xda U+0437 +0xdb U+0448 +0xdc U+044d +0xdd U+0449 +0xde U+0447 +0xdf U+044a +0xe0 U+042e +0xe1 U+0410 +0xe2 U+0411 +0xe3 U+0426 +0xe4 U+0414 +0xe5 U+0415 +0xe6 U+0424 +0xe7 U+0413 +0xe8 U+0425 +0xe9 U+0418 +0xea U+0419 +0xeb U+041a +0xec U+041b +0xed U+041c +0xee U+041d +0xef U+041e +0xf0 U+041f +0xf1 U+042f +0xf2 U+0420 +0xf3 U+0421 +0xf4 U+0422 +0xf5 U+0423 +0xf6 U+0416 +0xf7 U+0412 +0xf8 U+042c +0xf9 U+042b +0xfa U+0417 +0xfb U+0428 +0xfc U+042d +0xfd U+0429 +0xfe U+0427 +0xff U+042a diff --git a/make/tools/CharsetMapping/MS1250.map b/make/tools/CharsetMapping/MS1250.map new file mode 100644 index 0000000000000000000000000000000000000000..b88030738d79cba897860b18ad8d8a0b2ad276f0 --- /dev/null +++ b/make/tools/CharsetMapping/MS1250.map @@ -0,0 +1,257 @@ +#Generated from MS1250.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+20ac +0x81 U+fffd +0x82 U+201a +0x83 U+fffd +0x84 U+201e +0x85 U+2026 +0x86 U+2020 +0x87 U+2021 +0x88 U+fffd +0x89 U+2030 +0x8a U+0160 +0x8b U+2039 +0x8c U+015a +0x8d U+0164 +0x8e U+017d +0x8f U+0179 +0x90 U+fffd +0x91 U+2018 +0x92 U+2019 +0x93 U+201c +0x94 U+201d +0x95 U+2022 +0x96 U+2013 +0x97 U+2014 +0x98 U+fffd +0x99 U+2122 +0x9a U+0161 +0x9b U+203a +0x9c U+015b +0x9d U+0165 +0x9e U+017e +0x9f U+017a +0xa0 U+00a0 +0xa1 U+02c7 +0xa2 U+02d8 +0xa3 U+0141 +0xa4 U+00a4 +0xa5 U+0104 +0xa6 U+00a6 +0xa7 U+00a7 +0xa8 U+00a8 +0xa9 U+00a9 +0xaa U+015e +0xab U+00ab +0xac U+00ac +0xad U+00ad +0xae U+00ae +0xaf U+017b +0xb0 U+00b0 +0xb1 U+00b1 +0xb2 U+02db +0xb3 U+0142 +0xb4 U+00b4 +0xb5 U+00b5 +0xb6 U+00b6 +0xb7 U+00b7 +0xb8 U+00b8 +0xb9 U+0105 +0xba U+015f +0xbb U+00bb +0xbc U+013d +0xbd U+02dd +0xbe U+013e +0xbf U+017c +0xc0 U+0154 +0xc1 U+00c1 +0xc2 U+00c2 +0xc3 U+0102 +0xc4 U+00c4 +0xc5 U+0139 +0xc6 U+0106 +0xc7 U+00c7 +0xc8 U+010c +0xc9 U+00c9 +0xca U+0118 +0xcb U+00cb +0xcc U+011a +0xcd U+00cd +0xce U+00ce +0xcf U+010e +0xd0 U+0110 +0xd1 U+0143 +0xd2 U+0147 +0xd3 U+00d3 +0xd4 U+00d4 +0xd5 U+0150 +0xd6 U+00d6 +0xd7 U+00d7 +0xd8 U+0158 +0xd9 U+016e +0xda U+00da +0xdb U+0170 +0xdc U+00dc +0xdd U+00dd +0xde U+0162 +0xdf U+00df +0xe0 U+0155 +0xe1 U+00e1 +0xe2 U+00e2 +0xe3 U+0103 +0xe4 U+00e4 +0xe5 U+013a +0xe6 U+0107 +0xe7 U+00e7 +0xe8 U+010d +0xe9 U+00e9 +0xea U+0119 +0xeb U+00eb +0xec U+011b +0xed U+00ed +0xee U+00ee +0xef U+010f +0xf0 U+0111 +0xf1 U+0144 +0xf2 U+0148 +0xf3 U+00f3 +0xf4 U+00f4 +0xf5 U+0151 +0xf6 U+00f6 +0xf7 U+00f7 +0xf8 U+0159 +0xf9 U+016f +0xfa U+00fa +0xfb U+0171 +0xfc U+00fc +0xfd U+00fd +0xfe U+0163 +0xff U+02d9 diff --git a/make/tools/CharsetMapping/MS1251.map b/make/tools/CharsetMapping/MS1251.map new file mode 100644 index 0000000000000000000000000000000000000000..97937f2d08e81809e0764fa3e3fd99f843825c48 --- /dev/null +++ b/make/tools/CharsetMapping/MS1251.map @@ -0,0 +1,257 @@ +#Generated from MS1251.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0402 +0x81 U+0403 +0x82 U+201a +0x83 U+0453 +0x84 U+201e +0x85 U+2026 +0x86 U+2020 +0x87 U+2021 +0x88 U+20ac +0x89 U+2030 +0x8a U+0409 +0x8b U+2039 +0x8c U+040a +0x8d U+040c +0x8e U+040b +0x8f U+040f +0x90 U+0452 +0x91 U+2018 +0x92 U+2019 +0x93 U+201c +0x94 U+201d +0x95 U+2022 +0x96 U+2013 +0x97 U+2014 +0x98 U+fffd +0x99 U+2122 +0x9a U+0459 +0x9b U+203a +0x9c U+045a +0x9d U+045c +0x9e U+045b +0x9f U+045f +0xa0 U+00a0 +0xa1 U+040e +0xa2 U+045e +0xa3 U+0408 +0xa4 U+00a4 +0xa5 U+0490 +0xa6 U+00a6 +0xa7 U+00a7 +0xa8 U+0401 +0xa9 U+00a9 +0xaa U+0404 +0xab U+00ab +0xac U+00ac +0xad U+00ad +0xae U+00ae +0xaf U+0407 +0xb0 U+00b0 +0xb1 U+00b1 +0xb2 U+0406 +0xb3 U+0456 +0xb4 U+0491 +0xb5 U+00b5 +0xb6 U+00b6 +0xb7 U+00b7 +0xb8 U+0451 +0xb9 U+2116 +0xba U+0454 +0xbb U+00bb +0xbc U+0458 +0xbd U+0405 +0xbe U+0455 +0xbf U+0457 +0xc0 U+0410 +0xc1 U+0411 +0xc2 U+0412 +0xc3 U+0413 +0xc4 U+0414 +0xc5 U+0415 +0xc6 U+0416 +0xc7 U+0417 +0xc8 U+0418 +0xc9 U+0419 +0xca U+041a +0xcb U+041b +0xcc U+041c +0xcd U+041d +0xce U+041e +0xcf U+041f +0xd0 U+0420 +0xd1 U+0421 +0xd2 U+0422 +0xd3 U+0423 +0xd4 U+0424 +0xd5 U+0425 +0xd6 U+0426 +0xd7 U+0427 +0xd8 U+0428 +0xd9 U+0429 +0xda U+042a +0xdb U+042b +0xdc U+042c +0xdd U+042d +0xde U+042e +0xdf U+042f +0xe0 U+0430 +0xe1 U+0431 +0xe2 U+0432 +0xe3 U+0433 +0xe4 U+0434 +0xe5 U+0435 +0xe6 U+0436 +0xe7 U+0437 +0xe8 U+0438 +0xe9 U+0439 +0xea U+043a +0xeb U+043b +0xec U+043c +0xed U+043d +0xee U+043e +0xef U+043f +0xf0 U+0440 +0xf1 U+0441 +0xf2 U+0442 +0xf3 U+0443 +0xf4 U+0444 +0xf5 U+0445 +0xf6 U+0446 +0xf7 U+0447 +0xf8 U+0448 +0xf9 U+0449 +0xfa U+044a +0xfb U+044b +0xfc U+044c +0xfd U+044d +0xfe U+044e +0xff U+044f diff --git a/make/tools/CharsetMapping/MS1252.map b/make/tools/CharsetMapping/MS1252.map new file mode 100644 index 0000000000000000000000000000000000000000..d339bc4988ed9fc87af74504812a04a9837677db --- /dev/null +++ b/make/tools/CharsetMapping/MS1252.map @@ -0,0 +1,257 @@ +#Generated from MS1252.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+20ac +0x81 U+fffd +0x82 U+201a +0x83 U+0192 +0x84 U+201e +0x85 U+2026 +0x86 U+2020 +0x87 U+2021 +0x88 U+02c6 +0x89 U+2030 +0x8a U+0160 +0x8b U+2039 +0x8c U+0152 +0x8d U+fffd +0x8e U+017d +0x8f U+fffd +0x90 U+fffd +0x91 U+2018 +0x92 U+2019 +0x93 U+201c +0x94 U+201d +0x95 U+2022 +0x96 U+2013 +0x97 U+2014 +0x98 U+02dc +0x99 U+2122 +0x9a U+0161 +0x9b U+203a +0x9c U+0153 +0x9d U+fffd +0x9e U+017e +0x9f U+0178 +0xa0 U+00a0 +0xa1 U+00a1 +0xa2 U+00a2 +0xa3 U+00a3 +0xa4 U+00a4 +0xa5 U+00a5 +0xa6 U+00a6 +0xa7 U+00a7 +0xa8 U+00a8 +0xa9 U+00a9 +0xaa U+00aa +0xab U+00ab +0xac U+00ac +0xad U+00ad +0xae U+00ae +0xaf U+00af +0xb0 U+00b0 +0xb1 U+00b1 +0xb2 U+00b2 +0xb3 U+00b3 +0xb4 U+00b4 +0xb5 U+00b5 +0xb6 U+00b6 +0xb7 U+00b7 +0xb8 U+00b8 +0xb9 U+00b9 +0xba U+00ba +0xbb U+00bb +0xbc U+00bc +0xbd U+00bd +0xbe U+00be +0xbf U+00bf +0xc0 U+00c0 +0xc1 U+00c1 +0xc2 U+00c2 +0xc3 U+00c3 +0xc4 U+00c4 +0xc5 U+00c5 +0xc6 U+00c6 +0xc7 U+00c7 +0xc8 U+00c8 +0xc9 U+00c9 +0xca U+00ca +0xcb U+00cb +0xcc U+00cc +0xcd U+00cd +0xce U+00ce +0xcf U+00cf +0xd0 U+00d0 +0xd1 U+00d1 +0xd2 U+00d2 +0xd3 U+00d3 +0xd4 U+00d4 +0xd5 U+00d5 +0xd6 U+00d6 +0xd7 U+00d7 +0xd8 U+00d8 +0xd9 U+00d9 +0xda U+00da +0xdb U+00db +0xdc U+00dc +0xdd U+00dd +0xde U+00de +0xdf U+00df +0xe0 U+00e0 +0xe1 U+00e1 +0xe2 U+00e2 +0xe3 U+00e3 +0xe4 U+00e4 +0xe5 U+00e5 +0xe6 U+00e6 +0xe7 U+00e7 +0xe8 U+00e8 +0xe9 U+00e9 +0xea U+00ea +0xeb U+00eb +0xec U+00ec +0xed U+00ed +0xee U+00ee +0xef U+00ef +0xf0 U+00f0 +0xf1 U+00f1 +0xf2 U+00f2 +0xf3 U+00f3 +0xf4 U+00f4 +0xf5 U+00f5 +0xf6 U+00f6 +0xf7 U+00f7 +0xf8 U+00f8 +0xf9 U+00f9 +0xfa U+00fa +0xfb U+00fb +0xfc U+00fc +0xfd U+00fd +0xfe U+00fe +0xff U+00ff diff --git a/make/tools/CharsetMapping/MS1253.map b/make/tools/CharsetMapping/MS1253.map new file mode 100644 index 0000000000000000000000000000000000000000..714e5cd8a9e0bf9a03b49dba21fd42c911fcb14c --- /dev/null +++ b/make/tools/CharsetMapping/MS1253.map @@ -0,0 +1,257 @@ +#Generated from MS1253.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+20ac +0x81 U+fffd +0x82 U+201a +0x83 U+0192 +0x84 U+201e +0x85 U+2026 +0x86 U+2020 +0x87 U+2021 +0x88 U+fffd +0x89 U+2030 +0x8a U+fffd +0x8b U+2039 +0x8c U+fffd +0x8d U+fffd +0x8e U+fffd +0x8f U+fffd +0x90 U+fffd +0x91 U+2018 +0x92 U+2019 +0x93 U+201c +0x94 U+201d +0x95 U+2022 +0x96 U+2013 +0x97 U+2014 +0x98 U+fffd +0x99 U+2122 +0x9a U+fffd +0x9b U+203a +0x9c U+fffd +0x9d U+fffd +0x9e U+fffd +0x9f U+fffd +0xa0 U+00a0 +0xa1 U+0385 +0xa2 U+0386 +0xa3 U+00a3 +0xa4 U+00a4 +0xa5 U+00a5 +0xa6 U+00a6 +0xa7 U+00a7 +0xa8 U+00a8 +0xa9 U+00a9 +0xaa U+fffd +0xab U+00ab +0xac U+00ac +0xad U+00ad +0xae U+00ae +0xaf U+2015 +0xb0 U+00b0 +0xb1 U+00b1 +0xb2 U+00b2 +0xb3 U+00b3 +0xb4 U+0384 +0xb5 U+00b5 +0xb6 U+00b6 +0xb7 U+00b7 +0xb8 U+0388 +0xb9 U+0389 +0xba U+038a +0xbb U+00bb +0xbc U+038c +0xbd U+00bd +0xbe U+038e +0xbf U+038f +0xc0 U+0390 +0xc1 U+0391 +0xc2 U+0392 +0xc3 U+0393 +0xc4 U+0394 +0xc5 U+0395 +0xc6 U+0396 +0xc7 U+0397 +0xc8 U+0398 +0xc9 U+0399 +0xca U+039a +0xcb U+039b +0xcc U+039c +0xcd U+039d +0xce U+039e +0xcf U+039f +0xd0 U+03a0 +0xd1 U+03a1 +0xd2 U+fffd +0xd3 U+03a3 +0xd4 U+03a4 +0xd5 U+03a5 +0xd6 U+03a6 +0xd7 U+03a7 +0xd8 U+03a8 +0xd9 U+03a9 +0xda U+03aa +0xdb U+03ab +0xdc U+03ac +0xdd U+03ad +0xde U+03ae +0xdf U+03af +0xe0 U+03b0 +0xe1 U+03b1 +0xe2 U+03b2 +0xe3 U+03b3 +0xe4 U+03b4 +0xe5 U+03b5 +0xe6 U+03b6 +0xe7 U+03b7 +0xe8 U+03b8 +0xe9 U+03b9 +0xea U+03ba +0xeb U+03bb +0xec U+03bc +0xed U+03bd +0xee U+03be +0xef U+03bf +0xf0 U+03c0 +0xf1 U+03c1 +0xf2 U+03c2 +0xf3 U+03c3 +0xf4 U+03c4 +0xf5 U+03c5 +0xf6 U+03c6 +0xf7 U+03c7 +0xf8 U+03c8 +0xf9 U+03c9 +0xfa U+03ca +0xfb U+03cb +0xfc U+03cc +0xfd U+03cd +0xfe U+03ce +0xff U+fffd diff --git a/make/tools/CharsetMapping/MS1254.map b/make/tools/CharsetMapping/MS1254.map new file mode 100644 index 0000000000000000000000000000000000000000..d28277579b3cbc1b0e6bba734eb4bfe5b644030c --- /dev/null +++ b/make/tools/CharsetMapping/MS1254.map @@ -0,0 +1,257 @@ +#Generated from MS1254.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+20ac +0x81 U+fffd +0x82 U+201a +0x83 U+0192 +0x84 U+201e +0x85 U+2026 +0x86 U+2020 +0x87 U+2021 +0x88 U+02c6 +0x89 U+2030 +0x8a U+0160 +0x8b U+2039 +0x8c U+0152 +0x8d U+fffd +0x8e U+fffd +0x8f U+fffd +0x90 U+fffd +0x91 U+2018 +0x92 U+2019 +0x93 U+201c +0x94 U+201d +0x95 U+2022 +0x96 U+2013 +0x97 U+2014 +0x98 U+02dc +0x99 U+2122 +0x9a U+0161 +0x9b U+203a +0x9c U+0153 +0x9d U+fffd +0x9e U+fffd +0x9f U+0178 +0xa0 U+00a0 +0xa1 U+00a1 +0xa2 U+00a2 +0xa3 U+00a3 +0xa4 U+00a4 +0xa5 U+00a5 +0xa6 U+00a6 +0xa7 U+00a7 +0xa8 U+00a8 +0xa9 U+00a9 +0xaa U+00aa +0xab U+00ab +0xac U+00ac +0xad U+00ad +0xae U+00ae +0xaf U+00af +0xb0 U+00b0 +0xb1 U+00b1 +0xb2 U+00b2 +0xb3 U+00b3 +0xb4 U+00b4 +0xb5 U+00b5 +0xb6 U+00b6 +0xb7 U+00b7 +0xb8 U+00b8 +0xb9 U+00b9 +0xba U+00ba +0xbb U+00bb +0xbc U+00bc +0xbd U+00bd +0xbe U+00be +0xbf U+00bf +0xc0 U+00c0 +0xc1 U+00c1 +0xc2 U+00c2 +0xc3 U+00c3 +0xc4 U+00c4 +0xc5 U+00c5 +0xc6 U+00c6 +0xc7 U+00c7 +0xc8 U+00c8 +0xc9 U+00c9 +0xca U+00ca +0xcb U+00cb +0xcc U+00cc +0xcd U+00cd +0xce U+00ce +0xcf U+00cf +0xd0 U+011e +0xd1 U+00d1 +0xd2 U+00d2 +0xd3 U+00d3 +0xd4 U+00d4 +0xd5 U+00d5 +0xd6 U+00d6 +0xd7 U+00d7 +0xd8 U+00d8 +0xd9 U+00d9 +0xda U+00da +0xdb U+00db +0xdc U+00dc +0xdd U+0130 +0xde U+015e +0xdf U+00df +0xe0 U+00e0 +0xe1 U+00e1 +0xe2 U+00e2 +0xe3 U+00e3 +0xe4 U+00e4 +0xe5 U+00e5 +0xe6 U+00e6 +0xe7 U+00e7 +0xe8 U+00e8 +0xe9 U+00e9 +0xea U+00ea +0xeb U+00eb +0xec U+00ec +0xed U+00ed +0xee U+00ee +0xef U+00ef +0xf0 U+011f +0xf1 U+00f1 +0xf2 U+00f2 +0xf3 U+00f3 +0xf4 U+00f4 +0xf5 U+00f5 +0xf6 U+00f6 +0xf7 U+00f7 +0xf8 U+00f8 +0xf9 U+00f9 +0xfa U+00fa +0xfb U+00fb +0xfc U+00fc +0xfd U+0131 +0xfe U+015f +0xff U+00ff diff --git a/make/tools/CharsetMapping/MS1255.map b/make/tools/CharsetMapping/MS1255.map new file mode 100644 index 0000000000000000000000000000000000000000..e2d2d3531a07e4a5913333debf89062e730366e9 --- /dev/null +++ b/make/tools/CharsetMapping/MS1255.map @@ -0,0 +1,257 @@ +#Generated from MS1255.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+20ac +0x81 U+fffd +0x82 U+201a +0x83 U+0192 +0x84 U+201e +0x85 U+2026 +0x86 U+2020 +0x87 U+2021 +0x88 U+02c6 +0x89 U+2030 +0x8a U+fffd +0x8b U+2039 +0x8c U+fffd +0x8d U+fffd +0x8e U+fffd +0x8f U+fffd +0x90 U+fffd +0x91 U+2018 +0x92 U+2019 +0x93 U+201c +0x94 U+201d +0x95 U+2022 +0x96 U+2013 +0x97 U+2014 +0x98 U+02dc +0x99 U+2122 +0x9a U+fffd +0x9b U+203a +0x9c U+fffd +0x9d U+fffd +0x9e U+fffd +0x9f U+fffd +0xa0 U+00a0 +0xa1 U+00a1 +0xa2 U+00a2 +0xa3 U+00a3 +0xa4 U+20aa +0xa5 U+00a5 +0xa6 U+00a6 +0xa7 U+00a7 +0xa8 U+00a8 +0xa9 U+00a9 +0xaa U+00d7 +0xab U+00ab +0xac U+00ac +0xad U+00ad +0xae U+00ae +0xaf U+00af +0xb0 U+00b0 +0xb1 U+00b1 +0xb2 U+00b2 +0xb3 U+00b3 +0xb4 U+00b4 +0xb5 U+00b5 +0xb6 U+00b6 +0xb7 U+00b7 +0xb8 U+00b8 +0xb9 U+00b9 +0xba U+00f7 +0xbb U+00bb +0xbc U+00bc +0xbd U+00bd +0xbe U+00be +0xbf U+00bf +0xc0 U+05b0 +0xc1 U+05b1 +0xc2 U+05b2 +0xc3 U+05b3 +0xc4 U+05b4 +0xc5 U+05b5 +0xc6 U+05b6 +0xc7 U+05b7 +0xc8 U+05b8 +0xc9 U+05b9 +0xca U+fffd +0xcb U+05bb +0xcc U+05bc +0xcd U+05bd +0xce U+05be +0xcf U+05bf +0xd0 U+05c0 +0xd1 U+05c1 +0xd2 U+05c2 +0xd3 U+05c3 +0xd4 U+05f0 +0xd5 U+05f1 +0xd6 U+05f2 +0xd7 U+05f3 +0xd8 U+05f4 +0xd9 U+fffd +0xda U+fffd +0xdb U+fffd +0xdc U+fffd +0xdd U+fffd +0xde U+fffd +0xdf U+fffd +0xe0 U+05d0 +0xe1 U+05d1 +0xe2 U+05d2 +0xe3 U+05d3 +0xe4 U+05d4 +0xe5 U+05d5 +0xe6 U+05d6 +0xe7 U+05d7 +0xe8 U+05d8 +0xe9 U+05d9 +0xea U+05da +0xeb U+05db +0xec U+05dc +0xed U+05dd +0xee U+05de +0xef U+05df +0xf0 U+05e0 +0xf1 U+05e1 +0xf2 U+05e2 +0xf3 U+05e3 +0xf4 U+05e4 +0xf5 U+05e5 +0xf6 U+05e6 +0xf7 U+05e7 +0xf8 U+05e8 +0xf9 U+05e9 +0xfa U+05ea +0xfb U+fffd +0xfc U+fffd +0xfd U+200e +0xfe U+200f +0xff U+fffd diff --git a/make/tools/CharsetMapping/MS1256.map b/make/tools/CharsetMapping/MS1256.map new file mode 100644 index 0000000000000000000000000000000000000000..6e0142c4d184c13bd7fcc086e5c8464942e92447 --- /dev/null +++ b/make/tools/CharsetMapping/MS1256.map @@ -0,0 +1,257 @@ +#Generated from MS1256.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+20ac +0x81 U+067e +0x82 U+201a +0x83 U+0192 +0x84 U+201e +0x85 U+2026 +0x86 U+2020 +0x87 U+2021 +0x88 U+02c6 +0x89 U+2030 +0x8a U+0679 +0x8b U+2039 +0x8c U+0152 +0x8d U+0686 +0x8e U+0698 +0x8f U+0688 +0x90 U+06af +0x91 U+2018 +0x92 U+2019 +0x93 U+201c +0x94 U+201d +0x95 U+2022 +0x96 U+2013 +0x97 U+2014 +0x98 U+06a9 +0x99 U+2122 +0x9a U+0691 +0x9b U+203a +0x9c U+0153 +0x9d U+200c +0x9e U+200d +0x9f U+06ba +0xa0 U+00a0 +0xa1 U+060c +0xa2 U+00a2 +0xa3 U+00a3 +0xa4 U+00a4 +0xa5 U+00a5 +0xa6 U+00a6 +0xa7 U+00a7 +0xa8 U+00a8 +0xa9 U+00a9 +0xaa U+06be +0xab U+00ab +0xac U+00ac +0xad U+00ad +0xae U+00ae +0xaf U+00af +0xb0 U+00b0 +0xb1 U+00b1 +0xb2 U+00b2 +0xb3 U+00b3 +0xb4 U+00b4 +0xb5 U+00b5 +0xb6 U+00b6 +0xb7 U+00b7 +0xb8 U+00b8 +0xb9 U+00b9 +0xba U+061b +0xbb U+00bb +0xbc U+00bc +0xbd U+00bd +0xbe U+00be +0xbf U+061f +0xc0 U+06c1 +0xc1 U+0621 +0xc2 U+0622 +0xc3 U+0623 +0xc4 U+0624 +0xc5 U+0625 +0xc6 U+0626 +0xc7 U+0627 +0xc8 U+0628 +0xc9 U+0629 +0xca U+062a +0xcb U+062b +0xcc U+062c +0xcd U+062d +0xce U+062e +0xcf U+062f +0xd0 U+0630 +0xd1 U+0631 +0xd2 U+0632 +0xd3 U+0633 +0xd4 U+0634 +0xd5 U+0635 +0xd6 U+0636 +0xd7 U+00d7 +0xd8 U+0637 +0xd9 U+0638 +0xda U+0639 +0xdb U+063a +0xdc U+0640 +0xdd U+0641 +0xde U+0642 +0xdf U+0643 +0xe0 U+00e0 +0xe1 U+0644 +0xe2 U+00e2 +0xe3 U+0645 +0xe4 U+0646 +0xe5 U+0647 +0xe6 U+0648 +0xe7 U+00e7 +0xe8 U+00e8 +0xe9 U+00e9 +0xea U+00ea +0xeb U+00eb +0xec U+0649 +0xed U+064a +0xee U+00ee +0xef U+00ef +0xf0 U+064b +0xf1 U+064c +0xf2 U+064d +0xf3 U+064e +0xf4 U+00f4 +0xf5 U+064f +0xf6 U+0650 +0xf7 U+00f7 +0xf8 U+0651 +0xf9 U+00f9 +0xfa U+0652 +0xfb U+00fb +0xfc U+00fc +0xfd U+200e +0xfe U+200f +0xff U+06d2 diff --git a/make/tools/CharsetMapping/MS1257.map b/make/tools/CharsetMapping/MS1257.map new file mode 100644 index 0000000000000000000000000000000000000000..9315f2450f43e27ad2f2a0b482e66562a742d92c --- /dev/null +++ b/make/tools/CharsetMapping/MS1257.map @@ -0,0 +1,257 @@ +#Generated from MS1257.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+20ac +0x81 U+fffd +0x82 U+201a +0x83 U+fffd +0x84 U+201e +0x85 U+2026 +0x86 U+2020 +0x87 U+2021 +0x88 U+fffd +0x89 U+2030 +0x8a U+fffd +0x8b U+2039 +0x8c U+fffd +0x8d U+00a8 +0x8e U+02c7 +0x8f U+00b8 +0x90 U+fffd +0x91 U+2018 +0x92 U+2019 +0x93 U+201c +0x94 U+201d +0x95 U+2022 +0x96 U+2013 +0x97 U+2014 +0x98 U+fffd +0x99 U+2122 +0x9a U+fffd +0x9b U+203a +0x9c U+fffd +0x9d U+00af +0x9e U+02db +0x9f U+fffd +0xa0 U+00a0 +0xa1 U+fffd +0xa2 U+00a2 +0xa3 U+00a3 +0xa4 U+00a4 +0xa5 U+fffd +0xa6 U+00a6 +0xa7 U+00a7 +0xa8 U+00d8 +0xa9 U+00a9 +0xaa U+0156 +0xab U+00ab +0xac U+00ac +0xad U+00ad +0xae U+00ae +0xaf U+00c6 +0xb0 U+00b0 +0xb1 U+00b1 +0xb2 U+00b2 +0xb3 U+00b3 +0xb4 U+00b4 +0xb5 U+00b5 +0xb6 U+00b6 +0xb7 U+00b7 +0xb8 U+00f8 +0xb9 U+00b9 +0xba U+0157 +0xbb U+00bb +0xbc U+00bc +0xbd U+00bd +0xbe U+00be +0xbf U+00e6 +0xc0 U+0104 +0xc1 U+012e +0xc2 U+0100 +0xc3 U+0106 +0xc4 U+00c4 +0xc5 U+00c5 +0xc6 U+0118 +0xc7 U+0112 +0xc8 U+010c +0xc9 U+00c9 +0xca U+0179 +0xcb U+0116 +0xcc U+0122 +0xcd U+0136 +0xce U+012a +0xcf U+013b +0xd0 U+0160 +0xd1 U+0143 +0xd2 U+0145 +0xd3 U+00d3 +0xd4 U+014c +0xd5 U+00d5 +0xd6 U+00d6 +0xd7 U+00d7 +0xd8 U+0172 +0xd9 U+0141 +0xda U+015a +0xdb U+016a +0xdc U+00dc +0xdd U+017b +0xde U+017d +0xdf U+00df +0xe0 U+0105 +0xe1 U+012f +0xe2 U+0101 +0xe3 U+0107 +0xe4 U+00e4 +0xe5 U+00e5 +0xe6 U+0119 +0xe7 U+0113 +0xe8 U+010d +0xe9 U+00e9 +0xea U+017a +0xeb U+0117 +0xec U+0123 +0xed U+0137 +0xee U+012b +0xef U+013c +0xf0 U+0161 +0xf1 U+0144 +0xf2 U+0146 +0xf3 U+00f3 +0xf4 U+014d +0xf5 U+00f5 +0xf6 U+00f6 +0xf7 U+00f7 +0xf8 U+0173 +0xf9 U+0142 +0xfa U+015b +0xfb U+016b +0xfc U+00fc +0xfd U+017c +0xfe U+017e +0xff U+02d9 diff --git a/make/tools/CharsetMapping/MS1258.map b/make/tools/CharsetMapping/MS1258.map new file mode 100644 index 0000000000000000000000000000000000000000..b557cedeaa129dde28412d680f87e794202f050c --- /dev/null +++ b/make/tools/CharsetMapping/MS1258.map @@ -0,0 +1,257 @@ +#Generated from MS1258.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+20ac +0x81 U+fffd +0x82 U+201a +0x83 U+0192 +0x84 U+201e +0x85 U+2026 +0x86 U+2020 +0x87 U+2021 +0x88 U+02c6 +0x89 U+2030 +0x8a U+fffd +0x8b U+2039 +0x8c U+0152 +0x8d U+fffd +0x8e U+fffd +0x8f U+fffd +0x90 U+fffd +0x91 U+2018 +0x92 U+2019 +0x93 U+201c +0x94 U+201d +0x95 U+2022 +0x96 U+2013 +0x97 U+2014 +0x98 U+02dc +0x99 U+2122 +0x9a U+fffd +0x9b U+203a +0x9c U+0153 +0x9d U+fffd +0x9e U+fffd +0x9f U+0178 +0xa0 U+00a0 +0xa1 U+00a1 +0xa2 U+00a2 +0xa3 U+00a3 +0xa4 U+00a4 +0xa5 U+00a5 +0xa6 U+00a6 +0xa7 U+00a7 +0xa8 U+00a8 +0xa9 U+00a9 +0xaa U+00aa +0xab U+00ab +0xac U+00ac +0xad U+00ad +0xae U+00ae +0xaf U+00af +0xb0 U+00b0 +0xb1 U+00b1 +0xb2 U+00b2 +0xb3 U+00b3 +0xb4 U+00b4 +0xb5 U+00b5 +0xb6 U+00b6 +0xb7 U+00b7 +0xb8 U+00b8 +0xb9 U+00b9 +0xba U+00ba +0xbb U+00bb +0xbc U+00bc +0xbd U+00bd +0xbe U+00be +0xbf U+00bf +0xc0 U+00c0 +0xc1 U+00c1 +0xc2 U+00c2 +0xc3 U+0102 +0xc4 U+00c4 +0xc5 U+00c5 +0xc6 U+00c6 +0xc7 U+00c7 +0xc8 U+00c8 +0xc9 U+00c9 +0xca U+00ca +0xcb U+00cb +0xcc U+0300 +0xcd U+00cd +0xce U+00ce +0xcf U+00cf +0xd0 U+0110 +0xd1 U+00d1 +0xd2 U+0309 +0xd3 U+00d3 +0xd4 U+00d4 +0xd5 U+01a0 +0xd6 U+00d6 +0xd7 U+00d7 +0xd8 U+00d8 +0xd9 U+00d9 +0xda U+00da +0xdb U+00db +0xdc U+00dc +0xdd U+01af +0xde U+0303 +0xdf U+00df +0xe0 U+00e0 +0xe1 U+00e1 +0xe2 U+00e2 +0xe3 U+0103 +0xe4 U+00e4 +0xe5 U+00e5 +0xe6 U+00e6 +0xe7 U+00e7 +0xe8 U+00e8 +0xe9 U+00e9 +0xea U+00ea +0xeb U+00eb +0xec U+0301 +0xed U+00ed +0xee U+00ee +0xef U+00ef +0xf0 U+0111 +0xf1 U+00f1 +0xf2 U+0323 +0xf3 U+00f3 +0xf4 U+00f4 +0xf5 U+01a1 +0xf6 U+00f6 +0xf7 U+00f7 +0xf8 U+00f8 +0xf9 U+00f9 +0xfa U+00fa +0xfb U+00fb +0xfc U+00fc +0xfd U+01b0 +0xfe U+20ab +0xff U+00ff diff --git a/make/tools/CharsetMapping/MS874.map b/make/tools/CharsetMapping/MS874.map new file mode 100644 index 0000000000000000000000000000000000000000..2e59d0c0ab761ce4946085edab931aa01479be43 --- /dev/null +++ b/make/tools/CharsetMapping/MS874.map @@ -0,0 +1,257 @@ +#Generated from MS874.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+20ac +0x81 U+fffd +0x82 U+fffd +0x83 U+fffd +0x84 U+fffd +0x85 U+2026 +0x86 U+fffd +0x87 U+fffd +0x88 U+fffd +0x89 U+fffd +0x8a U+fffd +0x8b U+fffd +0x8c U+fffd +0x8d U+fffd +0x8e U+fffd +0x8f U+fffd +0x90 U+fffd +0x91 U+2018 +0x92 U+2019 +0x93 U+201c +0x94 U+201d +0x95 U+2022 +0x96 U+2013 +0x97 U+2014 +0x98 U+fffd +0x99 U+fffd +0x9a U+fffd +0x9b U+fffd +0x9c U+fffd +0x9d U+fffd +0x9e U+fffd +0x9f U+fffd +0xa0 U+00a0 +0xa1 U+0e01 +0xa2 U+0e02 +0xa3 U+0e03 +0xa4 U+0e04 +0xa5 U+0e05 +0xa6 U+0e06 +0xa7 U+0e07 +0xa8 U+0e08 +0xa9 U+0e09 +0xaa U+0e0a +0xab U+0e0b +0xac U+0e0c +0xad U+0e0d +0xae U+0e0e +0xaf U+0e0f +0xb0 U+0e10 +0xb1 U+0e11 +0xb2 U+0e12 +0xb3 U+0e13 +0xb4 U+0e14 +0xb5 U+0e15 +0xb6 U+0e16 +0xb7 U+0e17 +0xb8 U+0e18 +0xb9 U+0e19 +0xba U+0e1a +0xbb U+0e1b +0xbc U+0e1c +0xbd U+0e1d +0xbe U+0e1e +0xbf U+0e1f +0xc0 U+0e20 +0xc1 U+0e21 +0xc2 U+0e22 +0xc3 U+0e23 +0xc4 U+0e24 +0xc5 U+0e25 +0xc6 U+0e26 +0xc7 U+0e27 +0xc8 U+0e28 +0xc9 U+0e29 +0xca U+0e2a +0xcb U+0e2b +0xcc U+0e2c +0xcd U+0e2d +0xce U+0e2e +0xcf U+0e2f +0xd0 U+0e30 +0xd1 U+0e31 +0xd2 U+0e32 +0xd3 U+0e33 +0xd4 U+0e34 +0xd5 U+0e35 +0xd6 U+0e36 +0xd7 U+0e37 +0xd8 U+0e38 +0xd9 U+0e39 +0xda U+0e3a +0xdb U+fffd +0xdc U+fffd +0xdd U+fffd +0xde U+fffd +0xdf U+0e3f +0xe0 U+0e40 +0xe1 U+0e41 +0xe2 U+0e42 +0xe3 U+0e43 +0xe4 U+0e44 +0xe5 U+0e45 +0xe6 U+0e46 +0xe7 U+0e47 +0xe8 U+0e48 +0xe9 U+0e49 +0xea U+0e4a +0xeb U+0e4b +0xec U+0e4c +0xed U+0e4d +0xee U+0e4e +0xef U+0e4f +0xf0 U+0e50 +0xf1 U+0e51 +0xf2 U+0e52 +0xf3 U+0e53 +0xf4 U+0e54 +0xf5 U+0e55 +0xf6 U+0e56 +0xf7 U+0e57 +0xf8 U+0e58 +0xf9 U+0e59 +0xfa U+0e5a +0xfb U+0e5b +0xfc U+fffd +0xfd U+fffd +0xfe U+fffd +0xff U+fffd diff --git a/make/tools/CharsetMapping/MacArabic.map b/make/tools/CharsetMapping/MacArabic.map new file mode 100644 index 0000000000000000000000000000000000000000..eff2b0fdb701b58a611610d0e6e086edc8cf8b98 --- /dev/null +++ b/make/tools/CharsetMapping/MacArabic.map @@ -0,0 +1,257 @@ +#Generated from MacArabic.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00c4 +0x81 U+00a0 +0x82 U+00c7 +0x83 U+00c9 +0x84 U+00d1 +0x85 U+00d6 +0x86 U+00dc +0x87 U+00e1 +0x88 U+00e0 +0x89 U+00e2 +0x8a U+00e4 +0x8b U+06ba +0x8c U+00ab +0x8d U+00e7 +0x8e U+00e9 +0x8f U+00e8 +0x90 U+00ea +0x91 U+00eb +0x92 U+00ed +0x93 U+2026 +0x94 U+00ee +0x95 U+00ef +0x96 U+00f1 +0x97 U+00f3 +0x98 U+00bb +0x99 U+00f4 +0x9a U+00f6 +0x9b U+00f7 +0x9c U+00fa +0x9d U+00f9 +0x9e U+00fb +0x9f U+00fc +0xa0 U+fffd +0xa1 U+fffd +0xa2 U+fffd +0xa3 U+fffd +0xa4 U+fffd +0xa5 U+066a +0xa6 U+fffd +0xa7 U+fffd +0xa8 U+fffd +0xa9 U+fffd +0xaa U+fffd +0xab U+fffd +0xac U+060c +0xad U+fffd +0xae U+fffd +0xaf U+fffd +0xb0 U+0660 +0xb1 U+0661 +0xb2 U+0662 +0xb3 U+0663 +0xb4 U+0664 +0xb5 U+0665 +0xb6 U+0666 +0xb7 U+0667 +0xb8 U+0668 +0xb9 U+0669 +0xba U+fffd +0xbb U+061b +0xbc U+fffd +0xbd U+fffd +0xbe U+fffd +0xbf U+061f +0xc0 U+066d +0xc1 U+0621 +0xc2 U+0622 +0xc3 U+0623 +0xc4 U+0624 +0xc5 U+0625 +0xc6 U+0626 +0xc7 U+0627 +0xc8 U+0628 +0xc9 U+0629 +0xca U+062a +0xcb U+062b +0xcc U+062c +0xcd U+062d +0xce U+062e +0xcf U+062f +0xd0 U+0630 +0xd1 U+0631 +0xd2 U+0632 +0xd3 U+0633 +0xd4 U+0634 +0xd5 U+0635 +0xd6 U+0636 +0xd7 U+0637 +0xd8 U+0638 +0xd9 U+0639 +0xda U+063a +0xdb U+fffd +0xdc U+fffd +0xdd U+fffd +0xde U+fffd +0xdf U+fffd +0xe0 U+0640 +0xe1 U+0641 +0xe2 U+0642 +0xe3 U+0643 +0xe4 U+0644 +0xe5 U+0645 +0xe6 U+0646 +0xe7 U+0647 +0xe8 U+0648 +0xe9 U+0649 +0xea U+064a +0xeb U+064b +0xec U+064c +0xed U+064d +0xee U+064e +0xef U+064f +0xf0 U+0650 +0xf1 U+0651 +0xf2 U+0652 +0xf3 U+067e +0xf4 U+0679 +0xf5 U+0686 +0xf6 U+06d5 +0xf7 U+06a4 +0xf8 U+06af +0xf9 U+0688 +0xfa U+0691 +0xfb U+fffd +0xfc U+fffd +0xfd U+fffd +0xfe U+0698 +0xff U+06d2 diff --git a/make/tools/CharsetMapping/MacCentralEurope.map b/make/tools/CharsetMapping/MacCentralEurope.map new file mode 100644 index 0000000000000000000000000000000000000000..0cc49633493336fad84e98ebdabd119cd60e4ccd --- /dev/null +++ b/make/tools/CharsetMapping/MacCentralEurope.map @@ -0,0 +1,257 @@ +#Generated from MacCentralEurope.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00c4 +0x81 U+0100 +0x82 U+0101 +0x83 U+00c9 +0x84 U+0104 +0x85 U+00d6 +0x86 U+00dc +0x87 U+00e1 +0x88 U+0105 +0x89 U+010c +0x8a U+00e4 +0x8b U+010d +0x8c U+0106 +0x8d U+0107 +0x8e U+00e9 +0x8f U+0179 +0x90 U+017a +0x91 U+010e +0x92 U+00ed +0x93 U+010f +0x94 U+0112 +0x95 U+0113 +0x96 U+0116 +0x97 U+00f3 +0x98 U+0117 +0x99 U+00f4 +0x9a U+00f6 +0x9b U+00f5 +0x9c U+00fa +0x9d U+011a +0x9e U+011b +0x9f U+00fc +0xa0 U+2020 +0xa1 U+00b0 +0xa2 U+0118 +0xa3 U+00a3 +0xa4 U+00a7 +0xa5 U+2022 +0xa6 U+00b6 +0xa7 U+00df +0xa8 U+00ae +0xa9 U+00a9 +0xaa U+2122 +0xab U+0119 +0xac U+00a8 +0xad U+2260 +0xae U+0123 +0xaf U+012e +0xb0 U+012f +0xb1 U+012a +0xb2 U+2264 +0xb3 U+2265 +0xb4 U+012b +0xb5 U+0136 +0xb6 U+2202 +0xb7 U+2211 +0xb8 U+0142 +0xb9 U+013b +0xba U+013c +0xbb U+013d +0xbc U+013e +0xbd U+0139 +0xbe U+013a +0xbf U+0145 +0xc0 U+0146 +0xc1 U+0143 +0xc2 U+00ac +0xc3 U+221a +0xc4 U+0144 +0xc5 U+0147 +0xc6 U+2206 +0xc7 U+00ab +0xc8 U+00bb +0xc9 U+2026 +0xca U+00a0 +0xcb U+0148 +0xcc U+0150 +0xcd U+00d5 +0xce U+0151 +0xcf U+014c +0xd0 U+2013 +0xd1 U+2014 +0xd2 U+201c +0xd3 U+201d +0xd4 U+2018 +0xd5 U+2019 +0xd6 U+00f7 +0xd7 U+25ca +0xd8 U+014d +0xd9 U+0154 +0xda U+0155 +0xdb U+0158 +0xdc U+2039 +0xdd U+203a +0xde U+0159 +0xdf U+0156 +0xe0 U+0157 +0xe1 U+0160 +0xe2 U+201a +0xe3 U+201e +0xe4 U+0161 +0xe5 U+015a +0xe6 U+015b +0xe7 U+00c1 +0xe8 U+0164 +0xe9 U+0165 +0xea U+00cd +0xeb U+017d +0xec U+017e +0xed U+016a +0xee U+00d3 +0xef U+00d4 +0xf0 U+016b +0xf1 U+016e +0xf2 U+00da +0xf3 U+016f +0xf4 U+0170 +0xf5 U+0171 +0xf6 U+0172 +0xf7 U+0173 +0xf8 U+00dd +0xf9 U+00fd +0xfa U+0137 +0xfb U+017b +0xfc U+0141 +0xfd U+017c +0xfe U+0122 +0xff U+02c7 diff --git a/make/tools/CharsetMapping/MacCroatian.map b/make/tools/CharsetMapping/MacCroatian.map new file mode 100644 index 0000000000000000000000000000000000000000..25b1bbf08509b9bfeec57abe4542a8c608544587 --- /dev/null +++ b/make/tools/CharsetMapping/MacCroatian.map @@ -0,0 +1,257 @@ +#Generated from MacCroatian.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00c4 +0x81 U+00c5 +0x82 U+00c7 +0x83 U+00c9 +0x84 U+00d1 +0x85 U+00d6 +0x86 U+00dc +0x87 U+00e1 +0x88 U+00e0 +0x89 U+00e2 +0x8a U+00e4 +0x8b U+00e3 +0x8c U+00e5 +0x8d U+00e7 +0x8e U+00e9 +0x8f U+00e8 +0x90 U+00ea +0x91 U+00eb +0x92 U+00ed +0x93 U+00ec +0x94 U+00ee +0x95 U+00ef +0x96 U+00f1 +0x97 U+00f3 +0x98 U+00f2 +0x99 U+00f4 +0x9a U+00f6 +0x9b U+00f5 +0x9c U+00fa +0x9d U+00f9 +0x9e U+00fb +0x9f U+00fc +0xa0 U+2020 +0xa1 U+00b0 +0xa2 U+00a2 +0xa3 U+00a3 +0xa4 U+00a7 +0xa5 U+2022 +0xa6 U+00b6 +0xa7 U+00df +0xa8 U+00ae +0xa9 U+0160 +0xaa U+2122 +0xab U+00b4 +0xac U+00a8 +0xad U+2260 +0xae U+017d +0xaf U+00d8 +0xb0 U+221e +0xb1 U+00b1 +0xb2 U+2264 +0xb3 U+2265 +0xb4 U+2206 +0xb5 U+00b5 +0xb6 U+2202 +0xb7 U+2211 +0xb8 U+220f +0xb9 U+0161 +0xba U+222b +0xbb U+00aa +0xbc U+00ba +0xbd U+2126 +0xbe U+017e +0xbf U+00f8 +0xc0 U+00bf +0xc1 U+00a1 +0xc2 U+00ac +0xc3 U+221a +0xc4 U+0192 +0xc5 U+2248 +0xc6 U+0106 +0xc7 U+00ab +0xc8 U+010c +0xc9 U+2026 +0xca U+00a0 +0xcb U+00c0 +0xcc U+00c3 +0xcd U+00d5 +0xce U+0152 +0xcf U+0153 +0xd0 U+0110 +0xd1 U+2014 +0xd2 U+201c +0xd3 U+201d +0xd4 U+2018 +0xd5 U+2019 +0xd6 U+00f7 +0xd7 U+25ca +0xd8 U+f8ff +0xd9 U+00a9 +0xda U+2044 +0xdb U+00a4 +0xdc U+2039 +0xdd U+203a +0xde U+00c6 +0xdf U+00bb +0xe0 U+2013 +0xe1 U+00b7 +0xe2 U+201a +0xe3 U+201e +0xe4 U+2030 +0xe5 U+00c2 +0xe6 U+0107 +0xe7 U+00c1 +0xe8 U+010d +0xe9 U+00c8 +0xea U+00cd +0xeb U+00ce +0xec U+00cf +0xed U+00cc +0xee U+00d3 +0xef U+00d4 +0xf0 U+0111 +0xf1 U+00d2 +0xf2 U+00da +0xf3 U+00db +0xf4 U+00d9 +0xf5 U+0131 +0xf6 U+02c6 +0xf7 U+02dc +0xf8 U+00af +0xf9 U+03c0 +0xfa U+00cb +0xfb U+02da +0xfc U+00b8 +0xfd U+00ca +0xfe U+00e6 +0xff U+02c7 diff --git a/make/tools/CharsetMapping/MacCyrillic.map b/make/tools/CharsetMapping/MacCyrillic.map new file mode 100644 index 0000000000000000000000000000000000000000..ab2ff857b0fa0862157c6e1f6e8cb9d977402fcd --- /dev/null +++ b/make/tools/CharsetMapping/MacCyrillic.map @@ -0,0 +1,257 @@ +#Generated from MacCyrillic.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0410 +0x81 U+0411 +0x82 U+0412 +0x83 U+0413 +0x84 U+0414 +0x85 U+0415 +0x86 U+0416 +0x87 U+0417 +0x88 U+0418 +0x89 U+0419 +0x8a U+041a +0x8b U+041b +0x8c U+041c +0x8d U+041d +0x8e U+041e +0x8f U+041f +0x90 U+0420 +0x91 U+0421 +0x92 U+0422 +0x93 U+0423 +0x94 U+0424 +0x95 U+0425 +0x96 U+0426 +0x97 U+0427 +0x98 U+0428 +0x99 U+0429 +0x9a U+042a +0x9b U+042b +0x9c U+042c +0x9d U+042d +0x9e U+042e +0x9f U+042f +0xa0 U+2020 +0xa1 U+00b0 +0xa2 U+00a2 +0xa3 U+00a3 +0xa4 U+00a7 +0xa5 U+2022 +0xa6 U+00b6 +0xa7 U+0406 +0xa8 U+00ae +0xa9 U+00a9 +0xaa U+2122 +0xab U+0402 +0xac U+0452 +0xad U+2260 +0xae U+0403 +0xaf U+0453 +0xb0 U+221e +0xb1 U+00b1 +0xb2 U+2264 +0xb3 U+2265 +0xb4 U+0456 +0xb5 U+00b5 +0xb6 U+2202 +0xb7 U+0408 +0xb8 U+0404 +0xb9 U+0454 +0xba U+0407 +0xbb U+0457 +0xbc U+0409 +0xbd U+0459 +0xbe U+040a +0xbf U+045a +0xc0 U+0458 +0xc1 U+0405 +0xc2 U+00ac +0xc3 U+221a +0xc4 U+0192 +0xc5 U+2248 +0xc6 U+2206 +0xc7 U+00ab +0xc8 U+00bb +0xc9 U+2026 +0xca U+00a0 +0xcb U+040b +0xcc U+045b +0xcd U+040c +0xce U+045c +0xcf U+0455 +0xd0 U+2013 +0xd1 U+2014 +0xd2 U+201c +0xd3 U+201d +0xd4 U+2018 +0xd5 U+2019 +0xd6 U+00f7 +0xd7 U+201e +0xd8 U+040e +0xd9 U+045e +0xda U+040f +0xdb U+045f +0xdc U+2116 +0xdd U+0401 +0xde U+0451 +0xdf U+044f +0xe0 U+0430 +0xe1 U+0431 +0xe2 U+0432 +0xe3 U+0433 +0xe4 U+0434 +0xe5 U+0435 +0xe6 U+0436 +0xe7 U+0437 +0xe8 U+0438 +0xe9 U+0439 +0xea U+043a +0xeb U+043b +0xec U+043c +0xed U+043d +0xee U+043e +0xef U+043f +0xf0 U+0440 +0xf1 U+0441 +0xf2 U+0442 +0xf3 U+0443 +0xf4 U+0444 +0xf5 U+0445 +0xf6 U+0446 +0xf7 U+0447 +0xf8 U+0448 +0xf9 U+0449 +0xfa U+044a +0xfb U+044b +0xfc U+044c +0xfd U+044d +0xfe U+044e +0xff U+00a4 diff --git a/make/tools/CharsetMapping/MacDingbat.map b/make/tools/CharsetMapping/MacDingbat.map new file mode 100644 index 0000000000000000000000000000000000000000..93abacaf434e8a3ae66d3aaf97a87f9906b359a5 --- /dev/null +++ b/make/tools/CharsetMapping/MacDingbat.map @@ -0,0 +1,257 @@ +#Generated from MacDingbat.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+2701 +0x22 U+2702 +0x23 U+2703 +0x24 U+2704 +0x25 U+260e +0x26 U+2706 +0x27 U+2707 +0x28 U+2708 +0x29 U+2709 +0x2a U+261b +0x2b U+261e +0x2c U+270c +0x2d U+270d +0x2e U+270e +0x2f U+270f +0x30 U+2710 +0x31 U+2711 +0x32 U+2712 +0x33 U+2713 +0x34 U+2714 +0x35 U+2715 +0x36 U+2716 +0x37 U+2717 +0x38 U+2718 +0x39 U+2719 +0x3a U+271a +0x3b U+271b +0x3c U+271c +0x3d U+271d +0x3e U+271e +0x3f U+271f +0x40 U+2720 +0x41 U+2721 +0x42 U+2722 +0x43 U+2723 +0x44 U+2724 +0x45 U+2725 +0x46 U+2726 +0x47 U+2727 +0x48 U+2605 +0x49 U+2729 +0x4a U+272a +0x4b U+272b +0x4c U+272c +0x4d U+272d +0x4e U+272e +0x4f U+272f +0x50 U+2730 +0x51 U+2731 +0x52 U+2732 +0x53 U+2733 +0x54 U+2734 +0x55 U+2735 +0x56 U+2736 +0x57 U+2737 +0x58 U+2738 +0x59 U+2739 +0x5a U+273a +0x5b U+273b +0x5c U+273c +0x5d U+273d +0x5e U+273e +0x5f U+273f +0x60 U+2740 +0x61 U+2741 +0x62 U+2742 +0x63 U+2743 +0x64 U+2744 +0x65 U+2745 +0x66 U+2746 +0x67 U+2747 +0x68 U+2748 +0x69 U+2749 +0x6a U+274a +0x6b U+274b +0x6c U+25cf +0x6d U+274d +0x6e U+25a0 +0x6f U+274f +0x70 U+2750 +0x71 U+2751 +0x72 U+2752 +0x73 U+25b2 +0x74 U+25bc +0x75 U+25c6 +0x76 U+2756 +0x77 U+25d7 +0x78 U+2758 +0x79 U+2759 +0x7a U+275a +0x7b U+275b +0x7c U+275c +0x7d U+275d +0x7e U+275e +0x7f U+007f +0x80 U+fffd +0x81 U+fffd +0x82 U+fffd +0x83 U+fffd +0x84 U+fffd +0x85 U+fffd +0x86 U+fffd +0x87 U+fffd +0x88 U+fffd +0x89 U+fffd +0x8a U+fffd +0x8b U+fffd +0x8c U+fffd +0x8d U+fffd +0x8e U+fffd +0x8f U+fffd +0x90 U+fffd +0x91 U+fffd +0x92 U+fffd +0x93 U+fffd +0x94 U+fffd +0x95 U+fffd +0x96 U+fffd +0x97 U+fffd +0x98 U+fffd +0x99 U+fffd +0x9a U+fffd +0x9b U+fffd +0x9c U+fffd +0x9d U+fffd +0x9e U+fffd +0x9f U+fffd +0xa0 U+fffd +0xa1 U+2761 +0xa2 U+2762 +0xa3 U+2763 +0xa4 U+2764 +0xa5 U+2765 +0xa6 U+2766 +0xa7 U+2767 +0xa8 U+2663 +0xa9 U+2666 +0xaa U+2665 +0xab U+2660 +0xac U+2460 +0xad U+2461 +0xae U+2462 +0xaf U+2463 +0xb0 U+2464 +0xb1 U+2465 +0xb2 U+2466 +0xb3 U+2467 +0xb4 U+2468 +0xb5 U+2469 +0xb6 U+2776 +0xb7 U+2777 +0xb8 U+2778 +0xb9 U+2779 +0xba U+277a +0xbb U+277b +0xbc U+277c +0xbd U+277d +0xbe U+277e +0xbf U+277f +0xc0 U+2780 +0xc1 U+2781 +0xc2 U+2782 +0xc3 U+2783 +0xc4 U+2784 +0xc5 U+2785 +0xc6 U+2786 +0xc7 U+2787 +0xc8 U+2788 +0xc9 U+2789 +0xca U+278a +0xcb U+278b +0xcc U+278c +0xcd U+278d +0xce U+278e +0xcf U+278f +0xd0 U+2790 +0xd1 U+2791 +0xd2 U+2792 +0xd3 U+2793 +0xd4 U+2794 +0xd5 U+2192 +0xd6 U+2194 +0xd7 U+2195 +0xd8 U+2798 +0xd9 U+2799 +0xda U+279a +0xdb U+279b +0xdc U+279c +0xdd U+279d +0xde U+279e +0xdf U+279f +0xe0 U+27a0 +0xe1 U+27a1 +0xe2 U+27a2 +0xe3 U+27a3 +0xe4 U+27a4 +0xe5 U+27a5 +0xe6 U+27a6 +0xe7 U+27a7 +0xe8 U+27a8 +0xe9 U+27a9 +0xea U+27aa +0xeb U+27ab +0xec U+27ac +0xed U+27ad +0xee U+27ae +0xef U+27af +0xf0 U+fffd +0xf1 U+27b1 +0xf2 U+27b2 +0xf3 U+27b3 +0xf4 U+27b4 +0xf5 U+27b5 +0xf6 U+27b6 +0xf7 U+27b7 +0xf8 U+27b8 +0xf9 U+27b9 +0xfa U+27ba +0xfb U+27bb +0xfc U+27bc +0xfd U+27bd +0xfe U+27be +0xff U+fffd diff --git a/make/tools/CharsetMapping/MacGreek.map b/make/tools/CharsetMapping/MacGreek.map new file mode 100644 index 0000000000000000000000000000000000000000..aa88a24314fb970c18a1bbd344cc0c0c64e9f573 --- /dev/null +++ b/make/tools/CharsetMapping/MacGreek.map @@ -0,0 +1,257 @@ +#Generated from MacGreek.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00c4 +0x81 U+00b9 +0x82 U+00b2 +0x83 U+00c9 +0x84 U+00b3 +0x85 U+00d6 +0x86 U+00dc +0x87 U+0385 +0x88 U+00e0 +0x89 U+00e2 +0x8a U+00e4 +0x8b U+0384 +0x8c U+00a8 +0x8d U+00e7 +0x8e U+00e9 +0x8f U+00e8 +0x90 U+00ea +0x91 U+00eb +0x92 U+00a3 +0x93 U+2122 +0x94 U+00ee +0x95 U+00ef +0x96 U+2022 +0x97 U+00bd +0x98 U+2030 +0x99 U+00f4 +0x9a U+00f6 +0x9b U+00a6 +0x9c U+00ad +0x9d U+00f9 +0x9e U+00fb +0x9f U+00fc +0xa0 U+2020 +0xa1 U+0393 +0xa2 U+0394 +0xa3 U+0398 +0xa4 U+039b +0xa5 U+039e +0xa6 U+03a0 +0xa7 U+00df +0xa8 U+00ae +0xa9 U+00a9 +0xaa U+03a3 +0xab U+03aa +0xac U+00a7 +0xad U+2260 +0xae U+00b0 +0xaf U+0387 +0xb0 U+0391 +0xb1 U+00b1 +0xb2 U+2264 +0xb3 U+2265 +0xb4 U+00a5 +0xb5 U+0392 +0xb6 U+0395 +0xb7 U+0396 +0xb8 U+0397 +0xb9 U+0399 +0xba U+039a +0xbb U+039c +0xbc U+03a6 +0xbd U+03ab +0xbe U+03a8 +0xbf U+03a9 +0xc0 U+03ac +0xc1 U+039d +0xc2 U+00ac +0xc3 U+039f +0xc4 U+03a1 +0xc5 U+2248 +0xc6 U+03a4 +0xc7 U+00ab +0xc8 U+00bb +0xc9 U+2026 +0xca U+00a0 +0xcb U+03a5 +0xcc U+03a7 +0xcd U+0386 +0xce U+0388 +0xcf U+0153 +0xd0 U+2013 +0xd1 U+2015 +0xd2 U+201c +0xd3 U+201d +0xd4 U+2018 +0xd5 U+2019 +0xd6 U+00f7 +0xd7 U+0389 +0xd8 U+038a +0xd9 U+038c +0xda U+038e +0xdb U+03ad +0xdc U+03ae +0xdd U+03af +0xde U+03cc +0xdf U+038f +0xe0 U+03cd +0xe1 U+03b1 +0xe2 U+03b2 +0xe3 U+03c8 +0xe4 U+03b4 +0xe5 U+03b5 +0xe6 U+03c6 +0xe7 U+03b3 +0xe8 U+03b7 +0xe9 U+03b9 +0xea U+03be +0xeb U+03ba +0xec U+03bb +0xed U+03bc +0xee U+03bd +0xef U+03bf +0xf0 U+03c0 +0xf1 U+03ce +0xf2 U+03c1 +0xf3 U+03c3 +0xf4 U+03c4 +0xf5 U+03b8 +0xf6 U+03c9 +0xf7 U+03c2 +0xf8 U+03c7 +0xf9 U+03c5 +0xfa U+03b6 +0xfb U+03ca +0xfc U+03cb +0xfd U+0390 +0xfe U+03b0 +0xff U+fffd diff --git a/make/tools/CharsetMapping/MacHebrew.map b/make/tools/CharsetMapping/MacHebrew.map new file mode 100644 index 0000000000000000000000000000000000000000..d847d1cb6838c9a95a2496e42249ea617781873e --- /dev/null +++ b/make/tools/CharsetMapping/MacHebrew.map @@ -0,0 +1,257 @@ +#Generated from MacHebrew.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00c4 +0x81 U+fb1f +0x82 U+00c7 +0x83 U+00c9 +0x84 U+00d1 +0x85 U+00d6 +0x86 U+00dc +0x87 U+00e1 +0x88 U+00e0 +0x89 U+00e2 +0x8a U+00e4 +0x8b U+00e3 +0x8c U+00e5 +0x8d U+00e7 +0x8e U+00e9 +0x8f U+00e8 +0x90 U+00ea +0x91 U+00eb +0x92 U+00ed +0x93 U+00ec +0x94 U+00ee +0x95 U+00ef +0x96 U+00f1 +0x97 U+00f3 +0x98 U+00f2 +0x99 U+00f4 +0x9a U+00f6 +0x9b U+00f5 +0x9c U+00fa +0x9d U+00f9 +0x9e U+00fb +0x9f U+00fc +0xa0 U+fffd +0xa1 U+fffd +0xa2 U+fffd +0xa3 U+fffd +0xa4 U+fffd +0xa5 U+fffd +0xa6 U+20aa +0xa7 U+fffd +0xa8 U+fffd +0xa9 U+fffd +0xaa U+fffd +0xab U+fffd +0xac U+fffd +0xad U+fffd +0xae U+fffd +0xaf U+fffd +0xb0 U+fffd +0xb1 U+fffd +0xb2 U+fffd +0xb3 U+fffd +0xb4 U+fffd +0xb5 U+fffd +0xb6 U+fffd +0xb7 U+fffd +0xb8 U+fffd +0xb9 U+fffd +0xba U+fffd +0xbb U+fffd +0xbc U+fffd +0xbd U+fffd +0xbe U+fffd +0xbf U+fffd +0xc0 U+fffd +0xc1 U+201e +0xc2 U+fffd +0xc3 U+fffd +0xc4 U+fffd +0xc5 U+fffd +0xc6 U+05bc +0xc7 U+fb4b +0xc8 U+fb35 +0xc9 U+2026 +0xca U+00a0 +0xcb U+05b8 +0xcc U+05b7 +0xcd U+05b5 +0xce U+05b6 +0xcf U+05b4 +0xd0 U+2013 +0xd1 U+2014 +0xd2 U+201c +0xd3 U+201d +0xd4 U+2018 +0xd5 U+2019 +0xd6 U+fb2a +0xd7 U+fb2b +0xd8 U+05bf +0xd9 U+05b0 +0xda U+05b2 +0xdb U+05b1 +0xdc U+05bb +0xdd U+05b9 +0xde U+fffd +0xdf U+05b3 +0xe0 U+05d0 +0xe1 U+05d1 +0xe2 U+05d2 +0xe3 U+05d3 +0xe4 U+05d4 +0xe5 U+05d5 +0xe6 U+05d6 +0xe7 U+05d7 +0xe8 U+05d8 +0xe9 U+05d9 +0xea U+05da +0xeb U+05db +0xec U+05dc +0xed U+05dd +0xee U+05de +0xef U+05df +0xf0 U+05e0 +0xf1 U+05e1 +0xf2 U+05e2 +0xf3 U+05e3 +0xf4 U+05e4 +0xf5 U+05e5 +0xf6 U+05e6 +0xf7 U+05e7 +0xf8 U+05e8 +0xf9 U+05e9 +0xfa U+05ea +0xfb U+fffd +0xfc U+fffd +0xfd U+fffd +0xfe U+fffd +0xff U+fffd diff --git a/make/tools/CharsetMapping/MacIceland.map b/make/tools/CharsetMapping/MacIceland.map new file mode 100644 index 0000000000000000000000000000000000000000..b47d11a814bd3454e1b7f451e1e0d08e638ba648 --- /dev/null +++ b/make/tools/CharsetMapping/MacIceland.map @@ -0,0 +1,257 @@ +#Generated from MacIceland.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00c4 +0x81 U+00c5 +0x82 U+00c7 +0x83 U+00c9 +0x84 U+00d1 +0x85 U+00d6 +0x86 U+00dc +0x87 U+00e1 +0x88 U+00e0 +0x89 U+00e2 +0x8a U+00e4 +0x8b U+00e3 +0x8c U+00e5 +0x8d U+00e7 +0x8e U+00e9 +0x8f U+00e8 +0x90 U+00ea +0x91 U+00eb +0x92 U+00ed +0x93 U+00ec +0x94 U+00ee +0x95 U+00ef +0x96 U+00f1 +0x97 U+00f3 +0x98 U+00f2 +0x99 U+00f4 +0x9a U+00f6 +0x9b U+00f5 +0x9c U+00fa +0x9d U+00f9 +0x9e U+00fb +0x9f U+00fc +0xa0 U+00dd +0xa1 U+00b0 +0xa2 U+00a2 +0xa3 U+00a3 +0xa4 U+00a7 +0xa5 U+2022 +0xa6 U+00b6 +0xa7 U+00df +0xa8 U+00ae +0xa9 U+00a9 +0xaa U+2122 +0xab U+00b4 +0xac U+00a8 +0xad U+2260 +0xae U+00c6 +0xaf U+00d8 +0xb0 U+221e +0xb1 U+00b1 +0xb2 U+2264 +0xb3 U+2265 +0xb4 U+00a5 +0xb5 U+00b5 +0xb6 U+2202 +0xb7 U+2211 +0xb8 U+220f +0xb9 U+03c0 +0xba U+222b +0xbb U+00aa +0xbc U+00ba +0xbd U+2126 +0xbe U+00e6 +0xbf U+00f8 +0xc0 U+00bf +0xc1 U+00a1 +0xc2 U+00ac +0xc3 U+221a +0xc4 U+0192 +0xc5 U+2248 +0xc6 U+2206 +0xc7 U+00ab +0xc8 U+00bb +0xc9 U+2026 +0xca U+00a0 +0xcb U+00c0 +0xcc U+00c3 +0xcd U+00d5 +0xce U+0152 +0xcf U+0153 +0xd0 U+2013 +0xd1 U+2014 +0xd2 U+201c +0xd3 U+201d +0xd4 U+2018 +0xd5 U+2019 +0xd6 U+00f7 +0xd7 U+25ca +0xd8 U+00ff +0xd9 U+0178 +0xda U+2044 +0xdb U+00a4 +0xdc U+00d0 +0xdd U+00f0 +0xde U+00de +0xdf U+00fe +0xe0 U+00fd +0xe1 U+00b7 +0xe2 U+201a +0xe3 U+201e +0xe4 U+2030 +0xe5 U+00c2 +0xe6 U+00ca +0xe7 U+00c1 +0xe8 U+00cb +0xe9 U+00c8 +0xea U+00cd +0xeb U+00ce +0xec U+00cf +0xed U+00cc +0xee U+00d3 +0xef U+00d4 +0xf0 U+f8ff +0xf1 U+00d2 +0xf2 U+00da +0xf3 U+00db +0xf4 U+00d9 +0xf5 U+0131 +0xf6 U+02c6 +0xf7 U+02dc +0xf8 U+00af +0xf9 U+02d8 +0xfa U+02d9 +0xfb U+02da +0xfc U+00b8 +0xfd U+02dd +0xfe U+02db +0xff U+02c7 diff --git a/make/tools/CharsetMapping/MacRoman.map b/make/tools/CharsetMapping/MacRoman.map new file mode 100644 index 0000000000000000000000000000000000000000..4d27bb812f6a48bfd554fd3ebd21417658f93e7a --- /dev/null +++ b/make/tools/CharsetMapping/MacRoman.map @@ -0,0 +1,257 @@ +#Generated from MacRoman.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00c4 +0x81 U+00c5 +0x82 U+00c7 +0x83 U+00c9 +0x84 U+00d1 +0x85 U+00d6 +0x86 U+00dc +0x87 U+00e1 +0x88 U+00e0 +0x89 U+00e2 +0x8a U+00e4 +0x8b U+00e3 +0x8c U+00e5 +0x8d U+00e7 +0x8e U+00e9 +0x8f U+00e8 +0x90 U+00ea +0x91 U+00eb +0x92 U+00ed +0x93 U+00ec +0x94 U+00ee +0x95 U+00ef +0x96 U+00f1 +0x97 U+00f3 +0x98 U+00f2 +0x99 U+00f4 +0x9a U+00f6 +0x9b U+00f5 +0x9c U+00fa +0x9d U+00f9 +0x9e U+00fb +0x9f U+00fc +0xa0 U+2020 +0xa1 U+00b0 +0xa2 U+00a2 +0xa3 U+00a3 +0xa4 U+00a7 +0xa5 U+2022 +0xa6 U+00b6 +0xa7 U+00df +0xa8 U+00ae +0xa9 U+00a9 +0xaa U+2122 +0xab U+00b4 +0xac U+00a8 +0xad U+2260 +0xae U+00c6 +0xaf U+00d8 +0xb0 U+221e +0xb1 U+00b1 +0xb2 U+2264 +0xb3 U+2265 +0xb4 U+00a5 +0xb5 U+00b5 +0xb6 U+2202 +0xb7 U+2211 +0xb8 U+220f +0xb9 U+03c0 +0xba U+222b +0xbb U+00aa +0xbc U+00ba +0xbd U+03a9 +0xbe U+00e6 +0xbf U+00f8 +0xc0 U+00bf +0xc1 U+00a1 +0xc2 U+00ac +0xc3 U+221a +0xc4 U+0192 +0xc5 U+2248 +0xc6 U+2206 +0xc7 U+00ab +0xc8 U+00bb +0xc9 U+2026 +0xca U+00a0 +0xcb U+00c0 +0xcc U+00c3 +0xcd U+00d5 +0xce U+0152 +0xcf U+0153 +0xd0 U+2013 +0xd1 U+2014 +0xd2 U+201c +0xd3 U+201d +0xd4 U+2018 +0xd5 U+2019 +0xd6 U+00f7 +0xd7 U+25ca +0xd8 U+00ff +0xd9 U+0178 +0xda U+2044 +0xdb U+20ac +0xdc U+2039 +0xdd U+203a +0xde U+fb01 +0xdf U+fb02 +0xe0 U+2021 +0xe1 U+00b7 +0xe2 U+201a +0xe3 U+201e +0xe4 U+2030 +0xe5 U+00c2 +0xe6 U+00ca +0xe7 U+00c1 +0xe8 U+00cb +0xe9 U+00c8 +0xea U+00cd +0xeb U+00ce +0xec U+00cf +0xed U+00cc +0xee U+00d3 +0xef U+00d4 +0xf0 U+f8ff +0xf1 U+00d2 +0xf2 U+00da +0xf3 U+00db +0xf4 U+00d9 +0xf5 U+0131 +0xf6 U+02c6 +0xf7 U+02dc +0xf8 U+00af +0xf9 U+02d8 +0xfa U+02d9 +0xfb U+02da +0xfc U+00b8 +0xfd U+02dd +0xfe U+02db +0xff U+02c7 diff --git a/make/tools/CharsetMapping/MacRomania.map b/make/tools/CharsetMapping/MacRomania.map new file mode 100644 index 0000000000000000000000000000000000000000..622bc636eddd087ccb5484db3887ce5ffade0bd5 --- /dev/null +++ b/make/tools/CharsetMapping/MacRomania.map @@ -0,0 +1,257 @@ +#Generated from MacRomania.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00c4 +0x81 U+00c5 +0x82 U+00c7 +0x83 U+00c9 +0x84 U+00d1 +0x85 U+00d6 +0x86 U+00dc +0x87 U+00e1 +0x88 U+00e0 +0x89 U+00e2 +0x8a U+00e4 +0x8b U+00e3 +0x8c U+00e5 +0x8d U+00e7 +0x8e U+00e9 +0x8f U+00e8 +0x90 U+00ea +0x91 U+00eb +0x92 U+00ed +0x93 U+00ec +0x94 U+00ee +0x95 U+00ef +0x96 U+00f1 +0x97 U+00f3 +0x98 U+00f2 +0x99 U+00f4 +0x9a U+00f6 +0x9b U+00f5 +0x9c U+00fa +0x9d U+00f9 +0x9e U+00fb +0x9f U+00fc +0xa0 U+2020 +0xa1 U+00b0 +0xa2 U+00a2 +0xa3 U+00a3 +0xa4 U+00a7 +0xa5 U+2022 +0xa6 U+00b6 +0xa7 U+00df +0xa8 U+00ae +0xa9 U+00a9 +0xaa U+2122 +0xab U+00b4 +0xac U+00a8 +0xad U+2260 +0xae U+0102 +0xaf U+015e +0xb0 U+221e +0xb1 U+00b1 +0xb2 U+2264 +0xb3 U+2265 +0xb4 U+00a5 +0xb5 U+00b5 +0xb6 U+2202 +0xb7 U+2211 +0xb8 U+220f +0xb9 U+03c0 +0xba U+222b +0xbb U+00aa +0xbc U+00ba +0xbd U+2126 +0xbe U+0103 +0xbf U+015f +0xc0 U+00bf +0xc1 U+00a1 +0xc2 U+00ac +0xc3 U+221a +0xc4 U+0192 +0xc5 U+2248 +0xc6 U+2206 +0xc7 U+00ab +0xc8 U+00bb +0xc9 U+2026 +0xca U+00a0 +0xcb U+00c0 +0xcc U+00c3 +0xcd U+00d5 +0xce U+0152 +0xcf U+0153 +0xd0 U+2013 +0xd1 U+2014 +0xd2 U+201c +0xd3 U+201d +0xd4 U+2018 +0xd5 U+2019 +0xd6 U+00f7 +0xd7 U+25ca +0xd8 U+00ff +0xd9 U+0178 +0xda U+2044 +0xdb U+00a4 +0xdc U+2039 +0xdd U+203a +0xde U+0162 +0xdf U+0163 +0xe0 U+2021 +0xe1 U+00b7 +0xe2 U+201a +0xe3 U+201e +0xe4 U+2030 +0xe5 U+00c2 +0xe6 U+00ca +0xe7 U+00c1 +0xe8 U+00cb +0xe9 U+00c8 +0xea U+00cd +0xeb U+00ce +0xec U+00cf +0xed U+00cc +0xee U+00d3 +0xef U+00d4 +0xf0 U+f8ff +0xf1 U+00d2 +0xf2 U+00da +0xf3 U+00db +0xf4 U+00d9 +0xf5 U+0131 +0xf6 U+02c6 +0xf7 U+02dc +0xf8 U+00af +0xf9 U+02d8 +0xfa U+02d9 +0xfb U+02da +0xfc U+00b8 +0xfd U+02dd +0xfe U+02db +0xff U+02c7 diff --git a/make/tools/CharsetMapping/MacSymbol.map b/make/tools/CharsetMapping/MacSymbol.map new file mode 100644 index 0000000000000000000000000000000000000000..c3750f2f641650bc9fe41c5523e12af66dff9073 --- /dev/null +++ b/make/tools/CharsetMapping/MacSymbol.map @@ -0,0 +1,257 @@ +#Generated from MacSymbol.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+2200 +0x23 U+0023 +0x24 U+2203 +0x25 U+0025 +0x26 U+0026 +0x27 U+220d +0x28 U+0028 +0x29 U+0029 +0x2a U+2217 +0x2b U+002b +0x2c U+002c +0x2d U+2212 +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+2245 +0x41 U+0391 +0x42 U+0392 +0x43 U+03a7 +0x44 U+0394 +0x45 U+0395 +0x46 U+03a6 +0x47 U+0393 +0x48 U+0397 +0x49 U+0399 +0x4a U+03d1 +0x4b U+039a +0x4c U+039b +0x4d U+039c +0x4e U+039d +0x4f U+039f +0x50 U+03a0 +0x51 U+0398 +0x52 U+03a1 +0x53 U+03a3 +0x54 U+03a4 +0x55 U+03a5 +0x56 U+03c2 +0x57 U+03a9 +0x58 U+039e +0x59 U+03a8 +0x5a U+0396 +0x5b U+005b +0x5c U+2234 +0x5d U+005d +0x5e U+22a5 +0x5f U+005f +0x60 U+f8e5 +0x61 U+03b1 +0x62 U+03b2 +0x63 U+03c7 +0x64 U+03b4 +0x65 U+03b5 +0x66 U+03c6 +0x67 U+03b3 +0x68 U+03b7 +0x69 U+03b9 +0x6a U+03d5 +0x6b U+03ba +0x6c U+03bb +0x6d U+03bc +0x6e U+03bd +0x6f U+03bf +0x70 U+03c0 +0x71 U+03b8 +0x72 U+03c1 +0x73 U+03c3 +0x74 U+03c4 +0x75 U+03c5 +0x76 U+03d6 +0x77 U+03c9 +0x78 U+03be +0x79 U+03c8 +0x7a U+03b6 +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+223c +0x7f U+007f +0x80 U+fffd +0x81 U+fffd +0x82 U+fffd +0x83 U+fffd +0x84 U+fffd +0x85 U+fffd +0x86 U+fffd +0x87 U+fffd +0x88 U+fffd +0x89 U+fffd +0x8a U+fffd +0x8b U+fffd +0x8c U+fffd +0x8d U+fffd +0x8e U+fffd +0x8f U+fffd +0x90 U+fffd +0x91 U+fffd +0x92 U+fffd +0x93 U+fffd +0x94 U+fffd +0x95 U+fffd +0x96 U+fffd +0x97 U+fffd +0x98 U+fffd +0x99 U+fffd +0x9a U+fffd +0x9b U+fffd +0x9c U+fffd +0x9d U+fffd +0x9e U+fffd +0x9f U+fffd +0xa0 U+20ac +0xa1 U+03d2 +0xa2 U+2032 +0xa3 U+2264 +0xa4 U+2044 +0xa5 U+221e +0xa6 U+0192 +0xa7 U+2663 +0xa8 U+2666 +0xa9 U+2665 +0xaa U+2660 +0xab U+2194 +0xac U+2190 +0xad U+2191 +0xae U+2192 +0xaf U+2193 +0xb0 U+00b0 +0xb1 U+00b1 +0xb2 U+2033 +0xb3 U+2265 +0xb4 U+00d7 +0xb5 U+221d +0xb6 U+2202 +0xb7 U+2022 +0xb8 U+00f7 +0xb9 U+2260 +0xba U+2261 +0xbb U+2248 +0xbc U+2026 +0xbd U+f8e6 +0xbe U+f8e7 +0xbf U+21b5 +0xc0 U+2135 +0xc1 U+2111 +0xc2 U+211c +0xc3 U+2118 +0xc4 U+2297 +0xc5 U+2295 +0xc6 U+2205 +0xc7 U+2229 +0xc8 U+222a +0xc9 U+2283 +0xca U+2287 +0xcb U+2284 +0xcc U+2282 +0xcd U+2286 +0xce U+2208 +0xcf U+2209 +0xd0 U+2220 +0xd1 U+2207 +0xd2 U+00ae +0xd3 U+00a9 +0xd4 U+2122 +0xd5 U+220f +0xd6 U+221a +0xd7 U+22c5 +0xd8 U+00ac +0xd9 U+2227 +0xda U+2228 +0xdb U+21d4 +0xdc U+21d0 +0xdd U+21d1 +0xde U+21d2 +0xdf U+21d3 +0xe0 U+22c4 +0xe1 U+3008 +0xe2 U+fffd +0xe3 U+fffd +0xe4 U+fffd +0xe5 U+2211 +0xe6 U+fffd +0xe7 U+fffd +0xe8 U+fffd +0xe9 U+fffd +0xea U+fffd +0xeb U+fffd +0xec U+fffd +0xed U+fffd +0xee U+fffd +0xef U+f8f4 +0xf0 U+f8ff +0xf1 U+3009 +0xf2 U+222b +0xf3 U+2320 +0xf4 U+fffd +0xf5 U+2321 +0xf6 U+fffd +0xf7 U+fffd +0xf8 U+fffd +0xf9 U+fffd +0xfa U+fffd +0xfb U+fffd +0xfc U+fffd +0xfd U+fffd +0xfe U+fffd +0xff U+fffd diff --git a/make/tools/CharsetMapping/MacThai.map b/make/tools/CharsetMapping/MacThai.map new file mode 100644 index 0000000000000000000000000000000000000000..68cf8ba727eaa406e30821f3cf49f2a9a3669f7f --- /dev/null +++ b/make/tools/CharsetMapping/MacThai.map @@ -0,0 +1,257 @@ +#Generated from MacThai.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00ab +0x81 U+00bb +0x82 U+2026 +0x83 U+f88c +0x84 U+f88f +0x85 U+f892 +0x86 U+f895 +0x87 U+f898 +0x88 U+f88b +0x89 U+f88e +0x8a U+f891 +0x8b U+f894 +0x8c U+f897 +0x8d U+201c +0x8e U+201d +0x8f U+f899 +0x90 U+fffd +0x91 U+2022 +0x92 U+f884 +0x93 U+f889 +0x94 U+f885 +0x95 U+f886 +0x96 U+f887 +0x97 U+f888 +0x98 U+f88a +0x99 U+f88d +0x9a U+f890 +0x9b U+f893 +0x9c U+f896 +0x9d U+2018 +0x9e U+2019 +0x9f U+fffd +0xa0 U+00a0 +0xa1 U+0e01 +0xa2 U+0e02 +0xa3 U+0e03 +0xa4 U+0e04 +0xa5 U+0e05 +0xa6 U+0e06 +0xa7 U+0e07 +0xa8 U+0e08 +0xa9 U+0e09 +0xaa U+0e0a +0xab U+0e0b +0xac U+0e0c +0xad U+0e0d +0xae U+0e0e +0xaf U+0e0f +0xb0 U+0e10 +0xb1 U+0e11 +0xb2 U+0e12 +0xb3 U+0e13 +0xb4 U+0e14 +0xb5 U+0e15 +0xb6 U+0e16 +0xb7 U+0e17 +0xb8 U+0e18 +0xb9 U+0e19 +0xba U+0e1a +0xbb U+0e1b +0xbc U+0e1c +0xbd U+0e1d +0xbe U+0e1e +0xbf U+0e1f +0xc0 U+0e20 +0xc1 U+0e21 +0xc2 U+0e22 +0xc3 U+0e23 +0xc4 U+0e24 +0xc5 U+0e25 +0xc6 U+0e26 +0xc7 U+0e27 +0xc8 U+0e28 +0xc9 U+0e29 +0xca U+0e2a +0xcb U+0e2b +0xcc U+0e2c +0xcd U+0e2d +0xce U+0e2e +0xcf U+0e2f +0xd0 U+0e30 +0xd1 U+0e31 +0xd2 U+0e32 +0xd3 U+0e33 +0xd4 U+0e34 +0xd5 U+0e35 +0xd6 U+0e36 +0xd7 U+0e37 +0xd8 U+0e38 +0xd9 U+0e39 +0xda U+0e3a +0xdb U+feff +0xdc U+200b +0xdd U+2013 +0xde U+2014 +0xdf U+0e3f +0xe0 U+0e40 +0xe1 U+0e41 +0xe2 U+0e42 +0xe3 U+0e43 +0xe4 U+0e44 +0xe5 U+0e45 +0xe6 U+0e46 +0xe7 U+0e47 +0xe8 U+0e48 +0xe9 U+0e49 +0xea U+0e4a +0xeb U+0e4b +0xec U+0e4c +0xed U+0e4d +0xee U+2122 +0xef U+0e4f +0xf0 U+0e50 +0xf1 U+0e51 +0xf2 U+0e52 +0xf3 U+0e53 +0xf4 U+0e54 +0xf5 U+0e55 +0xf6 U+0e56 +0xf7 U+0e57 +0xf8 U+0e58 +0xf9 U+0e59 +0xfa U+00ae +0xfb U+00a9 +0xfc U+fffd +0xfd U+fffd +0xfe U+fffd +0xff U+fffd diff --git a/make/tools/CharsetMapping/MacTurkish.map b/make/tools/CharsetMapping/MacTurkish.map new file mode 100644 index 0000000000000000000000000000000000000000..d316ca2d592461b8a1892a485fef8a77bde996fe --- /dev/null +++ b/make/tools/CharsetMapping/MacTurkish.map @@ -0,0 +1,257 @@ +#Generated from MacTurkish.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+00c4 +0x81 U+00c5 +0x82 U+00c7 +0x83 U+00c9 +0x84 U+00d1 +0x85 U+00d6 +0x86 U+00dc +0x87 U+00e1 +0x88 U+00e0 +0x89 U+00e2 +0x8a U+00e4 +0x8b U+00e3 +0x8c U+00e5 +0x8d U+00e7 +0x8e U+00e9 +0x8f U+00e8 +0x90 U+00ea +0x91 U+00eb +0x92 U+00ed +0x93 U+00ec +0x94 U+00ee +0x95 U+00ef +0x96 U+00f1 +0x97 U+00f3 +0x98 U+00f2 +0x99 U+00f4 +0x9a U+00f6 +0x9b U+00f5 +0x9c U+00fa +0x9d U+00f9 +0x9e U+00fb +0x9f U+00fc +0xa0 U+2020 +0xa1 U+00b0 +0xa2 U+00a2 +0xa3 U+00a3 +0xa4 U+00a7 +0xa5 U+2022 +0xa6 U+00b6 +0xa7 U+00df +0xa8 U+00ae +0xa9 U+00a9 +0xaa U+2122 +0xab U+00b4 +0xac U+00a8 +0xad U+2260 +0xae U+00c6 +0xaf U+00d8 +0xb0 U+221e +0xb1 U+00b1 +0xb2 U+2264 +0xb3 U+2265 +0xb4 U+00a5 +0xb5 U+00b5 +0xb6 U+2202 +0xb7 U+2211 +0xb8 U+220f +0xb9 U+03c0 +0xba U+222b +0xbb U+00aa +0xbc U+00ba +0xbd U+2126 +0xbe U+00e6 +0xbf U+00f8 +0xc0 U+00bf +0xc1 U+00a1 +0xc2 U+00ac +0xc3 U+221a +0xc4 U+0192 +0xc5 U+2248 +0xc6 U+2206 +0xc7 U+00ab +0xc8 U+00bb +0xc9 U+2026 +0xca U+00a0 +0xcb U+00c0 +0xcc U+00c3 +0xcd U+00d5 +0xce U+0152 +0xcf U+0153 +0xd0 U+2013 +0xd1 U+2014 +0xd2 U+201c +0xd3 U+201d +0xd4 U+2018 +0xd5 U+2019 +0xd6 U+00f7 +0xd7 U+25ca +0xd8 U+00ff +0xd9 U+0178 +0xda U+011e +0xdb U+011f +0xdc U+0130 +0xdd U+0131 +0xde U+015e +0xdf U+015f +0xe0 U+2021 +0xe1 U+00b7 +0xe2 U+201a +0xe3 U+201e +0xe4 U+2030 +0xe5 U+00c2 +0xe6 U+00ca +0xe7 U+00c1 +0xe8 U+00cb +0xe9 U+00c8 +0xea U+00cd +0xeb U+00ce +0xec U+00cf +0xed U+00cc +0xee U+00d3 +0xef U+00d4 +0xf0 U+f8ff +0xf1 U+00d2 +0xf2 U+00da +0xf3 U+00db +0xf4 U+00d9 +0xf5 U+fffd +0xf6 U+02c6 +0xf7 U+02dc +0xf8 U+00af +0xf9 U+02d8 +0xfa U+02d9 +0xfb U+02da +0xfc U+00b8 +0xfd U+02dd +0xfe U+02db +0xff U+02c7 diff --git a/make/tools/CharsetMapping/MacUkraine.map b/make/tools/CharsetMapping/MacUkraine.map new file mode 100644 index 0000000000000000000000000000000000000000..93f1dbf56e3a411530ddb3e0aa0dc385ec62ca2c --- /dev/null +++ b/make/tools/CharsetMapping/MacUkraine.map @@ -0,0 +1,257 @@ +#Generated from MacUkraine.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+0410 +0x81 U+0411 +0x82 U+0412 +0x83 U+0413 +0x84 U+0414 +0x85 U+0415 +0x86 U+0416 +0x87 U+0417 +0x88 U+0418 +0x89 U+0419 +0x8a U+041a +0x8b U+041b +0x8c U+041c +0x8d U+041d +0x8e U+041e +0x8f U+041f +0x90 U+0420 +0x91 U+0421 +0x92 U+0422 +0x93 U+0423 +0x94 U+0424 +0x95 U+0425 +0x96 U+0426 +0x97 U+0427 +0x98 U+0428 +0x99 U+0429 +0x9a U+042a +0x9b U+042b +0x9c U+042c +0x9d U+042d +0x9e U+042e +0x9f U+042f +0xa0 U+2020 +0xa1 U+00b0 +0xa2 U+0490 +0xa3 U+00a3 +0xa4 U+00a7 +0xa5 U+2022 +0xa6 U+00b6 +0xa7 U+0406 +0xa8 U+00ae +0xa9 U+00a9 +0xaa U+2122 +0xab U+0402 +0xac U+0452 +0xad U+2260 +0xae U+0403 +0xaf U+0453 +0xb0 U+221e +0xb1 U+00b1 +0xb2 U+2264 +0xb3 U+2265 +0xb4 U+0456 +0xb5 U+00b5 +0xb6 U+0491 +0xb7 U+0408 +0xb8 U+0404 +0xb9 U+0454 +0xba U+0407 +0xbb U+0457 +0xbc U+0409 +0xbd U+0459 +0xbe U+040a +0xbf U+045a +0xc0 U+0458 +0xc1 U+0405 +0xc2 U+00ac +0xc3 U+221a +0xc4 U+0192 +0xc5 U+2248 +0xc6 U+2206 +0xc7 U+00ab +0xc8 U+00bb +0xc9 U+2026 +0xca U+00a0 +0xcb U+040b +0xcc U+045b +0xcd U+040c +0xce U+045c +0xcf U+0455 +0xd0 U+2013 +0xd1 U+2014 +0xd2 U+201c +0xd3 U+201d +0xd4 U+2018 +0xd5 U+2019 +0xd6 U+00f7 +0xd7 U+201e +0xd8 U+040e +0xd9 U+045e +0xda U+040f +0xdb U+045f +0xdc U+2116 +0xdd U+0401 +0xde U+0451 +0xdf U+044f +0xe0 U+0430 +0xe1 U+0431 +0xe2 U+0432 +0xe3 U+0433 +0xe4 U+0434 +0xe5 U+0435 +0xe6 U+0436 +0xe7 U+0437 +0xe8 U+0438 +0xe9 U+0439 +0xea U+043a +0xeb U+043b +0xec U+043c +0xed U+043d +0xee U+043e +0xef U+043f +0xf0 U+0440 +0xf1 U+0441 +0xf2 U+0442 +0xf3 U+0443 +0xf4 U+0444 +0xf5 U+0445 +0xf6 U+0446 +0xf7 U+0447 +0xf8 U+0448 +0xf9 U+0449 +0xfa U+044a +0xfb U+044b +0xfc U+044c +0xfd U+044d +0xfe U+044e +0xff U+00a4 diff --git a/make/tools/CharsetMapping/SingleByte-X.java b/make/tools/CharsetMapping/SingleByte-X.java new file mode 100644 index 0000000000000000000000000000000000000000..f6c080a20f01ab56b8e2b943c2954cde34c08bf6 --- /dev/null +++ b/make/tools/CharsetMapping/SingleByte-X.java @@ -0,0 +1,83 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package $PACKAGE$; + +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; +import sun.nio.cs.StandardCharsets; +import sun.nio.cs.SingleByte; +import sun.nio.cs.HistoricallyNamedCharset; +import static sun.nio.cs.CharsetMapping.*; + +public class $NAME_CLZ$ extends Charset implements HistoricallyNamedCharset +{ + public $NAME_CLZ$() { + super("$NAME_CS$", $NAME_ALIASES$); + } + + public String historicalName() { + return "$NAME_HIS$"; + } + + public boolean contains(Charset cs) { + $CONTAINS$; + } + + public CharsetDecoder newDecoder() { + return new SingleByte.Decoder(this, b2c); + } + + public CharsetEncoder newEncoder() { + 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(); + private final static char[] c2b = new char[$C2BLENGTH$]; + private final static char[] c2bIndex = new char[0x100]; + + static { + char[] b2cMap = b2c; + char[] c2bNR = null; + $NONROUNDTRIP_B2C$ + $NONROUNDTRIP_C2B$ + SingleByte.initC2B(b2cMap, c2bNR, c2b, c2bIndex); + } +} diff --git a/make/tools/CharsetMapping/TIS_620.map b/make/tools/CharsetMapping/TIS_620.map new file mode 100644 index 0000000000000000000000000000000000000000..b832450a5aef3221f29aeb0db26312b87a202fbc --- /dev/null +++ b/make/tools/CharsetMapping/TIS_620.map @@ -0,0 +1,257 @@ +#Generated from TIS_620.java +0x00 U+0000 +0x01 U+0001 +0x02 U+0002 +0x03 U+0003 +0x04 U+0004 +0x05 U+0005 +0x06 U+0006 +0x07 U+0007 +0x08 U+0008 +0x09 U+0009 +0x0a U+000a +0x0b U+000b +0x0c U+000c +0x0d U+000d +0x0e U+000e +0x0f U+000f +0x10 U+0010 +0x11 U+0011 +0x12 U+0012 +0x13 U+0013 +0x14 U+0014 +0x15 U+0015 +0x16 U+0016 +0x17 U+0017 +0x18 U+0018 +0x19 U+0019 +0x1a U+001a +0x1b U+001b +0x1c U+001c +0x1d U+001d +0x1e U+001e +0x1f U+001f +0x20 U+0020 +0x21 U+0021 +0x22 U+0022 +0x23 U+0023 +0x24 U+0024 +0x25 U+0025 +0x26 U+0026 +0x27 U+0027 +0x28 U+0028 +0x29 U+0029 +0x2a U+002a +0x2b U+002b +0x2c U+002c +0x2d U+002d +0x2e U+002e +0x2f U+002f +0x30 U+0030 +0x31 U+0031 +0x32 U+0032 +0x33 U+0033 +0x34 U+0034 +0x35 U+0035 +0x36 U+0036 +0x37 U+0037 +0x38 U+0038 +0x39 U+0039 +0x3a U+003a +0x3b U+003b +0x3c U+003c +0x3d U+003d +0x3e U+003e +0x3f U+003f +0x40 U+0040 +0x41 U+0041 +0x42 U+0042 +0x43 U+0043 +0x44 U+0044 +0x45 U+0045 +0x46 U+0046 +0x47 U+0047 +0x48 U+0048 +0x49 U+0049 +0x4a U+004a +0x4b U+004b +0x4c U+004c +0x4d U+004d +0x4e U+004e +0x4f U+004f +0x50 U+0050 +0x51 U+0051 +0x52 U+0052 +0x53 U+0053 +0x54 U+0054 +0x55 U+0055 +0x56 U+0056 +0x57 U+0057 +0x58 U+0058 +0x59 U+0059 +0x5a U+005a +0x5b U+005b +0x5c U+005c +0x5d U+005d +0x5e U+005e +0x5f U+005f +0x60 U+0060 +0x61 U+0061 +0x62 U+0062 +0x63 U+0063 +0x64 U+0064 +0x65 U+0065 +0x66 U+0066 +0x67 U+0067 +0x68 U+0068 +0x69 U+0069 +0x6a U+006a +0x6b U+006b +0x6c U+006c +0x6d U+006d +0x6e U+006e +0x6f U+006f +0x70 U+0070 +0x71 U+0071 +0x72 U+0072 +0x73 U+0073 +0x74 U+0074 +0x75 U+0075 +0x76 U+0076 +0x77 U+0077 +0x78 U+0078 +0x79 U+0079 +0x7a U+007a +0x7b U+007b +0x7c U+007c +0x7d U+007d +0x7e U+007e +0x7f U+007f +0x80 U+fffd +0x81 U+fffd +0x82 U+fffd +0x83 U+fffd +0x84 U+fffd +0x85 U+fffd +0x86 U+fffd +0x87 U+fffd +0x88 U+fffd +0x89 U+fffd +0x8a U+fffd +0x8b U+fffd +0x8c U+fffd +0x8d U+fffd +0x8e U+fffd +0x8f U+fffd +0x90 U+fffd +0x91 U+fffd +0x92 U+fffd +0x93 U+fffd +0x94 U+fffd +0x95 U+fffd +0x96 U+fffd +0x97 U+fffd +0x98 U+fffd +0x99 U+fffd +0x9a U+fffd +0x9b U+fffd +0x9c U+fffd +0x9d U+fffd +0x9e U+fffd +0x9f U+fffd +0xa0 U+00a0 +0xa1 U+0e01 +0xa2 U+0e02 +0xa3 U+0e03 +0xa4 U+0e04 +0xa5 U+0e05 +0xa6 U+0e06 +0xa7 U+0e07 +0xa8 U+0e08 +0xa9 U+0e09 +0xaa U+0e0a +0xab U+0e0b +0xac U+0e0c +0xad U+0e0d +0xae U+0e0e +0xaf U+0e0f +0xb0 U+0e10 +0xb1 U+0e11 +0xb2 U+0e12 +0xb3 U+0e13 +0xb4 U+0e14 +0xb5 U+0e15 +0xb6 U+0e16 +0xb7 U+0e17 +0xb8 U+0e18 +0xb9 U+0e19 +0xba U+0e1a +0xbb U+0e1b +0xbc U+0e1c +0xbd U+0e1d +0xbe U+0e1e +0xbf U+0e1f +0xc0 U+0e20 +0xc1 U+0e21 +0xc2 U+0e22 +0xc3 U+0e23 +0xc4 U+0e24 +0xc5 U+0e25 +0xc6 U+0e26 +0xc7 U+0e27 +0xc8 U+0e28 +0xc9 U+0e29 +0xca U+0e2a +0xcb U+0e2b +0xcc U+0e2c +0xcd U+0e2d +0xce U+0e2e +0xcf U+0e2f +0xd0 U+0e30 +0xd1 U+0e31 +0xd2 U+0e32 +0xd3 U+0e33 +0xd4 U+0e34 +0xd5 U+0e35 +0xd6 U+0e36 +0xd7 U+0e37 +0xd8 U+0e38 +0xd9 U+0e39 +0xda U+0e3a +0xdb U+fffd +0xdc U+fffd +0xdd U+fffd +0xde U+fffd +0xdf U+0e3f +0xe0 U+0e40 +0xe1 U+0e41 +0xe2 U+0e42 +0xe3 U+0e43 +0xe4 U+0e44 +0xe5 U+0e45 +0xe6 U+0e46 +0xe7 U+0e47 +0xe8 U+0e48 +0xe9 U+0e49 +0xea U+0e4a +0xeb U+0e4b +0xec U+0e4c +0xed U+0e4d +0xee U+0e4e +0xef U+0e4f +0xf0 U+0e50 +0xf1 U+0e51 +0xf2 U+0e52 +0xf3 U+0e53 +0xf4 U+0e54 +0xf5 U+0e55 +0xf6 U+0e56 +0xf7 U+0e57 +0xf8 U+0e58 +0xf9 U+0e59 +0xfa U+0e5a +0xfb U+0e5b +0xfc U+fffd +0xfd U+fffd +0xfe U+fffd +0xff U+fffd diff --git a/make/tools/CharsetMapping/extsbcs b/make/tools/CharsetMapping/extsbcs new file mode 100644 index 0000000000000000000000000000000000000000..81a6acdf8176650ba67d5c250907b11968c2c145 --- /dev/null +++ b/make/tools/CharsetMapping/extsbcs @@ -0,0 +1,74 @@ +# clzName csName hisName containASCII pkg +IBM037 IBM037 Cp037 false sun.nio.cs.ext +IBM1006 x-IBM1006 Cp1006 false sun.nio.cs.ext +IBM1025 x-IBM1025 Cp1025 false sun.nio.cs.ext +IBM1026 IBM1026 Cp1026 false sun.nio.cs.ext +IBM1046 x-IBM1046 Cp1046 false sun.nio.cs.ext +IBM1047 IBM1047 Cp1047 false sun.nio.cs.ext +IBM1097 x-IBM1097 Cp1097 false sun.nio.cs.ext +IBM1098 x-IBM1098 Cp1098 false sun.nio.cs.ext +IBM1112 x-IBM1112 Cp1112 false sun.nio.cs.ext +IBM1122 x-IBM1122 Cp1122 false sun.nio.cs.ext +IBM1123 x-IBM1123 Cp1123 false sun.nio.cs.ext +IBM1124 x-IBM1124 Cp1124 false sun.nio.cs.ext +# map tables for 1140-1149 are updated manualy with the u+20ac entry +IBM1140 IBM01140 Cp1140 false sun.nio.cs.ext +IBM1141 IBM01141 Cp1141 false sun.nio.cs.ext +IBM1142 IBM01142 Cp1142 false sun.nio.cs.ext +IBM1143 IBM01143 Cp1143 false sun.nio.cs.ext +IBM1144 IBM01144 Cp1144 false sun.nio.cs.ext +IBM1145 IBM01145 Cp1145 false sun.nio.cs.ext +IBM1146 IBM01146 Cp1146 false sun.nio.cs.ext +IBM1147 IBM01147 Cp1147 false sun.nio.cs.ext +IBM1148 IBM01148 Cp1148 false sun.nio.cs.ext +IBM1149 IBM01149 Cp1149 false sun.nio.cs.ext +IBM273 IBM273 Cp273 false sun.nio.cs.ext +IBM277 IBM277 Cp277 false sun.nio.cs.ext +IBM278 IBM278 Cp278 false sun.nio.cs.ext +IBM280 IBM280 Cp280 false sun.nio.cs.ext +IBM284 IBM284 Cp284 false sun.nio.cs.ext +IBM285 IBM285 Cp285 false sun.nio.cs.ext +IBM297 IBM297 Cp297 false sun.nio.cs.ext +IBM420 IBM420 Cp420 false sun.nio.cs.ext +IBM424 IBM424 Cp424 false sun.nio.cs.ext +IBM500 IBM500 Cp500 false sun.nio.cs.ext +IBM838 IBM-Thai Cp838 false sun.nio.cs.ext +IBM856 x-IBM856 Cp856 false sun.nio.cs.ext +IBM860 IBM860 Cp860 false sun.nio.cs.ext +IBM861 IBM861 Cp861 false sun.nio.cs.ext +IBM863 IBM863 Cp863 false sun.nio.cs.ext +IBM864 IBM864 Cp864 false sun.nio.cs.ext +IBM865 IBM865 Cp865 false sun.nio.cs.ext +IBM868 IBM868 Cp868 false sun.nio.cs.ext +IBM869 IBM869 Cp869 false sun.nio.cs.ext +IBM870 IBM870 Cp870 false sun.nio.cs.ext +IBM871 IBM871 Cp871 false sun.nio.cs.ext +IBM875 x-IBM875 Cp875 false sun.nio.cs.ext +IBM918 IBM918 Cp918 false sun.nio.cs.ext +IBM921 x-IBM921 Cp921 false sun.nio.cs.ext +IBM922 x-IBM922 Cp922 false sun.nio.cs.ext +# use name as hisname as well, cs did not support hisname prevously +ISO_8859_11 x-iso-8859-11 x-iso-8859-11 true sun.nio.cs.ext +ISO_8859_3 ISO-8859-3 ISO8859_3 true sun.nio.cs.ext +ISO_8859_6 ISO-8859-6 ISO8859_6 true sun.nio.cs.ext +ISO_8859_8 ISO-8859-8 ISO8859_8 true sun.nio.cs.ext +#JIS_X_0201 JIS_X0201 JIS_X0201 true sun.nio.cs.ext +MS1255 windows-1255 Cp1255 true sun.nio.cs.ext +MS1256 windows-1256 Cp1256 true sun.nio.cs.ext +MS1258 windows-1258 Cp1258 true sun.nio.cs.ext +MS874 x-windows-874 MS874 true sun.nio.cs.ext +MacArabic x-MacArabic MacArabic false sun.nio.cs.ext +MacCentralEurope x-MacCentralEurope MacCentralEurope false sun.nio.cs.ext +MacCroatian x-MacCroatian MacCroatian false sun.nio.cs.ext +MacCyrillic x-MacCyrillic MacCyrillic false sun.nio.cs.ext +MacDingbat x-MacDingbat MacDingbat false sun.nio.cs.ext +MacGreek x-MacGreek MacGreek false sun.nio.cs.ext +MacHebrew x-MacHebrew MacHebrew false sun.nio.cs.ext +MacIceland x-MacIceland MacIceland false sun.nio.cs.ext +MacRoman x-MacRoman MacRoman false sun.nio.cs.ext +MacRomania x-MacRomania MacRomania false sun.nio.cs.ext +MacSymbol x-MacSymbol MacSymbol false sun.nio.cs.ext +MacThai x-MacThai MacThai false sun.nio.cs.ext +MacTurkish x-MacTurkish MacTurkish false sun.nio.cs.ext +MacUkraine x-MacUkraine MacUkraine false sun.nio.cs.ext +TIS_620 TIS-620 TIS620 true sun.nio.cs.ext diff --git a/make/tools/CharsetMapping/sbcs b/make/tools/CharsetMapping/sbcs new file mode 100644 index 0000000000000000000000000000000000000000..0b11960411bc137c5f8d4656a271a8cae27da90e --- /dev/null +++ b/make/tools/CharsetMapping/sbcs @@ -0,0 +1,28 @@ +# clzName csName hisName containASCII pkg +IBM437 IBM437 Cp437 false sun.nio.cs +IBM737 x-IBM737 Cp737 false sun.nio.cs +IBM775 IBM775 Cp775 false sun.nio.cs +IBM850 IBM850 Cp850 false sun.nio.cs +IBM852 IBM852 Cp852 false sun.nio.cs +IBM855 IBM855 Cp855 false sun.nio.cs +IBM857 IBM857 Cp857 false sun.nio.cs +IBM858 IBM00858 Cp858 false sun.nio.cs +IBM862 IBM862 Cp862 false sun.nio.cs +IBM866 IBM866 Cp866 false sun.nio.cs +IBM874 x-IBM874 Cp874 false sun.nio.cs +ISO_8859_2 ISO-8859-2 ISO8859_2 true sun.nio.cs +ISO_8859_4 ISO-8859-4 ISO8859_4 true sun.nio.cs +ISO_8859_5 ISO-8859-5 ISO8859_5 true sun.nio.cs +ISO_8859_7 ISO-8859-7 ISO8859_7 true sun.nio.cs +ISO_8859_9 ISO-8859-9 ISO8859_9 true sun.nio.cs +ISO_8859_13 ISO-8859-13 ISO8859_13 true sun.nio.cs +ISO_8859_15 ISO-8859-15 ISO8859_15 true sun.nio.cs +KOI8_R KOI8-R KOI8_R true sun.nio.cs +KOI8_U KOI8-U KOI8_U true sun.nio.cs +MS1250 windows-1250 Cp1250 true sun.nio.cs +MS1251 windows-1251 Cp1251 true sun.nio.cs +MS1252 windows-1252 Cp1252 true sun.nio.cs +MS1253 windows-1253 Cp1253 true sun.nio.cs +MS1254 windows-1254 Cp1254 true sun.nio.cs +MS1257 windows-1257 Cp1257 true sun.nio.cs + diff --git a/make/tools/src/build/tools/charsetmapping/GenerateMapping.java b/make/tools/src/build/tools/charsetmapping/GenerateMapping.java index e1f1d86ab79fba869efb8d3520139731a3323cee..6898820d8733ebf48e4727c803f1e46e8296c83f 100644 --- a/make/tools/src/build/tools/charsetmapping/GenerateMapping.java +++ b/make/tools/src/build/tools/charsetmapping/GenerateMapping.java @@ -27,12 +27,13 @@ package build.tools.charsetmapping; import java.io.*; import java.util.regex.*; +import build.tools.charsetmapping.GenerateSBCS; import static build.tools.charsetmapping.CharsetMapping.*; public class GenerateMapping { public static void main(String argv[]) throws IOException { if (argv.length < 2) { - System.out.println("Usage: java GenCSData fMap fDat"); + System.out.println("Usage: java GenerateMapping fMap fDat"); System.exit(1); } genDataJIS0213(new FileInputStream(argv[0]), diff --git a/make/tools/src/build/tools/charsetmapping/GenerateSBCS.java b/make/tools/src/build/tools/charsetmapping/GenerateSBCS.java new file mode 100644 index 0000000000000000000000000000000000000000..81b5d7be60f86e6d4e2e7687652aa57ca0f284a8 --- /dev/null +++ b/make/tools/src/build/tools/charsetmapping/GenerateSBCS.java @@ -0,0 +1,262 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package build.tools.charsetmapping; + +import java.io.*; +import java.util.ArrayList; +import java.util.Scanner; +import java.util.Formatter; +import java.util.regex.*; +import java.nio.charset.*; +import static build.tools.charsetmapping.CharsetMapping.*; + +public class GenerateSBCS { + public static void main(String args[]) throws Exception { + if (args.length < 3) { + System.err.println("Usage: java GenSBCS srcDir dstDir config"); + System.exit(1); + } + + Scanner s = new Scanner(new File(args[0], args[2])); + while (s.hasNextLine()) { + String line = s.nextLine(); + if (line.startsWith("#") || line.length() == 0) + continue; + String[] fields = line.split("\\s+"); + if (fields.length < 5) { + System.err.println("Misconfiged sbcs line <" + line + ">?"); + continue; + } + String clzName = fields[0]; + String csName = fields[1]; + String hisName = fields[2]; + boolean isASCII = Boolean.valueOf(fields[3]); + String pkgName = fields[4]; + System.out.printf("%s,%s,%s,%b,%s%n", clzName, csName, hisName, isASCII, pkgName); + + StringBuilder b2c = new StringBuilder(); + int c2bLen = genB2C( + new FileInputStream(new File(args[0], clzName+".map")), b2c); + + String b2cNR = null; + File nrF = new File(args[0], clzName+".nr"); + if (nrF.exists()) { + b2cNR = genNR(new FileInputStream(nrF)); + } + + String c2bNR = null; + File c2bF = new File(args[0], clzName+".c2b"); + if (c2bF.exists()) { + c2bNR = genC2BNR(new FileInputStream(c2bF)); + } + + genSBCSClass(args[0], args[1], "SingleByte-X.java", + clzName, csName, hisName, pkgName, isASCII, + b2c.toString(), b2cNR, c2bNR, c2bLen); + } + } + + private static void toString(char[] sb, int off, int end, + Formatter out, String closure) { + while (off < end) { + out.format(" \""); + for (int j = 0; j < 8; j++) { + char c = sb[off++]; + switch (c) { + case '\b': + out.format("\\b"); break; + case '\t': + out.format("\\t"); break; + case '\n': + out.format("\\n"); break; + case '\f': + out.format("\\f"); break; + case '\r': + out.format("\\r"); break; + case '\"': + out.format("\\\""); break; + case '\'': + out.format("\\'"); break; + case '\\': + out.format("\\\\"); break; + default: + out.format("\\u%04X", c & 0xffff); + } + } + if (off == end) + out.format("\" %s // 0x%02x - 0x%02x%n", closure, off-8, off-1); + else + out.format("\" + // 0x%02x - 0x%02x%n", off-8, off-1); + } + } + + static Pattern sbmap = Pattern.compile("0x(\\p{XDigit}++)\\s++U\\+(\\p{XDigit}++)(\\s++#.*)?"); + private static int genB2C(InputStream in, StringBuilder out) + throws Exception + { + char[] sb = new char[0x100]; + int[] indexC2B = new int[0x100]; + + for (int i = 0; i < sb.length; i++) + sb[i] = UNMAPPABLE_DECODING; + + // parse the b2c mapping table + Parser p = new Parser(in, sbmap); + Entry e = null; + int off = 0; + while ((e = p.next()) != null) { + sb[e.bs] = (char)e.cp; + if (indexC2B[e.cp>>8] == 0) { + off += 0x100; + indexC2B[e.cp>>8] = 1; + } + } + + Formatter fm = new Formatter(out); + fm.format("%n"); + + // vm -server shows cc[byte + 128] access is much faster than + // cc[byte&0xff] so we output the upper segment first + toString(sb, 0x80, 0x100, fm, "+"); + toString(sb, 0x00, 0x80, fm, ";"); + + fm.close(); + return off; + } + + // generate non-roundtrip entries from xxx.nr file + private static String genNR(InputStream in) throws Exception + { + StringBuilder sb = new StringBuilder(); + Formatter fm = new Formatter(sb); + Parser p = new Parser(in, sbmap); + Entry e = null; + fm.format("// remove non-roundtrip entries%n"); + fm.format(" b2cMap = b2cTable.toCharArray();%n"); + while ((e = p.next()) != null) { + fm.format(" b2cMap[%d] = UNMAPPABLE_DECODING;%n", + (e.bs>=0x80)?(e.bs-0x80):(e.bs+0x80)); + } + fm.close(); + return sb.toString(); + } + + // generate c2b only entries from xxx.c2b file + private static String genC2BNR(InputStream in) throws Exception + { + StringBuilder sb = new StringBuilder(); + Formatter fm = new Formatter(sb); + Parser p = new Parser(in, sbmap); + ArrayList es = new ArrayList(); + Entry e = null; + while ((e = p.next()) != null) { + es.add(e); + } + + fm.format("// non-roundtrip c2b only entries%n"); + fm.format(" c2bNR = new char[%d];%n", es.size() * 2); + int i = 0; + for (Entry entry: es) { + fm.format(" c2bNR[%d] = 0x%x; c2bNR[%d] = 0x%x;%n", + i++, entry.bs, i++, entry.cp); + } + fm.close(); + return sb.toString(); + } + + private static void genSBCSClass(String srcDir, + String dstDir, + String template, + String clzName, + String csName, + String hisName, + String pkgName, + boolean isASCII, + String b2c, + String b2cNR, + String c2bNR, + int c2blen) + throws Exception + { + Scanner s = new Scanner(new File(srcDir, template)); + PrintStream out = new PrintStream(new FileOutputStream( + new File(dstDir, clzName + ".java"))); + + while (s.hasNextLine()) { + String line = s.nextLine(); + int i = line.indexOf("$"); + if (i == -1) { + out.println(line); + continue; + } + if (line.indexOf("$PACKAGE$", i) != -1) { + line = line.replace("$PACKAGE$", pkgName); + } + if (line.indexOf("$NAME_CLZ$", i) != -1) { + line = line.replace("$NAME_CLZ$", clzName); + } + if (line.indexOf("$NAME_CS$", i) != -1) { + line = line.replace("$NAME_CS$", csName); + } + if (line.indexOf("$NAME_ALIASES$", i) != -1) { + if ("sun.nio.cs".equals(pkgName)) + line = line.replace("$NAME_ALIASES$", + "StandardCharsets.aliases_" + clzName); + else + line = line.replace("$NAME_ALIASES$", + "ExtendedCharsets.aliasesFor(\"" + csName + "\")"); + } + if (line.indexOf("$NAME_HIS$", i) != -1) { + line = line.replace("$NAME_HIS$", hisName); + } + if (line.indexOf("$CONTAINS$", i) != -1) { + if (isASCII) + line = " return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof " + clzName + "));"; + else + line = " return (cs instanceof " + clzName + ");"; + } + if (line.indexOf("$B2CTABLE$") != -1) { + line = line.replace("$B2CTABLE$", b2c); + } + if (line.indexOf("$C2BLENGTH$") != -1) { + line = line.replace("$C2BLENGTH$", "0x" + Integer.toString(c2blen, 16)); + } + if (line.indexOf("$NONROUNDTRIP_B2C$") != -1) { + if (b2cNR == null) + continue; + line = line.replace("$NONROUNDTRIP_B2C$", b2cNR); + } + + if (line.indexOf("$NONROUNDTRIP_C2B$") != -1) { + if (c2bNR == null) + continue; + line = line.replace("$NONROUNDTRIP_C2B$", c2bNR); + } + out.println(line); + } + out.close(); + } +} diff --git a/src/share/bin/main.c b/src/share/bin/main.c index df90e1101eb4383ee96eb736ceae0ebc98c9ac0e..9925235d455e9de4d9b265887aa6c1c700e39a03 100644 --- a/src/share/bin/main.c +++ b/src/share/bin/main.c @@ -32,6 +32,43 @@ #include "defines.h" +#ifdef _MSC_VER +#if _MSC_VER > 1400 + +/* + * When building for Microsoft Windows, main has a dependency on msvcr??.dll. + * + * When using Visual Studio 2005 or later, that must be recorded in + * the [java,javaw].exe.manifest file. + * + * Reference: + * C:/Program Files/Microsoft SDKs/Windows/v6.1/include/crtdefs.h + */ +#include +#ifdef _M_IX86 + +#pragma comment(linker,"/manifestdependency:\"type='win32' " \ + "name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".CRT' " \ + "version='" _CRT_ASSEMBLY_VERSION "' " \ + "processorArchitecture='x86' " \ + "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"") + +#endif /* _M_IX86 */ + +//This may not be necessary yet for the Windows 64-bit build, but it +//will be when that build environment is updated. Need to test to see +//if it is harmless: +#ifdef _M_AMD64 + +#pragma comment(linker,"/manifestdependency:\"type='win32' " \ + "name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".CRT' " \ + "version='" _CRT_ASSEMBLY_VERSION "' " \ + "processorArchitecture='amd64' " \ + "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"") + +#endif /* _M_AMD64 */ +#endif /* _MSC_VER > 1400 */ +#endif /* _MSC_VER */ /* * Entry point. diff --git a/src/share/classes/com/sun/java/swing/SwingUtilities3.java b/src/share/classes/com/sun/java/swing/SwingUtilities3.java index 28d9e8af6ec91a8ed0b07d4db36d84c4823b4b48..324d2172a4347588e0bb5c39e26e6c01b0586c1d 100644 --- a/src/share/classes/com/sun/java/swing/SwingUtilities3.java +++ b/src/share/classes/com/sun/java/swing/SwingUtilities3.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/com/sun/java/swing/plaf/windows/DesktopProperty.java b/src/share/classes/com/sun/java/swing/plaf/windows/DesktopProperty.java index 139b0db559ba2d4b7dc218a6db985c98269c0548..11807239c34286d895921a308feb5d6430b30062 100644 --- a/src/share/classes/com/sun/java/swing/plaf/windows/DesktopProperty.java +++ b/src/share/classes/com/sun/java/swing/plaf/windows/DesktopProperty.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2001-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsDesktopManager.java b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsDesktopManager.java index 20d87d015aa1e185c96427346fce5416e5669d5d..aaaea9fdce86b5d1b17fa47f3a34d1a27d8127e0 100644 --- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsDesktopManager.java +++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsDesktopManager.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java index e0fb203e0d32783172cddbafcd64e0187e085154..f9f32f2ff7309d66e24b1f4eab277fbc0db636a5 100644 --- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java +++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameTitlePane.java b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameTitlePane.java index 5222cd5dd089544277794eb5fab9338c2a076ee1..c64d68d3ea3f3960e3c56721ab198078816d5d79 100644 --- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameTitlePane.java +++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameTitlePane.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2001-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsScrollBarUI.java b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsScrollBarUI.java index f79f9d644dbd3968dca6bca95a86f6f70f2c75e8..fcfe404f9fa7c56c25c1e2242bff1f5c0089f73a 100644 --- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsScrollBarUI.java +++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsScrollBarUI.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI.java b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI.java index b781caa3cfc63607aae33bf958faf3a6e6cdc2fa..537eab6557a4ca58aa78000b7daca61908adf45c 100644 --- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI.java +++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.java b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.java index 0f2b39d893769148ef33d520e9724663c02e532d..a70828092c83314122122e369634a392050f9592 100644 --- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.java +++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/com/sun/jmx/defaults/ServiceName.java b/src/share/classes/com/sun/jmx/defaults/ServiceName.java index f70730b8d21dca946fff3c66f4d46c634a9c4b7d..cc851e67ecfa3784c0cf3eb620392aad6c2cf5fe 100644 --- a/src/share/classes/com/sun/jmx/defaults/ServiceName.java +++ b/src/share/classes/com/sun/jmx/defaults/ServiceName.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -69,9 +69,9 @@ public class ServiceName { /** * The version of the JMX specification implemented by this product. *
- * The value is 1.4. + * The value is 2.0. */ - public static final String JMX_SPEC_VERSION = "1.4"; + public static final String JMX_SPEC_VERSION = "2.0"; /** * The vendor of the JMX specification implemented by this product. diff --git a/src/share/classes/com/sun/jmx/event/EventParams.java b/src/share/classes/com/sun/jmx/event/EventParams.java index 7d875e1385b727a28f4cb1bec86d553de2f7203f..c0e76634cbd35c87811a82bd8376eb69d55a426f 100644 --- a/src/share/classes/com/sun/jmx/event/EventParams.java +++ b/src/share/classes/com/sun/jmx/event/EventParams.java @@ -41,7 +41,7 @@ public class EventParams { @SuppressWarnings("cast") // cast for jdk 1.5 public static long getLeaseTimeout() { - long timeout = EventClient.DEFAULT_LEASE_TIMEOUT; + long timeout = EventClient.DEFAULT_REQUESTED_LEASE_TIME; try { final GetPropertyAction act = new GetPropertyAction(DEFAULT_LEASE_TIMEOUT); diff --git a/src/share/classes/com/sun/jmx/event/LeaseManager.java b/src/share/classes/com/sun/jmx/event/LeaseManager.java index e1761011f0e0729e0d286534ce3021b948c4d292..2db6fea146bd74df86cbf8d1717dc902393ced11 100644 --- a/src/share/classes/com/sun/jmx/event/LeaseManager.java +++ b/src/share/classes/com/sun/jmx/event/LeaseManager.java @@ -29,6 +29,7 @@ import com.sun.jmx.remote.util.ClassLogger; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; /** @@ -141,11 +142,12 @@ public class LeaseManager { } private final Runnable callback; - private ScheduledFuture scheduled; // If null, the lease has expired. + private ScheduledFuture scheduled; // If null, the lease has expired. + private static final ThreadFactory threadFactory = + new DaemonThreadFactory("JMX LeaseManager %d"); private final ScheduledExecutorService executor - = Executors.newScheduledThreadPool(1, - new DaemonThreadFactory("JMX LeaseManager %d")); + = Executors.newScheduledThreadPool(1, threadFactory); private static final ClassLogger logger = new ClassLogger("javax.management.event", "LeaseManager"); diff --git a/src/share/classes/com/sun/jmx/event/LeaseRenewer.java b/src/share/classes/com/sun/jmx/event/LeaseRenewer.java index b3f7c7fee07bb96b10e997df30affbf3a4019db6..8ba6877221e5b4176cca9a42bf9e17faaabd6348 100644 --- a/src/share/classes/com/sun/jmx/event/LeaseRenewer.java +++ b/src/share/classes/com/sun/jmx/event/LeaseRenewer.java @@ -128,7 +128,7 @@ public class LeaseRenewer { }; private final Callable doRenew; - private ScheduledFuture future; + private ScheduledFuture future; private boolean closed = false; private long nextRenewTime; diff --git a/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java b/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java index 7da3406b911e0a06c681c3afe6b61d55487258ba..faa39e7656faacbbc6a55dc24f512cb46125c935 100644 --- a/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java +++ b/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java @@ -70,6 +70,7 @@ import javax.management.JMRuntimeException; import javax.management.ListenerNotFoundException; import javax.management.MBeanException; import javax.management.MBeanInfo; +import javax.management.MBeanNotificationInfo; import javax.management.MBeanPermission; import javax.management.MBeanRegistration; import javax.management.MBeanRegistrationException; @@ -247,7 +248,7 @@ public class DefaultMBeanServerInterceptor MBeanRegistrationException, MBeanException, NotCompliantMBeanException, InstanceNotFoundException { - Class theClass; + Class theClass; if (className == null) { final RuntimeException wrapped = @@ -327,7 +328,7 @@ public class DefaultMBeanServerInterceptor // ------------------------------ // ------------------------------ - Class theClass = object.getClass(); + Class theClass = object.getClass(); Introspector.checkCompliance(theClass); @@ -808,9 +809,8 @@ public class DefaultMBeanServerInterceptor // on each specific attribute // allowedAttributes = new AttributeList(attributes.size()); - for (Iterator i = attributes.iterator(); i.hasNext();) { + for (Attribute attribute : attributes.asList()) { try { - Attribute attribute = (Attribute) i.next(); checkMBeanPermission(mbeanServerName, classname, attribute.getName(), name, "setAttribute"); allowedAttributes.add(attribute); @@ -919,6 +919,12 @@ public class DefaultMBeanServerInterceptor DynamicMBean mbean = Introspector.makeDynamicMBean(object); + //Access the ObjectName template value only if the provided name is null + if(name == null) { + name = Introspector.templateToObjectName(mbean.getMBeanInfo(). + getDescriptor(), mbean); + } + return registerDynamicMBean(classname, mbean, name); } @@ -1046,8 +1052,10 @@ public class DefaultMBeanServerInterceptor Object resource = getResource(mbean); MBeanInjector.inject(resource, mbs, name); if (MBeanInjector.injectsSendNotification(resource)) { + MBeanNotificationInfo[] mbnis = + mbean.getMBeanInfo().getNotifications(); NotificationBroadcasterSupport nbs = - new NotificationBroadcasterSupport(); + new NotificationBroadcasterSupport(mbnis); MBeanInjector.injectSendNotification(resource, nbs); mbean = NotifySupport.wrap(mbean, nbs); } @@ -1857,7 +1865,7 @@ public class DefaultMBeanServerInterceptor } } - private static void checkMBeanTrustPermission(final Class theClass) + private static void checkMBeanTrustPermission(final Class theClass) throws SecurityException { SecurityManager sm = System.getSecurityManager(); if (sm != null) { diff --git a/src/share/classes/com/sun/jmx/interceptor/DispatchInterceptor.java b/src/share/classes/com/sun/jmx/interceptor/DispatchInterceptor.java index 4a79567fed14e7941bc69d16a24c041481a26a88..f68e539d2fc09a0213ad0b38b5c0a633fc8b6215 100644 --- a/src/share/classes/com/sun/jmx/interceptor/DispatchInterceptor.java +++ b/src/share/classes/com/sun/jmx/interceptor/DispatchInterceptor.java @@ -44,7 +44,6 @@ import javax.management.MBeanException; import javax.management.MBeanInfo; import javax.management.MBeanRegistrationException; import javax.management.MBeanServer; -import javax.management.MalformedObjectNameException; import javax.management.NotCompliantMBeanException; import javax.management.NotificationFilter; import javax.management.NotificationListener; @@ -205,8 +204,7 @@ public abstract class DispatchInterceptor // Returns the ObjectName of the JMXNamespace (or JMXDomain) for that // key (a namespace or a domain name). - abstract ObjectName getHandlerNameFor(String key) - throws MalformedObjectNameException; + abstract ObjectName getHandlerNameFor(String key); // Creates an interceptor for the given key, name, JMXNamespace (or // JMXDomain). Note: this will be either a NamespaceInterceptor @@ -263,14 +261,10 @@ public abstract class DispatchInterceptor void validateHandlerNameFor(String key, ObjectName name) { if (key == null || key.equals("")) throw new IllegalArgumentException("invalid key for "+name+": "+key); - try { - final ObjectName handlerName = getHandlerNameFor(key); - if (!name.equals(handlerName)) - throw new IllegalArgumentException("bad handler name: "+name+ - ". Should be: "+handlerName); - } catch (MalformedObjectNameException x) { - throw new IllegalArgumentException(name.toString(),x); - } + final ObjectName handlerName = getHandlerNameFor(key); + if (!name.equals(handlerName)) + throw new IllegalArgumentException("bad handler name: "+name+ + ". Should be: "+handlerName); } // Called by the DefaultMBeanServerInterceptor when an instance diff --git a/src/share/classes/com/sun/jmx/interceptor/DomainDispatchInterceptor.java b/src/share/classes/com/sun/jmx/interceptor/DomainDispatchInterceptor.java index 9b9b1d6b19c72d5e78ea02c0b0430c1217cfd5fe..388af6b21dd018507fbd2952f928793fa2290f8d 100644 --- a/src/share/classes/com/sun/jmx/interceptor/DomainDispatchInterceptor.java +++ b/src/share/classes/com/sun/jmx/interceptor/DomainDispatchInterceptor.java @@ -38,7 +38,6 @@ import java.util.logging.Logger; import javax.management.MBeanServer; import javax.management.MBeanServerDelegate; -import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import javax.management.QueryExp; import javax.management.namespace.JMXDomain; @@ -248,21 +247,17 @@ class DomainDispatchInterceptor if (pattern == null) return true; if (pattern.isDomainPattern()) return true; - try { - // case b) above. - // - // This is a bit of a hack. If there's any chance that a JMXDomain - // MBean name is selected by the given pattern then we must include - // the local namespace in our search. - // - // Returning true will have this effect. see 2. above. - // - if (pattern.apply(ALL_DOMAINS.withDomain(pattern.getDomain()))) - return true; - } catch (MalformedObjectNameException x) { - // should not happen - throw new IllegalArgumentException(String.valueOf(pattern), x); - } + // case b) above. + // + // This is a bit of a hack. If there's any chance that a JMXDomain + // MBean name is selected by the given pattern then we must include + // the local namespace in our search. + // + // Returning true will have this effect. see 2. above. + // + if (pattern.apply(ALL_DOMAINS.withDomain(pattern.getDomain()))) + return true; + return false; } @@ -291,8 +286,7 @@ class DomainDispatchInterceptor } @Override - final ObjectName getHandlerNameFor(String key) - throws MalformedObjectNameException { + final ObjectName getHandlerNameFor(String key) { return JMXDomain.getDomainObjectName(key); } diff --git a/src/share/classes/com/sun/jmx/interceptor/NamespaceDispatchInterceptor.java b/src/share/classes/com/sun/jmx/interceptor/NamespaceDispatchInterceptor.java index d86c787b8985f6bad3b2757e299e0fbea45de46a..5ab61f8933ac2dd65eb2a236a960e7aa2ed4c03d 100644 --- a/src/share/classes/com/sun/jmx/interceptor/NamespaceDispatchInterceptor.java +++ b/src/share/classes/com/sun/jmx/interceptor/NamespaceDispatchInterceptor.java @@ -37,8 +37,8 @@ import java.util.logging.Logger; import javax.management.MBeanServer; import javax.management.MBeanServerDelegate; -import javax.management.MalformedObjectNameException; import javax.management.ObjectName; +import javax.management.RuntimeOperationsException; import javax.management.namespace.JMXDomain; import javax.management.namespace.JMXNamespace; import static javax.management.namespace.JMXNamespaces.NAMESPACE_SEPARATOR; @@ -60,6 +60,7 @@ public class NamespaceDispatchInterceptor private static final int NAMESPACE_SEPARATOR_LENGTH = NAMESPACE_SEPARATOR.length(); + private static final ObjectName X3 = ObjectName.valueOf("x:x=x"); private final DomainDispatchInterceptor nextInterceptor; private final String serverName; @@ -89,27 +90,38 @@ public class NamespaceDispatchInterceptor serverName = Util.getMBeanServerSecurityName(delegate); } - // TODO: Should move that to JMXNamespace? or to ObjectName? /** * Get first name space in ObjectName path. Ignore leading namespace - * separators. + * separators. Includes the trailing //. + * + * Examples: + *

+     *  For ObjectName:                   Returns:
+     *  foo//bar//baz:x=x         ->      "foo//"
+     *  foo//:type=JMXNamespace   ->      "foo//"
+     *  foo//:x=x                 ->      "foo//"
+     *  foo////:x=x               ->      "foo//"
+     *  //foo//bar//baz:x=x       ->      "//"
+     *  ////foo//bar//baz:x=x     ->      "//"
+     *  //:x=x                    ->      "//"
+     *  foo:x=x                   ->      ""
+     *  (null)                    ->      ""
+     *  :x=x                      ->      ""
+     *
+     * 
**/ - static String getFirstNamespace(ObjectName name) { + static String getFirstNamespaceWithSlash(ObjectName name) { if (name == null) return ""; final String domain = name.getDomain(); if (domain.equals("")) return ""; - // skip leading separators - int first = 0; - while (domain.startsWith(NAMESPACE_SEPARATOR,first)) - first += NAMESPACE_SEPARATOR_LENGTH; - // go to next separator - final int end = domain.indexOf(NAMESPACE_SEPARATOR,first); + final int end = domain.indexOf(NAMESPACE_SEPARATOR); if (end == -1) return ""; // no namespace // This is the first element in the namespace path. - final String namespace = domain.substring(first,end); + final String namespace = + domain.substring(0,end+NAMESPACE_SEPARATOR_LENGTH); return namespace; } @@ -130,27 +142,49 @@ public class NamespaceDispatchInterceptor resource.getClass().getName()); } - final boolean isLocalHandlerNameFor(String namespace, - ObjectName handlerName) { - return handlerName.getDomain().equals(namespace+NAMESPACE_SEPARATOR) && - JMXNamespace.TYPE_ASSIGNMENT.equals( - handlerName.getKeyPropertyListString()); + // Removes the trailing //. namespaceWithSlash should be either + // "" or a namespace path ending with //. + // + private final String getKeyFor(String namespaceWithSlash) { + final int end = namespaceWithSlash.length() - + NAMESPACE_SEPARATOR_LENGTH; + if (end <= 0) return ""; + final String key = namespaceWithSlash.substring(0,end); + return key; } @Override final MBeanServer getInterceptorOrNullFor(ObjectName name) { - final String namespace = getFirstNamespace(name); - if (namespace.equals("") || isLocalHandlerNameFor(namespace,name) || - name.getDomain().equals(namespace+NAMESPACE_SEPARATOR)) { + final String namespace = getFirstNamespaceWithSlash(name); + + // Leading separators should trigger instance not found exception. + // returning null here has this effect. + // + if (namespace.equals(NAMESPACE_SEPARATOR)) { + LOG.finer("ObjectName starts with: "+namespace); + return null; + } + + // namespace="" means that there was no namespace path in the + // ObjectName. => delegate to the next interceptor (local MBS) + // name.getDomain()=namespace means that we have an ObjectName of + // the form blah//:x=x. This is either a JMXNamespace or a non + // existent MBean. => delegate to the next interceptor (local MBS) + if (namespace.equals("") || name.getDomain().equals(namespace)) { LOG.finer("dispatching to local name space"); return nextInterceptor; } - final NamespaceInterceptor ns = getInterceptor(namespace); + + // There was a namespace path in the ObjectName. Returns the + // interceptor that handles it, or null if there is no such + // interceptor. + final String key = getKeyFor(namespace); + final NamespaceInterceptor ns = getInterceptor(key); if (LOG.isLoggable(Level.FINER)) { if (ns != null) { - LOG.finer("dispatching to name space: " + namespace); + LOG.finer("dispatching to name space: " + key); } else { - LOG.finer("no handler for: " + namespace); + LOG.finer("no handler for: " + key); } } return ns; @@ -158,18 +192,44 @@ public class NamespaceDispatchInterceptor @Override final QueryInterceptor getInterceptorForQuery(ObjectName pattern) { - final String namespace = getFirstNamespace(pattern); - if (namespace.equals("") || isLocalHandlerNameFor(namespace,pattern) || - pattern.getDomain().equals(namespace+NAMESPACE_SEPARATOR)) { + final String namespace = getFirstNamespaceWithSlash(pattern); + + // Leading separators should trigger instance not found exception. + // returning null here has this effect. + // + if (namespace.equals(NAMESPACE_SEPARATOR)) { + LOG.finer("ObjectName starts with: "+namespace); + return null; + } + + // namespace="" means that there was no namespace path in the + // ObjectName. => delegate to the next interceptor (local MBS) + // name.getDomain()=namespace means that we have an ObjectName of + // the form blah//:x=x. This is either a JMXNamespace or a non + // existent MBean. => delegate to the next interceptor (local MBS) + if (namespace.equals("") || pattern.getDomain().equals(namespace)) { LOG.finer("dispatching to local name space"); return new QueryInterceptor(nextInterceptor); } - final NamespaceInterceptor ns = getInterceptor(namespace); + + // This is a 'hack' to check whether the first namespace is a pattern. + // We wan to throw RTOE wrapping IAE in that case + if (X3.withDomain(namespace).isDomainPattern()) { + throw new RuntimeOperationsException( + new IllegalArgumentException("Pattern not allowed in namespace path")); + } + + // There was a namespace path in the ObjectName. Returns the + // interceptor that handles it, or null if there is no such + // interceptor. + // + final String key = getKeyFor(namespace); + final NamespaceInterceptor ns = getInterceptor(key); if (LOG.isLoggable(Level.FINER)) { if (ns != null) { - LOG.finer("dispatching to name space: " + namespace); + LOG.finer("dispatching to name space: " + key); } else { - LOG.finer("no handler for: " + namespace); + LOG.finer("no handler for: " + key); } } if (ns == null) return null; @@ -177,15 +237,16 @@ public class NamespaceDispatchInterceptor } @Override - final ObjectName getHandlerNameFor(String key) - throws MalformedObjectNameException { - return ObjectName.getInstance(key+NAMESPACE_SEPARATOR, + final ObjectName getHandlerNameFor(String key) { + return ObjectName.valueOf(key+NAMESPACE_SEPARATOR, "type", JMXNamespace.TYPE); } @Override final public String getHandlerKey(ObjectName name) { - return getFirstNamespace(name); + final String namespace = getFirstNamespaceWithSlash(name); + // namespace is either "" or a namespace ending with // + return getKeyFor(namespace); } @Override diff --git a/src/share/classes/com/sun/jmx/interceptor/SingleMBeanForwarder.java b/src/share/classes/com/sun/jmx/interceptor/SingleMBeanForwarder.java index 4a47d4ce3aafae60874c18aada3f193fda185fa6..cfb40092557f137bf75fad0e3bc3ef62662a5dd6 100644 --- a/src/share/classes/com/sun/jmx/interceptor/SingleMBeanForwarder.java +++ b/src/share/classes/com/sun/jmx/interceptor/SingleMBeanForwarder.java @@ -55,9 +55,19 @@ import javax.management.namespace.JMXNamespaces; import javax.management.namespace.MBeanServerSupport; import javax.management.remote.IdentityMBeanServerForwarder; +/** + *

An {@link MBeanServerForwarder} that simulates the existence of a + * given MBean. Requests for that MBean, call it X, are intercepted by the + * forwarder, and requests for any other MBean are forwarded to the next + * forwarder in the chain. Requests such as queryNames which can span both the + * X and other MBeans are handled by merging the results for X with the results + * from the next forwarder, unless the "visible" parameter is false, in which + * case X is invisible to such requests.

+ */ public class SingleMBeanForwarder extends IdentityMBeanServerForwarder { private final ObjectName mbeanName; + private final boolean visible; private DynamicMBean mbean; private MBeanServer mbeanMBS = new MBeanServerSupport() { @@ -85,10 +95,20 @@ public class SingleMBeanForwarder extends IdentityMBeanServerForwarder { return null; } + // This will only be called if mbeanName has an empty domain. + // In that case a getAttribute (e.g.) of that name will have the + // domain replaced by MBeanServerSupport with the default domain, + // so we must be sure that the default domain is empty too. + @Override + public String getDefaultDomain() { + return mbeanName.getDomain(); + } }; - public SingleMBeanForwarder(ObjectName mbeanName, DynamicMBean mbean) { + public SingleMBeanForwarder( + ObjectName mbeanName, DynamicMBean mbean, boolean visible) { this.mbeanName = mbeanName; + this.visible = visible; setSingleMBean(mbean); } @@ -213,8 +233,10 @@ public class SingleMBeanForwarder extends IdentityMBeanServerForwarder { @Override public String[] getDomains() { - TreeSet domainSet = - new TreeSet(Arrays.asList(super.getDomains())); + String[] domains = super.getDomains(); + if (!visible) + return domains; + TreeSet domainSet = new TreeSet(Arrays.asList(domains)); domainSet.add(mbeanName.getDomain()); return domainSet.toArray(new String[domainSet.size()]); } @@ -222,7 +244,7 @@ public class SingleMBeanForwarder extends IdentityMBeanServerForwarder { @Override public Integer getMBeanCount() { Integer count = super.getMBeanCount(); - if (!super.isRegistered(mbeanName)) + if (visible && !super.isRegistered(mbeanName)) count++; return count; } @@ -284,7 +306,7 @@ public class SingleMBeanForwarder extends IdentityMBeanServerForwarder { */ private boolean applies(ObjectName pattern) { // we know pattern is not null. - if (!pattern.apply(mbeanName)) + if (!visible || !pattern.apply(mbeanName)) return false; final String dompat = pattern.getDomain(); @@ -306,10 +328,12 @@ public class SingleMBeanForwarder extends IdentityMBeanServerForwarder { @Override public Set queryMBeans(ObjectName name, QueryExp query) { Set names = super.queryMBeans(name, query); - if (name == null || applies(name) ) { - // Don't assume mbs.queryNames returns a writable set. - names = Util.cloneSet(names); - names.addAll(mbeanMBS.queryMBeans(name, query)); + if (visible) { + if (name == null || applies(name) ) { + // Don't assume mbs.queryNames returns a writable set. + names = Util.cloneSet(names); + names.addAll(mbeanMBS.queryMBeans(name, query)); + } } return names; } @@ -317,10 +341,12 @@ public class SingleMBeanForwarder extends IdentityMBeanServerForwarder { @Override public Set queryNames(ObjectName name, QueryExp query) { Set names = super.queryNames(name, query); - if (name == null || applies(name)) { - // Don't assume mbs.queryNames returns a writable set. - names = Util.cloneSet(names); - names.addAll(mbeanMBS.queryNames(name, query)); + if (visible) { + if (name == null || applies(name)) { + // Don't assume mbs.queryNames returns a writable set. + names = Util.cloneSet(names); + names.addAll(mbeanMBS.queryNames(name, query)); + } } return names; } diff --git a/src/share/classes/com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport.java b/src/share/classes/com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport.java index 35311699d8d28997f43d564692583b1353a3f3f8..5afb79a17fd3f498092a5aa7bf0a8484db06e437 100644 --- a/src/share/classes/com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport.java +++ b/src/share/classes/com/sun/jmx/mbeanserver/ClassLoaderRepositorySupport.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -136,14 +136,14 @@ final class ClassLoaderRepositorySupport new Hashtable(10); // from javax.management.loading.DefaultLoaderRepository - public final Class loadClass(String className) + public final Class loadClass(String className) throws ClassNotFoundException { return loadClass(loaders, className, null, null); } // from javax.management.loading.DefaultLoaderRepository - public final Class loadClassWithout(ClassLoader without, String className) + public final Class loadClassWithout(ClassLoader without, String className) throws ClassNotFoundException { if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) { MBEANSERVER_LOGGER.logp(Level.FINER, @@ -167,7 +167,7 @@ final class ClassLoaderRepositorySupport } - public final Class loadClassBefore(ClassLoader stop, String className) + public final Class loadClassBefore(ClassLoader stop, String className) throws ClassNotFoundException { if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) { MBEANSERVER_LOGGER.logp(Level.FINER, @@ -187,10 +187,10 @@ final class ClassLoaderRepositorySupport } - private Class loadClass(final LoaderEntry list[], - final String className, - final ClassLoader without, - final ClassLoader stop) + private Class loadClass(final LoaderEntry list[], + final String className, + final ClassLoader without, + final ClassLoader stop) throws ClassNotFoundException { final int size = list.length; for(int i=0; i getOpenReturnType() { return returnMapping.getOpenType(); } - OpenType[] getOpenParameterTypes() { - final OpenType[] types = new OpenType[paramMappings.length]; + OpenType[] getOpenParameterTypes() { + final OpenType[] types = new OpenType[paramMappings.length]; for (int i = 0; i < paramMappings.length; i++) types[i] = paramMappings[i].getOpenType(); return types; diff --git a/src/share/classes/com/sun/jmx/mbeanserver/DefaultMXBeanMappingFactory.java b/src/share/classes/com/sun/jmx/mbeanserver/DefaultMXBeanMappingFactory.java index b86b2e001283a55f9345d2e78350a4df96f8dfe4..1b653c28eafd7637539da45935b5512f981b62d1 100644 --- a/src/share/classes/com/sun/jmx/mbeanserver/DefaultMXBeanMappingFactory.java +++ b/src/share/classes/com/sun/jmx/mbeanserver/DefaultMXBeanMappingFactory.java @@ -26,7 +26,8 @@ package com.sun.jmx.mbeanserver; import static com.sun.jmx.mbeanserver.Util.*; -import java.lang.annotation.ElementType; +import static com.sun.jmx.mbeanserver.MXBeanIntrospector.typeName; + import javax.management.openmbean.MXBeanMappingClass; import static javax.management.openmbean.SimpleType.*; @@ -120,7 +121,7 @@ import javax.management.openmbean.TabularType; */ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { static abstract class NonNullMXBeanMapping extends MXBeanMapping { - NonNullMXBeanMapping(Type javaType, OpenType openType) { + NonNullMXBeanMapping(Type javaType, OpenType openType) { super(javaType, openType); } @@ -195,15 +196,15 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { static { /* Set up the mappings for Java types that map to SimpleType. */ - final OpenType[] simpleTypes = { + final OpenType[] simpleTypes = { BIGDECIMAL, BIGINTEGER, BOOLEAN, BYTE, CHARACTER, DATE, DOUBLE, FLOAT, INTEGER, LONG, OBJECTNAME, SHORT, STRING, VOID, }; for (int i = 0; i < simpleTypes.length; i++) { - final OpenType t = simpleTypes[i]; - Class c; + final OpenType t = simpleTypes[i]; + Class c; try { c = Class.forName(t.getClassName(), false, ObjectName.class.getClassLoader()); @@ -224,7 +225,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { if (primitiveType != void.class) { final Class primitiveArrayType = Array.newInstance(primitiveType, 0).getClass(); - final OpenType primitiveArrayOpenType = + final OpenType primitiveArrayOpenType = ArrayType.getPrimitiveArrayType(primitiveArrayType); final MXBeanMapping primitiveArrayMapping = new IdentityMapping(primitiveArrayType, @@ -247,8 +248,10 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { public synchronized MXBeanMapping mappingForType(Type objType, MXBeanMappingFactory factory) throws OpenDataException { - if (inProgress.containsKey(objType)) - throw new OpenDataException("Recursive data structure"); + if (inProgress.containsKey(objType)) { + throw new OpenDataException( + "Recursive data structure, including " + typeName(objType)); + } MXBeanMapping mapping; @@ -259,6 +262,8 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { inProgress.put(objType, objType); try { mapping = makeMapping(objType, factory); + } catch (OpenDataException e) { + throw openDataException("Cannot convert type: " + typeName(objType), e); } finally { inProgress.remove(objType); } @@ -285,13 +290,13 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { Type componentType = ((GenericArrayType) objType).getGenericComponentType(); return makeArrayOrCollectionMapping(objType, componentType, factory); - } else if (objType instanceof Class) { + } else if (objType instanceof Class) { Class objClass = (Class) objType; if (objClass.isEnum()) { // Huge hack to avoid compiler warnings here. The ElementType // parameter is ignored but allows us to obtain a type variable // T that matches >. - return makeEnumMapping((Class) objClass, ElementType.class); + return makeEnumMapping((Class) objClass, ElementType.class); } else if (objClass.isArray()) { Type componentType = objClass.getComponentType(); return makeArrayOrCollectionMapping(objClass, componentType, @@ -354,7 +359,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { } private static > MXBeanMapping - makeEnumMapping(Class enumClass, Class fake) { + makeEnumMapping(Class enumClass, Class fake) { return new EnumMapping(Util.>cast(enumClass)); } @@ -411,17 +416,17 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { MXBeanMappingFactory factory) throws OpenDataException { - final String objTypeName = objType.toString(); + final String objTypeName = typeName(objType); final MXBeanMapping keyMapping = factory.mappingForType(keyType, factory); final MXBeanMapping valueMapping = factory.mappingForType(valueType, factory); - final OpenType keyOpenType = keyMapping.getOpenType(); - final OpenType valueOpenType = valueMapping.getOpenType(); + final OpenType keyOpenType = keyMapping.getOpenType(); + final OpenType valueOpenType = valueMapping.getOpenType(); final CompositeType rowType = new CompositeType(objTypeName, objTypeName, keyValueArray, keyValueArray, - new OpenType[] {keyOpenType, valueOpenType}); + new OpenType[] {keyOpenType, valueOpenType}); final TabularType tabularType = new TabularType(objTypeName, objTypeName, rowType, keyArray); return new TabularMapping(objType, sortedMap, tabularType, @@ -440,8 +445,8 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { final Type rawType = objType.getRawType(); - if (rawType instanceof Class) { - Class c = (Class) rawType; + if (rawType instanceof Class) { + Class c = (Class) rawType; if (c == List.class || c == Set.class || c == SortedSet.class) { Type[] actuals = objType.getActualTypeArguments(); assert(actuals.length == 1); @@ -468,7 +473,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { return new MXBeanRefMapping(t); } - private MXBeanMapping makeCompositeMapping(Class c, + private MXBeanMapping makeCompositeMapping(Class c, MXBeanMappingFactory factory) throws OpenDataException { @@ -514,7 +519,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { final Method[] getters = new Method[nitems]; final String[] itemNames = new String[nitems]; - final OpenType[] openTypes = new OpenType[nitems]; + final OpenType[] openTypes = new OpenType[nitems]; int i = 0; for (Map.Entry entry : getterMap.entrySet()) { itemNames[i] = entry.getKey(); @@ -546,7 +551,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { can be directly represented by an ArrayType, and an int needs no mapping because reflection takes care of it. */ private static final class IdentityMapping extends NonNullMXBeanMapping { - IdentityMapping(Type targetType, OpenType openType) { + IdentityMapping(Type targetType, OpenType openType) { super(targetType, openType); } @@ -576,7 +581,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { @Override final Object toNonNullOpenValue(Object value) { - return ((Enum) value).name(); + return ((Enum) value).name(); } @Override @@ -595,7 +600,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { private static final class ArrayMapping extends NonNullMXBeanMapping { ArrayMapping(Type targetType, - ArrayType openArrayType, Class openArrayClass, + ArrayType openArrayType, Class openArrayClass, MXBeanMapping elementMapping) { super(targetType, openArrayType); this.elementMapping = elementMapping; @@ -623,7 +628,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { if (javaType instanceof GenericArrayType) { componentType = ((GenericArrayType) javaType).getGenericComponentType(); - } else if (javaType instanceof Class && + } else if (javaType instanceof Class && ((Class) javaType).isArray()) { componentType = ((Class) javaType).getComponentType(); } else { @@ -651,8 +656,8 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { private static final class CollectionMapping extends NonNullMXBeanMapping { CollectionMapping(Type targetType, - ArrayType openArrayType, - Class openArrayClass, + ArrayType openArrayType, + Class openArrayClass, MXBeanMapping elementMapping) { super(targetType, openArrayType); this.elementMapping = elementMapping; @@ -662,26 +667,28 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { and all Sets to TreeSet. (TreeSet because it is a SortedSet, so works for both Set and SortedSet.) */ Type raw = ((ParameterizedType) targetType).getRawType(); - Class c = (Class) raw; + Class c = (Class) raw; + final Class collC; if (c == List.class) - collectionClass = ArrayList.class; + collC = ArrayList.class; else if (c == Set.class) - collectionClass = HashSet.class; + collC = HashSet.class; else if (c == SortedSet.class) - collectionClass = TreeSet.class; + collC = TreeSet.class; else { // can't happen assert(false); - collectionClass = null; + collC = null; } + collectionClass = Util.cast(collC); } @Override final Object toNonNullOpenValue(Object value) throws OpenDataException { - final Collection valueCollection = (Collection) value; - if (valueCollection instanceof SortedSet) { - Comparator comparator = - ((SortedSet) valueCollection).comparator(); + final Collection valueCollection = (Collection) value; + if (valueCollection instanceof SortedSet) { + Comparator comparator = + ((SortedSet) valueCollection).comparator(); if (comparator != null) { final String msg = "Cannot convert SortedSet with non-null comparator: " + @@ -725,7 +732,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { elementMapping.checkReconstructible(); } - private final Class collectionClass; + private final Class> collectionClass; private final MXBeanMapping elementMapping; } @@ -794,8 +801,8 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { @Override final Object toNonNullOpenValue(Object value) throws OpenDataException { final Map valueMap = cast(value); - if (valueMap instanceof SortedMap) { - Comparator comparator = ((SortedMap) valueMap).comparator(); + if (valueMap instanceof SortedMap) { + Comparator comparator = ((SortedMap) valueMap).comparator(); if (comparator != null) { final String msg = "Cannot convert SortedMap with non-null comparator: " + @@ -806,7 +813,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { final TabularType tabularType = (TabularType) getOpenType(); final TabularData table = new TabularDataSupport(tabularType); final CompositeType rowType = tabularType.getRowType(); - for (Map.Entry entry : valueMap.entrySet()) { + for (Map.Entry entry : valueMap.entrySet()) { final Object openKey = keyMapping.toOpenValue(entry.getKey()); final Object openValue = valueMapping.toOpenValue(entry.getValue()); final CompositeData row; @@ -852,7 +859,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { } private final class CompositeMapping extends NonNullMXBeanMapping { - CompositeMapping(Class targetClass, + CompositeMapping(Class targetClass, CompositeType compositeType, String[] itemNames, Method[] getters, @@ -901,7 +908,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { if (compositeBuilder != null) return; - Class targetClass = (Class) getJavaType(); + Class targetClass = (Class) getJavaType(); /* In this 2D array, each subarray is a set of builders where there is no point in consulting the ones after the first if the first refuses. */ @@ -924,6 +931,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { concatenating each Builder's explanation of why it isn't applicable. */ final StringBuilder whyNots = new StringBuilder(); + Throwable possibleCause = null; find: for (CompositeBuilder[] relatedBuilders : builders) { for (int i = 0; i < relatedBuilders.length; i++) { @@ -933,6 +941,9 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { foundBuilder = builder; break find; } + Throwable cause = builder.possibleCause(); + if (cause != null) + possibleCause = cause; if (whyNot.length() > 0) { if (whyNots.length() > 0) whyNots.append("; "); @@ -943,10 +954,12 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { } } if (foundBuilder == null) { - final String msg = + String msg = "Do not know how to make a " + targetClass.getName() + " from a CompositeData: " + whyNots; - throw new InvalidObjectException(msg); + if (possibleCause != null) + msg += ". Remaining exceptions show a POSSIBLE cause."; + throw invalidObjectException(msg, possibleCause); } compositeBuilder = foundBuilder; } @@ -973,7 +986,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { /** Converts from a CompositeData to an instance of the targetClass. */ private static abstract class CompositeBuilder { - CompositeBuilder(Class targetClass, String[] itemNames) { + CompositeBuilder(Class targetClass, String[] itemNames) { this.targetClass = targetClass; this.itemNames = itemNames; } @@ -994,6 +1007,16 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { abstract String applicable(Method[] getters) throws InvalidObjectException; + /** If the subclass returns an explanation of why it is not applicable, + it can additionally indicate an exception with details. This is + potentially confusing, because the real problem could be that one + of the other subclasses is supposed to be applicable but isn't. + But the advantage of less information loss probably outweighs the + disadvantage of possible confusion. */ + Throwable possibleCause() { + return null; + } + abstract Object fromCompositeData(CompositeData cd, String[] itemNames, MXBeanMapping[] converters) @@ -1008,7 +1031,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { private static final class CompositeBuilderViaFrom extends CompositeBuilder { - CompositeBuilderViaFrom(Class targetClass, String[] itemNames) { + CompositeBuilderViaFrom(Class targetClass, String[] itemNames) { super(targetClass, itemNames); } @@ -1018,8 +1041,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { Class targetClass = getTargetClass(); try { Method fromMethod = - targetClass.getMethod("from", - new Class[] {CompositeData.class}); + targetClass.getMethod("from", CompositeData.class); if (!Modifier.isStatic(fromMethod.getModifiers())) { final String msg = @@ -1030,8 +1052,8 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { if (fromMethod.getReturnType() != getTargetClass()) { final String msg = "Method from(CompositeData) returns " + - fromMethod.getReturnType().getName() + - " not " + targetClass.getName(); + typeName(fromMethod.getReturnType()) + + " not " + typeName(targetClass); throw new InvalidObjectException(msg); } @@ -1071,7 +1093,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { If all the getters are OK, then the "applicable" method will return an empty string and the other builders will be tried. */ private static class CompositeBuilderCheckGetters extends CompositeBuilder { - CompositeBuilderCheckGetters(Class targetClass, String[] itemNames, + CompositeBuilderCheckGetters(Class targetClass, String[] itemNames, MXBeanMapping[] getterConverters) { super(targetClass, itemNames); this.getterConverters = getterConverters; @@ -1082,6 +1104,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { try { getterConverters[i].checkReconstructible(); } catch (InvalidObjectException e) { + possibleCause = e; return "method " + getters[i].getName() + " returns type " + "that cannot be mapped back from OpenData"; } @@ -1089,6 +1112,11 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { return ""; } + @Override + Throwable possibleCause() { + return possibleCause; + } + final Object fromCompositeData(CompositeData cd, String[] itemNames, MXBeanMapping[] converters) { @@ -1096,6 +1124,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { } private final MXBeanMapping[] getterConverters; + private Throwable possibleCause; } /** Builder for when the target class has a setter for every getter. */ @@ -1115,7 +1144,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { Method[] setters = new Method[getters.length]; for (int i = 0; i < getters.length; i++) { Method getter = getters[i]; - Class returnType = getter.getReturnType(); + Class returnType = getter.getReturnType(); String name = propertyName(getter); String setterName = "set" + name; Method setter; @@ -1163,7 +1192,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { private static final class CompositeBuilderViaConstructor extends CompositeBuilder { - CompositeBuilderViaConstructor(Class targetClass, String[] itemNames) { + CompositeBuilderViaConstructor(Class targetClass, String[] itemNames) { super(targetClass, itemNames); } @@ -1171,7 +1200,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { final Class propertyNamesClass = ConstructorProperties.class; - Class targetClass = getTargetClass(); + Class targetClass = getTargetClass(); Constructor[] constrs = targetClass.getConstructors(); // Applicable if and only if there are any annotated constructors @@ -1226,10 +1255,16 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { for (int i = 0; i < propertyNames.length; i++) { String propertyName = propertyNames[i]; if (!getterMap.containsKey(propertyName)) { - final String msg = + String msg = "@ConstructorProperties includes name " + propertyName + - " which does not correspond to a property: " + - constr; + " which does not correspond to a property"; + for (String getterName : getterMap.keySet()) { + if (getterName.equalsIgnoreCase(propertyName)) { + msg += " (differs only in case from property " + + getterName + ")"; + } + } + msg += ": " + constr; throw new InvalidObjectException(msg); } int getterIndex = getterMap.get(propertyName); @@ -1384,12 +1419,12 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { private static final class CompositeBuilderViaProxy extends CompositeBuilder { - CompositeBuilderViaProxy(Class targetClass, String[] itemNames) { + CompositeBuilderViaProxy(Class targetClass, String[] itemNames) { super(targetClass, itemNames); } String applicable(Method[] getters) { - Class targetClass = getTargetClass(); + Class targetClass = getTargetClass(); if (!targetClass.isInterface()) return "not an interface"; Set methods = @@ -1401,7 +1436,7 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { String bad = null; for (Method m : methods) { String mname = m.getName(); - Class[] mparams = m.getParameterTypes(); + Class[] mparams = m.getParameterTypes(); try { Method om = Object.class.getMethod(mname, mparams); if (!Modifier.isPublic(om.getModifiers())) @@ -1422,10 +1457,10 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { final Object fromCompositeData(CompositeData cd, String[] itemNames, MXBeanMapping[] converters) { - final Class targetClass = getTargetClass(); + final Class targetClass = getTargetClass(); return Proxy.newProxyInstance(targetClass.getClassLoader(), - new Class[] {targetClass}, + new Class[] {targetClass}, new CompositeDataInvocationHandler(cd)); } } @@ -1447,9 +1482,9 @@ public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory { return openDataException(cause.getMessage(), cause); } - static void mustBeComparable(Class collection, Type element) + static void mustBeComparable(Class collection, Type element) throws OpenDataException { - if (!(element instanceof Class) + if (!(element instanceof Class) || !Comparable.class.isAssignableFrom((Class) element)) { final String msg = "Parameter class " + element + " of " + diff --git a/src/share/classes/com/sun/jmx/mbeanserver/Introspector.java b/src/share/classes/com/sun/jmx/mbeanserver/Introspector.java index 52783fd5a6043b2b8cda001615fc6ddd3af47d63..ba27f6e839879843633dbf3cb8d5348226ec0e24 100644 --- a/src/share/classes/com/sun/jmx/mbeanserver/Introspector.java +++ b/src/share/classes/com/sun/jmx/mbeanserver/Introspector.java @@ -63,7 +63,14 @@ import java.beans.BeanInfo; import java.beans.PropertyDescriptor; import java.lang.reflect.Array; import java.lang.reflect.InvocationTargetException; +import java.util.LinkedHashSet; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.management.AttributeNotFoundException; +import javax.management.JMX; +import javax.management.ObjectName; +import javax.management.ObjectNameTemplate; import javax.management.openmbean.CompositeData; import javax.management.openmbean.MXBeanMappingFactory; @@ -75,7 +82,13 @@ import javax.management.openmbean.MXBeanMappingFactory; */ public class Introspector { - + /** + * Pattern used to extract Attribute Names from ObjectNameTemplate Annotation + * For example, in the following example, the Name attribute value is + * retrieved : ":type=MyType, name={Name}" + */ + private static Pattern OBJECT_NAME_PATTERN_TEMPLATE = + Pattern.compile("(\\{[^\\}]+\\})|(=\"\\{[^\\}]+\\}\")"); /* * ------------------------------------------ * PRIVATE CONSTRUCTORS @@ -115,7 +128,7 @@ public class Introspector { * Dynamic MBeans, false otherwise. * **/ - public static final boolean isDynamic(final Class c) { + public static final boolean isDynamic(final Class c) { // Check if the MBean implements the DynamicMBean interface return javax.management.DynamicMBean.class.isAssignableFrom(c); } @@ -134,7 +147,7 @@ public class Introspector { * MBeanServer. * **/ - public static void testCreation(Class c) + public static void testCreation(Class c) throws NotCompliantMBeanException { // Check if the class is a concrete class final int mods = c.getModifiers(); @@ -143,7 +156,7 @@ public class Introspector { } // Check if the MBean has a public constructor - final Constructor[] consList = c.getConstructors(); + final Constructor[] consList = c.getConstructors(); if (consList.length == 0) { throw new NotCompliantMBeanException("MBean class must have public constructor"); } @@ -253,7 +266,7 @@ public class Introspector { * @exception NotCompliantMBeanException The specified class is not a * JMX compliant MBean */ - public static MBeanInfo testCompliance(Class baseClass) + public static MBeanInfo testCompliance(Class baseClass) throws NotCompliantMBeanException { // ------------------------------ @@ -267,7 +280,7 @@ public class Introspector { return testCompliance(baseClass, null); } - public static void testComplianceMXBeanInterface(Class interfaceClass, + public static void testComplianceMXBeanInterface(Class interfaceClass, MXBeanMappingFactory factory) throws NotCompliantMBeanException { MXBeanIntrospector.getInstance(factory).getAnalyzer(interfaceClass); @@ -389,6 +402,42 @@ public class Introspector { return getStandardMBeanInterface(baseClass); } + public static ObjectName templateToObjectName(Descriptor descriptor, + DynamicMBean mbean) + throws NotCompliantMBeanException { + String template = (String) + descriptor.getFieldValue(JMX.OBJECT_NAME_TEMPLATE); + if(template == null) return null; + try { + Matcher m = OBJECT_NAME_PATTERN_TEMPLATE.matcher(template); + while (m.find()){ + String grp = m.group(); + System.out.println("GROUP " + grp); + String attributeName = null; + boolean quote = false; + if(grp.startsWith("=\"{")) { + attributeName = grp.substring(3, grp.length() - 2); + quote = true; + } else + attributeName = grp.substring(1, grp.length() - 1); + + Object attributeValue = mbean.getAttribute(attributeName); + String validValue = quote ? + "=" + ObjectName.quote(attributeValue.toString()) : + attributeValue.toString(); + template = template.replace(grp, validValue); + } + return new ObjectName(template); + }catch(Exception ex) { + NotCompliantMBeanException ncex = new + NotCompliantMBeanException(ObjectNameTemplate.class. + getSimpleName() + " annotation value [" + template + "] " + + "is invalid. " + ex); + ncex.initCause(ex); + throw ncex; + } + } + /* * ------------------------------------------ * PRIVATE METHODS @@ -462,11 +511,31 @@ public class Introspector { return null; } - public static Descriptor descriptorForElement(final AnnotatedElement elmt) { + public static Descriptor descriptorForElement(final AnnotatedElement elmt, + boolean isSetter) { if (elmt == null) return ImmutableDescriptor.EMPTY_DESCRIPTOR; final Annotation[] annots = elmt.getAnnotations(); - return descriptorForAnnotations(annots); + Descriptor descr = descriptorForAnnotations(annots); + String[] exceptions = {}; + if(elmt instanceof Method) + exceptions = getAllExceptions(((Method) elmt).getExceptionTypes()); + else + if(elmt instanceof Constructor) + exceptions = getAllExceptions(((Constructor) elmt). + getExceptionTypes()); + + if(exceptions.length > 0 ) { + String fieldName = isSetter ? JMX.SET_EXCEPTIONS_FIELD : + JMX.EXCEPTIONS_FIELD; + + String[] fieldNames = {fieldName}; + Object[] fieldValues = {exceptions}; + descr = ImmutableDescriptor.union(descr, + new ImmutableDescriptor(fieldNames, fieldValues)); + } + + return descr; } public static Descriptor descriptorForAnnotation(Annotation annot) { @@ -489,6 +558,20 @@ public class Introspector { return new ImmutableDescriptor(descriptorMap); } + /** + * Array of thrown excepions. + * @param exceptions can be null; + * @return An Array of Exception class names. Size is 0 if method is null. + */ + private static String[] getAllExceptions(Class[] exceptions) { + Set set = new LinkedHashSet(); + for(Classex : exceptions) + set.add(ex.getName()); + + String[] arr = new String[set.size()]; + return set.toArray(arr); + } + private static void addDescriptorFieldsToMap( Map descriptorMap, DescriptorFields df) { for (String field : df.value()) { @@ -596,10 +679,10 @@ public class Introspector { ss[i] = (String) annotationToField(xx[i]); return ss; } - if (x instanceof Class) + if (x instanceof Class) return ((Class) x).getName(); - if (x instanceof Enum) - return ((Enum) x).name(); + if (x instanceof Enum) + return ((Enum) x).name(); // The only other possibility is that the value is another // annotation, or that the language has evolved since this code // was written. We don't allow for either of those currently. diff --git a/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java b/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java index 777cd1cce65461b641dc5ca217dd3bf5ca0a7b3f..4fc25e912786f5e85b59322f6bae8b98f8302470 100644 --- a/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java +++ b/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java @@ -33,6 +33,7 @@ import java.security.AccessController; import java.security.Permission; import java.security.PrivilegedExceptionAction; import java.util.Iterator; +import java.util.List; import java.util.Set; import java.util.logging.Level; @@ -121,7 +122,7 @@ public final class JmxMBeanServer * {@link javax.management.MBeanServerFactory#newMBeanServer(java.lang.String)} * instead. *

- * By default, {@link MBeanServerInterceptor} are disabled. Use + * By default, interceptors are disabled. Use * {@link #JmxMBeanServer(java.lang.String,javax.management.MBeanServer,javax.management.MBeanServerDelegate,boolean)} to enable them. * * @param domain The default domain name used by this MBeanServer. @@ -238,7 +239,7 @@ public final class JmxMBeanServer this.mBeanServerDelegateObject = delegate; this.outerShell = outer; - final Repository repository = new Repository(domain,fairLock); + final Repository repository = new Repository(domain); this.mbsInterceptor = new NamespaceDispatchInterceptor(outer, delegate, instantiator, repository); @@ -1144,7 +1145,7 @@ public final class JmxMBeanServer // This call requires MBeanPermission 'getClassLoaderRepository' final ClassLoaderRepository clr = getClassLoaderRepository(); - Class theClass; + Class theClass; try { if (clr == null) throw new ClassNotFoundException(className); theClass = clr.loadClass(className); @@ -1457,23 +1458,22 @@ public final class JmxMBeanServer */ private AttributeList cloneAttributeList(AttributeList list) { if (list != null) { + List alist = list.asList(); if (!list.getClass().equals(AttributeList.class)) { // Create new attribute list // - AttributeList newList = new AttributeList(list.size()); + AttributeList newList = new AttributeList(alist.size()); // Iterate through list and replace non JMX attributes // - for (Iterator i = list.iterator(); i.hasNext(); ) { - Attribute attribute = (Attribute) i.next(); + for (Attribute attribute : alist) newList.add(cloneAttribute(attribute)); - } return newList; } else { // Iterate through list and replace non JMX attributes // - for (int i = 0; i < list.size(); i++) { - Attribute attribute = (Attribute) list.get(i); + for (int i = 0; i < alist.size(); i++) { + Attribute attribute = alist.get(i); if (!attribute.getClass().equals(Attribute.class)) { list.set(i, cloneAttribute(attribute)); } diff --git a/src/share/classes/com/sun/jmx/mbeanserver/MBeanInjector.java b/src/share/classes/com/sun/jmx/mbeanserver/MBeanInjector.java index 8ef296a1a4cd9f58ec51b39903d63c52284e3a80..4917d089e8d8afc10218a2d5eceae46d18e83844 100644 --- a/src/share/classes/com/sun/jmx/mbeanserver/MBeanInjector.java +++ b/src/share/classes/com/sun/jmx/mbeanserver/MBeanInjector.java @@ -47,6 +47,10 @@ import java.util.List; import javax.management.SendNotification; public class MBeanInjector { + // There are no instances of this class + private MBeanInjector() { + } + private static Class[] injectedClasses = { MBeanServer.class, ObjectName.class, SendNotification.class, }; diff --git a/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java b/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java index 019793b8d859d0011e692f880f81b81a91037a2e..f3bd67e2f23b34a67982d046b3663f725987d4d2 100644 --- a/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java +++ b/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java @@ -70,7 +70,7 @@ public class MBeanInstantiator { * instantiate an MBean of this class in the MBeanServer. * e.g. it must have a public constructor, be a concrete class... */ - public void testCreation(Class c) throws NotCompliantMBeanException { + public void testCreation(Class c) throws NotCompliantMBeanException { Introspector.testCreation(c); } @@ -78,10 +78,10 @@ public class MBeanInstantiator { * Loads the class with the specified name using this object's * Default Loader Repository. **/ - public Class findClassWithDefaultLoaderRepository(String className) + public Class findClassWithDefaultLoaderRepository(String className) throws ReflectionException { - Class theClass; + Class theClass; if (className == null) { throw new RuntimeOperationsException(new IllegalArgumentException("The class name cannot be null"), @@ -105,7 +105,7 @@ public class MBeanInstantiator { * Gets the class for the specified class name using the MBean * Interceptor's classloader */ - public Class findClass(String className, ClassLoader loader) + public Class findClass(String className, ClassLoader loader) throws ReflectionException { return loadClass(className,loader); @@ -115,7 +115,7 @@ public class MBeanInstantiator { * Gets the class for the specified class name using the specified * class loader */ - public Class findClass(String className, ObjectName aLoader) + public Class findClass(String className, ObjectName aLoader) throws ReflectionException, InstanceNotFoundException { if (aLoader == null) @@ -140,14 +140,14 @@ public class MBeanInstantiator { * Return an array of Class corresponding to the given signature, using * the specified class loader. */ - public Class[] findSignatureClasses(String signature[], - ClassLoader loader) - throws ReflectionException { + public Class[] findSignatureClasses(String signature[], + ClassLoader loader) + throws ReflectionException { if (signature == null) return null; final ClassLoader aLoader = loader; final int length= signature.length; - final Class tab[]=new Class[length]; + final Class tab[]=new Class[length]; if (length == 0) return tab; try { @@ -156,7 +156,7 @@ public class MBeanInstantiator { // forth) // - final Class primCla = primitiveClasses.get(signature[i]); + final Class primCla = primitiveClasses.get(signature[i]); if (primCla != null) { tab[i] = primCla; continue; @@ -203,14 +203,14 @@ public class MBeanInstantiator { * Instantiates an object given its class, using its empty constructor. * The call returns a reference to the newly created object. */ - public Object instantiate(Class theClass) + public Object instantiate(Class theClass) throws ReflectionException, MBeanException { Object moi; // ------------------------------ // ------------------------------ - Constructor cons = findConstructor(theClass, null); + Constructor cons = findConstructor(theClass, null); if (cons == null) { throw new ReflectionException(new NoSuchMethodException("No such constructor")); @@ -257,14 +257,14 @@ public class MBeanInstantiator { * signature of its constructor The call returns a reference to * the newly created object. */ - public Object instantiate(Class theClass, Object params[], + public Object instantiate(Class theClass, Object params[], String signature[], ClassLoader loader) throws ReflectionException, MBeanException { // Instantiate the new object // ------------------------------ // ------------------------------ - final Class[] tab; + final Class[] tab; Object moi; try { // Build the signature of the method @@ -283,7 +283,7 @@ public class MBeanInstantiator { } // Query the metadata service to get the right constructor - Constructor cons = findConstructor(theClass, tab); + Constructor cons = findConstructor(theClass, tab); if (cons == null) { throw new ReflectionException(new @@ -407,7 +407,7 @@ public class MBeanInstantiator { throw new RuntimeOperationsException(new IllegalArgumentException(), "Null className passed in parameter"); } - Class theClass; + Class theClass; if (loaderName == null) { // Load the class using the agent class loader theClass = findClass(className, loader); @@ -547,7 +547,7 @@ public class MBeanInstantiator { throws ReflectionException, MBeanException { - Class theClass = findClassWithDefaultLoaderRepository(className); + Class theClass = findClassWithDefaultLoaderRepository(className); return instantiate(theClass, params, signature, loader); } @@ -595,7 +595,7 @@ public class MBeanInstantiator { // ------------------------------ // ------------------------------ - Class theClass; + Class theClass; if (loaderName == null) { theClass = findClass(className, loader); @@ -613,14 +613,23 @@ public class MBeanInstantiator { return clr; } + /** + * Returns the class of a primitive type. + * @param name The type for which we the associated class. + * @return the class, or null if name is not primitive. + */ + public static Class primitiveType(String name) { + return primitiveClasses.get(name); + } + /** * Load a class with the specified loader, or with this object * class loader if the specified loader is null. **/ - static Class loadClass(String className, ClassLoader loader) + static Class loadClass(String className, ClassLoader loader) throws ReflectionException { - Class theClass; + Class theClass; if (className == null) { throw new RuntimeOperationsException(new IllegalArgumentException("The class name cannot be null"), @@ -636,7 +645,7 @@ public class MBeanInstantiator { } } catch (ClassNotFoundException e) { throw new ReflectionException(e, - "The MBean class could not be loaded by the context classloader"); + "The MBean class could not be loaded"); } return theClass; } @@ -647,15 +656,15 @@ public class MBeanInstantiator { * Load the classes specified in the signature with the given loader, * or with this object class loader. **/ - static Class[] loadSignatureClasses(String signature[], - ClassLoader loader) + static Class[] loadSignatureClasses(String signature[], + ClassLoader loader) throws ReflectionException { if (signature == null) return null; final ClassLoader aLoader = (loader==null?MBeanInstantiator.class.getClassLoader():loader); final int length= signature.length; - final Class tab[]=new Class[length]; + final Class tab[]=new Class[length]; if (length == 0) return tab; try { @@ -664,7 +673,7 @@ public class MBeanInstantiator { // forth) // - final Class primCla = primitiveClasses.get(signature[i]); + final Class primCla = primitiveClasses.get(signature[i]); if (primCla != null) { tab[i] = primCla; continue; @@ -710,9 +719,9 @@ public class MBeanInstantiator { private static final Map> primitiveClasses = Util.newMap(); static { - for (Class c : new Class[] {byte.class, short.class, int.class, - long.class, float.class, double.class, - char.class, boolean.class}) + for (Class c : new Class[] {byte.class, short.class, int.class, + long.class, float.class, double.class, + char.class, boolean.class}) primitiveClasses.put(c.getName(), c); } } diff --git a/src/share/classes/com/sun/jmx/mbeanserver/MBeanIntrospector.java b/src/share/classes/com/sun/jmx/mbeanserver/MBeanIntrospector.java index 99aaa85466d9e30dcc178fe9377b15bef449afd7..e98b41bbaa9820030b6e4aa5a1aad939ff306f4f 100644 --- a/src/share/classes/com/sun/jmx/mbeanserver/MBeanIntrospector.java +++ b/src/share/classes/com/sun/jmx/mbeanserver/MBeanIntrospector.java @@ -79,7 +79,7 @@ import javax.management.ReflectionException; * ancestor with ConvertingMethod. But that would mean an extra object * for every Method in every Standard MBean interface. */ -abstract class MBeanIntrospector { +public abstract class MBeanIntrospector { static final class PerInterfaceMap extends WeakHashMap, WeakReference>> {} @@ -403,7 +403,7 @@ abstract class MBeanIntrospector { new ImmutableDescriptor(interfaceClassName); final Descriptor mbeanDescriptor = getBasicMBeanDescriptor(); final Descriptor annotatedDescriptor = - Introspector.descriptorForElement(mbeanInterface); + Introspector.descriptorForElement(mbeanInterface, false); final Descriptor descriptor = DescriptorCache.getInstance().union( classNameDescriptor, @@ -518,7 +518,7 @@ abstract class MBeanIntrospector { * see the version of the @ManagedAttribute (or ...Operation) annotation * from that method, which might have a different description or whatever. */ - private static void getAnnotatedMethods(Class c, List methods) + public static void getAnnotatedMethods(Class c, List methods) throws Exception { Class sup = c.getSuperclass(); if (sup != null) @@ -537,25 +537,41 @@ abstract class MBeanIntrospector { } } + /* + * Return the array of MBeanNotificationInfo for the given MBean object. + * If the object implements NotificationBroadcaster and its + * getNotificationInfo() method returns a non-empty array, then that + * is the result. Otherwise, if the object has a @NotificationInfo + * or @NotificationInfos annotation, then its contents form the result. + * Otherwise, the result is null. + */ static MBeanNotificationInfo[] findNotifications(Object moi) { - if (!(moi instanceof NotificationBroadcaster)) - return null; - MBeanNotificationInfo[] mbn = - ((NotificationBroadcaster) moi).getNotificationInfo(); - if (mbn == null || mbn.length == 0) - return findNotificationsFromAnnotations(moi.getClass()); - MBeanNotificationInfo[] result = - new MBeanNotificationInfo[mbn.length]; - for (int i = 0; i < mbn.length; i++) { - MBeanNotificationInfo ni = mbn[i]; - if (ni.getClass() != MBeanNotificationInfo.class) - ni = (MBeanNotificationInfo) ni.clone(); - result[i] = ni; + if (moi instanceof NotificationBroadcaster) { + MBeanNotificationInfo[] mbn = + ((NotificationBroadcaster) moi).getNotificationInfo(); + if (mbn != null && mbn.length > 0) { + MBeanNotificationInfo[] result = + new MBeanNotificationInfo[mbn.length]; + for (int i = 0; i < mbn.length; i++) { + MBeanNotificationInfo ni = mbn[i]; + if (ni.getClass() != MBeanNotificationInfo.class) + ni = (MBeanNotificationInfo) ni.clone(); + result[i] = ni; + } + return result; + } + } else { + try { + if (!MBeanInjector.injectsSendNotification(moi)) + return null; + } catch (NotCompliantMBeanException e) { + throw new RuntimeException(e); + } } - return result; + return findNotificationsFromAnnotations(moi.getClass()); } - private static MBeanNotificationInfo[] findNotificationsFromAnnotations( + public static MBeanNotificationInfo[] findNotificationsFromAnnotations( Class mbeanClass) { Class c = getAnnotatedNotificationInfoClass(mbeanClass); if (c == null) diff --git a/src/share/classes/com/sun/jmx/mbeanserver/MXBeanIntrospector.java b/src/share/classes/com/sun/jmx/mbeanserver/MXBeanIntrospector.java index 8ff0a902dff1ca22e2a07d06dd2d263cf031ca3a..fb9b3ccb0933dc96c7b9735fd1804ff939198d57 100644 --- a/src/share/classes/com/sun/jmx/mbeanserver/MXBeanIntrospector.java +++ b/src/share/classes/com/sun/jmx/mbeanserver/MXBeanIntrospector.java @@ -32,6 +32,7 @@ import java.lang.ref.WeakReference; import java.lang.reflect.GenericArrayType; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.Map; import java.util.WeakHashMap; @@ -159,7 +160,7 @@ class MXBeanIntrospector extends MBeanIntrospector { // matched to the corresponding Java type, except when that // type is primitive. Type t = m.getGenericParameterTypes()[paramNo]; - return (!(t instanceof Class) || !((Class) t).isPrimitive()); + return (!(t instanceof Class) || !((Class) t).isPrimitive()); } else { Object v; try { @@ -291,7 +292,7 @@ class MXBeanIntrospector extends MBeanIntrospector { Descriptor descriptor = typeDescriptor(returnType, originalReturnType); descriptor = ImmutableDescriptor.union(descriptor, - Introspector.descriptorForElement(method)); + Introspector.descriptorForElement(method, false)); final MBeanOperationInfo oi; if (openReturnType && openParameterTypes) { /* If the return value and all the parameters can be faithfully @@ -353,7 +354,7 @@ class MXBeanIntrospector extends MBeanIntrospector { } } - private static Descriptor typeDescriptor(OpenType openType, + private static Descriptor typeDescriptor(OpenType openType, Type originalType) { return new ImmutableDescriptor( new String[] {"openType", @@ -379,18 +380,42 @@ class MXBeanIntrospector extends MBeanIntrospector { if (type instanceof GenericArrayType) { return canUseOpenInfo( ((GenericArrayType) type).getGenericComponentType()); - } else if (type instanceof Class && ((Class) type).isArray()) { + } else if (type instanceof Class && ((Class) type).isArray()) { return canUseOpenInfo( ((Class) type).getComponentType()); } - return (!(type instanceof Class && ((Class) type).isPrimitive())); + return (!(type instanceof Class && ((Class) type).isPrimitive())); } private static String originalTypeString(Type type) { - if (type instanceof Class) - return ((Class) type).getName(); + if (type instanceof Class) + return ((Class) type).getName(); else - return type.toString(); + return typeName(type); + } + + static String typeName(Type type) { + if (type instanceof Class) { + Class c = (Class) type; + if (c.isArray()) + return typeName(c.getComponentType()) + "[]"; + else + return c.getName(); + } else if (type instanceof GenericArrayType) { + GenericArrayType gat = (GenericArrayType) type; + return typeName(gat.getGenericComponentType()) + "[]"; + } else if (type instanceof ParameterizedType) { + ParameterizedType pt = (ParameterizedType) type; + StringBuilder sb = new StringBuilder(); + sb.append(typeName(pt.getRawType())).append("<"); + String sep = ""; + for (Type t : pt.getActualTypeArguments()) { + sb.append(sep).append(typeName(t)); + sep = ", "; + } + return sb.append(">").toString(); + } else + return "???"; } private final PerInterfaceMap diff --git a/src/share/classes/com/sun/jmx/mbeanserver/MXBeanLookup.java b/src/share/classes/com/sun/jmx/mbeanserver/MXBeanLookup.java index 227c1eec9908f865c653d677594dde41b832ce86..605c67f16b4a753e1cb135084d4ee5f6428becef 100644 --- a/src/share/classes/com/sun/jmx/mbeanserver/MXBeanLookup.java +++ b/src/share/classes/com/sun/jmx/mbeanserver/MXBeanLookup.java @@ -37,7 +37,6 @@ import javax.management.InstanceAlreadyExistsException; import javax.management.JMX; import javax.management.MBeanServerConnection; import javax.management.MBeanServerInvocationHandler; -import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import javax.management.openmbean.OpenDataException; @@ -225,7 +224,7 @@ public abstract class MXBeanLookup { String domain = prefix + name.getDomain(); try { name = name.withDomain(domain); - } catch (MalformedObjectNameException e) { + } catch (IllegalArgumentException e) { throw EnvHelp.initCause( new InvalidObjectException(e.getMessage()), e); } @@ -239,12 +238,14 @@ public abstract class MXBeanLookup { String domain = name.getDomain(); if (!domain.startsWith(prefix)) { throw new OpenDataException( - "Proxy's name does not start with " + prefix + ": " + name); + "Proxy's name does not start with " + + prefix + ": " + name); } try { name = name.withDomain(domain.substring(prefix.length())); - } catch (MalformedObjectNameException e) { - throw EnvHelp.initCause(new OpenDataException(e.getMessage()), e); + } catch (IllegalArgumentException e) { + throw EnvHelp.initCause( + new OpenDataException(e.getMessage()), e); } return name; } diff --git a/src/share/classes/com/sun/jmx/mbeanserver/ObjectInputStreamWithLoader.java b/src/share/classes/com/sun/jmx/mbeanserver/ObjectInputStreamWithLoader.java index 2c74e5890c0cb60a64db4e1db43fe2b5da88be02..f4b1b1084bb4f4744d9800eb3ba7575a503d05ff 100644 --- a/src/share/classes/com/sun/jmx/mbeanserver/ObjectInputStreamWithLoader.java +++ b/src/share/classes/com/sun/jmx/mbeanserver/ObjectInputStreamWithLoader.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -54,7 +54,8 @@ class ObjectInputStreamWithLoader extends ObjectInputStream { this.loader = theLoader; } - protected Class resolveClass(ObjectStreamClass aClass) + @Override + protected Class resolveClass(ObjectStreamClass aClass) throws IOException, ClassNotFoundException { if (loader == null) { return super.resolveClass(aClass); diff --git a/src/share/classes/com/sun/jmx/mbeanserver/SecureClassLoaderRepository.java b/src/share/classes/com/sun/jmx/mbeanserver/SecureClassLoaderRepository.java index 0576f80ebed424cb47299848dd5de470d3c6939c..8f93bbd1aa4a3fbee463e5bdaabe1b328010757c 100644 --- a/src/share/classes/com/sun/jmx/mbeanserver/SecureClassLoaderRepository.java +++ b/src/share/classes/com/sun/jmx/mbeanserver/SecureClassLoaderRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -47,16 +47,16 @@ final class SecureClassLoaderRepository public SecureClassLoaderRepository(ClassLoaderRepository clr) { this.clr=clr; } - public final Class loadClass(String className) + public final Class loadClass(String className) throws ClassNotFoundException { return clr.loadClass(className); } - public final Class loadClassWithout(ClassLoader loader, + public final Class loadClassWithout(ClassLoader loader, String className) throws ClassNotFoundException { return clr.loadClassWithout(loader,className); } - public final Class loadClassBefore(ClassLoader loader, + public final Class loadClassBefore(ClassLoader loader, String className) throws ClassNotFoundException { return clr.loadClassBefore(loader,className); diff --git a/src/share/classes/com/sun/jmx/mbeanserver/Util.java b/src/share/classes/com/sun/jmx/mbeanserver/Util.java index 6307adbf8d92442278539c4377a7fe6d3d386c67..1e575e419d2acf8e26bef3fef5ab5926f9096a9c 100644 --- a/src/share/classes/com/sun/jmx/mbeanserver/Util.java +++ b/src/share/classes/com/sun/jmx/mbeanserver/Util.java @@ -48,7 +48,6 @@ import java.util.logging.Level; import javax.management.MBeanServer; import javax.management.MBeanServerDelegate; import javax.management.MBeanServerFactory; -import javax.management.MalformedObjectNameException; import javax.management.ObjectInstance; import javax.management.ObjectName; import javax.management.loading.ClassLoaderRepository; @@ -669,7 +668,7 @@ public class Util { } public static Set cloneSet(Set set) { - if (set instanceof SortedSet) { + if (set instanceof SortedSet) { @SuppressWarnings("unchecked") SortedSet sset = (SortedSet) set; set = new TreeSet(sset.comparator()); @@ -680,7 +679,7 @@ public class Util { } public static Set equivalentEmptySet(Set set) { - if (set instanceof SortedSet) { + if (set instanceof SortedSet) { @SuppressWarnings("unchecked") SortedSet sset = (SortedSet) set; set = new TreeSet(sset.comparator()); diff --git a/src/share/classes/com/sun/jmx/mbeanserver/WeakIdentityHashMap.java b/src/share/classes/com/sun/jmx/mbeanserver/WeakIdentityHashMap.java index b6662937f935634a45207682c84cd80aeb3a328e..1fe6e61b353a34e6af0c142b4c9828fd309bba07 100644 --- a/src/share/classes/com/sun/jmx/mbeanserver/WeakIdentityHashMap.java +++ b/src/share/classes/com/sun/jmx/mbeanserver/WeakIdentityHashMap.java @@ -1,5 +1,5 @@ /* - * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -118,9 +118,9 @@ class WeakIdentityHashMap { public boolean equals(Object o) { if (this == o) return true; - if (!(o instanceof IdentityWeakReference)) + if (!(o instanceof IdentityWeakReference)) return false; - IdentityWeakReference wr = (IdentityWeakReference) o; + IdentityWeakReference wr = (IdentityWeakReference) o; Object got = get(); return (got != null && got == wr.get()); } diff --git a/src/share/classes/com/sun/jmx/namespace/DomainInterceptor.java b/src/share/classes/com/sun/jmx/namespace/DomainInterceptor.java index 7b88087a81c6ddc8bf19a64e8fab63a671a62f9f..6e56c8385e8ccc685ac40adf322ea4fa6c2b2270 100644 --- a/src/share/classes/com/sun/jmx/namespace/DomainInterceptor.java +++ b/src/share/classes/com/sun/jmx/namespace/DomainInterceptor.java @@ -42,7 +42,6 @@ import javax.management.ListenerNotFoundException; import javax.management.MBeanPermission; import javax.management.MBeanServerDelegate; import javax.management.MBeanServerNotification; -import javax.management.MalformedObjectNameException; import javax.management.Notification; import javax.management.NotificationFilter; import javax.management.NotificationListener; @@ -268,13 +267,9 @@ public class DomainInterceptor extends HandlerInterceptor { // When we reach here, it has been verified that 'name' matches our domain // name (done by DomainDispatchInterceptor) private ObjectName getPatternFor(final ObjectName name) { - try { - if (name == null) return ALL; - if (name.getDomain().equals(domainName)) return name; - return name.withDomain(domainName); - } catch (MalformedObjectNameException x) { - throw new IllegalArgumentException(String.valueOf(name),x); - } + if (name == null) return ALL; + if (name.getDomain().equals(domainName)) return name; + return name.withDomain(domainName); } @Override diff --git a/src/share/classes/com/sun/jmx/namespace/JMXNamespaceUtils.java b/src/share/classes/com/sun/jmx/namespace/JMXNamespaceUtils.java deleted file mode 100644 index 49f875144f2751604094023018b1c2678ba3dd06..0000000000000000000000000000000000000000 --- a/src/share/classes/com/sun/jmx/namespace/JMXNamespaceUtils.java +++ /dev/null @@ -1,354 +0,0 @@ -/* - * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package com.sun.jmx.namespace; - -import com.sun.jmx.defaults.JmxProperties; - -import java.io.IOException; -import java.util.Collections; -import java.util.Map; -import java.util.WeakHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.management.ListenerNotFoundException; -import javax.management.MBeanServerConnection; -import javax.management.NotificationFilter; -import javax.management.NotificationListener; -import javax.management.event.EventClient; -import javax.management.event.EventClientDelegateMBean; -import javax.management.namespace.JMXNamespace; -import javax.management.namespace.JMXNamespaces; -import javax.management.remote.JMXAddressable; -import javax.management.remote.JMXConnector; -import javax.management.remote.JMXServiceURL; -import javax.security.auth.Subject; - -/** - * A collection of methods that provide JMXConnector wrappers for - * JMXRemoteNamepaces underlying connectors. - *

- * This API is a Sun internal API and is subject to changes without notice. - *

- * @since 1.7 - */ -public final class JMXNamespaceUtils { - - /** - * A logger for this class. - **/ - private static final Logger LOG = JmxProperties.NAMESPACE_LOGGER; - - - private static Map newWeakHashMap() { - return new WeakHashMap(); - } - - /** There are no instances of this class */ - private JMXNamespaceUtils() { - } - - // returns un unmodifiable view of a map. - public static Map unmodifiableMap(Map aMap) { - if (aMap == null || aMap.isEmpty()) - return Collections.emptyMap(); - return Collections.unmodifiableMap(aMap); - } - - - /** - * A base class that helps writing JMXConnectors that return - * MBeanServerConnection wrappers. - * This base class wraps an inner JMXConnector (the source), and preserve - * its caching policy. If a connection is cached in the source, its wrapper - * will be cached in this connector too. - * Author's note: rewriting this with java.lang.reflect.Proxy could be - * envisaged. It would avoid the combinatory sub-classing introduced by - * JMXAddressable. - *

- * Note: all the standard JMXConnector implementations are serializable. - * This implementation here is not. Should it be? - * I believe it must not be serializable unless it becomes - * part of a public API (either standard or officially exposed - * and supported in a documented com.sun package) - **/ - static class JMXCachingConnector - implements JMXConnector { - - // private static final long serialVersionUID = -2279076110599707875L; - - final JMXConnector source; - - // if this object is made serializable, then the variable below - // needs to become volatile transient and be lazyly-created... - private final - Map connectionMap; - - - public JMXCachingConnector(JMXConnector source) { - this.source = checkNonNull(source, "source"); - connectionMap = newWeakHashMap(); - } - - private MBeanServerConnection - getCached(MBeanServerConnection inner) { - return connectionMap.get(inner); - } - - private MBeanServerConnection putCached(final MBeanServerConnection inner, - final MBeanServerConnection wrapper) { - if (inner == wrapper) return wrapper; - synchronized (this) { - final MBeanServerConnection concurrent = - connectionMap.get(inner); - if (concurrent != null) return concurrent; - connectionMap.put(inner,wrapper); - } - return wrapper; - } - - public void addConnectionNotificationListener(NotificationListener - listener, NotificationFilter filter, Object handback) { - source.addConnectionNotificationListener(listener,filter,handback); - } - - public void close() throws IOException { - source.close(); - } - - public void connect() throws IOException { - source.connect(); - } - - public void connect(Map env) throws IOException { - source.connect(env); - } - - public String getConnectionId() throws IOException { - return source.getConnectionId(); - } - - /** - * Preserve caching policy of the underlying connector. - **/ - public MBeanServerConnection - getMBeanServerConnection() throws IOException { - final MBeanServerConnection inner = - source.getMBeanServerConnection(); - final MBeanServerConnection cached = getCached(inner); - if (cached != null) return cached; - final MBeanServerConnection wrapper = wrap(inner); - return putCached(inner,wrapper); - } - - public MBeanServerConnection - getMBeanServerConnection(Subject delegationSubject) - throws IOException { - final MBeanServerConnection wrapped = - source.getMBeanServerConnection(delegationSubject); - synchronized (this) { - final MBeanServerConnection cached = getCached(wrapped); - if (cached != null) return cached; - final MBeanServerConnection wrapper = - wrapWithSubject(wrapped,delegationSubject); - return putCached(wrapped,wrapper); - } - } - - public void removeConnectionNotificationListener( - NotificationListener listener) - throws ListenerNotFoundException { - source.removeConnectionNotificationListener(listener); - } - - public void removeConnectionNotificationListener( - NotificationListener l, NotificationFilter f, - Object handback) throws ListenerNotFoundException { - source.removeConnectionNotificationListener(l,f,handback); - } - - /** - * This is the method that subclass will redefine. This method - * is called by {@code this.getMBeanServerConnection()}. - * {@code inner} is the connection returned by - * {@code source.getMBeanServerConnection()}. - **/ - protected MBeanServerConnection wrap(MBeanServerConnection inner) - throws IOException { - return inner; - } - - /** - * Subclass may also want to redefine this method. - * By default it calls wrap(inner). This method - * is called by {@code this.getMBeanServerConnection(Subject)}. - * {@code inner} is the connection returned by - * {@code source.getMBeanServerConnection(Subject)}. - **/ - protected MBeanServerConnection wrapWithSubject( - MBeanServerConnection inner, Subject delegationSubject) - throws IOException { - return wrap(inner); - } - - @Override - public String toString() { - if (source instanceof JMXAddressable) { - final JMXServiceURL address = - ((JMXAddressable)source).getAddress(); - if (address != null) - return address.toString(); - } - return source.toString(); - } - - } - - - /** - * The name space connector can do 'cd' - **/ - static class JMXNamespaceConnector extends JMXCachingConnector { - - // private static final long serialVersionUID = -4813611540843020867L; - - private final String toDir; - private final boolean closeable; - - public JMXNamespaceConnector(JMXConnector source, String toDir, - boolean closeable) { - super(source); - this.toDir = toDir; - this.closeable = closeable; - } - - @Override - public void close() throws IOException { - if (!closeable) - throw new UnsupportedOperationException("close"); - else super.close(); - } - - @Override - protected MBeanServerConnection wrap(MBeanServerConnection wrapped) - throws IOException { - if (LOG.isLoggable(Level.FINER)) - LOG.finer("Creating name space proxy connection for source: "+ - "namespace="+toDir); - return JMXNamespaces.narrowToNamespace(wrapped,toDir); - } - - @Override - public String toString() { - return "JMXNamespaces.narrowToNamespace("+ - super.toString()+ - ", \""+toDir+"\")"; - } - - } - - static class JMXEventConnector extends JMXCachingConnector { - - // private static final long serialVersionUID = 4742659236340242785L; - - JMXEventConnector(JMXConnector wrapped) { - super(wrapped); - } - - @Override - protected MBeanServerConnection wrap(MBeanServerConnection inner) - throws IOException { - return EventClient.getEventClientConnection(inner); - } - - - @Override - public String toString() { - return "EventClient.withEventClient("+super.toString()+")"; - } - } - - static class JMXAddressableEventConnector extends JMXEventConnector - implements JMXAddressable { - - // private static final long serialVersionUID = -9128520234812124712L; - - JMXAddressableEventConnector(JMXConnector wrapped) { - super(wrapped); - } - - public JMXServiceURL getAddress() { - return ((JMXAddressable)source).getAddress(); - } - } - - /** - * Creates a connector whose MBeamServerConnection will point to the - * given sub name space inside the source connector. - * @see JMXNamespace - **/ - public static JMXConnector cd(final JMXConnector source, - final String toNamespace, - final boolean closeable) - throws IOException { - - checkNonNull(source, "JMXConnector"); - - if (toNamespace == null || toNamespace.equals("")) - return source; - - return new JMXNamespaceConnector(source,toNamespace,closeable); - } - - - /** - * Returns a JMX Connector that will use an {@link EventClient} - * to subscribe for notifications. If the server doesn't have - * an {@link EventClientDelegateMBean}, then the connector will - * use the legacy notification mechanism instead. - * - * @param source The underlying JMX Connector wrapped by the returned - * connector. - * @return A JMX Connector that will uses an {@link EventClient}, if - * available. - * @see EventClient#getEventClientConnection(MBeanServerConnection) - */ - public static JMXConnector withEventClient(final JMXConnector source) { - checkNonNull(source, "JMXConnector"); - if (source instanceof JMXAddressable) - return new JMXAddressableEventConnector(source); - else - return new JMXEventConnector(source); - } - - public static T checkNonNull(T parameter, String name) { - if (parameter == null) - throw new IllegalArgumentException(name+" must not be null"); - return parameter; - } - - -} diff --git a/src/share/classes/com/sun/jmx/namespace/NamespaceInterceptor.java b/src/share/classes/com/sun/jmx/namespace/NamespaceInterceptor.java index 6862066d2bcd523eaae6e47ff3e462564eb5f828..df03ed5ecba64ee3f45f2f77b784712c724f7cf9 100644 --- a/src/share/classes/com/sun/jmx/namespace/NamespaceInterceptor.java +++ b/src/share/classes/com/sun/jmx/namespace/NamespaceInterceptor.java @@ -24,15 +24,12 @@ */ package com.sun.jmx.namespace; -import com.sun.jmx.defaults.JmxProperties; import java.util.ArrayList; import java.util.List; -import java.util.logging.Logger; import javax.management.Attribute; import javax.management.AttributeList; import javax.management.MBeanServer; -import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import javax.management.namespace.JMXNamespace; import javax.management.namespace.JMXNamespacePermission; @@ -114,14 +111,12 @@ public class NamespaceInterceptor extends HandlerInterceptor { } @Override - protected ObjectName toSource(ObjectName targetName) - throws MalformedObjectNameException { + protected ObjectName toSource(ObjectName targetName) { return proc.toSourceContext(targetName, true); } @Override - protected ObjectName toTarget(ObjectName sourceName) - throws MalformedObjectNameException { + protected ObjectName toTarget(ObjectName sourceName) { return proc.toTargetContext(sourceName, false); } diff --git a/src/share/classes/com/sun/jmx/namespace/ObjectNameRouter.java b/src/share/classes/com/sun/jmx/namespace/ObjectNameRouter.java index 3c7065c478e323ad4f6262e8960424450e17851d..55a6465407c30a1e59858385c0ad72ff8fa39821 100644 --- a/src/share/classes/com/sun/jmx/namespace/ObjectNameRouter.java +++ b/src/share/classes/com/sun/jmx/namespace/ObjectNameRouter.java @@ -27,7 +27,6 @@ package com.sun.jmx.namespace; import static javax.management.namespace.JMXNamespaces.NAMESPACE_SEPARATOR; -import javax.management.MalformedObjectNameException; import javax.management.ObjectInstance; import javax.management.ObjectName; @@ -49,11 +48,6 @@ public class ObjectNameRouter { final int tlen; final boolean identity; - - public ObjectNameRouter(String targetDirName) { - this(targetDirName,null); - } - /** Creates a new instance of ObjectNameRouter */ public ObjectNameRouter(final String remove, final String add) { this.targetPrefix = (remove==null?"":remove); @@ -88,11 +82,7 @@ public class ObjectNameRouter { } final String targetDomain = (tlen>0?targetPrefix+NAMESPACE_SEPARATOR+srcDomain:srcDomain); - try { - return sourceName.withDomain(targetDomain); - } catch (MalformedObjectNameException x) { - throw new IllegalArgumentException(String.valueOf(sourceName),x); - } + return sourceName.withDomain(targetDomain); } public final ObjectName toSourceContext(ObjectName targetName, @@ -118,11 +108,7 @@ public class ObjectNameRouter { final String sourceDomain = (slen>0?sourcePrefix+NAMESPACE_SEPARATOR+targetDomain: targetDomain); - try { - return targetName.withDomain(sourceDomain); - } catch (MalformedObjectNameException x) { - throw new IllegalArgumentException(String.valueOf(targetName),x); - } + return targetName.withDomain(sourceDomain); } public final ObjectInstance toTargetContext(ObjectInstance sourceMoi, @@ -186,6 +172,4 @@ public class ObjectNameRouter { b.append(NAMESPACE_SEPARATOR); return b.toString(); } - - } diff --git a/src/share/classes/com/sun/jmx/namespace/RoutingConnectionProxy.java b/src/share/classes/com/sun/jmx/namespace/RoutingConnectionProxy.java index 443c80f2ae56ad118e4d065d368ff72ac955746e..b09bc84365c48eb9e23af16e6e414ba9008316ee 100644 --- a/src/share/classes/com/sun/jmx/namespace/RoutingConnectionProxy.java +++ b/src/share/classes/com/sun/jmx/namespace/RoutingConnectionProxy.java @@ -31,7 +31,6 @@ import java.util.logging.Level; import java.util.logging.Logger; import javax.management.MBeanServerConnection; -import javax.management.namespace.JMXNamespaces; /** @@ -57,22 +56,14 @@ public class RoutingConnectionProxy private static final Logger LOG = JmxProperties.NAMESPACE_LOGGER; - /** - * Creates a new instance of RoutingConnectionProxy - */ - public RoutingConnectionProxy(MBeanServerConnection source, - String sourceDir) { - this(source,sourceDir,"",false); - } - /** * Creates a new instance of RoutingConnectionProxy */ public RoutingConnectionProxy(MBeanServerConnection source, String sourceDir, String targetDir, - boolean forwardsContext) { - super(source,sourceDir,targetDir,forwardsContext); + boolean probe) { + super(source, sourceDir, targetDir, probe); if (LOG.isLoggable(Level.FINER)) LOG.finer("RoutingConnectionProxy for " + getSourceNamespace() + @@ -85,15 +76,13 @@ public class RoutingConnectionProxy final String sourceNs = getSourceNamespace(); String wrapped = String.valueOf(source()); if ("".equals(targetNs)) { - if (forwardsContext) - wrapped = "ClientContext.withDynamicContext("+wrapped+")"; return "JMXNamespaces.narrowToNamespace("+ wrapped+", \""+ sourceNs+"\")"; } return this.getClass().getSimpleName()+"("+wrapped+", \""+ sourceNs+"\", \""+ - targetNs+"\", "+forwardsContext+")"; + targetNs+"\")"; } static final RoutingProxyFactory @@ -102,22 +91,16 @@ public class RoutingConnectionProxy () { public RoutingConnectionProxy newInstance(MBeanServerConnection source, - String sourcePath, String targetPath, - boolean forwardsContext) { + String sourcePath, String targetPath, boolean probe) { return new RoutingConnectionProxy(source,sourcePath, - targetPath,forwardsContext); - } - - public RoutingConnectionProxy newInstance( - MBeanServerConnection source, String sourcePath) { - return new RoutingConnectionProxy(source,sourcePath); + targetPath, probe); } }; - public static MBeanServerConnection cd(MBeanServerConnection source, - String sourcePath) { + public static MBeanServerConnection cd( + MBeanServerConnection source, String sourcePath, boolean probe) { return RoutingProxy.cd(RoutingConnectionProxy.class, FACTORY, - source, sourcePath); + source, sourcePath, probe); } } diff --git a/src/share/classes/com/sun/jmx/namespace/RoutingMBeanServerConnection.java b/src/share/classes/com/sun/jmx/namespace/RoutingMBeanServerConnection.java index 7022e7e297371a93b67530f23c791d870b3e3a47..49b8290046b7a61b0c5ca8937bc0a8b40cde7239 100644 --- a/src/share/classes/com/sun/jmx/namespace/RoutingMBeanServerConnection.java +++ b/src/share/classes/com/sun/jmx/namespace/RoutingMBeanServerConnection.java @@ -46,7 +46,6 @@ import javax.management.MBeanException; import javax.management.MBeanInfo; import javax.management.MBeanRegistrationException; import javax.management.MBeanServerConnection; -import javax.management.MalformedObjectNameException; import javax.management.NotCompliantMBeanException; import javax.management.NotificationFilter; import javax.management.NotificationListener; @@ -100,18 +99,17 @@ public abstract class RoutingMBeanServerConnection // context must be removed from object name // sourceNs="" // nothing to add... // -// RoutingProxies can also be used on the client side to implement -// "withClientContext" operations. In that case, the boolean parameter -// 'forwards context' is set to true, targetNs is "", and sourceNS may -// also be "". When forwardsContext is true, the RoutingProxy dynamically -// creates an ObjectNameRouter for each operation - in order to dynamically add -// the context attached to the thread to the routing ObjectName. This is -// performed in the getObjectNameRouter() method. -// // Finally, in order to avoid too many layers of wrapping, // RoutingConnectionProxy and RoutingServerProxy can be created through a -// factory method that can concatenate namespace pathes in order to +// factory method that can concatenate namespace paths in order to // return a single RoutingProxy - rather than wrapping a RoutingProxy inside // another RoutingProxy. See RoutingConnectionProxy.cd and // RoutingServerProxy.cd @@ -146,25 +139,27 @@ public abstract class RoutingProxy private final T source; // The name space we're narrowing to (usually some name space in - // the source MBeanServerConnection + // the source MBeanServerConnection), e.g. "a" for the namespace + // "a//". This is empty in the case of ClientContext described above. private final String sourceNs; - // The name space we pretend to be mounted in (usually "") + // The name space we pretend to be mounted in. This is empty except + // in the case of ClientContext described above (where it will be + // something like "jmx.context//foo=bar". private final String targetNs; // The name of the JMXNamespace that handles the source name space private final ObjectName handlerName; private final ObjectNameRouter router; - final boolean forwardsContext; private volatile String defaultDomain = null; /** * Creates a new instance of RoutingProxy */ protected RoutingProxy(T source, - String sourceNs, - String targetNs, - boolean forwardsContext) { + String sourceNs, + String targetNs, + boolean probe) { if (source == null) throw new IllegalArgumentException("null"); this.sourceNs = JMXNamespaces.normalizeNamespaceName(sourceNs); @@ -177,13 +172,17 @@ public abstract class RoutingProxy // System.err.println("sourceNs: "+sourceNs); this.handlerName = JMXNamespaces.getNamespaceObjectName(this.sourceNs); - try { - // System.err.println("handlerName: "+handlerName); - if (!source.isRegistered(handlerName)) - throw new IllegalArgumentException(sourceNs + - ": no such name space"); - } catch (IOException x) { - throw new IllegalArgumentException("source stale: "+x,x); + if (probe) { + try { + if (!source.isRegistered(handlerName)) { + InstanceNotFoundException infe = + new InstanceNotFoundException(handlerName); + throw new IllegalArgumentException(sourceNs + + ": no such name space", infe); + } + } catch (IOException x) { + throw new IllegalArgumentException("source stale: "+x,x); + } } } this.source = source; @@ -191,7 +190,6 @@ public abstract class RoutingProxy JMXNamespaces.normalizeNamespaceName(targetNs)); this.router = new ObjectNameRouter(this.targetNs,this.sourceNs); - this.forwardsContext = forwardsContext; if (LOG.isLoggable(Level.FINER)) LOG.finer("RoutingProxy for " + this.sourceNs + " created"); @@ -200,17 +198,8 @@ public abstract class RoutingProxy @Override public T source() { return source; } - ObjectNameRouter getObjectNameRouter() { -// TODO: uncomment this when contexts are added -// if (forwardsContext) -// return ObjectNameRouter.wrapWithContext(router); -// else - return router; - } - @Override - public ObjectName toSource(ObjectName targetName) - throws MalformedObjectNameException { + public ObjectName toSource(ObjectName targetName) { if (targetName == null) return null; if (targetName.getDomain().equals("") && targetNs.equals("")) { try { @@ -222,8 +211,7 @@ public abstract class RoutingProxy if (defaultDomain != null) targetName = targetName.withDomain(defaultDomain); } - final ObjectNameRouter r = getObjectNameRouter(); - return r.toSourceContext(targetName,true); + return router.toSourceContext(targetName,true); } @Override @@ -240,11 +228,9 @@ public abstract class RoutingProxy } @Override - public ObjectName toTarget(ObjectName sourceName) - throws MalformedObjectNameException { + public ObjectName toTarget(ObjectName sourceName) { if (sourceName == null) return null; - final ObjectNameRouter r = getObjectNameRouter(); - return r.toTargetContext(sourceName,false); + return router.toTargetContext(sourceName,false); } private Object getAttributeFromHandler(String attributeName) @@ -357,11 +343,8 @@ public abstract class RoutingProxy // instance. static interface RoutingProxyFactory> { - R newInstance(T source, - String sourcePath, String targetPath, - boolean forwardsContext); - R newInstance(T source, - String sourcePath); + public R newInstance( + T source, String sourcePath, String targetPath, boolean probe); } // Performs a narrowDownToNamespace operation. @@ -377,7 +360,7 @@ public abstract class RoutingProxy static > R cd(Class routingProxyClass, RoutingProxyFactory factory, - T source, String sourcePath) { + T source, String sourcePath, boolean probe) { if (source == null) throw new IllegalArgumentException("null"); if (source.getClass().equals(routingProxyClass)) { // cast is OK here, but findbugs complains unless we use class.cast @@ -400,14 +383,13 @@ public abstract class RoutingProxy final String path = JMXNamespaces.concat(other.getSourceNamespace(), sourcePath); - return factory.newInstance(other.source(),path,"", - other.forwardsContext); + return factory.newInstance(other.source(), path, "", probe); } // Note: we could do possibly something here - but it would involve // removing part of targetDir, and possibly adding // something to sourcePath. // Too complex to bother! => simply default to stacking... } - return factory.newInstance(source,sourcePath); + return factory.newInstance(source, sourcePath, "", probe); } } diff --git a/src/share/classes/com/sun/jmx/namespace/RoutingServerProxy.java b/src/share/classes/com/sun/jmx/namespace/RoutingServerProxy.java index f58e39816d34d61acf4a83026b81bc3fda1f2296..a11b0eccbf563a072f8ab2204c3dc4a7a0638256 100644 --- a/src/share/classes/com/sun/jmx/namespace/RoutingServerProxy.java +++ b/src/share/classes/com/sun/jmx/namespace/RoutingServerProxy.java @@ -54,7 +54,6 @@ import javax.management.OperationsException; import javax.management.QueryExp; import javax.management.ReflectionException; import javax.management.loading.ClassLoaderRepository; -import javax.management.namespace.JMXNamespaces; /** * A RoutingServerProxy is an MBeanServer proxy that proxies a @@ -76,19 +75,11 @@ public class RoutingServerProxy extends RoutingProxy implements MBeanServer { - /** - * Creates a new instance of RoutingServerProxy - */ - public RoutingServerProxy(MBeanServer source, - String sourceNs) { - this(source,sourceNs,"",false); - } - public RoutingServerProxy(MBeanServer source, String sourceNs, String targetNs, - boolean forwardsContext) { - super(source,sourceNs,targetNs,forwardsContext); + boolean probe) { + super(source, sourceNs, targetNs, probe); } /** @@ -571,20 +562,15 @@ public class RoutingServerProxy FACTORY = new RoutingProxyFactory() { public RoutingServerProxy newInstance(MBeanServer source, - String sourcePath, String targetPath, - boolean forwardsContext) { - return new RoutingServerProxy(source,sourcePath, - targetPath,forwardsContext); - } - - public RoutingServerProxy newInstance( - MBeanServer source, String sourcePath) { - return new RoutingServerProxy(source,sourcePath); + String sourcePath, String targetPath, boolean probe) { + return new RoutingServerProxy( + source, sourcePath, targetPath, probe); } }; - public static MBeanServer cd(MBeanServer source, String sourcePath) { + public static MBeanServer cd( + MBeanServer source, String sourcePath, boolean probe) { return RoutingProxy.cd(RoutingServerProxy.class, FACTORY, - source, sourcePath); + source, sourcePath, probe); } } diff --git a/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java b/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java index 234f50f22da7252415a5ba8499fe553ebfd3757c..fca76f605a9a93efd6ca3f4150aeb8d49a13f11d 100644 --- a/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java +++ b/src/share/classes/com/sun/jmx/remote/internal/ArrayNotificationBuffer.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -120,7 +120,7 @@ public class ArrayNotificationBuffer implements NotificationBuffer { private final Collection sharers = new HashSet(1); public static NotificationBuffer getNotificationBuffer( - MBeanServer mbs, Map env) { + MBeanServer mbs, Map env) { if (env == null) env = Collections.emptyMap(); diff --git a/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java b/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java index ab6bd60caf8e5b1cd499cfb7cc410ee310b46cd3..cb94371fdc99705570da591ff9072095b33c9633 100644 --- a/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java +++ b/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java @@ -54,7 +54,7 @@ import com.sun.jmx.remote.util.EnvHelp; public abstract class ClientNotifForwarder { - public ClientNotifForwarder(Map env) { + public ClientNotifForwarder(Map env) { this(null, env); } @@ -113,7 +113,7 @@ public abstract class ClientNotifForwarder { private Thread thread; } - public ClientNotifForwarder(ClassLoader defaultClassLoader, Map env) { + public ClientNotifForwarder(ClassLoader defaultClassLoader, Map env) { maxNotifications = EnvHelp.getMaxFetchNotifNumber(env); timeout = EnvHelp.getFetchTimeout(env); diff --git a/src/share/classes/com/sun/jmx/remote/internal/ProxyInputStream.java b/src/share/classes/com/sun/jmx/remote/internal/ProxyInputStream.java index 8d57b8f92a6da87361a404fa2c024804d81ed568..b610828065ada9518d2e7205d02cf17bb09145ae 100644 --- a/src/share/classes/com/sun/jmx/remote/internal/ProxyInputStream.java +++ b/src/share/classes/com/sun/jmx/remote/internal/ProxyInputStream.java @@ -36,7 +36,7 @@ import org.omg.CORBA.ORB; import org.omg.CORBA.TypeCode; import org.omg.CORBA.portable.BoxedValueHelper; -@SuppressWarnings("deprecation") +@SuppressWarnings({"deprecation", "rawtypes"}) public class ProxyInputStream extends org.omg.CORBA_2_3.portable.InputStream { public ProxyInputStream(org.omg.CORBA.portable.InputStream in) { this.in = in; diff --git a/src/share/classes/com/sun/jmx/remote/internal/ServerNotifForwarder.java b/src/share/classes/com/sun/jmx/remote/internal/ServerNotifForwarder.java index c3542cc1d8a676448928f9661525389940f860ad..dab9b872d6420104a500813abfba8243776d418e 100644 --- a/src/share/classes/com/sun/jmx/remote/internal/ServerNotifForwarder.java +++ b/src/share/classes/com/sun/jmx/remote/internal/ServerNotifForwarder.java @@ -59,7 +59,7 @@ public class ServerNotifForwarder { public ServerNotifForwarder(MBeanServer mbeanServer, - Map env, + Map env, NotificationBuffer notifBuffer, String connectionId) { this.mbeanServer = mbeanServer; diff --git a/src/share/classes/com/sun/jmx/remote/internal/Unmarshal.java b/src/share/classes/com/sun/jmx/remote/internal/Unmarshal.java index 64c00b0174b0295768dd994fa61771b39dad0dde..22dc813c68f8212690aeed25d75d48d0cb6d1538 100644 --- a/src/share/classes/com/sun/jmx/remote/internal/Unmarshal.java +++ b/src/share/classes/com/sun/jmx/remote/internal/Unmarshal.java @@ -1,5 +1,5 @@ /* - * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,6 +29,6 @@ import java.io.IOException; import java.rmi.MarshalledObject; public interface Unmarshal { - public Object get(MarshalledObject mo) + public Object get(MarshalledObject mo) throws IOException, ClassNotFoundException; } diff --git a/src/share/classes/com/sun/jmx/remote/security/FileLoginModule.java b/src/share/classes/com/sun/jmx/remote/security/FileLoginModule.java index a901a19c8f82cf5511e0e293ab771d14fe572ab4..33cd6b4ce7c7689c05b47f44825e42ee42cae19c 100644 --- a/src/share/classes/com/sun/jmx/remote/security/FileLoginModule.java +++ b/src/share/classes/com/sun/jmx/remote/security/FileLoginModule.java @@ -26,6 +26,7 @@ package com.sun.jmx.remote.security; import com.sun.jmx.mbeanserver.GetPropertyAction; +import com.sun.jmx.mbeanserver.Util; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; @@ -146,8 +147,8 @@ public class FileLoginModule implements LoginModule { // Initial state private Subject subject; private CallbackHandler callbackHandler; - private Map sharedState; - private Map options; + private Map sharedState; + private Map options; private String passwordFile; private String passwordFileDisplayName; private boolean userSuppliedPasswordFile; @@ -172,7 +173,7 @@ public class FileLoginModule implements LoginModule { this.subject = subject; this.callbackHandler = callbackHandler; - this.sharedState = sharedState; + this.sharedState = Util.cast(sharedState); this.options = options; // initialize any configured options @@ -454,8 +455,8 @@ public class FileLoginModule implements LoginModule { if (storePass && !sharedState.containsKey(USERNAME_KEY) && !sharedState.containsKey(PASSWORD_KEY)) { - ((Map) sharedState).put(USERNAME_KEY, username); - ((Map) sharedState).put(PASSWORD_KEY, password); + sharedState.put(USERNAME_KEY, username); + sharedState.put(PASSWORD_KEY, password); } // Create a new user principal diff --git a/src/share/classes/com/sun/jmx/remote/security/JMXPluggableAuthenticator.java b/src/share/classes/com/sun/jmx/remote/security/JMXPluggableAuthenticator.java index 631ee3e3b7b9b74ba42f6224f3b0f2e5643f12c7..70c72eaf9ef31ff31437096ff0a45a773687b5f3 100644 --- a/src/share/classes/com/sun/jmx/remote/security/JMXPluggableAuthenticator.java +++ b/src/share/classes/com/sun/jmx/remote/security/JMXPluggableAuthenticator.java @@ -87,7 +87,7 @@ public final class JMXPluggableAuthenticator implements JMXAuthenticator { * @exception SecurityException if the authentication mechanism cannot be * initialized. */ - public JMXPluggableAuthenticator(Map env) { + public JMXPluggableAuthenticator(Map env) { String loginConfigName = null; String passwordFile = null; diff --git a/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java b/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java index 2e90b11bf4ba40966d27c7afb4e76fe1f0d9c052..66c78f2775eda63860b0033692b3051414dac47e 100644 --- a/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java +++ b/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java @@ -249,9 +249,8 @@ public class MBeanServerFileAccessController } }); if (s == null) return; /* security has not been enabled */ - final Set principals = s.getPrincipals(); - for (Iterator i = principals.iterator(); i.hasNext(); ) { - final Principal p = (Principal) i.next(); + final Set principals = s.getPrincipals(); + for (Principal p : principals) { String grantedAccessLevel; synchronized (props) { grantedAccessLevel = props.getProperty(p.getName()); @@ -271,8 +270,8 @@ public class MBeanServerFileAccessController } private void checkValues(Properties props) { - Collection c = props.values(); - for (Iterator i = c.iterator(); i.hasNext(); ) { + Collection c = props.values(); + for (Iterator i = c.iterator(); i.hasNext(); ) { final String accessLevel = (String) i.next(); if (!accessLevel.equals(READONLY) && !accessLevel.equals(READWRITE)) { diff --git a/src/share/classes/com/sun/jmx/remote/util/ClassLoaderWithRepository.java b/src/share/classes/com/sun/jmx/remote/util/ClassLoaderWithRepository.java index dfbabeb4184be3734067c9a31df566816b493f46..e22bcc911f961da5675f7f10315207f26c50e152 100644 --- a/src/share/classes/com/sun/jmx/remote/util/ClassLoaderWithRepository.java +++ b/src/share/classes/com/sun/jmx/remote/util/ClassLoaderWithRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -38,7 +38,7 @@ public class ClassLoaderWithRepository extends ClassLoader { this.cl2 = cl2; } - protected Class findClass(String name) throws ClassNotFoundException { + protected Class findClass(String name) throws ClassNotFoundException { try { return repository.loadClass(name); } catch (ClassNotFoundException cne) { diff --git a/src/share/classes/com/sun/jmx/remote/util/ClassLogger.java b/src/share/classes/com/sun/jmx/remote/util/ClassLogger.java index c3a1c451af641479325cfd056f5d8a45c54551ce..b4d2756705d36e341f2ca7b1df269250e35f7a50 100644 --- a/src/share/classes/com/sun/jmx/remote/util/ClassLogger.java +++ b/src/share/classes/com/sun/jmx/remote/util/ClassLogger.java @@ -1,5 +1,5 @@ /* - * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -41,7 +41,7 @@ public class ClassLogger { people to use at least J2SE 1.4. */ boolean loaded = false; try { - Class c = java.util.logging.Logger.class; + Class c = java.util.logging.Logger.class; loaded = true; } catch (Error e) { // OK. diff --git a/src/share/classes/com/sun/jmx/remote/util/EnvHelp.java b/src/share/classes/com/sun/jmx/remote/util/EnvHelp.java index 67b9ea59561d6dfb75c5af4e771acf72f43ff091..e95c1e049df41e837a41cba8e6ed2e64607cc139 100644 --- a/src/share/classes/com/sun/jmx/remote/util/EnvHelp.java +++ b/src/share/classes/com/sun/jmx/remote/util/EnvHelp.java @@ -1,3 +1,4 @@ + /* * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -117,7 +118,7 @@ public class EnvHelp { * jmx.remote.default.class.loader.name is specified * and the ClassLoader MBean is not found in mbs. */ - public static ClassLoader resolveServerClassLoader(Map env, + public static ClassLoader resolveServerClassLoader(Map env, MBeanServer mbs) throws InstanceNotFoundException { @@ -194,7 +195,7 @@ public class EnvHelp { * jmx.remote.default.class.loader is specified * and is not an instance of {@link ClassLoader}. */ - public static ClassLoader resolveClientClassLoader(Map env) { + public static ClassLoader resolveClientClassLoader(Map env) { if (env == null) return Thread.currentThread().getContextClassLoader(); @@ -241,7 +242,7 @@ public class EnvHelp { try { java.lang.reflect.Method getCause = - t.getClass().getMethod("getCause", (Class[]) null); + t.getClass().getMethod("getCause", (Class[]) null); ret = (Throwable)getCause.invoke(t, (Object[]) null); } catch (Exception e) { @@ -264,7 +265,7 @@ public class EnvHelp { * Returns the size of a notification buffer for a connector server. * The default value is 1000. */ - public static int getNotifBufferSize(Map env) { + public static int getNotifBufferSize(Map env) { int defaultQueueSize = 1000; // default value // keep it for the compability for the fix: @@ -327,7 +328,7 @@ public class EnvHelp { * Returns the maximum notification number which a client will * fetch every time. */ - public static int getMaxFetchNotifNumber(Map env) { + public static int getMaxFetchNotifNumber(Map env) { return (int) getIntegerAttribute(env, MAX_FETCH_NOTIFS, 1000, 1, Integer.MAX_VALUE); } @@ -344,7 +345,7 @@ public class EnvHelp { /** * Returns the timeout for a client to fetch notifications. */ - public static long getFetchTimeout(Map env) { + public static long getFetchTimeout(Map env) { return getIntegerAttribute(env, FETCH_TIMEOUT, 60000L, 0, Long.MAX_VALUE); } @@ -361,7 +362,7 @@ public class EnvHelp { "com.sun.jmx.remote.notification.access.controller"; public static NotificationAccessController getNotificationAccessController( - Map env) { + Map env) { return (env == null) ? null : (NotificationAccessController) env.get(NOTIF_ACCESS_CONTROLLER); } @@ -378,7 +379,7 @@ public class EnvHelp { * an entry for name but it does not meet the * constraints above. */ - public static long getIntegerAttribute(Map env, String name, + public static long getIntegerAttribute(Map env, String name, long defaultValue, long minValue, long maxValue) { final Object o; @@ -421,9 +422,8 @@ public class EnvHelp { /* Check that all attributes have a key that is a String. Could make further checks, e.g. appropriate types for attributes. */ - public static void checkAttributes(Map attributes) { - for (Iterator it = attributes.keySet().iterator(); it.hasNext(); ) { - Object key = it.next(); + public static void checkAttributes(Map attributes) { + for (Object key : attributes.keySet()) { if (!(key instanceof String)) { final String msg = "Attributes contain key that is not a string: " + key; @@ -455,7 +455,7 @@ public class EnvHelp { logger.trace("purgeUnserializable", "starts"); ObjectOutputStream oos = null; int i = 0; - for (Iterator it = objects.iterator(); it.hasNext(); i++) { + for (Iterator it = objects.iterator(); it.hasNext(); i++) { Object v = it.next(); if (v == null || v instanceof String) { @@ -564,18 +564,18 @@ public class EnvHelp { guarantees that we will never call next() on the corresponding iterator. */ String sentinelKey = map.lastKey() + "X"; - Iterator keyIterator = map.keySet().iterator(); - Iterator stringIterator = hiddenStrings.iterator(); - Iterator prefixIterator = hiddenPrefixes.iterator(); + Iterator keyIterator = map.keySet().iterator(); + Iterator stringIterator = hiddenStrings.iterator(); + Iterator prefixIterator = hiddenPrefixes.iterator(); String nextString; if (stringIterator.hasNext()) - nextString = (String) stringIterator.next(); + nextString = stringIterator.next(); else nextString = sentinelKey; String nextPrefix; if (prefixIterator.hasNext()) - nextPrefix = (String) prefixIterator.next(); + nextPrefix = prefixIterator.next(); else nextPrefix = sentinelKey; @@ -583,7 +583,7 @@ public class EnvHelp { or prefix, remove it. */ keys: while (keyIterator.hasNext()) { - String key = (String) keyIterator.next(); + String key = keyIterator.next(); /* Continue through string-match values until we find one that is either greater than the current key, or equal @@ -591,7 +591,7 @@ public class EnvHelp { int cmp = +1; while ((cmp = nextString.compareTo(key)) < 0) { if (stringIterator.hasNext()) - nextString = (String) stringIterator.next(); + nextString = stringIterator.next(); else nextString = sentinelKey; } @@ -609,7 +609,7 @@ public class EnvHelp { continue keys; } if (prefixIterator.hasNext()) - nextPrefix = (String) prefixIterator.next(); + nextPrefix = prefixIterator.next(); else nextPrefix = sentinelKey; } @@ -640,7 +640,7 @@ public class EnvHelp { /** * Returns the server side connection timeout. */ - public static long getServerConnectionTimeout(Map env) { + public static long getServerConnectionTimeout(Map env) { return getIntegerAttribute(env, SERVER_CONNECTION_TIMEOUT, 120000L, 0, Long.MAX_VALUE); } @@ -656,7 +656,7 @@ public class EnvHelp { /** * Returns the client connection check period. */ - public static long getConnectionCheckPeriod(Map env) { + public static long getConnectionCheckPeriod(Map env) { return getIntegerAttribute(env, CLIENT_CONNECTION_CHECK_PERIOD, 60000L, 0, Long.MAX_VALUE); } @@ -691,7 +691,7 @@ public class EnvHelp { * to {@code String}. */ public static boolean computeBooleanFromString( - Map env, String prop, boolean systemProperty) { + Map env, String prop, boolean systemProperty) { if (env == null) throw new IllegalArgumentException("env map cannot be null"); @@ -744,7 +744,8 @@ public class EnvHelp { * to {@code String}. */ public static boolean computeBooleanFromString( - Map env, String prop, boolean systemProperty, boolean defaultValue) { + Map env, String prop, + boolean systemProperty, boolean defaultValue) { if (env == null) throw new IllegalArgumentException("env map cannot be null"); @@ -774,7 +775,7 @@ public class EnvHelp { public static Hashtable mapToHashtable(Map map) { HashMap m = new HashMap(map); if (m.containsKey(null)) m.remove(null); - for (Iterator i = m.values().iterator(); i.hasNext(); ) + for (Iterator i = m.values().iterator(); i.hasNext(); ) if (i.next() == null) i.remove(); return new Hashtable(m); } @@ -783,7 +784,7 @@ public class EnvHelp { * Returns true if the parameter JMXConnector.USE_EVENT_SERVICE is set to a * String equals "true" by ignoring case in the map or in the System. */ - public static boolean eventServiceEnabled(Map env) { + public static boolean eventServiceEnabled(Map env) { return computeBooleanFromString(env, JMXConnector.USE_EVENT_SERVICE, true); } @@ -793,11 +794,29 @@ public class EnvHelp { * If the property DELEGATE_TO_EVENT_SERVICE is not set, returns * a default value of "true". */ - public static boolean delegateToEventService(Map env) { + public static boolean delegateToEventService(Map env) { return computeBooleanFromString(env, JMXConnectorServer.DELEGATE_TO_EVENT_SERVICE, true, true); } + /** + *

Name of the attribute that specifies whether a connector server + * should not prevent the VM from exiting + */ + public static final String JMX_SERVER_DAEMON = "jmx.remote.x.daemon"; + + /** + * Returns true if {@value SERVER_DAEMON} is specified in the {@code env} + * as a key and its value is a String and it is equal to true ignoring case. + * + * @param env + * @return + */ + public static boolean isServerDaemon(Map env) { + return (env != null) && + ("true".equalsIgnoreCase((String)env.get(JMX_SERVER_DAEMON))); + } + // /** // *

Name of the attribute that specifies an EventRelay object to use. // */ diff --git a/src/share/classes/com/sun/jmx/remote/util/EventClientConnection.java b/src/share/classes/com/sun/jmx/remote/util/EventClientConnection.java index 6281b68a574b1e2c1a4450c2206493e106f7b631..d02da69c04758221865bc5f83da1f60baeef6dc2 100644 --- a/src/share/classes/com/sun/jmx/remote/util/EventClientConnection.java +++ b/src/share/classes/com/sun/jmx/remote/util/EventClientConnection.java @@ -138,8 +138,8 @@ public class EventClientConnection implements InvocationHandler, Class interfaceClass, Callable eventClientFactory) { final InvocationHandler handler = new EventClientConnection(connection,eventClientFactory); - final Class[] interfaces = - new Class[] {interfaceClass, EventClientFactory.class}; + final Class[] interfaces = + new Class[] {interfaceClass, EventClientFactory.class}; Object proxy = Proxy.newProxyInstance(interfaceClass.getClassLoader(), @@ -156,7 +156,7 @@ public class EventClientConnection implements InvocationHandler, // add/remove notification listener are routed to the EventClient if (methodName.equals("addNotificationListener") || methodName.equals("removeNotificationListener")) { - final Class[] sig = method.getParameterTypes(); + final Class[] sig = method.getParameterTypes(); if (sig.length>1 && NotificationListener.class.isAssignableFrom(sig[1])) { return invokeBroadcasterMethod(proxy,method,args); @@ -164,7 +164,7 @@ public class EventClientConnection implements InvocationHandler, } // subscribe/unsubscribe are also routed to the EventClient. - final Class clazz = method.getDeclaringClass(); + final Class clazz = method.getDeclaringClass(); if (clazz.equals(EventClientFactory.class)) { return invokeEventClientSubscriberMethod(proxy,method,args); } @@ -319,7 +319,7 @@ public class EventClientConnection implements InvocationHandler, return true; if (methodName.equals("equals") && Arrays.equals(method.getParameterTypes(), - new Class[] {Object.class}) + new Class[] {Object.class}) && isLocal(proxy, method)) return true; return false; @@ -430,13 +430,11 @@ public class EventClientConnection implements InvocationHandler, * The {@code EventClient} is created lazily, when it is needed * for the first time. If null, a default factory will be used * (see {@link #createEventClient}). - * @return the + * @return the MBeanServerConnection. **/ public static MBeanServerConnection getEventConnectionFor( MBeanServerConnection connection, Callable eventClientFactory) { - // if c already uses an EventClient no need to create a new one. - // if (connection instanceof EventClientFactory && eventClientFactory != null) throw new IllegalArgumentException("connection already uses EventClient"); diff --git a/src/share/classes/com/sun/jmx/remote/util/OrderClassLoaders.java b/src/share/classes/com/sun/jmx/remote/util/OrderClassLoaders.java index b54a23b2bb1631ea27b270ebaa8af0765d28e61d..97062893ea82a77a870843e4c4d9fb507c99aa16 100644 --- a/src/share/classes/com/sun/jmx/remote/util/OrderClassLoaders.java +++ b/src/share/classes/com/sun/jmx/remote/util/OrderClassLoaders.java @@ -1,5 +1,5 @@ /* - * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,7 +32,7 @@ public class OrderClassLoaders extends ClassLoader { this.cl2 = cl2; } - protected Class findClass(String name) throws ClassNotFoundException { + protected Class findClass(String name) throws ClassNotFoundException { try { return super.findClass(name); } catch (ClassNotFoundException cne) { diff --git a/src/share/classes/com/sun/net/ssl/internal/www/protocol/https/HttpsURLConnectionOldImpl.java b/src/share/classes/com/sun/net/ssl/internal/www/protocol/https/HttpsURLConnectionOldImpl.java index 8b34a2c3ceb2a4a649c21ac89493fee11abc9b45..f699b4e116ee88db07ad078aa53d15e0000c84b6 100644 --- a/src/share/classes/com/sun/net/ssl/internal/www/protocol/https/HttpsURLConnectionOldImpl.java +++ b/src/share/classes/com/sun/net/ssl/internal/www/protocol/https/HttpsURLConnectionOldImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 1996-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -497,6 +497,10 @@ public class HttpsURLConnectionOldImpl delegate.setFixedLengthStreamingMode(contentLength); } + public void setFixedLengthStreamingMode(long contentLength) { + delegate.setFixedLengthStreamingMode(contentLength); + } + public void setChunkedStreamingMode (int chunklen) { delegate.setChunkedStreamingMode(chunklen); } diff --git a/src/share/classes/com/sun/org/apache/xml/internal/security/utils/IdResolver.java b/src/share/classes/com/sun/org/apache/xml/internal/security/utils/IdResolver.java index d7565157e4905595b9d5cbde61132f774a8f887f..da5c4960973c1e67d3cc7b4856688ba8661df1ce 100644 --- a/src/share/classes/com/sun/org/apache/xml/internal/security/utils/IdResolver.java +++ b/src/share/classes/com/sun/org/apache/xml/internal/security/utils/IdResolver.java @@ -70,10 +70,13 @@ public class IdResolver { */ public static void registerElementById(Element element, String idValue) { Document doc = element.getOwnerDocument(); - WeakHashMap elementMap = (WeakHashMap) docMap.get(doc); - if(elementMap == null) { - elementMap = new WeakHashMap(); - docMap.put(doc, elementMap); + WeakHashMap elementMap; + synchronized (docMap) { + elementMap = (WeakHashMap) docMap.get(doc); + if (elementMap == null) { + elementMap = new WeakHashMap(); + docMap.put(doc, elementMap); + } } elementMap.put(idValue, new WeakReference(element)); } @@ -153,7 +156,10 @@ public class IdResolver { private static Element getElementByIdType(Document doc, String id) { if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "getElementByIdType() Search for ID " + id); - WeakHashMap elementMap = (WeakHashMap) docMap.get(doc); + WeakHashMap elementMap; + synchronized (docMap) { + elementMap = (WeakHashMap) docMap.get(doc); + } if (elementMap != null) { WeakReference weakReference = (WeakReference) elementMap.get(id); if (weakReference != null) { diff --git a/src/share/classes/com/sun/security/auth/module/Krb5LoginModule.java b/src/share/classes/com/sun/security/auth/module/Krb5LoginModule.java index 7562f584ada705c22340068d479b83923c751edd..55972eefe89ad667553fc6e38ecd49f00dff7528 100644 --- a/src/share/classes/com/sun/security/auth/module/Krb5LoginModule.java +++ b/src/share/classes/com/sun/security/auth/module/Krb5LoginModule.java @@ -86,6 +86,8 @@ import sun.misc.HexDumpEncoder; * the principal name from the configuration is used. In the * case where the principal property is not set and the principal * entry also does not exist, the user is prompted for the name. + * When this property of entry is set, and useTicketCache + * is set to true, only TGT belonging to this principal is used. * *

The following is a list of configuration options supported * for Krb5LoginModule: @@ -101,18 +103,19 @@ import sun.misc.HexDumpEncoder; * to false if you do not want this module to use the ticket cache. * (Default is False). * This module will - * search for the tickect + * search for the ticket * cache in the following locations: - * For Windows 2000, it will use Local Security Authority (LSA) API - * to get the TGT. On Solaris and Linux + * On Solaris and Linux * it will look for the ticket cache in /tmp/krb5cc_uid * where the uid is numeric user * identifier. If the ticket cache is - * not available in either of the above locations, or if we are on a - * different Windows platform, it will look for the cache as + * not available in the above location, or if we are on a + * Windows platform, it will look for the cache as * {user.home}{file.separator}krb5cc_{user.name}. * You can override the ticket cache location by using - * ticketCache + * ticketCache. + * For Windows, if a ticket cannot be retrieved from the file ticket cache, + * it will use Local Security Authority (LSA) API to get the TGT. *

*

ticketCache:
*
Set this to the name of the ticket @@ -129,20 +132,20 @@ import sun.misc.HexDumpEncoder; *
doNotPrompt:
*
Set this to true if you do not want to be * prompted for the password - * if credentials can - * not be obtained from the cache or keytab.(Default is false) - * If set to true authentication will fail if credentials can - * not be obtained from the cache or keytab.
+ * if credentials can not be obtained from the cache, the keytab, + * or through shared state.(Default is false) + * If set to true, credential must be obtained through cache, keytab, + * or shared state. Otherwise, authentication will fail. *

*

useKeyTab:
*
Set this to true if you * want the module to get the principal's key from the * the keytab.(default value is False) - * If keyatb + * If keytab * is not set then * the module will locate the keytab from the - * Kerberos configuration file.
- * If it is not specifed in the Kerberos configuration file + * Kerberos configuration file. + * If it is not specified in the Kerberos configuration file * then it will look for the file * {user.home}{file.separator}krb5.keytab. *

@@ -210,20 +213,34 @@ import sun.misc.HexDumpEncoder; * exist for the username and password in the shared * state, or if authentication fails. * - * clearPass if, true, this LoginModule clears the - * username and password stored in the module's shared - * state after both phases of authentication - * (login and commit) have completed. + * clearPass if, true, this LoginModule clears the + * username and password stored in the module's shared + * state after both phases of authentication + * (login and commit) have completed. * + *

If the principal system property or key is already provided, the value of + * "javax.security.auth.login.name" in the shared state is ignored. + *

When multiple mechanisms to retrieve a ticket or key is provided, the + * preference order looks like this: + *

    + *
  1. ticket cache + *
  2. keytab + *
  3. shared state + *
  4. user prompt + *
+ *

Note that if any step fails, it will fallback to the next step. + * There's only one exception, it the shared state step fails and + * useFirstPass=true, no user prompt is made. *

Examples of some configuration values for Krb5LoginModule in * JAAS config file and the results are: *

    *

    doNotPrompt=true; *

- *

This is an illegal combination since useTicketCache - * is not set and the user can not be prompted for the password. + *

This is an illegal combination since none of useTicketCache, + * useKeyTab, useFirstPass and tryFirstPass + * is set and the user can not be prompted for the password. *

    - *

    ticketCache = < filename >; + *

    ticketCache = <filename>; *

*

This is an illegal combination since useTicketCache * is not set to true and the ticketCache is set. A configuration error @@ -240,9 +257,9 @@ import sun.misc.HexDumpEncoder; * *

This is an illegal combination since storeKey is set to * true but the key can not be obtained either by prompting the user or from - * the keytab.A configuration error will occur. + * the keytab, or from the shared state. A configuration error will occur. *

    - *

    keyTab = < filename > doNotPrompt=true ; + *

    keyTab = <filename> doNotPrompt=true ; *

*

This is an illegal combination since useKeyTab is not set to true and * the keyTab is set. A configuration error will occur. @@ -260,7 +277,7 @@ import sun.misc.HexDumpEncoder; * with the principal and TGT. If the TGT is not available, * do not prompt the user, instead fail the authentication. *

    - *

    principal=< name >useTicketCache = true + *

    principal=<name>useTicketCache = true * doNotPrompt=true; *

*

Get the TGT from the default cache for the principal and populate the @@ -269,9 +286,9 @@ import sun.misc.HexDumpEncoder; * authentication will fail. *

    *

    useTicketCache = true - * ticketCache=< file name >useKeyTab = true - * keyTab=< keytab filename > - * principal = < principal name > + * ticketCache=<file name>useKeyTab = true + * keyTab=<keytab filename> + * principal = <principal name> * doNotPrompt=true; *

*

Search the cache for the principal's TGT. If it is not available @@ -281,7 +298,7 @@ import sun.misc.HexDumpEncoder; * If the key is not available or valid then authentication will fail. *

    *

    useTicketCache = true - * ticketCache=< file name > + * ticketCache=<file name> *

*

The TGT will be obtained from the cache specified. * The Kerberos principal name used will be the principal name in @@ -292,8 +309,8 @@ import sun.misc.HexDumpEncoder; * The Subject will be populated with the TGT. *

    *

    useKeyTab = true - * keyTab=< keytab filename > - * principal= < principal name > + * keyTab=<keytab filename> + * principal= <principal name> * storeKey=true; *

*

The key for the principal will be retrieved from the keytab. @@ -303,7 +320,7 @@ import sun.misc.HexDumpEncoder; * password entered. *

    *

    useKeyTab = true - * keyTab=< keytabname > + * keyTab=<keytabname> * storeKey=true * doNotPrompt=true; *

@@ -316,21 +333,23 @@ import sun.misc.HexDumpEncoder; * Subject's private credentials set. Otherwise the authentication will * fail. *
    - *

    useKeyTab = true - * keyTab=< file name > storeKey=true - * principal= < principal name > + *

    * useTicketCache=true - * ticketCache=< file name >; + * ticketCache=<file name>; + * useKeyTab = true + * keyTab=<file name> storeKey=true + * principal= <principal name> *

- *

The principal's key will be retrieved from the keytab and added - * to the Subject's private credentials. If the key - * is not available, the - * user will be prompted for the password; the key derived from the password - * will be added to the Subject's private credentials set. The - * client's TGT will be retrieved from the ticket cache and added to the + *

+ * The client's TGT will be retrieved from the ticket cache and added to the * Subject's private credentials. If the TGT is not available - * in the ticket cache, it will be obtained using the authentication + * in the ticket cache, or the TGT's client name does not match the principal + * name, Java will use a secret key to obtain the TGT using the authentication * exchange and added to the Subject's private credentials. + * This secret key will be first retrieved from the keytab. If the key + * is not available, the user will be prompted for the password. In either + * case, the key derived from the password will be added to the + * Subject's private credentials set. *

    *

    isInitiator = false *

@@ -856,11 +875,13 @@ public class Krb5LoginModule implements LoginModule { } private void validateConfiguration() throws LoginException { - if (doNotPrompt && !useTicketCache && !useKeyTab) + if (doNotPrompt && !useTicketCache && !useKeyTab + && !tryFirstPass && !useFirstPass) throw new LoginException ("Configuration Error" + " - either doNotPrompt should be " - + " false or useTicketCache/useKeyTab " + + " false or at least one of useTicketCache, " + + " useKeyTab, tryFirstPass and useFirstPass" + " should be true"); if (ticketCacheName != null && !useTicketCache) throw new LoginException @@ -872,11 +893,12 @@ public class Krb5LoginModule implements LoginModule { throw new LoginException ("Configuration Error - useKeyTab should be set to true " + "to use the keytab" + keyTabName); - if (storeKey && doNotPrompt && !useKeyTab) + if (storeKey && doNotPrompt && !useKeyTab + && !tryFirstPass && !useFirstPass) throw new LoginException - ("Configuration Error - either doNotPrompt " - + "should be set to false or " - + "useKeyTab must be set to true for storeKey option"); + ("Configuration Error - either doNotPrompt should be set to " + + " false or at least one of tryFirstPass, useFirstPass " + + "or useKeyTab must be set to true for storeKey option"); if (renewTGT && !useTicketCache) throw new LoginException ("Configuration Error" diff --git a/src/share/classes/com/sun/servicetag/Installer.java b/src/share/classes/com/sun/servicetag/Installer.java index 0cda7afe3d6bdb1ae7eef7c6a6e98cfab27c7bc1..17555b913e94d9539937fa3a5c177b25d8d2a7c8 100644 --- a/src/share/classes/com/sun/servicetag/Installer.java +++ b/src/share/classes/com/sun/servicetag/Installer.java @@ -475,7 +475,7 @@ public class Installer { String filename = "/com/sun/servicetag/resources/javase_" + version + "_swordfish.properties"; - InputStream in = Installer.class.getClass().getResourceAsStream(filename); + InputStream in = Installer.class.getResourceAsStream(filename); if (in == null) { return null; } @@ -813,7 +813,7 @@ public class Installer { locale, String.valueOf(version)).toString(); try { - in = Installer.class.getClass().getResourceAsStream(resource + ".html"); + in = Installer.class.getResourceAsStream(resource + ".html"); if (in == null) { // if the resource file is missing if (isVerbose()) { @@ -825,34 +825,39 @@ public class Installer { System.out.println("Generating " + f + " from " + resource + ".html"); } - br = new BufferedReader(new InputStreamReader(in, "UTF-8")); - pw = new PrintWriter(f, "UTF-8"); - String line = null; - while ((line = br.readLine()) != null) { - String output = line; - if (line.contains(JDK_VERSION_KEY)) { - output = line.replace(JDK_VERSION_KEY, jdkVersion); - } else if (line.contains(JDK_HEADER_PNG_KEY)) { - output = line.replace(JDK_HEADER_PNG_KEY, headerImageSrc); - } else if (line.contains(REGISTRATION_URL_KEY)) { - output = line.replace(REGISTRATION_URL_KEY, registerURL); - } else if (line.contains(REGISTRATION_PAYLOAD_KEY)) { - output = line.replace(REGISTRATION_PAYLOAD_KEY, payload.toString()); + try { + br = new BufferedReader(new InputStreamReader(in, "UTF-8")); + pw = new PrintWriter(f, "UTF-8"); + String line = null; + while ((line = br.readLine()) != null) { + String output = line; + if (line.contains(JDK_VERSION_KEY)) { + output = line.replace(JDK_VERSION_KEY, jdkVersion); + } else if (line.contains(JDK_HEADER_PNG_KEY)) { + output = line.replace(JDK_HEADER_PNG_KEY, headerImageSrc); + } else if (line.contains(REGISTRATION_URL_KEY)) { + output = line.replace(REGISTRATION_URL_KEY, registerURL); + } else if (line.contains(REGISTRATION_PAYLOAD_KEY)) { + output = line.replace(REGISTRATION_PAYLOAD_KEY, payload.toString()); + } + pw.println(output); + } + f.setReadOnly(); + pw.flush(); + } finally { + // It's safe for this finally block to have two close statements + // consecutively as PrintWriter.close doesn't throw IOException. + if (pw != null) { + pw.close(); + } + if (br!= null) { + br.close(); } - pw.println(output); } - f.setReadOnly(); - pw.flush(); } finally { - if (pw != null) { - pw.close(); - } if (in != null) { in.close(); } - if (br!= null) { - br.close(); - } } } } diff --git a/src/share/classes/com/sun/servicetag/SolarisSystemEnvironment.java b/src/share/classes/com/sun/servicetag/SolarisSystemEnvironment.java index f9f10684fddadec4965b24350856f5099f65ee89..877fe039349d68054599f3000847b41ef9ec4c13 100644 --- a/src/share/classes/com/sun/servicetag/SolarisSystemEnvironment.java +++ b/src/share/classes/com/sun/servicetag/SolarisSystemEnvironment.java @@ -62,8 +62,8 @@ class SolarisSystemEnvironment extends SystemEnvironment { return "Sun Microsystems, Inc"; } - // if we're here, then we'll try smbios (type 3) - return getSmbiosData("3", "Manufacturer: "); + // if we're here, then we'll try smbios (type 4) + return getSmbiosData("4", "Manufacturer: "); } /** diff --git a/src/share/classes/com/sun/servicetag/SunConnection.java b/src/share/classes/com/sun/servicetag/SunConnection.java index 8bcddbe971433fceed942a298f66f249e3d532c9..b05657866a5a9f12f191186d631212717c02e4d9 100644 --- a/src/share/classes/com/sun/servicetag/SunConnection.java +++ b/src/share/classes/com/sun/servicetag/SunConnection.java @@ -213,10 +213,16 @@ class SunConnection { con.setRequestProperty("Content-Type", "text/xml;charset=\"utf-8\""); con.connect(); - OutputStream out = con.getOutputStream(); - registration.storeToXML(out); - out.flush(); - out.close(); + OutputStream out = null; + try { + out = con.getOutputStream(); + registration.storeToXML(out); + out.flush(); + } finally { + if (out != null) { + out.close(); + } + } int returnCode = con.getResponseCode(); if (Util.isVerbose()) { diff --git a/src/share/classes/com/sun/servicetag/Util.java b/src/share/classes/com/sun/servicetag/Util.java index 9e32111a2fc826a935a6427918ea978962af8ba0..7d58d116e440209ca8a6dcd8172bd12734ce7cb4 100644 --- a/src/share/classes/com/sun/servicetag/Util.java +++ b/src/share/classes/com/sun/servicetag/Util.java @@ -140,11 +140,14 @@ class Util { } return e.getMessage(); } finally { - if (r != null) { - r.close(); - } - if (err != null) { - err.close(); + try { + if (r != null) { + r.close(); + } + } finally { + if (err != null) { + err.close(); + } } } } diff --git a/src/share/classes/com/sun/servicetag/WindowsSystemEnvironment.java b/src/share/classes/com/sun/servicetag/WindowsSystemEnvironment.java index 1fff0ea7df7f4b3e6f5ca83387629dc3c524c20d..aa9b83cdb6caec988925149886573d6099eac418 100644 --- a/src/share/classes/com/sun/servicetag/WindowsSystemEnvironment.java +++ b/src/share/classes/com/sun/servicetag/WindowsSystemEnvironment.java @@ -107,11 +107,17 @@ class WindowsSystemEnvironment extends SystemEnvironment { Process p = pb.start(); // need this for executing windows commands (at least // needed for executing wmic command) - BufferedWriter bw = new BufferedWriter( - new OutputStreamWriter(p.getOutputStream())); - bw.write(13); - bw.flush(); - bw.close(); + BufferedWriter bw = null; + try { + bw = new BufferedWriter( + new OutputStreamWriter(p.getOutputStream())); + bw.write(13); + bw.flush(); + } finally { + if (bw != null) { + bw.close(); + } + } p.waitFor(); if (p.exitValue() == 0) { diff --git a/src/share/classes/java/awt/EventDispatchThread.java b/src/share/classes/java/awt/EventDispatchThread.java index 23d08a0d418b6e6f00f6e4f1a21b06055c0c56ab..c9b77b0b27ee2ca8f20e6013359839b5ff9033b8 100644 --- a/src/share/classes/java/awt/EventDispatchThread.java +++ b/src/share/classes/java/awt/EventDispatchThread.java @@ -1,5 +1,5 @@ /* - * Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/java/net/HttpURLConnection.java b/src/share/classes/java/net/HttpURLConnection.java index eb21c7f3ba468f64560a0d0f9d40d5a5c1041a49..ef4f0764ca441e724fc794d82d2be4bd2f15d746 100644 --- a/src/share/classes/java/net/HttpURLConnection.java +++ b/src/share/classes/java/net/HttpURLConnection.java @@ -1,5 +1,5 @@ /* - * Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -73,10 +73,23 @@ abstract public class HttpURLConnection extends URLConnection { * The fixed content-length when using fixed-length streaming mode. * A value of -1 means fixed-length streaming mode is disabled * for output. + * + *

NOTE: {@link #fixedContentLengthLong} is recommended instead + * of this field, as it allows larger content lengths to be set. + * * @since 1.5 */ protected int fixedContentLength = -1; + /** + * The fixed content-length when using fixed-length streaming mode. + * A value of {@code -1} means fixed-length streaming mode is disabled + * for output. + * + * @since 1.7 + */ + protected long fixedContentLengthLong = -1; + /** * Returns the key for the nth header field. * Some implementations may treat the 0th @@ -109,6 +122,9 @@ abstract public class HttpURLConnection extends URLConnection { * This exception can be queried for the details of the error. *

* This method must be called before the URLConnection is connected. + *

+ * NOTE: {@link #setFixedLengthStreamingMode(long)} is recommended + * instead of this method as it allows larger content lengths to be set. * * @param contentLength The number of bytes which will be written * to the OutputStream. @@ -135,6 +151,52 @@ abstract public class HttpURLConnection extends URLConnection { fixedContentLength = contentLength; } + /** + * This method is used to enable streaming of a HTTP request body + * without internal buffering, when the content length is known in + * advance. + * + *

An exception will be thrown if the application attempts to write + * more data than the indicated content-length, or if the application + * closes the OutputStream before writing the indicated amount. + * + *

When output streaming is enabled, authentication and redirection + * cannot be handled automatically. A {@linkplain HttpRetryException} will + * be thrown when reading the response if authentication or redirection + * are required. This exception can be queried for the details of the + * error. + * + *

This method must be called before the URLConnection is connected. + * + *

The content length set by invoking this method takes precedence + * over any value set by {@link #setFixedLengthStreamingMode(int)}. + * + * @param contentLength + * The number of bytes which will be written to the OutputStream. + * + * @throws IllegalStateException + * if URLConnection is already connected or if a different + * streaming mode is already enabled. + * + * @throws IllegalArgumentException + * if a content length less than zero is specified. + * + * @since 1.7 + */ + public void setFixedLengthStreamingMode(long contentLength) { + if (connected) { + throw new IllegalStateException("Already connected"); + } + if (chunkLength != -1) { + throw new IllegalStateException( + "Chunked encoding streaming mode set"); + } + if (contentLength < 0) { + throw new IllegalArgumentException("invalid content length"); + } + fixedContentLengthLong = contentLength; + } + /* Default chunk size (including chunk header) if not specified; * we want to keep this in sync with the one defined in * sun.net.www.http.ChunkedOutputStream @@ -170,7 +232,7 @@ abstract public class HttpURLConnection extends URLConnection { if (connected) { throw new IllegalStateException ("Can't set streaming mode: already connected"); } - if (fixedContentLength != -1) { + if (fixedContentLength != -1 || fixedContentLengthLong != -1) { throw new IllegalStateException ("Fixed length streaming mode set"); } chunkLength = chunklen <=0? DEFAULT_CHUNK_SIZE : chunklen; diff --git a/src/share/classes/java/nio/Buffer.java b/src/share/classes/java/nio/Buffer.java index 3804057974f1cdbe3be3815b5d91aa73b58adb5a..5bd1643e959e7468a2773da9403a0b7fcc7cf32b 100644 --- a/src/share/classes/java/nio/Buffer.java +++ b/src/share/classes/java/nio/Buffer.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -543,6 +543,10 @@ public abstract class Buffer { return mark; } + final void discardMark() { // package-private + mark = -1; + } + static void checkBounds(int off, int len, int size) { // package-private if ((off | len | (off + len) | (size - (off + len))) < 0) throw new IndexOutOfBoundsException(); diff --git a/src/share/classes/java/nio/ByteBufferAs-X-Buffer.java b/src/share/classes/java/nio/ByteBufferAs-X-Buffer.java index 54deb4c8f3e0e8a8e59655a659c745ad9837d7f7..15626425a0efb68be947520c77ace191c83b4596 100644 --- a/src/share/classes/java/nio/ByteBufferAs-X-Buffer.java +++ b/src/share/classes/java/nio/ByteBufferAs-X-Buffer.java @@ -150,6 +150,7 @@ class ByteBufferAs$Type$Buffer$RW$$BO$ // package-private sb.compact(); position(rem); limit(capacity()); + discardMark(); return this; #else[rw] throw new ReadOnlyBufferException(); diff --git a/src/share/classes/java/nio/Direct-X-Buffer.java b/src/share/classes/java/nio/Direct-X-Buffer.java index 26b31956a31dcbf8003732567f3e4ec49d6ece86..5f738b7811e74930ef93434526b7b1a8cd301ec3 100644 --- a/src/share/classes/java/nio/Direct-X-Buffer.java +++ b/src/share/classes/java/nio/Direct-X-Buffer.java @@ -365,6 +365,7 @@ class Direct$Type$Buffer$RW$$BO$ unsafe.copyMemory(ix(pos), ix(0), rem << $LG_BYTES_PER_VALUE$); position(rem); limit(capacity()); + discardMark(); return this; #else[rw] throw new ReadOnlyBufferException(); diff --git a/src/share/classes/java/nio/Heap-X-Buffer.java b/src/share/classes/java/nio/Heap-X-Buffer.java index 28f1ca8abe1710f4a40db21e07a5d086df84b8ac..b615ba3c633d14fba3d45e3594c11498b82111fc 100644 --- a/src/share/classes/java/nio/Heap-X-Buffer.java +++ b/src/share/classes/java/nio/Heap-X-Buffer.java @@ -222,6 +222,7 @@ class Heap$Type$Buffer$RW$ System.arraycopy(hb, ix(position()), hb, ix(0), remaining()); position(remaining()); limit(capacity()); + discardMark(); return this; #else[rw] throw new ReadOnlyBufferException(); diff --git a/src/share/classes/java/nio/channels/Channels.java b/src/share/classes/java/nio/channels/Channels.java index b259bd991501c9af6f2e598601df6a6fa6a1bee5..cab96048629406759661a83fe594b2699936f21b 100644 --- a/src/share/classes/java/nio/channels/Channels.java +++ b/src/share/classes/java/nio/channels/Channels.java @@ -65,6 +65,10 @@ public final class Channels { private Channels() { } // No instantiation + private static void checkNotNull(Object o, String name) { + if (o == null) + throw new NullPointerException("\"" + name + "\" is null!"); + } /** * Write all remaining bytes in buffer to the given channel. @@ -120,6 +124,7 @@ public final class Channels { * @return A new input stream */ public static InputStream newInputStream(ReadableByteChannel ch) { + checkNotNull(ch, "ch"); return new sun.nio.ch.ChannelInputStream(ch); } @@ -138,6 +143,8 @@ public final class Channels { * @return A new output stream */ public static OutputStream newOutputStream(final WritableByteChannel ch) { + checkNotNull(ch, "ch"); + return new OutputStream() { private ByteBuffer bb = null; @@ -193,9 +200,7 @@ public final class Channels { * @return A new readable byte channel */ public static ReadableByteChannel newChannel(final InputStream in) { - if (in == null) { - throw new NullPointerException(); - } + checkNotNull(in, "in"); if (in instanceof FileInputStream && FileInputStream.class.equals(in.getClass())) { @@ -270,9 +275,7 @@ public final class Channels { * @return A new writable byte channel */ public static WritableByteChannel newChannel(final OutputStream out) { - if (out == null) { - throw new NullPointerException(); - } + checkNotNull(out, "out"); if (out instanceof FileOutputStream && FileOutputStream.class.equals(out.getClass())) { @@ -357,8 +360,8 @@ public final class Channels { CharsetDecoder dec, int minBufferCap) { - dec.reset(); - return StreamDecoder.forDecoder(ch, dec, minBufferCap); + checkNotNull(ch, "ch"); + return StreamDecoder.forDecoder(ch, dec.reset(), minBufferCap); } /** @@ -393,6 +396,7 @@ public final class Channels { public static Reader newReader(ReadableByteChannel ch, String csName) { + checkNotNull(csName, "csName"); return newReader(ch, Charset.forName(csName).newDecoder(), -1); } @@ -425,8 +429,8 @@ public final class Channels { final CharsetEncoder enc, final int minBufferCap) { - enc.reset(); - return StreamEncoder.forEncoder(ch, enc, minBufferCap); + checkNotNull(ch, "ch"); + return StreamEncoder.forEncoder(ch, enc.reset(), minBufferCap); } /** @@ -461,6 +465,7 @@ public final class Channels { public static Writer newWriter(WritableByteChannel ch, String csName) { + checkNotNull(csName, "csName"); return newWriter(ch, Charset.forName(csName).newEncoder(), -1); } diff --git a/src/share/classes/java/nio/channels/SelectableChannel.java b/src/share/classes/java/nio/channels/SelectableChannel.java index 10f523d0430142de8d0766f057f33275adbdae4f..54f685a2315dd3f3bb0eef64179911ad93fec518 100644 --- a/src/share/classes/java/nio/channels/SelectableChannel.java +++ b/src/share/classes/java/nio/channels/SelectableChannel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2001 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -191,6 +191,9 @@ public abstract class SelectableChannel * @throws ClosedChannelException * If this channel is closed * + * @throws ClosedSelectorException + * If the selector is closed + * * @throws IllegalBlockingModeException * If this channel is in blocking mode * @@ -246,6 +249,9 @@ public abstract class SelectableChannel * @throws ClosedChannelException * If this channel is closed * + * @throws ClosedSelectorException + * If the selector is closed + * * @throws IllegalBlockingModeException * If this channel is in blocking mode * diff --git a/src/share/classes/java/nio/channels/spi/AbstractSelectableChannel.java b/src/share/classes/java/nio/channels/spi/AbstractSelectableChannel.java index 73fcf3d130e26156541a834b3d0c23ad69a53d13..51868396f34da4ca4c2c7238569eba10340a49ea 100644 --- a/src/share/classes/java/nio/channels/spi/AbstractSelectableChannel.java +++ b/src/share/classes/java/nio/channels/spi/AbstractSelectableChannel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -175,6 +175,16 @@ public abstract class AbstractSelectableChannel * the selector is invoked while holding the appropriate locks. The * resulting key is added to this channel's key set before being returned. *

+ * + * @throws ClosedSelectorException {@inheritDoc} + * + * @throws IllegalBlockingModeException {@inheritDoc} + * + * @throws IllegalSelectorException {@inheritDoc} + * + * @throws CancelledKeyException {@inheritDoc} + * + * @throws IllegalArgumentException {@inheritDoc} */ public final SelectionKey register(Selector sel, int ops, Object att) diff --git a/src/share/classes/java/security/cert/CertPathValidatorException.java b/src/share/classes/java/security/cert/CertPathValidatorException.java index 8a04aeff5f307238938aba619719c95b54226098..c1ca1d2b8de4cfdb2f41bbd8f58fb01e7a2e14c5 100644 --- a/src/share/classes/java/security/cert/CertPathValidatorException.java +++ b/src/share/classes/java/security/cert/CertPathValidatorException.java @@ -113,7 +113,7 @@ public class CertPathValidatorException extends GeneralSecurityException { * permitted, and indicates that the cause is nonexistent or unknown.) */ public CertPathValidatorException(Throwable cause) { - this(null, cause); + this((cause == null ? null : cause.toString()), cause); } /** diff --git a/src/share/classes/java/text/SimpleDateFormat.java b/src/share/classes/java/text/SimpleDateFormat.java index e543899fe95b342dcc4e0d8ac2323a3594ff77d7..d7e99a943fe75ec6b2770b431eed209ac046297c 100644 --- a/src/share/classes/java/text/SimpleDateFormat.java +++ b/src/share/classes/java/text/SimpleDateFormat.java @@ -1,5 +1,5 @@ /* - * Copyright 1996-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/crypto/Cipher.java b/src/share/classes/javax/crypto/Cipher.java index f99a43cf5118b8fe6759df9a8caa0b045447a26a..899b352331230f1dfeae5ee0558eb5ab9a1f8177 100644 --- a/src/share/classes/javax/crypto/Cipher.java +++ b/src/share/classes/javax/crypto/Cipher.java @@ -2377,7 +2377,7 @@ public class Cipher { * For more information on default key size in JCE jurisdiction * policy files, please see Appendix E in the * + * "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html#AppC"> * Java Cryptography Architecture Reference Guide. * * @param transformation the cipher transformation. diff --git a/src/share/classes/javax/management/AttributeList.java b/src/share/classes/javax/management/AttributeList.java index b385c3c0f79c57ede5c66b1e9058f1f3332f7b48..a629d57ccd4fdaa5c7cc34f759dc0016e51eabeb 100644 --- a/src/share/classes/javax/management/AttributeList.java +++ b/src/share/classes/javax/management/AttributeList.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,17 +27,23 @@ package javax.management; import java.util.ArrayList; import java.util.Collection; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; /** - * Represents a list of values for attributes of an MBean. The methods - * used for the insertion of {@link javax.management.Attribute - * Attribute} objects in the AttributeList overrides the - * corresponding methods in the superclass - * ArrayList. This is needed in order to insure that the - * objects contained in the AttributeList are only - * Attribute objects. This avoids getting an exception - * when retrieving elements from the AttributeList. + *

Represents a list of values for attributes of an MBean. See the + * {@link MBeanServerConnection#getAttributes getAttributes} and + * {@link MBeanServerConnection#setAttributes setAttributes} methods of + * {@link MBeanServer} and {@link MBeanServerConnection}.

+ * + *

For compatibility reasons, it is possible, though + * highly discouraged, to add objects to an {@code AttributeList} that are + * not instances of {@code Attribute}. However, an {@code AttributeList} + * can be made type-safe, which means that an attempt to add + * an object that is not an {@code Attribute} will produce an {@code + * IllegalArgumentException}. An {@code AttributeList} becomes type-safe + * when the method {@link #asList()} is called on it.

* * @since 1.5 */ @@ -58,8 +64,8 @@ import java.util.List; */ public class AttributeList extends ArrayList { - private transient boolean typeSafe; - private transient boolean tainted; + private transient volatile boolean typeSafe; + private transient volatile boolean tainted; /* Serial version */ private static final long serialVersionUID = -4077085769279709076L; @@ -124,13 +130,63 @@ public class AttributeList extends ArrayList { // Check for non-Attribute objects // - checkTypeSafe(list); + adding(list); // Build the List // super.addAll(list); } + /** + *

Constructs an {@code AttributeList} containing the elements of + * the {@code Map} specified, in the order in which they appear in the + * {@code Map}'s {@link Map#entrySet entrySet}. For each {@code + * key} and {@code value} in the {@code Map}, the constructed + * {@code AttributeList} will contain {@link Attribute#Attribute + * Attribute(key, value)}.

+ * + * @param map the {@code Map} defining the elements of the new + * {@code AttributeList}. + */ + public AttributeList(Map map) { + for (Map.Entry entry : map.entrySet()) + add(new Attribute(entry.getKey(), entry.getValue())); + typeSafe = true; + } + + /** + *

Return a {@code Map} that is a snapshot of the values in this + * {@code AttributeList}. Each key in the {@code Map} is the {@linkplain + * Attribute#getName() name} of an {@code Attribute} in the list, and each + * value is the corresponding {@linkplain Attribute#getValue() value} of + * that {@code Attribute}. The {@code AttributeList} and the {@code Map} + * are unrelated after the call, that is, changes to one do not affect the + * other.

+ * + *

If the {@code AttributeList} contains more than one {@code Attribute} + * with the same name, then the {@code Map} will contain an entry + * for that name where the value is that of the last of those {@code + * Attribute}s.

+ * + * @return the new {@code Map}. + * + * @throws IllegalArgumentException if this {@code AttributeList} contains + * an element that is not an {@code Attribute}. + */ + public Map toMap() { + Map map = new LinkedHashMap(); + + // We can't call adding(this) because we're not necessarily typeSafe + if (tainted) + throw new IllegalArgumentException("AttributeList contains non-Attribute"); + + for (Object x : this) { + Attribute a = (Attribute) x; + map.put(a.getName(), a.getValue()); + } + return map; + } + /** * Return a view of this list as a {@code List}. * Changes to the returned value are reflected by changes @@ -154,12 +210,10 @@ public class AttributeList extends ArrayList { */ @SuppressWarnings("unchecked") public List asList() { - if (!typeSafe) { - if (tainted) - checkTypeSafe(this); - typeSafe = true; - } - return (List) (List) this; + typeSafe = true; + if (tainted) + adding((Collection) this); // will throw IllegalArgumentException + return (List) (List) this; } /** @@ -175,7 +229,7 @@ public class AttributeList extends ArrayList { * Inserts the attribute specified as an element at the position specified. * Elements with an index greater than or equal to the current position are * shifted up. If the index is out of range (index < 0 || index > - * size() a RuntimeOperationsException should be raised, wrapping the + * size()) a RuntimeOperationsException should be raised, wrapping the * java.lang.IndexOutOfBoundsException thrown. * * @param object The Attribute object to be inserted. @@ -245,8 +299,7 @@ public class AttributeList extends ArrayList { public boolean addAll(int index, AttributeList list) { try { return super.addAll(index, list); - } - catch (IndexOutOfBoundsException e) { + } catch (IndexOutOfBoundsException e) { throw new RuntimeOperationsException(e, "The specified index is out of range"); } @@ -258,96 +311,77 @@ public class AttributeList extends ArrayList { * been called on this instance. */ + /** + * {@inheritDoc} + * @throws IllegalArgumentException if this {@code AttributeList} is + * type-safe and {@code element} is not an + * {@code Attribute}. + */ @Override - public boolean add(Object o) { - if (!tainted) - tainted = isTainted(o); - if (typeSafe) - checkTypeSafe(o); - return super.add(o); + public boolean add(Object element) { + adding(element); + return super.add(element); } + /** + * {@inheritDoc} + * @throws IllegalArgumentException if this {@code AttributeList} is + * type-safe and {@code element} is not an + * {@code Attribute}. + */ @Override public void add(int index, Object element) { - if (!tainted) - tainted = isTainted(element); - if (typeSafe) - checkTypeSafe(element); + adding(element); super.add(index, element); } + /** + * {@inheritDoc} + * @throws IllegalArgumentException if this {@code AttributeList} is + * type-safe and {@code c} contains an + * element that is not an {@code Attribute}. + */ @Override public boolean addAll(Collection c) { - if (!tainted) - tainted = isTainted(c); - if (typeSafe) - checkTypeSafe(c); + adding(c); return super.addAll(c); } + /** + * {@inheritDoc} + * @throws IllegalArgumentException if this {@code AttributeList} is + * type-safe and {@code c} contains an + * element that is not an {@code Attribute}. + */ @Override public boolean addAll(int index, Collection c) { - if (!tainted) - tainted = isTainted(c); - if (typeSafe) - checkTypeSafe(c); + adding(c); return super.addAll(index, c); } + /** + * {@inheritDoc} + * @throws IllegalArgumentException if this {@code AttributeList} is + * type-safe and {@code element} is not an + * {@code Attribute}. + */ @Override public Object set(int index, Object element) { - if (!tainted) - tainted = isTainted(element); - if (typeSafe) - checkTypeSafe(element); + adding(element); return super.set(index, element); } - /** - * IllegalArgumentException if o is a non-Attribute object. - */ - private static void checkTypeSafe(Object o) { - try { - o = (Attribute) o; - } catch (ClassCastException e) { - throw new IllegalArgumentException(e); - } - } - - /** - * IllegalArgumentException if c contains any non-Attribute objects. - */ - private static void checkTypeSafe(Collection c) { - try { - Attribute a; - for (Object o : c) - a = (Attribute) o; - } catch (ClassCastException e) { - throw new IllegalArgumentException(e); - } - } - - /** - * Returns true if o is a non-Attribute object. - */ - private static boolean isTainted(Object o) { - try { - checkTypeSafe(o); - } catch (IllegalArgumentException e) { - return true; - } - return false; + private void adding(Object x) { + if (x == null || x instanceof Attribute) + return; + if (typeSafe) + throw new IllegalArgumentException("Not an Attribute: " + x); + else + tainted = true; } - /** - * Returns true if c contains any non-Attribute objects. - */ - private static boolean isTainted(Collection c) { - try { - checkTypeSafe(c); - } catch (IllegalArgumentException e) { - return true; - } - return false; + private void adding(Collection c) { + for (Object x : c) + adding(x); } } diff --git a/src/share/classes/javax/management/ClientContext.java b/src/share/classes/javax/management/ClientContext.java new file mode 100644 index 0000000000000000000000000000000000000000..f37fb6e77d826709fe8a3a24f71352d253ff4f95 --- /dev/null +++ b/src/share/classes/javax/management/ClientContext.java @@ -0,0 +1,1091 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package javax.management; + +import com.sun.jmx.interceptor.SingleMBeanForwarder; +import com.sun.jmx.namespace.RoutingConnectionProxy; +import com.sun.jmx.namespace.RoutingProxy; +import com.sun.jmx.namespace.RoutingServerProxy; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.util.Arrays; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.StringTokenizer; +import java.util.TreeMap; +import java.util.concurrent.Callable; +import java.util.logging.Level; +import java.util.logging.Logger; +import static javax.management.namespace.JMXNamespaces.NAMESPACE_SEPARATOR; +import javax.management.namespace.JMXNamespaces; +import javax.management.namespace.JMXNamespace; +import javax.management.namespace.JMXNamespaceMBean; +import javax.management.namespace.MBeanServerSupport; +import javax.management.remote.IdentityMBeanServerForwarder; +import javax.management.remote.MBeanServerForwarder; + +/** + *

Methods to communicate a client context to MBeans. A context is + * a {@literal Map} that is provided by the client and + * that an MBean can consult using the {@link #getContext()} method. + * The context is set on a per-thread basis and can be consulted by any + * code that the target MBean calls within the thread.

+ * + *

One common usage of client context is to communicate the client's + * {@link Locale} to MBeans. For example, if an MBean has a String attribute + * {@code LastProblemDescription}, the value of that attribute could be + * a description of the last problem encountered by the MBean, translated + * into the client's locale. Different clients accessing this attribute + * from different locales would each see the appropriate version for their + * locale.

+ * + *

The locale case is sufficiently important that it has a special + * shorthand, the {@link #getLocale()} method. This method calls + * {@link #getContext()}.get({@link #LOCALE_KEY}) and converts the + * resultant String into a Locale object.

+ * + *

Here is what an MBean with a localized {@code LastProblemDescription} + * attribute might look like:

+ * + *
+ * public class LocaleSensitive implements LocaleSensitiveMBean {
+ *     ...
+ *     public String getLastProblemDescription() {
+ *         Locale loc = {@link #getLocale() ClientContext.getLocale()};
+ *         ResourceBundle rb = ResourceBundle.getBundle("MyResources", loc);
+ *         String resourceKey = getLastProblemResourceKey();
+ *         return rb.getString(resourceKey);
+ *     }
+ *     ...
+ * }
+ * 
+ * + *

Here is how a client can communicate its locale to the target + * MBean:

+ * + *
+ * JMXConnector connector = JMXConnectorFactory.connect(url);
+ * MBeanServerConnection connection = connector.getMBeanServerConnection();
+ * MBeanServerConnection localizedConnection =
+ *     {@link #withLocale(MBeanServerConnection, Locale)
+ *      ClientContext.withLocale}(connection, Locale.getDefault());
+ * String problem = localizedConnection.getAttribute(
+ *          objectName, "LastProblemDescription");
+ * 
+ * + *

In the more general case where the client wants to communicate context + * other than the locale, it can use {@link #withContext(MBeanServerConnection, + * String, String) withContext} instead of {@code withLocale}, and the target + * MBean can retrieve the context using {@link #getContext()}.

+ * + * + *

Remote use of contexts

+ * + *

The various {@code with*} methods, for example {@link + * #withLocale(javax.management.MBeanServer, java.util.Locale) withLocale}, + * transmit the context of each request by encoding it in the ObjectName of + * the request. For example, if a client creates a connection in the + * French locale like this...

+ * + *
+ * MBeanServerConnection mbsc = ...;
+ * Locale french = new Locale("fr");
+ * MBeanServerConnection localizedConnection = ClientContext.withLocale(mbsc, french);
+ * 
+ * + *

...or, equivalently, like this...

+ * + *
+ * MBeanServerConnection localizedConnection =
+ *     ClientContext.withContext(mbsc, {@link #LOCALE_KEY "jmx.locale"}, "fr");
+ * 
+ * + *

...then the context associates {@code "jmx.locale"} with {@code "fr"} + * and a request such as
+ * {@code localizedConnection.getAttribute("java.lang:type=Runtime", "Name")}
+ * is translated into
+ * {@code mbsc.getAttribute("jmx.context//jmx.locale=fr//java.lang:Runtime", "Name")}.
+ * A special {@linkplain javax.management.namespace namespace} {@code jmx.context//} + * extracts the context from the string {@code jmx.locale=fr} and establishes + * it in the thread that will do
+ * {@code getAttribute("java.lang:Runtime", "Name")}.

+ * + *

The details of how contexts are encoded into ObjectNames are explained + * in the {@link #encode encode} method.

+ * + *

The namespace {@code jmx.context//} just mentioned is only needed by + * remote clients, since local clients can set the context directly using + * {@link #doWithContext doWithContext}. Accordingly, this namespace is not + * present by default in the {@code MBeanServer}. Instead, it is + * simulated by the standard RMI connector using a special + * {@link MBeanServerForwarder}. If you are using this connector, you do not + * need to do anything special. Other connectors may or may not simulate this + * namespace in the same way. If the connector server returns true from the + * method {@link + * javax.management.remote.JMXConnectorServer#supportsSystemMBeanServerForwarder() + * supportsSystemMBeanServerForwarder} then it does simulate the namespace. + * If you are using another connector, or if you want to be able to use the + * {@code with*} methods locally, then you can install the {@code + * MBeanServerForwarder} yourself as described in the method {@link + * #newContextForwarder newContextForwarder}.

+ */ +public class ClientContext { + /** + *

The context key for the client locale. The string associated with + * this key is an encoded locale such as {@code en_US} which could be + * returned by {@link Locale#toString()}.

+ */ + public static final String LOCALE_KEY = "jmx.locale"; + + private static final Logger LOG = + Logger.getLogger("javax.management.context"); + + /** + *

The namespace that implements contexts, {@value}.

+ */ + public static final String + NAMESPACE = "jmx.context"; + private static final String NAMESPACE_PLUS_SEP = + NAMESPACE + NAMESPACE_SEPARATOR; + static final ObjectName CLIENT_CONTEXT_NAMESPACE_HANDLER = + ObjectName.valueOf(NAMESPACE_PLUS_SEP + ":" + + JMXNamespace.TYPE_ASSIGNMENT); + private static final ObjectName NAMESPACE_HANDLER_WITHOUT_NAMESPACE = + ObjectName.valueOf(":" + JMXNamespace.TYPE_ASSIGNMENT); + + private static final ThreadLocal> contextThreadLocal = + new InheritableThreadLocal>() { + @Override + protected Map initialValue() { + return Collections.emptyMap(); + } + }; + + /** There are no instances of this class. */ + private ClientContext() { + } + + /** + *

Get the client context associated with the current thread. + * + * @return the client context associated with the current thread. + * This may be an empty Map, but it cannot be null. The returned + * Map cannot be modified. + */ + public static Map getContext() { + return Collections.unmodifiableMap(contextThreadLocal.get()); + } + + /** + *

Get the client locale associated with the current thread. + * If the client context includes the {@value #LOCALE_KEY} key + * then the returned value is the Locale encoded in that key. + * Otherwise the returned value is the {@linkplain Locale#getDefault() + * default locale}. + * + * @return the client locale. + */ + public static Locale getLocale() { + String localeS = getContext().get(LOCALE_KEY); + if (localeS == null) + return Locale.getDefault(); + // Parse the locale string. Why isn't there a method in Locale for this? + String language, country, variant; + int ui = localeS.indexOf('_'); + if (ui < 0) { + language = localeS; + country = variant = ""; + } else { + language = localeS.substring(0, ui); + localeS = localeS.substring(ui + 1); + ui = localeS.indexOf('_'); + if (ui < 0) { + country = localeS; + variant = ""; + } else { + country = localeS.substring(0, ui); + variant = localeS.substring(ui + 1); + } + } + return new Locale(language, country, variant); + } + + /** + *

Execute the given {@code task} with the client context set to + * the given Map. This Map will be the result of {@link #getContext()} + * within the {@code task}.

+ * + *

The {@code task} may include nested calls to {@code doWithContext}. + * The value returned by {@link #getContext} at any point is the Map + * provided to the most recent {@code doWithContext} (in the current thread) + * that has not yet returned.

+ * + *

The {@link #getContext()} method returns the same value immediately + * after a call to this method as immediately before. In other words, + * {@code doWithContext} only affects the context during the execution of + * the {@code task}.

+ * + *

As an example, suppose you want to get an attribute with whatever + * context has already been set, plus the locale set to "fr". You could + * write this:

+ * + *
+     * {@code Map} context =
+     *     new {@code HashMap}(ClientContext.getContext());
+     * context.put(ClientContext.LOCALE_KEY, "fr");
+     * String lastProblemDescription =
+     *     ClientContext.doWithContext(context, new {@code Callable}() {
+     *         public String call() {
+     *             return (String) mbeanServer.getAttribute(mbean, "LastProblemDescription");
+     *         }
+     *     });
+     * 
+ * + * @param the type of value that the task will return. This type + * parameter is usually inferred from the type of the {@code task} + * parameter. For example, if {@code task} is a {@code Callable} + * then {@code T} is {@code String}. If the task does not return a value, + * use a {@code Callable} and return null from its + * {@link Callable#call call} method. + * @param context the context to use while executing {@code task}. + * @param task the task to run with the {@code key}={@code value} + * binding. + * @return the result of {@link Callable#call() task.call()}. + * @throws IllegalArgumentException if either parameter is null, or + * if any key in {@code context} is null or empty, or if any value + * in {@code context} is null. + * @throws Exception If {@link Callable#call() task.call()} throws an + * exception, {@code doWithContext} throws the same exception. + */ + public static T doWithContext(Map context, Callable task) + throws Exception { + if (context == null || task == null) + throw new IllegalArgumentException("Null parameter"); + Map contextCopy = new TreeMap(context); + validateContext(contextCopy); + Map oldContextMap = contextThreadLocal.get(); + try { + contextThreadLocal.set(contextCopy); + return task.call(); + } finally { + contextThreadLocal.set(oldContextMap); + } + } + + private static void validateContext(Map context) { + for (Map.Entry entry : context.entrySet()) { + // If the user passes a raw Map rather than a Map, + // entries could contain objects other than Strings. If so, + // we'll get a ClassCastException here. + String key = entry.getKey(); + String value = entry.getValue(); + if (key == null || value == null) + throw new IllegalArgumentException("Null key or value in context"); + if (key.equals("")) + throw new IllegalArgumentException("Empty key in context"); + } + } + + /** + *

Return an MBeanServer object that is equivalent to the given + * MBeanServer object except that operations on MBeans run with + * the given Locale in their {@linkplain #getContext() thread context}. + * Note that this will only work if the given MBeanServer supports + * contexts, as described above.

+ * + *

This method is equivalent to {@link #withContext(MBeanServer, + * String, String) withContext}(mbs, {@value LOCALE_KEY}, + * locale.toString()).

+ * + * @throws IllegalArgumentException if either parameter is null, or if + * {@code mbs} does not support contexts. In the second case only, + * the cause of the {@code IllegalArgumentException} will be an {@link + * InstanceNotFoundException}. + */ + public static MBeanServer withLocale(MBeanServer mbs, Locale locale) { + return withLocale(mbs, MBeanServer.class, locale); + } + + /** + *

Return an MBeanServerConnection object that is equivalent to the given + * MBeanServerConnection object except that operations on MBeans run with + * the given Locale in their {@linkplain #getContext() thread context}. + * Note that this will only work if the given MBeanServerConnection supports + * contexts, as described above.

+ * + *

This method is equivalent to {@link #withContext(MBeanServerConnection, + * String, String) withContext}(mbs, {@value LOCALE_KEY}, + * locale.toString()).

+ * + * @throws IllegalArgumentException if either parameter is null, or if + * the communication with {@code mbsc} fails, or if {@code mbsc} does not + * support contexts. If the communication with {@code mbsc} fails, the + * {@linkplain Throwable#getCause() cause} of this exception will be an + * {@code IOException}. If {@code mbsc} does not support contexts, the + * cause will be an {@link InstanceNotFoundException}. + */ + public static MBeanServerConnection withLocale( + MBeanServerConnection mbsc, Locale locale) { + return withLocale(mbsc, MBeanServerConnection.class, locale); + } + + private static T withLocale( + T mbsc, Class mbscClass, Locale locale) { + if (locale == null) + throw new IllegalArgumentException("Null locale"); + return withContext(mbsc, mbscClass, LOCALE_KEY, locale.toString()); + } + + /** + *

Return an MBeanServer object that is equivalent to the given + * MBeanServer object except that operations on MBeans run with + * the given key bound to the given value in their {@linkplain + * #getContext() thread context}. + * Note that this will only work if the given MBeanServer supports + * contexts, as described above.

+ * + * @param mbs the original MBeanServer. + * @param key the key to bind in the context of MBean operations + * in the returned MBeanServer object. + * @param value the value to bind to the key in the context of MBean + * operations in the returned MBeanServer object. + * @throws IllegalArgumentException if any parameter is null, or + * if {@code key} is the empty string, or if {@code mbs} does not support + * contexts. In the last case only, the cause of the {@code + * IllegalArgumentException} will be an {@link InstanceNotFoundException}. + */ + public static MBeanServer withContext( + MBeanServer mbs, String key, String value) { + return withContext(mbs, MBeanServer.class, key, value); + } + + /** + *

Return an MBeanServerConnection object that is equivalent to the given + * MBeanServerConnection object except that operations on MBeans run with + * the given key bound to the given value in their {@linkplain + * #getContext() thread context}. + * Note that this will only work if the given MBeanServerConnection supports + * contexts, as described above.

+ * + * @param mbsc the original MBeanServerConnection. + * @param key the key to bind in the context of MBean operations + * in the returned MBeanServerConnection object. + * @param value the value to bind to the key in the context of MBean + * operations in the returned MBeanServerConnection object. + * @throws IllegalArgumentException if any parameter is null, or + * if {@code key} is the empty string, or if the communication with {@code + * mbsc} fails, or if {@code mbsc} does not support contexts. If + * the communication with {@code mbsc} fails, the {@linkplain + * Throwable#getCause() cause} of this exception will be an {@code + * IOException}. If {@code mbsc} does not support contexts, the cause will + * be an {@link InstanceNotFoundException}. + */ + public static MBeanServerConnection withContext( + MBeanServerConnection mbsc, String key, String value) { + return withContext(mbsc, MBeanServerConnection.class, key, value); + } + + + /** + *

Returns an MBeanServerConnection object that is equivalent to the + * given MBeanServerConnection object except that remote operations on + * MBeans run with the context that has been established by the client + * using {@link #doWithContext doWithContext}. Note that this will + * only work if the remote system supports contexts, as described above.

+ * + *

For example, suppose the remote system does support contexts, and you + * have created a {@code JMXConnector} like this:

+ * + *
+     * JMXServiceURL url = ...;
+     * JMXConnector client = JMXConnectorFactory.connect(url);
+     * MBeanServerConnection mbsc = client.getMBeanServerConnection();
+     * mbsc = ClientContext.withDynamicContext(mbsc);
+     * 
+ * + *

Then if you do this...

+ * + *
+     * MBeanInfo mbi = ClientContext.doWithContext(
+     *     Collections.singletonMap(ClientContext.LOCALE_KEY, "fr"),
+     *     new {@code Callable}() {
+     *         public MBeanInfo call() {
+     *             return mbsc.getMBeanInfo(objectName);
+     *         }
+     *     });
+     * 
+ * + *

...then the context with the locale set to "fr" will be in place + * when the {@code getMBeanInfo} is executed on the remote MBean Server.

+ * + * @param mbsc the original MBeanServerConnection. + * + * @throws IllegalArgumentException if the {@code mbsc} parameter is null, + * or if the communication with {@code mbsc} fails, or if {@code mbsc} + * does not support contexts. If the communication with {@code mbsc} + * fails, the {@linkplain Throwable#getCause() cause} of this exception + * will be an {@code IOException}. If {@code mbsc} does not support + * contexts, the cause will be an {@link InstanceNotFoundException}. + */ + public static MBeanServerConnection withDynamicContext( + MBeanServerConnection mbsc) { + // Probe mbsc to get the right exception if it's incommunicado or + // doesn't support namespaces. + JMXNamespaces.narrowToNamespace(mbsc, NAMESPACE); + return (MBeanServerConnection) Proxy.newProxyInstance( + MBeanServerConnection.class.getClassLoader(), + new Class[] {MBeanServerConnection.class}, + new DynamicContextIH(mbsc)); + } + + private static class DynamicContextIH implements InvocationHandler { + private final MBeanServerConnection mbsc; + + public DynamicContextIH(MBeanServerConnection mbsc) { + this.mbsc = mbsc; + } + + public Object invoke(Object proxy, Method method, Object[] args) + throws Throwable { + MBeanServerConnection dynMBSC = withContext( + mbsc, MBeanServerConnection.class, getContext(), false); + try { + return method.invoke(dynMBSC, args); + } catch (InvocationTargetException e) { + throw e.getCause(); + } + } + } + + private static T withContext( + T mbsc, Class mbscClass, String key, String value) { + return withContext( + mbsc, mbscClass, Collections.singletonMap(key, value), true); + } + + private static T withContext( + T mbsc, Class mbscClass, Map context, + boolean probe) { + if (mbsc == null || context == null) + throw new IllegalArgumentException("Null parameter"); + if (context.isEmpty()) + return mbsc; + validateContext(context); + Map contextMap = null; + if (mbsc.getClass() == RoutingServerProxy.class || + mbsc.getClass() == RoutingProxy.class) { + RoutingProxy nsp = (RoutingProxy) mbsc; + String where = nsp.getSourceNamespace(); + if (where.startsWith(NAMESPACE_PLUS_SEP)) { + /* Try to merge the existing context namespace with the + * new one. If it doesn't work, we fall back to just + * prefixing jmx.context//key=value, which + * might lead to a name like jmx.c//k1=v1//jmx.c//k2=v2//d:k=v. + */ + String encodedContext = + where.substring(NAMESPACE_PLUS_SEP.length()); + if (encodedContext.indexOf(NAMESPACE_SEPARATOR) < 0) { + contextMap = stringToMapOrNull(encodedContext); + if (contextMap != null) { + contextMap.putAll(context); + mbsc = mbscClass.cast(nsp.source()); + } + } + } + } + if (contextMap == null) + contextMap = context; + String contextDir = NAMESPACE_PLUS_SEP + mapToString(contextMap); + if (mbscClass == MBeanServer.class) { + return mbscClass.cast(RoutingServerProxy.cd( + (MBeanServer) mbsc, contextDir, probe)); + } else if (mbscClass == MBeanServerConnection.class) { + return mbscClass.cast(RoutingConnectionProxy.cd( + mbsc, contextDir, probe)); + } else + throw new AssertionError("Bad MBSC: " + mbscClass); + } + + /** + *

Returns an encoded context prefix for ObjectNames. + * If the given context is empty, {@code ""} is returned. + * Otherwise, this method returns a string of the form + * {@code "jmx.context//key=value;key=value;..."}. + * For example, if the context has keys {@code "jmx.locale"} + * and {@code "xid"} with respective values {@code "fr"} + * and {@code "1234"}, this method will return + * {@code "jmx.context//jmx.locale=fr;xid=1234"} or + * {@code "jmx.context//xid=1234;jmx.locale=fr"}.

+ * + *

Each key and each value in the encoded string is subject to + * encoding as if by the method {@link URLEncoder#encode(String, String)} + * with a character encoding of {@code "UTF-8"}, but with the additional + * encoding of any {@code *} character as {@code "%2A"}. This ensures + * that keys and values can contain any character. Without encoding, + * characters such as {@code =} and {@code :} would pose problems.

+ * + * @param context the context to encode. + * + * @return the context in encoded form. + * + * @throws IllegalArgumentException if the {@code context} parameter + * is null or if it contains a null key or value. + **/ + public static String encode(Map context) { + if (context == null) + throw new IllegalArgumentException("Null context"); + if (context.isEmpty()) + return ""; + StringBuilder sb = new StringBuilder(); + for (Map.Entry entry : context.entrySet()) { + String key = entry.getKey(); + String value = entry.getValue(); + if (key == null || value == null) + throw new IllegalArgumentException("Null key or value"); + if (sb.length() > 0) + sb.append(";"); + sb.append(encode(key)).append("=").append(encode(value)); + } + sb.insert(0, NAMESPACE_PLUS_SEP); + return sb.toString(); + } + + /** + *

Create a new {@link MBeanServerForwarder} that applies the context + * received from a client to the current thread. A client using + * one of the various {@code with*} methods (for example {@link + * #withContext(MBeanServerConnection, String, String) withContext}) will + * encode that context into the {@code ObjectName} of each + * {@code MBeanServer} request. The object returned by this method + * decodes the context from that {@code ObjectName} and applies it + * as described for {@link #doWithContext doWithContext} while performing + * the {@code MBeanServer} request using the {@code ObjectName} without + * the encoded context.

+ * + *

This forwarder can be used in a number of ways:

+ * + *
    + *
  • + *

    To add context decoding to a local {@code MBeanServer}, you can + * write:

    + *
    +     * MBeanServer mbs = {@link
    +     * java.lang.management.ManagementFactory#getPlatformMBeanServer()
    +     * ManagementFactory.getPlatformMBeanServer()};  // for example
    +     * mbs = ClientContext.newContextForwarder(mbs, null);
    +     * 
    + * + *
  • + *

    To add context decoding to a {@linkplain + * javax.management.remote.JMXConnectorServer connector server}:

    + *
    +     * JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(...);
    +     * MBeanServer nextMBS = cs.getMBeanServer();
    +     * MBeanServerForwarder mbsf = ClientContext.newContextForwarder(nextMBS, null);
    +     * cs.{@link
    +     * javax.management.remote.JMXConnectorServer#setMBeanServerForwarder
    +     * setMBeanServerForwarder}(mbsf);
    +     * 
    + * + *
  • + *

    For connectors, such as the standard RMI connector, that support + * a {@linkplain + * javax.management.remote.JMXConnectorServer#getSystemMBeanServerForwarder + * system chain} of {@code MBeanServerForwarder}s, this forwarder will + * be installed in that chain by default. See + * {@link javax.management.remote.JMXConnectorServer#CONTEXT_FORWARDER + * JMXConnectorServer.CONTEXT_FORWARDER}. + *

    + * + *
+ * + * @param nextMBS the next {@code MBeanServer} in the chain of + * forwarders, which might be another {@code MBeanServerForwarder} or + * a plain {@code MBeanServer}. This is the object to which {@code + * MBeanServer} requests that do not include a context are sent. It + * will be the value of {@link MBeanServerForwarder#getMBeanServer() + * getMBeanServer()} on the returned object, and can be changed with {@link + * MBeanServerForwarder#setMBeanServer setMBeanServer}. It can be null but + * must be set to a non-null value before any {@code MBeanServer} requests + * arrive. + * + * @param loopMBS the {@code MBeanServer} to which requests that contain + * an encoded context should be sent once the context has been decoded. + * For example, if the request is {@link MBeanServer#getAttribute + * getAttribute}{@code ("jmx.context//jmx.locale=fr//java.lang:type=Runtime", + * "Name")}, then the {@linkplain #getContext() context} of the thread + * executing that request will have {@code "jmx.locale"} set to {@code "fr"} + * while executing {@code loopMBS.getAttribute("java.lang:type=Runtime", + * "Name")}. If this parameter is null, then these requests will be + * sent to the newly-created {@code MBeanServerForwarder}. Usually + * the parameter will either be null or will be the result of {@link + * javax.management.remote.JMXConnectorServer#getSystemMBeanServerForwarder + * getSystemMBeanServerForwarder()} for the connector server in which + * this forwarder will be installed. + * + * @return a new {@code MBeanServerForwarder} that decodes client context + * from {@code ObjectName}s. + */ + /* + * What we're building here is confusing enough to need a diagram. + * The MBSF that we return is actually the composition of two forwarders: + * the first one simulates the existence of the MBean + * jmx.context//:type=JMXNamespace, and the second one simulates the + * existence of the namespace jmx.context//. Furthermore, that namespace + * loops back to the composed forwarder, so that something like + * jmx.context//foo=bar//jmxcontext//baz=buh will work. And the loopback + * goes through yet another forwarder, which simulates the existence of + * (e.g.) jmx.context//foo=bar//:type=JMXNamespace, which is needed + * notably so that narrowToNamespace will work. + * + * | +--------------------------------------------------+ + * v v | + * +----------------+ | + * | Handler MBSF |->accesses to jmx.context//:type=JMXNamespace | + * +----------------+ (handled completely here) +-------------------+ + * | | 2nd Handler MBSF | + * v +-------------------+ + * +----------------+ ^ + * | Namespace MBSF |->accesses to jmx.context//**-------------------+ + * +----------------+ (after attaching context to thread) + * | + * v accesses to anything else + * + * And finally, we need to ensure that from the outside the composed object + * looks like a single forwarder, so that its get/setMBeanServer methods + * will do the expected thing. That's what the anonymous subclass is for. + */ + public static MBeanServerForwarder newContextForwarder( + MBeanServer nextMBS, MBeanServer loopMBS) { + final MBeanServerForwarder mbsWrapper = + new IdentityMBeanServerForwarder(nextMBS); + DynamicMBean handlerMBean = new StandardMBean( + new JMXNamespace(mbsWrapper), JMXNamespaceMBean.class, false); + SingleMBeanForwarder handlerForwarder = new SingleMBeanForwarder( + CLIENT_CONTEXT_NAMESPACE_HANDLER, handlerMBean, true) { + @Override + public MBeanServer getMBeanServer() { + return ((MBeanServerForwarder) super.getMBeanServer()).getMBeanServer(); + } + + @Override + public void setMBeanServer(MBeanServer mbs1) { + MBeanServerForwarder mbsf1 = (MBeanServerForwarder) + super.getMBeanServer(); + if (mbsf1 != null) + mbsf1.setMBeanServer(mbs1); + else + super.setMBeanServer(mbs1); + mbsWrapper.setMBeanServer(mbs1); + } + }; + if (loopMBS == null) + loopMBS = handlerForwarder; + ContextInvocationHandler contextIH = + new ContextInvocationHandler(nextMBS, loopMBS); + MBeanServerForwarder contextForwarder = newForwarderProxy(contextIH); + handlerForwarder.setMBeanServer(contextForwarder); + return handlerForwarder; + } + + /** + *

Create a new {@link MBeanServerForwarder} that localizes + * descriptions in {@code MBeanInfo} instances returned by + * {@link MBeanServer#getMBeanInfo getMBeanInfo}. The {@code + * MBeanServerForwarder} returned by this method passes all {@code + * MBeanServer} methods through unchanged to the supplied object, {@code + * mbs}, with the exception of {@code getMBeanInfo}. To handle {@code + * getMBeanInfo(objectName)}, it calls {@code mbs.getMBeanInfo(objectName)} + * to get an {@code MBeanInfo}, {@code mbi}; it calls {@link + * MBeanServer#getClassLoaderFor mbs.getClassLoaderFor(objectName)} to + * get a {@code ClassLoader}, {@code cl}; and it calls {@link + * #getLocale} to get a {@code Locale}, {@code locale}. The order + * of these three calls is not specified. Then the result is {@code + * mbi.localizeDescriptions(locale, loader)}.

+ * + *

This forwarder can be used in a number of ways:

+ * + *
    + *
  • + *

    To add description localization to a local {@code MBeanServer}, you + * can write:

    + * + *
    +     * MBeanServer mbs = {@link
    +     * java.lang.management.ManagementFactory#getPlatformMBeanServer()
    +     * ManagementFactory.getPlatformMBeanServer()};  // for example
    +     * mbs = ClientContext.newLocalizeMBeanInfoForwarder(mbs);
    +     * 
    + * + *
  • + *

    To add description localization to a {@linkplain + * javax.management.remote.JMXConnectorServer connector server}, you will + * need to add both a {@linkplain #newContextForwarder context forwarder} + * and a localization forwarder, for example like this:

    + * + *
    +     * JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(...);
    +     * MBeanServer nextMBS = cs.getMBeanServer();
    +     * MBeanServerForwarder localizeMBSF =
    +     *     ClientContext.newLocalizeMBeanInfoForwarder(nextMBS);
    +     * MBeanServerForwarder contextMBSF =
    +     *     ClientContext.newContextForwarder(localizeMBSF, null);
    +     * cs.{@link
    +     * javax.management.remote.JMXConnectorServer#setMBeanServerForwarder
    +     * setMBeanServerForwarder}(contextMBSF);
    +     * 
    + * + *

    Notice that the context forwarder must run before the localization + * forwarder, so that the locale is correctly established when the latter + * runs. So the {@code nextMBS} parameter of the context forwarder must + * be the localization forwarder, and not vice versa.

    + * + *
  • + *

    For connectors, such as the standard RMI connector, that support + * a {@linkplain + * javax.management.remote.JMXConnectorServer#getSystemMBeanServerForwarder + * system chain} of {@code MBeanServerForwarder}s, the context forwarder and + * the localization forwarder will be installed in that chain, in the right + * order, if you include + * {@link + * javax.management.remote.JMXConnectorServer#LOCALIZE_MBEAN_INFO_FORWARDER + * LOCALIZE_MBEAN_INFO_FORWARDER} in the environment {@code Map} with + * the value {@code "true"}, for example like this:

    + *

    + *
    +     * MBeanServer mbs = ...;
    +     * JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://...");
    +     * {@code Map} env = new {@code HashMap}();
    +     * env.put(JMXConnectorServer.LOCALIZE_MBEAN_INFO_FORWARDER, "true");
    +     * JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(
    +     *     url, env, mbs);
    +     * 
    + * + *
+ * + * @param mbs the next {@code MBeanServer} in the chain of + * forwarders, which might be another {@code MBeanServerForwarder} + * or a plain {@code MBeanServer}. It will be the value of + * {@link MBeanServerForwarder#getMBeanServer() getMBeanServer()} + * on the returned object, and can be changed with {@link + * MBeanServerForwarder#setMBeanServer setMBeanServer}. It can be null but + * must be set to a non-null value before any {@code MBeanServer} requests + * arrive. + * + * @return a new {@code MBeanServerForwarder} that localizes descriptions + * in the result of {@code getMBeanInfo}. + */ + public static MBeanServerForwarder newLocalizeMBeanInfoForwarder( + MBeanServer mbs) { + return new IdentityMBeanServerForwarder(mbs) { + @Override + public MBeanInfo getMBeanInfo(ObjectName name) + throws InstanceNotFoundException, IntrospectionException, + ReflectionException { + MBeanInfo mbi = super.getMBeanInfo(name); + Locale locale = getLocale(); + ClassLoader loader = getClassLoaderFor(name); + return mbi.localizeDescriptions(locale, loader); + } + }; + } + + private static MBeanServerForwarder newForwarderProxy(InvocationHandler ih) { + return (MBeanServerForwarder) Proxy.newProxyInstance( + MBeanServerForwarder.class.getClassLoader(), + new Class[] {MBeanServerForwarder.class}, + ih); + } + + // A proxy connection that will strip the 'contextDir' at input (routing), + // and put it back at output (createMBean / registerMBean / query* / + // getObjectInstance). Usually RoutingProxy / RoutingServerProxy are used + // the other way round (they are used for 'cd' - where they need to add + // something at input and remove it at output). + // For 'cd' operations we create RoutingProxys with a non empty sourceDir, + // and a possibly non-empty targetDir. This is the only case where we use + // RoutingProxies with an empty sourceDir (sourceDir is what we add at input + // and remove at output, targetDir is what we remove at input and add at + // output. + // + // Note that using a transient ContextRoutingConnection + // is possible only because RoutingProxys don't rewrite + // notifications sources - otherwise we would have to + // keep the ContextRoutingConnection - just to preserve + // the 'wrapping listeners' + // + private static final class ContextRoutingConnection + extends RoutingServerProxy { + public ContextRoutingConnection(MBeanServer source, + String contextDir) { + super(source, "", contextDir, false); + } + + // Not really needed - but this is safer and more optimized. + // See RoutingProxy for more details. + // + @Override + public Integer getMBeanCount() { + return source().getMBeanCount(); + } + + // Not really needed - but this is safer and more optimized. + // See RoutingProxy for more details. + // + @Override + public String[] getDomains() { + return source().getDomains(); + } + + // Not really needed - but this is safer and more optimized. + // See RoutingProxy for more details. + // + @Override + public String getDefaultDomain() { + return source().getDefaultDomain(); + } + + } + + private static class ContextInvocationHandler implements InvocationHandler { + /* + * MBeanServer requests that don't include jmx.context//foo=bar// + * are forwarded to forwardMBS, which is the unadorned MBeanServer + * that knows nothing about the context namespace. + * MBeanServer requests that do include this prefix will + * usually (depending on the value of the loopMBS parameter to + * newContextForwarder) loop back to the combined MBeanServerForwarder + * that first implements + * jmx.context//:type=JMXNamespace and then implements + * jmx.context//foo=bar//. The reason is that it is valid + * to have jmx.context//foo=bar//jmx.context//baz=buh//, although + * usually that will be combined into jmx.context//foo=bar;baz=buh//. + * + * Before forwarding to loopMBS, we must check for :type=JMXNamespace + * so that jmx.context//foo=bar//:type=JMXNamespace will exist. Its + * existence is partial because it must remain "invisible": it should + * not show up in queryNames or getMBeanCount even though it does + * accept getAttribute and isRegistered and all other methods that + * reference a single MBean. + */ + private MBeanServer forwardMBS; + private final MBeanServer loopMBS; + private static final MBeanServer emptyMBS = new MBeanServerSupport() { + @Override + public DynamicMBean getDynamicMBeanFor(ObjectName name) + throws InstanceNotFoundException { + throw new InstanceNotFoundException(name.toString()); + } + + @Override + protected Set getNames() { + return Collections.emptySet(); + } + }; + + ContextInvocationHandler(MBeanServer forwardMBS, MBeanServer loopMBS) { + this.forwardMBS = forwardMBS; + DynamicMBean handlerMBean = new StandardMBean( + new JMXNamespace(loopMBS), JMXNamespaceMBean.class, false); + MBeanServerForwarder handlerMBS = new SingleMBeanForwarder( + NAMESPACE_HANDLER_WITHOUT_NAMESPACE, handlerMBean, false); + handlerMBS.setMBeanServer(loopMBS); + this.loopMBS = handlerMBS; + } + + public Object invoke(Object proxy, final Method method, final Object[] args) + throws Throwable { + String methodName = method.getName(); + Class[] paramTypes = method.getParameterTypes(); + + // If this is a method from MBeanServerForwarder, handle it here. + // There are only two such methods: getMBeanServer() and + // setMBeanServer(mbs). + if (methodName.equals("getMBeanServer")) + return forwardMBS; + else if (methodName.equals("setMBeanServer")) { + this.forwardMBS = (MBeanServer) args[0]; + return null; + } + + // It is a method from MBeanServer. + // Find the first parameter whose declared type is ObjectName, + // and see if it is in the context namespace. If so we need to + // trigger the logic for that namespace. If not, we simply + // forward to the next MBeanServer in the chain. This logic + // depends on the fact that if a method in the MBeanServer interface + // has a "routing" ObjectName parameter, it is always the first + // parameter of that type. Conversely, if a method has an + // ObjectName parameter, then it makes sense to "route" that + // method. Except for deserialize and instantiate, but if we + // recognize a context namespace in those methods' ObjectName + // parameters it is pretty harmless. + int objectNameI = -1; + for (int i = 0; i < paramTypes.length; i++) { + if (paramTypes[i] == ObjectName.class) { + objectNameI = i; + break; + } + } + + if (objectNameI < 0) + return invoke(method, forwardMBS, args); + + ObjectName target = (ObjectName) args[objectNameI]; + if (target == null || + !target.getDomain().startsWith(NAMESPACE_PLUS_SEP)) + return invoke(method, forwardMBS, args); + + String domain = target.getDomain().substring(NAMESPACE_PLUS_SEP.length()); + + // The method routes through the (simulated) context namespace. + // Decode the context after it, e.g. jmx.context//jmx.locale=fr//... + // If there is no context part, we can throw an exception, + // because a forwarder has already handled the unique MBean + // jmx.context//:type=JMXNamespace. + int sep = domain.indexOf(NAMESPACE_SEPARATOR); + if (sep < 0) + return invoke(method, emptyMBS, args); // throw exception + final String encodedContext = domain.substring(0, sep); + + if (method.getName().startsWith("query") && + (encodedContext.contains("*") || encodedContext.contains("?"))) { + // Queries like jmx.context//*//d:k=v return + // an empty set, consistent with "real" namespaces. + return Collections.EMPTY_SET; + } + + Map ctx = new TreeMap(getContext()); + ctx.putAll(stringToMap(encodedContext)); + + return doWithContext(ctx, new Callable() { + public Object call() throws Exception { + // Create a proxy connection that will strip + // "jmx.context//" + encodedContext + "//" on input, + // and put it back on output. + // + // Note that using a transient ContextRoutingConnection + // is possible only because it doesn't rewrite + // notification sources - otherwise we would have to + // keep the ContextRoutingConnection - just to preserve + // the 'wrapping listeners' + // + String namespace = NAMESPACE_PLUS_SEP + encodedContext; + final ContextRoutingConnection route = + new ContextRoutingConnection(loopMBS, namespace); + + if (LOG.isLoggable(Level.FINE)) + LOG.fine("context="+encodedContext); + if (LOG.isLoggable(Level.FINER)) + LOG.finer(method.getName()+""+ + ((args==null)?"()":(""+Arrays.asList(args)))); + + return invoke(method, route, args); + } + }); + } + + private static Object invoke(Method method, Object target, Object[] args) + throws Exception { + try { + return method.invoke(target, args); + } catch (InvocationTargetException e) { + Throwable cause = e.getCause(); + if (cause instanceof Error) + throw (Error) cause; + throw (Exception) cause; + } + } + } + + private static String mapToString(Map map) { + StringBuilder sb = new StringBuilder(); + for (Map.Entry entry : map.entrySet()) { + String key = encode(entry.getKey()); + String value = encode(entry.getValue()); + if (sb.length() > 0) + sb.append(";"); + sb.append(key).append("=").append(value); + } + return sb.toString(); + } + + private static Map stringToMap(String encodedContext) { + Map map = stringToMapOrNull(encodedContext); + if (map == null) { + throw new IllegalArgumentException( + "Invalid encoded context: " + encodedContext); + } + return map; + } + + private static Map stringToMapOrNull(String encodedContext) { + Map map = new LinkedHashMap(); + StringTokenizer stok = new StringTokenizer(encodedContext, ";"); + while (stok.hasMoreTokens()) { + String tok = stok.nextToken(); + int eq = tok.indexOf('='); + if (eq < 0) + return null; + String key = decode(tok.substring(0, eq)); + if (key.equals("")) + return null; + String value = decode(tok.substring(eq + 1)); + map.put(key, value); + } + return map; + } + + private static String encode(String s) { + try { + s = URLEncoder.encode(s, "UTF-8"); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); // Should not happen + } + return s.replace("*", "%2A"); + // The * character is left intact in URL encodings, but for us it + // is special (an ObjectName wildcard) so we must map it. + // We are assuming that URLDecoder will decode it the same way as any + // other hex escape. + } + + private static String decode(String s) { + try { + return URLDecoder.decode(s, "UTF-8"); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/share/classes/javax/management/DefaultLoaderRepository.java b/src/share/classes/javax/management/DefaultLoaderRepository.java index 6cf16435ad6df17f1d8885b28ecd4adbbbfea3d1..568e20ac98e9db2b5357ba65a78887b3be18abc3 100644 --- a/src/share/classes/javax/management/DefaultLoaderRepository.java +++ b/src/share/classes/javax/management/DefaultLoaderRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -62,7 +62,7 @@ public class DefaultLoaderRepository { * * @exception ClassNotFoundException The specified class could not be found. */ - public static Class loadClass(String className) + public static Class loadClass(String className) throws ClassNotFoundException { return javax.management.loading.DefaultLoaderRepository.loadClass(className); } @@ -82,7 +82,7 @@ public class DefaultLoaderRepository { * * @exception ClassNotFoundException The specified class could not be found. */ - public static Class loadClassWithout(ClassLoader loader,String className) + public static Class loadClassWithout(ClassLoader loader,String className) throws ClassNotFoundException { return javax.management.loading.DefaultLoaderRepository.loadClassWithout(loader, className); } diff --git a/src/share/classes/javax/management/Descriptor.java b/src/share/classes/javax/management/Descriptor.java index 70c17f2eedb51237d67dd5e002b583ea245047d2..573f8fdbed95b18695ea0cd75af787d5b70b64df 100644 --- a/src/share/classes/javax/management/Descriptor.java +++ b/src/share/classes/javax/management/Descriptor.java @@ -35,8 +35,8 @@ import java.io.Serializable; // Javadoc imports: import java.lang.management.MemoryUsage; import java.util.Arrays; +import java.util.Locale; import java.util.ResourceBundle; - import javax.management.openmbean.CompositeData; import javax.management.openmbean.MXBeanMappingFactory; import javax.management.openmbean.OpenMBeanAttributeInfoSupport; @@ -101,7 +101,7 @@ import javax.management.openmbean.OpenType; * * NameTypeUsed inMeaning * - * defaultValueObject + * defaultValueObject * MBeanAttributeInfo
MBeanParameterInfo * * Default value for an attribute or parameter. See @@ -118,19 +118,22 @@ import javax.management.openmbean.OpenType; * deprecation, for example {@code "1.3 Replaced by the Capacity * attribute"}. * - * - * descriptionResource
BundleBaseNameStringAny + * descriptionResource
+ * BundleBaseName
StringAny * * The base name for the {@link ResourceBundle} in which the key given in * the {@code descriptionResourceKey} field can be found, for example - * {@code "com.example.myapp.MBeanResources"}. + * {@code "com.example.myapp.MBeanResources"}. See + * {@link MBeanInfo#localizeDescriptions MBeanInfo.localizeDescriptions}. * - * - * descriptionResourceKeyStringAny + * descriptionResourceKey + * StringAny * * A resource key for the description of this element. In * conjunction with the {@code descriptionResourceBundleBaseName}, - * this can be used to find a localized version of the description. + * this can be used to find a localized version of the description. + * See {@link MBeanInfo#localizeDescriptions MBeanInfo.localizeDescriptions}. + * * * enabledString * MBeanAttributeInfo
MBeanNotificationInfo
MBeanOperationInfo @@ -144,7 +147,32 @@ import javax.management.openmbean.OpenType; * might be disabled if it cannot currently be emitted but could be in * other circumstances. * - * immutableInfoString + * exceptionsString[] + * MBeanAttributeInfo, MBeanConstructorInfo, MBeanOperationInfo + * + * The class names of the exceptions that can be thrown when invoking a + * constructor or operation, or getting an attribute. Exceptions thrown when + * setting an attribute are specified by the field + * {@code setExceptions}. + * + * exceptionErrorCodesString[] + * MBeanAttributeInfo
MBeanConstructorInfo
MBeanOperationInfo + * + * The {@linkplain GenericMBeanException#getErrorCode() error codes} + * that can appear in a {@link GenericMBeanException} thrown when getting + * this attribute or invoking this operation or constructor. See also + * {@code setExceptionErrorCodes}. + * + * exceptionUserDataTypes + * {@link javax.management.openmbean.CompositeType}[] + * MBeanAttributeInfo
MBeanConstructorInfo
MBeanOperationInfo + * + * The types of {@linkplain GenericMBeanException#getUserData() userData} + * that can appear in a {@link GenericMBeanException} thrown when getting + * this attribute or invoking this operation or constructor. See also + * {@code setExceptionUserDataTypes}. + * + * immutableInfoString * MBeanInfo * * The string {@code "true"} or {@code "false"} according as this @@ -153,9 +181,11 @@ import javax.management.openmbean.OpenType; * the lifetime of the MBean. Hence, a client can read it once and * cache the read value. When this field is false or absent, there is * no such guarantee, although that does not mean that the MBeanInfo - * will necessarily change. + * will necessarily change. See also the {@code "jmx.mbean.info.changed"} + * notification. * - * infoTimeoutString
LongMBeanInfo + * infoTimeoutString
LongMBeanInfo * * The time in milli-seconds that the MBeanInfo can reasonably be * expected to be unchanged. The value can be a {@code Long} or a @@ -164,9 +194,11 @@ import javax.management.openmbean.OpenType; * that the MBeanInfo is not likely to change within this period and * therefore can be cached. When this field is missing or has the * value zero, it is not recommended to cache the MBeanInfo unless it - * has the {@code immutableInfo} set to {@code true}. + * has the {@code immutableInfo} set to {@code true} or it has {@code "jmx.mbean.info.changed"} in + * its {@link MBeanNotificationInfo} array. * - * interfaceClassName + * interfaceClassName * StringMBeanInfo * * The Java interface name for a Standard MBean or MXBean, as @@ -175,19 +207,26 @@ import javax.management.openmbean.OpenType; * StandardMBean} class will have this field in its MBeanInfo * Descriptor. * - * legalValues + * legalValues * {@literal Set}MBeanAttributeInfo
MBeanParameterInfo * * Legal values for an attribute or parameter. See * {@link javax.management.openmbean}. * - * maxValueObject + * locale + * StringAny + * + * The {@linkplain Locale locale} of the description in this + * {@code MBeanInfo}, {@code MBeanAttributeInfo}, etc, as returned + * by {@link Locale#toString()}. + * + * maxValueObject * MBeanAttributeInfo
MBeanParameterInfo * * Maximum legal value for an attribute or parameter. See * {@link javax.management.openmbean}. * - * metricTypeString + * metricTypeString * MBeanAttributeInfo
MBeanOperationInfo * * The type of a metric, one of the strings "counter" or "gauge". @@ -200,13 +239,13 @@ import javax.management.openmbean.OpenType; * that can increase or decrease. Examples might be the number of * open connections or a cache hit rate or a temperature reading. * - * minValueObject + * minValueObject * MBeanAttributeInfo
MBeanParameterInfo * * Minimum legal value for an attribute or parameter. See * {@link javax.management.openmbean}. * - * mxbeanString + * mxbeanString * MBeanInfo * * The string {@code "true"} or {@code "false"} according as this @@ -223,7 +262,14 @@ import javax.management.openmbean.OpenType; * MXBean, if it was not the {@linkplain MXBeanMappingFactory#DEFAULT default} * one. * - * openType{@link OpenType} + * objectNameTemplate + * String + * MBeanInfo + * + * The template to use to name this MBean. Its value must be compliant with + * the specification of the {@link ObjectNameTemplate} annotation. + * + * openType{@link OpenType} * MBeanAttributeInfo
MBeanOperationInfo
MBeanParameterInfo * *

The Open Type of this element. In the case of {@code @@ -240,7 +286,7 @@ import javax.management.openmbean.OpenType; * which case it indicates the Open Type that the {@link * Notification#getUserData() user data} will have. * - * originalTypeString + * originalTypeString * MBeanAttributeInfo
MBeanOperationInfo
MBeanParameterInfo * *

The original Java type of this element as it appeared in the @@ -256,6 +302,30 @@ import javax.management.openmbean.OpenType; * href="MXBean.html#type-names">Type Names of the MXBean * specification.

* + * setExceptionsString[] + * MBeanAttributeInfo + * + * The class names of the exceptions that can be thrown when setting + * an attribute. Exceptions thrown when getting an attribute are specified + * by the field {@code exceptions}. + * + * setExceptionErrorCodes + * String[]MBeanAttributeInfo + * + * The {@linkplain GenericMBeanException#getErrorCode() error codes} + * that can appear in a {@link GenericMBeanException} thrown when setting + * this attribute. See also + * {@code exceptionErrorCodes}. + * + * setExceptionUserDataTypes + * {@link javax.management.openmbean.CompositeType}[] + * MBeanAttributeInfo + * + * The types of {@linkplain GenericMBeanException#getUserData() userData} + * that can appear in a {@link GenericMBeanException} thrown when setting + * this attribute. See also + * {@code exceptionUserDataTypes}. + * * severityString
Integer * MBeanNotificationInfo * @@ -282,11 +352,132 @@ import javax.management.openmbean.OpenType; * * * - *

Some additional fields are defined by Model MBeans. See - * {@link javax.management.modelmbean.ModelMBeanInfo ModelMBeanInfo} - * and related classes and the chapter "Model MBeans" of the - * - * JMX Specification.

+ *

Some additional fields are defined by Model MBeans. See the + * information for {@code ModelMBeanInfo}, + * {@code ModelMBeanAttributeInfo}, + * {@code ModelMBeanConstructorInfo}, + * {@code ModelMBeanNotificationInfo}, and + * {@code ModelMBeanOperationInfo}, as + * well as the chapter "Model MBeans" of the JMX + * Specification. The following table summarizes these fields. Note + * that when the Type in this table is Number, a String that is the decimal + * representation of a Long can also be used.

+ * + *

Nothing prevents the use of these fields in MBeans that are not Model + * MBeans. The displayName, severity, and visibility fields are of + * interest outside Model MBeans, for example. But only Model MBeans have + * a predefined behavior for these fields.

+ * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
NameTypeUsed inMeaning
classStringModelMBeanOperationInfoClass where method is defined (fully qualified).
currencyTimeLimitNumberModelMBeanInfo
ModelMBeanAttributeInfo
ModelMBeanOperationInfo
How long cached value is valid: <0 never, =0 always, + * >0 seconds.
defaultObjectModelMBeanAttributeInfoDefault value for attribute.
descriptorTypeStringAnyType of descriptor, "mbean", "attribute", "constructor", "operation", + * or "notification".
displayNameStringAnyHuman readable name of this item.
exportStringModelMBeanInfoName to be used to export/expose this MBean so that it is + * findable by other JMX Agents.
getMethodStringModelMBeanAttributeInfoName of operation descriptor for get method.
lastUpdatedTimeStampNumberModelMBeanAttributeInfo
ModelMBeanOperationInfo
When value was set.
logStringModelMBeanInfo
ModelMBeanNotificationInfo
t or T: log all notifications, f or F: log no notifications.
logFileStringModelMBeanInfo
ModelMBeanNotificationInfo
Fully qualified filename to log events to.
messageIDStringModelMBeanNotificationInfoUnique key for message text (to allow translation, analysis).
messageTextStringModelMBeanNotificationInfoText of notification.
nameStringAnyName of this item.
persistFileStringModelMBeanInfoFile name into which the MBean should be persisted.
persistLocationStringModelMBeanInfoThe fully qualified directory name where the MBean should be + * persisted (if appropriate).
persistPeriodNumberModelMBeanInfo
ModelMBeanAttributeInfo
Frequency of persist cycle in seconds. Used when persistPolicy is + * "OnTimer" or "NoMoreOftenThan".
persistPolicyStringModelMBeanInfo
ModelMBeanAttributeInfo
One of: OnUpdate|OnTimer|NoMoreOftenThan|OnUnregister|Always|Never. + * See the section "MBean Descriptor Fields" in the JMX specification + * document.
presentationStringStringAnyXML formatted string to allow presentation of data.
protocolMapDescriptorModelMBeanAttributeInfoSee the section "Protocol Map Support" in the JMX specification + * document. Mappings must be appropriate for the attribute and entries + * can be updated or augmented at runtime.
roleStringModelMBeanConstructorInfo
ModelMBeanOperationInfo
One of "constructor", "operation", "getter", or "setter".
setMethodStringModelMBeanAttributeInfoName of operation descriptor for set method.
severityNumberModelMBeanNotificationInfo0-6 where 0: unknown; 1: non-recoverable; + * 2: critical, failure; 3: major, severe; + * 4: minor, marginal, error; 5: warning; + * 6: normal, cleared, informative
targetObjectObjectModelMBeanOperationInfoObject on which to execute this method.
targetTypeStringModelMBeanOperationInfotype of object reference for targetObject. Can be: + * ObjectReference | Handle | EJBHandle | IOR | RMIReference.
valueObjectModelMBeanAttributeInfo
ModelMBeanOperationInfo
Current (cached) value for attribute or operation.
visibilityNumberAny1-4 where 1: always visible, 4: rarely visible.
* * @since 1.5 */ @@ -439,7 +630,7 @@ public interface Descriptor extends Serializable, Cloneable public boolean isValid() throws RuntimeOperationsException; /** - * Compares this descriptor to the given object. The objects are equal if + *

Compares this descriptor to the given object. The objects are equal if * the given object is also a Descriptor, and if the two Descriptors have * the same field names (possibly differing in case) and the same * associated values. The respective values for a field in the two diff --git a/src/share/classes/javax/management/GenericMBeanException.java b/src/share/classes/javax/management/GenericMBeanException.java new file mode 100644 index 0000000000000000000000000000000000000000..dd0f96e78b105fc85a53755ec46b50a6e68459e5 --- /dev/null +++ b/src/share/classes/javax/management/GenericMBeanException.java @@ -0,0 +1,276 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package javax.management; + +import javax.management.openmbean.CompositeData; + +/** + *

A customizable exception that has an optional error code string and + * payload. By using this exception in an MBean, you can avoid requiring + * clients of the MBean to have custom exception classes.

+ * + *

An instance of this class has an optional {@linkplain #getErrorCode() + * error code}, and an optional {@linkplain #getUserData() payload} known as + * {@code userData}. This allows you to distinguish between different + * sorts of exception while still using this class for all of them.

+ * + *

To produce a suitable {@code userData}, it is often simplest to use + * the MXBean framework. For example, suppose you want to convey a severity + * and a subsystem with your exception, which are respectively an int and a + * String. You could define a class like this:

+ * + *
+ * public class ExceptionDetails {
+ *     private final int severity;
+ *     private final String subsystem;
+ *
+ *     {@link java.beans.ConstructorProperties @ConstructorProperties}({"severity", "subsystem"})
+ *     public ExceptionDetails(int severity, String subsystem) {
+ *         this.severity = severity;
+ *         this.subsystem = subsystem;
+ *     }
+ *
+ *     public int getSeverity() {
+ *         return severity;
+ *     }
+ *
+ *     public String getSubsystem() {
+ *         return subsystem;
+ *     }
+ * }
+ * 
+ * + *

Then you can get the MXBean framework to transform {@code ExceptionDetails} + * into {@link CompositeData} like this:

+ * + *
+ * static final {@link javax.management.openmbean.MXBeanMapping MXBeanMapping} exceptionDetailsMapping = {@link javax.management.openmbean.MXBeanMappingFactory#DEFAULT
+ *     MXBeanMappingFactory.DEFAULT}.mappingForType(
+ *         ExceptionDetails.class, MXBeanMappingFactory.DEFAULT);
+ *
+ * public static GenericMBeanException newGenericMBeanException(
+ *         String message, String errorCode, int severity, String subsystem) {
+ *     ExceptionDetails details = new ExceptionDetails(severity, subsystem);
+ *     CompositeData userData = (CompositeData)
+ *             exceptionDetailsMapping.toOpenValue(details);
+ *     return new GenericMBeanException(
+ *             message, errorCode, userData, (Throwable) null);
+ * }
+ *
+ * ...
+ *     throw newGenericMBeanException(message, errorCode, 25, "foosystem");
+ * 
+ * + *

A client that knows the {@code ExceptionDetails} class can convert + * back from the {@code userData} of a {@code GenericMBeanException} + * that was generated as above:

+ * + *
+ * ...
+ *     try {
+ *         mbeanProxy.foo();
+ *     } catch (GenericMBeanException e) {
+ *         CompositeData userData = e.getUserData();
+ *         ExceptionDetails details = (ExceptionDetails)
+ *                 exceptionDetailsMapping.fromOpenValue(userData);
+ *         System.out.println("Exception Severity: " + details.getSeverity());
+ *     }
+ * ...
+ * 
+ * + *

The Descriptor field exceptionErrorCodes can be used to specify in the + * {@link MBeanOperationInfo} for an operation what the possible + * {@linkplain #getErrorCode() error codes} are when that operation throws + * {@code GenericMBeanException}. It can also be used in an {@link + * MBeanConstructorInfo} or {@link MBeanAttributeInfo} to specify what the + * possible error codes are for {@code GenericMBeanException} when invoking + * that constructor or getting that attribute, respectively. The field + * setExceptionErrorCodes can be used to specify what the possible + * error codes are when setting an attribute.

+ * + *

You may want to use the {@link DescriptorKey @DescriptorKey} facility + * to define annotations that allow you to specify the error codes. If you + * define...

+ * + *
+ * {@link java.lang.annotation.Documented @Documented}
+ * {@link java.lang.annotation.Target @Target}(ElementType.METHOD)
+ * {@link java.lang.annotation.Retention @Retention}(RetentionPolicy.RUNTIME)
+ * public @interface ErrorCodes {
+ *     @DescriptorKey("exceptionErrorCodes")
+ *     String[] value();
+ * }
+ * 
+ * + *

...then you can write MBean interfaces like this...

+ * + *
+ * public interface FooMBean {  // or FooMXBean
+ *     @ErrorCodes({"com.example.bad", "com.example.worse"})
+ *     public void foo() throws GenericMBeanException;
+ * }
+ * 
+ * + *

The Descriptor field exceptionUserDataTypes can be used to specify in the + * {@link MBeanOperationInfo} for an operation what the possible types of + * {@linkplain #getUserData() userData} are when that operation throws + * {@code GenericMBeanException}. It is an array of + * {@link javax.management.openmbean.CompositeType CompositeType} values + * describing the possible {@link CompositeData} formats. This field can also be used + * in an {@link MBeanConstructorInfo} or {@link MBeanAttributeInfo} to specify + * the possible types of user data for {@code GenericMBeanException} when + * invoking that constructor or getting that attribute, respectively. The + * field + * setExceptionUserDataTypes + * can be used to specify the possible types of user data for exceptions when + * setting an attribute. If a Descriptor has both {@code exceptionErrorCodes} + * and {@code exceptionUserDataTypes} then the two arrays should be the + * same size; each pair of corresponding elements describes one kind + * of exception. Similarly for {@code setExceptionErrorCodes} and {@code + * setExceptionUserDataTypes}. + * + * + *

Serialization

+ * + *

For compatibility reasons, instances of this class are serialized as + * instances of {@link MBeanException}. Special logic in that class converts + * them back to instances of this class at deserialization time. If the + * serialized object is deserialized in an earlier version of the JMX API + * that does not include this class, then it will appear as just an {@code + * MBeanException} and the error code or userData will not be available.

+ * + * @since 1.7 + */ +public class GenericMBeanException extends MBeanException { + private static final long serialVersionUID = -1560202003985932823L; + + /** + *

Constructs a new {@code GenericMBeanException} with the given + * detail message. This constructor is + * equivalent to {@link #GenericMBeanException(String, String, + * CompositeData, Throwable) GenericMBeanException(message, "", + * null, null)}.

+ * + * @param message the exception detail message. + */ + public GenericMBeanException(String message) { + this(message, "", null, null); + } + + /** + *

Constructs a new {@code GenericMBeanException} with the given + * detail message and cause. This constructor is + * equivalent to {@link #GenericMBeanException(String, String, + * CompositeData, Throwable) GenericMBeanException(message, "", + * null, cause)}.

+ * + * @param message the exception detail message. + * @param cause the cause of this exception. Can be null. + */ + public GenericMBeanException(String message, Throwable cause) { + this(message, "", null, cause); + } + + /** + *

Constructs a new {@code GenericMBeanException} with the given + * detail message, error code, and user data. This constructor is + * equivalent to {@link #GenericMBeanException(String, String, + * CompositeData, Throwable) GenericMBeanException(message, errorCode, + * userData, null)}.

+ * + * @param message the exception detail message. + * @param errorCode the exception error code. Specifying a null value + * is equivalent to specifying an empty string. It is recommended to use + * the same reverse domain name convention as package names, for example + * "com.example.foo.UnexpectedFailure". There is no requirement that the + * error code be a syntactically valid Java identifier. + * @param userData extra information about the exception. Can be null. + */ + public GenericMBeanException( + String message, String errorCode, CompositeData userData) { + this(message, errorCode, userData, null); + } + + /** + *

Constructs a new {@code GenericMBeanException} with the given + * detail message, error code, user data, and cause.

+ * + * @param message the exception detail message. + * @param errorCode the exception error code. Specifying a null value + * is equivalent to specifying an empty string. It is recommended to use + * the same reverse domain name convention as package names, for example + * "com.example.foo.UnexpectedFailure". There is no requirement that the + * error code be a syntactically valid Java identifier. + * @param userData extra information about the exception. Can be null. + * @param cause the cause of this exception. Can be null. + */ + public GenericMBeanException( + String message, String errorCode, CompositeData userData, + Throwable cause) { + super(message, (errorCode == null) ? "" : errorCode, userData, cause); + } + + /** + *

Returns the error code of this exception.

+ * + * @return the error code. This value is never null. + */ + public String getErrorCode() { + return errorCode; + } + + /** + *

Returns the userData of this exception.

+ * + * @return the userData. Can be null. + */ + public CompositeData getUserData() { + return userData; + } + + /** + *

Instances of this class are serialized as instances of + * {@link MBeanException}. {@code MBeanException} has private fields that can + * not be set by its public constructors. They can only be set in objects + * returned by this method. When an {@code MBeanException} instance is + * deserialized, if those fields are present then its {@code readResolve} + * method will substitute a {@code GenericMBeanException} equivalent to + * this one.

+ */ + Object writeReplace() { + MBeanException x = new MBeanException( + getMessage(), errorCode, userData, getCause()); + x.setStackTrace(this.getStackTrace()); + return x; + } +} diff --git a/src/share/classes/javax/management/JMRuntimeException.java b/src/share/classes/javax/management/JMRuntimeException.java index c27ec1a561b0964c69741b36c01bb679aae63699..69c3cd54150d1601bfaced8ec745d1828b16d6b3 100644 --- a/src/share/classes/javax/management/JMRuntimeException.java +++ b/src/share/classes/javax/management/JMRuntimeException.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -70,7 +70,7 @@ public class JMRuntimeException extends RuntimeException { try { java.lang.reflect.Method initCause = Throwable.class.getMethod("initCause", - new Class[] {Throwable.class}); + new Class[] {Throwable.class}); initCause.invoke(this, new Object[] {cause}); } catch (Exception e) { // OK: just means we won't have debugging info diff --git a/src/share/classes/javax/management/JMX.java b/src/share/classes/javax/management/JMX.java index 87c7dd227ce806def6b408af6ef3a05bd9024a1d..297b5a74cc4d2039cbd8e335aec4cf10909890d2 100644 --- a/src/share/classes/javax/management/JMX.java +++ b/src/share/classes/javax/management/JMX.java @@ -30,6 +30,7 @@ import com.sun.jmx.mbeanserver.MBeanInjector; import com.sun.jmx.remote.util.ClassLogger; import java.beans.BeanInfo; import java.beans.PropertyDescriptor; +import java.io.IOException; import java.io.Serializable; import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationTargetException; @@ -37,6 +38,7 @@ import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.Map; import java.util.TreeMap; +import javax.management.namespace.JMXNamespaces; import javax.management.openmbean.MXBeanMappingFactory; /** @@ -49,8 +51,6 @@ public class JMX { * this class. */ static final JMX proof = new JMX(); - private static final ClassLogger logger = - new ClassLogger("javax.management.misc", "JMX"); private JMX() {} @@ -60,6 +60,27 @@ public class JMX { */ public static final String DEFAULT_VALUE_FIELD = "defaultValue"; + /** + * The name of the {@code + * descriptionResourceBundleBaseName} field. + */ + public static final String DESCRIPTION_RESOURCE_BUNDLE_BASE_NAME_FIELD = + "descriptionResourceBundleBaseName"; + + /** + * The name of the {@code + * descriptionResourceKey} field. + */ + public static final String DESCRIPTION_RESOURCE_KEY_FIELD = + "descriptionResourceKey"; + + /** + * The name of the {@code + * exceptions} field. + */ + public static final String EXCEPTIONS_FIELD = "exceptions"; + /** * The name of the {@code * immutableInfo} field. @@ -78,6 +99,12 @@ public class JMX { */ public static final String LEGAL_VALUES_FIELD = "legalValues"; + /** + * The name of the {@code locale} + * field. + */ + public static final String LOCALE_FIELD = "locale"; + /** * The name of the {@code * maxValue} field. @@ -116,17 +143,28 @@ public class JMX { */ public static final String ORIGINAL_TYPE_FIELD = "originalType"; + /** + * The name of the {@code + * setExceptions} field. + */ + public static final String SET_EXCEPTIONS_FIELD = "setExceptions"; + + /** + * The name of the {@code + * objectNameTemplate} field. + */ + public static final String OBJECT_NAME_TEMPLATE = "objectNameTemplate"; + /** *

Options to apply to an MBean proxy or to an instance of {@link * StandardMBean}.

* - *

For example, to specify a custom {@link MXBeanMappingFactory} - * for a {@code StandardMBean}, you might write this:

+ *

For example, to specify the "wrapped object visible" option for a + * {@code StandardMBean}, you might write this:

* *
-     * MXBeanMappingFactory factory = new MyMXBeanMappingFactory();
-     * JMX.MBeanOptions opts = new JMX.MBeanOptions();
-     * opts.setMXBeanMappingFactory(factory);
+     * StandardMBean.Options opts = new StandardMBean.Options();
+     * opts.setWrappedObjectVisible(true);
      * StandardMBean mbean = new StandardMBean(impl, intf, opts);
      * 
* @@ -463,6 +501,12 @@ public class JMX { * likewise for the other methods of {@link * NotificationBroadcaster} and {@link NotificationEmitter}.

* + *

This method is equivalent to {@link + * #newMBeanProxy(MBeanServerConnection, ObjectName, Class, JMX.MBeanOptions) + * newMBeanProxy(connection, objectName, interfaceClass, opts)}, where + * {@code opts} is a {@link JMX.ProxyOptions} representing the + * {@code notificationEmitter} parameter.

+ * * @param connection the MBean server to forward to. * @param objectName the name of the MBean within * {@code connection} to forward to. @@ -555,10 +599,6 @@ public class JMX { * * * - *

The object returned by this method is a - * {@link Proxy} whose {@code InvocationHandler} is an - * {@link MBeanServerInvocationHandler}.

- * *

This method is equivalent to {@link * #newMXBeanProxy(MBeanServerConnection, ObjectName, Class, * boolean) newMXBeanProxy(connection, objectName, interfaceClass, @@ -601,6 +641,17 @@ public class JMX { * likewise for the other methods of {@link * NotificationBroadcaster} and {@link NotificationEmitter}.

* + *

This method is equivalent to {@link + * #newMBeanProxy(MBeanServerConnection, ObjectName, Class, JMX.MBeanOptions) + * newMBeanProxy(connection, objectName, interfaceClass, opts)}, where + * {@code opts} is a {@link JMX.ProxyOptions} where the {@link + * JMX.ProxyOptions#getMXBeanMappingFactory() MXBeanMappingFactory} + * property is + * {@link MXBeanMappingFactory#forInterface(Class) + * MXBeanMappingFactory.forInterface(interfaceClass)} and the {@link + * JMX.ProxyOptions#isNotificationEmitter() notificationEmitter} property + * is equal to the {@code notificationEmitter} parameter.

+ * * @param connection the MBean server to forward to. * @param objectName the name of the MBean within * {@code connection} to forward to. @@ -655,6 +706,36 @@ public class JMX { * arbitrary Java types and Open Types. * * + *

The object returned by this method is a + * {@link Proxy} whose {@code InvocationHandler} is an + * {@link MBeanServerInvocationHandler}. This means that it is possible + * to retrieve the parameters that were used to produce the proxy. If the + * proxy was produced as follows...

+ * + *
+     * FooMBean proxy =
+     *     JMX.newMBeanProxy(connection, objectName, FooMBean.class, opts);
+     * 
+ * + *

...then you can get the {@code MBeanServerInvocationHandler} like + * this...

+ * + *
+     * MBeanServerInvocationHandler mbsih = (MBeanServerInvocationHandler)
+     *     {@link Proxy#getInvocationHandler(Object)
+     *            Proxy.getInvocationHandler}(proxy);
+     * 
+ * + *

...and you can retrieve {@code connection}, {@code + * objectName}, and {@code opts} using the {@link + * MBeanServerInvocationHandler#getMBeanServerConnection() + * getMBeanServerConnection()}, {@link + * MBeanServerInvocationHandler#getObjectName() getObjectName()}, and + * {@link MBeanServerInvocationHandler#getMBeanOptions() getMBeanOptions()} + * methods on {@code mbsih}. You can retrieve {@code FooMBean.class} + * using {@code proxy.getClass().}{@link + * Class#getInterfaces() getInterfaces()}.

+ * * @param connection the MBean server to forward to. * @param objectName the name of the MBean within * {@code connection} to forward to. @@ -703,12 +784,12 @@ public class JMX { InvocationHandler handler = new MBeanServerInvocationHandler( connection, objectName, opts); - final Class[] interfaces; + final Class[] interfaces; if (notificationEmitter) { interfaces = new Class[] {interfaceClass, NotificationEmitter.class}; } else - interfaces = new Class[] {interfaceClass}; + interfaces = new Class[] {interfaceClass}; Object proxy = Proxy.newProxyInstance( interfaceClass.getClassLoader(), interfaces, @@ -759,10 +840,91 @@ public class JMX { */ public static boolean isNotificationSource(Object mbean) throws NotCompliantMBeanException { - if (mbean instanceof NotificationBroadcaster) - return true; - Object resource = (mbean instanceof DynamicWrapperMBean) ? - ((DynamicWrapperMBean) mbean).getWrappedObject() : mbean; - return (MBeanInjector.injectsSendNotification(resource)); + for (int i = 0; i < 2; i++) { + if (mbean instanceof NotificationBroadcaster || + MBeanInjector.injectsSendNotification(mbean)) + return true; + if (mbean instanceof DynamicWrapperMBean) + mbean = ((DynamicWrapperMBean) mbean).getWrappedObject(); + else + break; + } + return false; + } + + /** + *

Return the version of the JMX specification that a (possibly remote) + * MBean Server is using. The JMX specification described in this + * documentation is version 2.0. The earlier versions that might be + * reported by this method are 1.0, 1.1, 1.2, and 1.4. (There is no 1.3.) + * All of these versions and all future versions can be compared using + * {@link String#compareTo(String)}. So, for example, to tell if + * {@code mbsc} is running at least version 2.0 you can write:

+ * + *
+     * String version = JMX.getSpecificationVersion(mbsc, null);
+     * boolean atLeast2dot0 = (version.compareTo("2.0") >= 0);
+     * 
+ * + *

A remote MBean Server might be running an earlier version of the + * JMX API, and in that case certain + * features might not be available in it.

+ * + *

The version of the MBean Server {@code mbsc} is not necessarily + * the version of all namespaces within that MBean Server, for example + * if some of them use {@link javax.management.namespace.JMXRemoteNamespace + * JMXRemoteNamespace}. To determine the version of the namespace + * that a particular MBean is in, give its name as the {@code mbeanName} + * parameter.

+ * + * @param mbsc a connection to an MBean Server. + * + * @param mbeanName the name of an MBean within that MBean Server, or null. + * If non-null, the namespace of this name, as determined by + * {@link JMXNamespaces#getContainingNamespace + * JMXNamespaces.getContainingNamespace}, is the one whose specification + * version will be returned. + * + * @return the JMX specification version reported by that MBean Server. + * + * @throws IllegalArgumentException if {@code mbsc} is null, or if + * {@code mbeanName} includes a wildcard character ({@code *} or {@code ?}) + * in its namespace. + * + * @throws IOException if the version cannot be obtained, either because + * there is a communication problem or because the remote MBean Server + * does not have the appropriate {@linkplain + * MBeanServerDelegateMBean#getSpecificationVersion() attribute}. + * + * @see Interoperability between + * versions of the JMX specification + * @see MBeanServerDelegateMBean#getSpecificationVersion + */ + public static String getSpecificationVersion( + MBeanServerConnection mbsc, ObjectName mbeanName) + throws IOException { + if (mbsc == null) + throw new IllegalArgumentException("Null MBeanServerConnection"); + + String namespace; + if (mbeanName == null) + namespace = ""; + else + namespace = JMXNamespaces.getContainingNamespace(mbeanName); + if (namespace.contains("*") || namespace.contains("?")) { + throw new IllegalArgumentException( + "ObjectName contains namespace wildcard: " + mbeanName); + } + + try { + if (namespace.length() > 0) + mbsc = JMXNamespaces.narrowToNamespace(mbsc, namespace); + return (String) mbsc.getAttribute( + MBeanServerDelegate.DELEGATE_NAME, "SpecificationVersion"); + } catch (IOException e) { + throw e; + } catch (Exception e) { + throw new IOException(e); + } } } diff --git a/src/share/classes/javax/management/MBeanAttributeInfo.java b/src/share/classes/javax/management/MBeanAttributeInfo.java index 5b41bb4b63c8d63d6da82b87c2bee7855a9216d9..4c05c376a15501bb8691eacda6bf976868d2309f 100644 --- a/src/share/classes/javax/management/MBeanAttributeInfo.java +++ b/src/share/classes/javax/management/MBeanAttributeInfo.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -186,8 +186,10 @@ public class MBeanAttributeInfo extends MBeanFeatureInfo implements Cloneable { (getter != null), (setter != null), isIs(getter), - ImmutableDescriptor.union(Introspector.descriptorForElement(getter), - Introspector.descriptorForElement(setter))); + ImmutableDescriptor.union(Introspector. + descriptorForElement(getter, false), + Introspector.descriptorForElement(setter, + true))); } /** @@ -316,7 +318,7 @@ public class MBeanAttributeInfo extends MBeanFeatureInfo implements Cloneable { */ private static String attributeType(Method getter, Method setter) throws IntrospectionException { - Class type = null; + Class type = null; if (getter != null) { if (getter.getParameterTypes().length != 0) { @@ -330,7 +332,7 @@ public class MBeanAttributeInfo extends MBeanFeatureInfo implements Cloneable { } if (setter != null) { - Class params[] = setter.getParameterTypes(); + Class params[] = setter.getParameterTypes(); if (params.length != 1) { throw new IntrospectionException("bad setter arg count"); } diff --git a/src/share/classes/javax/management/MBeanConstructorInfo.java b/src/share/classes/javax/management/MBeanConstructorInfo.java index f66502e2f0653f4d5f78db9b71a58ec63c9e44aa..68965532930749b461e55639daf16777d46641ad 100644 --- a/src/share/classes/javax/management/MBeanConstructorInfo.java +++ b/src/share/classes/javax/management/MBeanConstructorInfo.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -64,10 +64,10 @@ public class MBeanConstructorInfo extends MBeanFeatureInfo implements Cloneable * @param constructor The java.lang.reflect.Constructor * object describing the MBean constructor. */ - public MBeanConstructorInfo(String description, Constructor constructor) { + public MBeanConstructorInfo(String description, Constructor constructor) { this(constructor.getName(), description, constructorSignature(constructor), - Introspector.descriptorForElement(constructor)); + Introspector.descriptorForElement(constructor, false)); } /** @@ -210,8 +210,8 @@ public class MBeanConstructorInfo extends MBeanFeatureInfo implements Cloneable return hash; } - private static MBeanParameterInfo[] constructorSignature(Constructor cn) { - final Class[] classes = cn.getParameterTypes(); + private static MBeanParameterInfo[] constructorSignature(Constructor cn) { + final Class[] classes = cn.getParameterTypes(); final Annotation[][] annots = cn.getParameterAnnotations(); return MBeanOperationInfo.parameters(classes, annots); } diff --git a/src/share/classes/javax/management/MBeanException.java b/src/share/classes/javax/management/MBeanException.java index 839daa5dd3160b91b1353349405a5c16aac4ee74..7edc6639a6b350c80529e89718352085509f1e52 100644 --- a/src/share/classes/javax/management/MBeanException.java +++ b/src/share/classes/javax/management/MBeanException.java @@ -25,6 +25,8 @@ package javax.management; +import javax.management.openmbean.CompositeData; + /** * Represents "user defined" exceptions thrown by MBean methods @@ -40,6 +42,26 @@ public class MBeanException extends JMException { /* Serial version */ private static final long serialVersionUID = 4066342430588744142L; + /** + * @serial This field is null for instances of this class that were + * produced by its public constructors. It is non-null for instances + * of this class that represent serialized instances of {@link + * GenericMBeanException}. + * + * @see GenericMBeanException#getErrorCode() + */ + final String errorCode; + + /** + * @serial This field is null for instances of this class that were + * produced by its public constructors. It may be non-null for instances + * of this class that represent serialized instances of {@link + * GenericMBeanException}. + * + * @see GenericMBeanException#getUserData() + */ + final CompositeData userData; + /** * @serial Encapsulated {@link Exception} */ @@ -51,9 +73,8 @@ public class MBeanException extends JMException { * * @param e the wrapped exception. */ - public MBeanException(java.lang.Exception e) { - super() ; - exception = e ; + public MBeanException(Exception e) { + this(null, null, null, e); } /** @@ -63,11 +84,19 @@ public class MBeanException extends JMException { * @param e the wrapped exception. * @param message the detail message. */ - public MBeanException(java.lang.Exception e, String message) { - super(message) ; - exception = e ; + public MBeanException(Exception e, String message) { + this(message, null, null, e); } + MBeanException( + String message, String errorCode, CompositeData userData, Throwable cause) { + super(message); + initCause(cause); + if (cause instanceof Exception) + this.exception = (Exception) cause; + this.errorCode = errorCode; + this.userData = userData; + } /** * Return the actual {@link Exception} thrown. @@ -79,11 +108,24 @@ public class MBeanException extends JMException { } /** - * Return the actual {@link Exception} thrown. - * - * @return the wrapped exception. + * This method is invoked when deserializing instances of this class. + * If the {@code errorCode} field of the deserialized instance is not + * null, this method returns an instance of {@link GenericMBeanException} + * instead. Otherwise it returns {@code this}. + * @return {@code this}, or a {@code GenericMBeanException}. */ - public Throwable getCause() { - return exception; + Object readResolve() { + if (errorCode == null) { + // serial compatibility: earlier versions did not set + // Throwable.cause because they overrode getCause(). + if (getCause() == null && exception != null) + initCause(exception); + return this; + } else { + Throwable t = new GenericMBeanException( + getMessage(), errorCode, userData, getCause()); + t.setStackTrace(this.getStackTrace()); + return t; + } } } diff --git a/src/share/classes/javax/management/MBeanInfo.java b/src/share/classes/javax/management/MBeanInfo.java index 9e30d44a51d3ce587e9f6708472bf1ef6751cfcc..bf5d59bbe939bafd47f831d16014feccf9eaf02a 100644 --- a/src/share/classes/javax/management/MBeanInfo.java +++ b/src/share/classes/javax/management/MBeanInfo.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ package javax.management; +import com.sun.jmx.mbeanserver.Util; import java.io.IOException; import java.io.StreamCorruptedException; import java.io.Serializable; @@ -37,6 +38,12 @@ import java.util.WeakHashMap; import java.security.AccessController; import java.security.PrivilegedAction; +import java.util.HashMap; +import java.util.Locale; +import java.util.MissingResourceException; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; import static javax.management.ImmutableDescriptor.nonNullDescriptor; /** @@ -45,6 +52,17 @@ import static javax.management.ImmutableDescriptor.nonNullDescriptor; * management operations. Instances of this class are immutable. * Subclasses may be mutable but this is not recommended.

* + *

Usually the {@code MBeanInfo} for any given MBean does + * not change over the lifetime of that MBean. Dynamic MBeans can change their + * {@code MBeanInfo} and in that case it is recommended that they emit a {@link + * Notification} with a {@linkplain Notification#getType() type} of {@code + * "jmx.mbean.info.changed"} and a {@linkplain Notification#getUserData() + * userData} that is the new {@code MBeanInfo}. This is not required, but + * provides a conventional way for clients of the MBean to discover the change. + * See also the immutableInfo and + * infoTimeout fields in the {@code + * MBeanInfo} {@link Descriptor}.

+ * *

The contents of the MBeanInfo for a Dynamic MBean * are determined by its {@link DynamicMBean#getMBeanInfo * getMBeanInfo()} method. This includes Open MBeans and Model @@ -62,27 +80,49 @@ import static javax.management.ImmutableDescriptor.nonNullDescriptor; * constructors in that object; * *

  • {@link #getAttributes()} returns the list of all attributes - * whose existence is deduced from the presence in the MBean interface - * of a getName, isName, or - * setName method that conforms to the conventions + * whose existence is deduced as follows: + *
      + *
    • if the Standard MBean is defined with an MBean interface, + * from getName, isName, or + * setName methods that conform to the conventions * for Standard MBeans; + *
    • if the Standard MBean is defined with the {@link MBean @MBean} or + * {@link MXBean @MXBean} annotation on a class, from methods with the + * {@link ManagedAttribute @ManagedAttribute} annotation; + *
    * - *
  • {@link #getOperations()} returns the list of all methods in + *
  • {@link #getOperations()} returns the list of all operations whose + * existence is deduced as follows: + *
      + *
    • if the Standard MBean is defined with an MBean interface, from methods in * the MBean interface that do not represent attributes; + *
    • if the Standard MBean is defined with the {@link MBean @MBean} or + * {@link MXBean @MXBean} annotation on a class, from methods with the + * {@link ManagedOperation @ManagedOperation} annotation; + *
    * - *
  • {@link #getNotifications()} returns an empty array if the MBean - * does not implement the {@link NotificationBroadcaster} interface, - * otherwise the result of calling {@link + *
  • {@link #getNotifications()} returns: + *
      + *
    • if the MBean implements the {@link NotificationBroadcaster} interface, + * the result of calling {@link * NotificationBroadcaster#getNotificationInfo()} on it; + *
    • otherwise, if there is a {@link NotificationInfo @NotificationInfo} + * or {@link NotificationInfos @NotificationInfos} annotation on the + * MBean interface or @MBean or @MXBean + * class, the array implied by those annotations; + *
    • otherwise an empty array; + *
    * *
  • {@link #getDescriptor()} returns a descriptor containing the contents - * of any descriptor annotations in the MBean interface. + * of any descriptor annotations in the MBean interface (see + * {@link DescriptorFields @DescriptorFields} and + * {@link DescriptorKey @DescriptorKey}). * * * *

    The description returned by {@link #getDescription()} and the * descriptions of the contained attributes and operations are determined - * by the corresponding Description annotations if any; + * by the corresponding {@link Description} annotations if any; * otherwise their contents are not specified.

    * *

    The remaining details of the MBeanInfo for a @@ -257,6 +297,7 @@ public class MBeanInfo implements Cloneable, Serializable, DescriptorRead { *

    Since this class is immutable, the clone method is chiefly of * interest to subclasses.

    */ + @Override public Object clone () { try { return super.clone() ; @@ -441,6 +482,7 @@ public class MBeanInfo implements Cloneable, Serializable, DescriptorRead { return (Descriptor) nonNullDescriptor(descriptor).clone(); } + @Override public String toString() { return getClass().getName() + "[" + @@ -472,6 +514,7 @@ public class MBeanInfo implements Cloneable, Serializable, DescriptorRead { * @return true if and only if o is an MBeanInfo that is equal * to this one according to the rules above. */ + @Override public boolean equals(Object o) { if (o == this) return true; @@ -491,6 +534,7 @@ public class MBeanInfo implements Cloneable, Serializable, DescriptorRead { Arrays.equals(p.fastGetNotifications(), fastGetNotifications())); } + @Override public int hashCode() { /* Since computing the hashCode is quite expensive, we cache it. If by some terrible misfortune the computed value is 0, the @@ -524,8 +568,8 @@ public class MBeanInfo implements Cloneable, Serializable, DescriptorRead { * a WeakHashMap so that we don't prevent a class from being * garbage collected just because we know whether it's immutable. */ - private static final Map arrayGettersSafeMap = - new WeakHashMap(); + private static final Map, Boolean> arrayGettersSafeMap = + new WeakHashMap, Boolean>(); /** * Return true if subclass is known to preserve the @@ -537,7 +581,7 @@ public class MBeanInfo implements Cloneable, Serializable, DescriptorRead { * This is obviously not an infallible test for immutability, * but it works for the public interfaces of the MBean*Info classes. */ - static boolean arrayGettersSafe(Class subclass, Class immutableClass) { + static boolean arrayGettersSafe(Class subclass, Class immutableClass) { if (subclass == immutableClass) return true; synchronized (arrayGettersSafeMap) { @@ -714,4 +758,377 @@ public class MBeanInfo implements Cloneable, Serializable, DescriptorRead { throw new StreamCorruptedException("Got unexpected byte."); } } + + /** + *

    Return an {@code MBeanInfo} object that is the same as this one + * except that its descriptions are localized in the given locale. + * This means the text returned by {@link MBeanInfo#getDescription} + * (the description of the MBean itself), and the text returned by the + * {@link MBeanFeatureInfo#getDescription getDescription()} method + * for every {@linkplain MBeanAttributeInfo attribute}, {@linkplain + * MBeanOperationInfo operation}, {@linkplain MBeanConstructorInfo + * constructor}, and {@linkplain MBeanNotificationInfo notification} + * contained in the {@code MBeanInfo}.

    + * + *

    Here is how the description {@code this.getDescription()} is + * localized.

    + * + *

    First, if the {@linkplain #getDescriptor() descriptor} + * of this {@code MBeanInfo} contains a field "locale", and the value of + * the field is the same as {@code locale.toString()}, then this {@code + * MBeanInfo} is returned. Otherwise, localization proceeds as follows, + * and the {@code "locale"} field in the returned {@code MBeanInfo} will + * be {@code locale.toString()}. + * + *

    A {@code className} is determined. If this + * {@code MBeanInfo} contains a descriptor with the field + * {@code + * "interfaceClassName"}, then the value of that field is the + * {@code className}. Otherwise, it is {@link #getClassName()}. + * Everything before the last period (.) in the {@code className} is + * the {@code package}, and everything after is the {@code + * simpleClassName}. (If there is no period, then the {@code package} + * is empty and the {@code simpleClassName} is the same as the {@code + * className}.)

    + * + *

    A {@code resourceKey} is determined. If this {@code + * MBeanInfo} contains a {@linkplain MBeanInfo#getDescriptor() descriptor} + * with a field {@link JMX#DESCRIPTION_RESOURCE_KEY_FIELD + * "descriptionResourceKey"}, the value of the field is + * the {@code resourceKey}. Otherwise, the {@code resourceKey} is {@code + * simpleClassName + ".mbean"}.

    + * + *

    A {@code resourceBundleBaseName} is determined. If + * this {@code MBeanInfo} contains a descriptor with a field {@link + * JMX#DESCRIPTION_RESOURCE_BUNDLE_BASE_NAME_FIELD + * "descriptionResourceBundleBaseName"}, the value of the field + * is the {@code resourceBundleBaseName}. Otherwise, the {@code + * resourceBundleBaseName} is {@code package + ".MBeanDescriptions"}. + * + *

    Then, a {@link java.util.ResourceBundle ResourceBundle} is + * determined, using
    {@link java.util.ResourceBundle#getBundle(String, + * Locale, ClassLoader) ResourceBundle.getBundle(resourceBundleBaseName, + * locale, loader)}. If this succeeds, and if {@link + * java.util.ResourceBundle#getString(String) getString(resourceKey)} + * returns a string, then that string is the localized description. + * Otherwise, the original description is unchanged.

    + * + *

    A localized description for an {@code MBeanAttributeInfo} is + * obtained similarly. The default {@code resourceBundleBaseName} + * is the same as above. The default description and the + * descriptor fields {@code "descriptionResourceKey"} and {@code + * "descriptionResourceBundleBaseName"} come from the {@code + * MBeanAttributeInfo} rather than the {@code MBeanInfo}. If the + * attribute's {@linkplain MBeanFeatureInfo#getName() name} is {@code + * Foo} then its default {@code resourceKey} is {@code simpleClassName + + * ".attribute.Foo"}.

    + * + *

    Similar rules apply for operations, constructors, and notifications. + * If the name of the operation, constructor, or notification is {@code + * Foo} then the default {@code resourceKey} is respectively {@code + * simpleClassName + ".operation.Foo"}, {@code simpleClassName + + * ".constructor.Foo"}, or {@code simpleClassName + ".notification.Foo"}. + * If two operations or constructors have the same name (overloading) then + * they have the same default {@code resourceKey}; if different localized + * descriptions are needed then a non-default key must be supplied using + * {@code "descriptionResourceKey"}.

    + * + *

    Similar rules also apply for descriptions of parameters ({@link + * MBeanParameterInfo}). The default {@code resourceKey} for a parameter + * whose {@linkplain MBeanFeatureInfo#getName() name} is {@code + * Bar} in an operation or constructor called {@code Foo} is {@code + * simpleClassName + ".operation.Foo.Bar"} or {@code simpleClassName + + * ".constructor.Foo.Bar"} respectively.

    + * + *

    Example

    + * + *

    Suppose you have an MBean defined by these two Java source files:

    + * + *
    +     * // ConfigurationMBean.java
    +     * package com.example;
    +     * public interface ConfigurationMBean {
    +     *     public String getName();
    +     *     public void save(String fileName);
    +     * }
    +     *
    +     * // Configuration.java
    +     * package com.example;
    +     * public class Configuration implements ConfigurationMBean {
    +     *     public Configuration(String defaultName) {
    +     *         ...
    +     *     }
    +     *     ...
    +     * }
    +     * 
    + * + *

    Then you could define the default descriptions for the MBean, by + * including a resource bundle called {@code com/example/MBeanDescriptions} + * with the compiled classes. Most often this is done by creating a file + * {@code MBeanDescriptions.properties} in the same directory as {@code + * ConfigurationMBean.java}. Make sure that this file is copied into the + * same place as the compiled classes; in typical build environments that + * will be true by default.

    + * + *

    The file {@code com/example/MBeanDescriptions.properties} might + * look like this:

    + * + *
    +     * # Description of the MBean
    +     * ConfigurationMBean.mbean = Configuration manager
    +     *
    +     * # Description of the Name attribute
    +     * ConfigurationMBean.attribute.Name = The name of the configuration
    +     *
    +     * # Description of the save operation
    +     * ConfigurationMBean.operation.save = Save the configuration to a file
    +     *
    +     * # Description of the parameter to the save operation.
    +     * # Parameter names from the original Java source are not available,
    +     * # so the default names are p1, p2, etc.  If the names were available,
    +     * # this would be ConfigurationMBean.operation.save.fileName
    +     * ConfigurationMBean.operation.save.p1 = The name of the file
    +     *
    +     * # Description of the constructor.  The default name of a constructor is
    +     * # its fully-qualified class name.
    +     * ConfigurationMBean.constructor.com.example.Configuration = Constructor with name of default file
    +     * # Description of the constructor parameter.
    +     * ConfigurationMBean.constructor.com.example.Configuration.p1 = Name of the default file
    +     * 
    + * + *

    Starting with this file, you could create descriptions for the French + * locale by creating {@code com/example/MBeanDescriptions_fr.properties}. + * The keys in this file are the same as before but the text has been + * translated: + * + *

    +     * ConfigurationMBean.mbean = Gestionnaire de configuration
    +     *
    +     * ConfigurationMBean.attribute.Name = Le nom de la configuration
    +     *
    +     * ConfigurationMBean.operation.save = Sauvegarder la configuration dans un fichier
    +     *
    +     * ConfigurationMBean.operation.save.p1 = Le nom du fichier
    +     *
    +     * ConfigurationMBean.constructor.com.example.Configuration = Constructeur avec nom du fichier par défaut
    +     * ConfigurationMBean.constructor.com.example.Configuration.p1 = Nom du fichier par défaut
    +     * 
    + * + *

    The descriptions in {@code MBeanDescriptions.properties} and + * {@code MBeanDescriptions_fr.properties} will only be consulted if + * {@code localizeDescriptions} is called, perhaps because the + * MBean Server has been wrapped by {@link + * ClientContext#newLocalizeMBeanInfoForwarder} or because the + * connector server has been created with the {@link + * javax.management.remote.JMXConnectorServer#LOCALIZE_MBEAN_INFO_FORWARDER + * LOCALIZE_MBEAN_INFO_FORWARDER} option. If you want descriptions + * even when there is no localization step, then you should consider + * using {@link Description @Description} annotations. Annotations + * provide descriptions by default but are overridden if {@code + * localizeDescriptions} is called.

    + * + * @param locale the target locale for descriptions. Cannot be null. + * + * @param loader the {@code ClassLoader} to use for looking up resource + * bundles. + * + * @return an {@code MBeanInfo} with descriptions appropriately localized. + * + * @throws NullPointerException if {@code locale} is null. + */ + public MBeanInfo localizeDescriptions(Locale locale, ClassLoader loader) { + if (locale == null) + throw new NullPointerException("locale"); + Descriptor d = getDescriptor(); + String mbiLocaleString = (String) d.getFieldValue(JMX.LOCALE_FIELD); + if (locale.toString().equals(mbiLocaleString)) + return this; + return new Rewriter(this, locale, loader).getMBeanInfo(); + } + + private static class Rewriter { + private final MBeanInfo mbi; + private final ClassLoader loader; + private final Locale locale; + private final String packageName; + private final String simpleClassNamePlusDot; + private ResourceBundle defaultBundle; + private boolean defaultBundleLoaded; + + // ResourceBundle.getBundle throws NullPointerException + // if the loader is null, even though that is perfectly + // valid and means the bootstrap loader. So we work + // around with a ClassLoader that is equivalent to the + // bootstrap loader but is not null. + private static final ClassLoader bootstrapLoader = + new ClassLoader(null) {}; + + Rewriter(MBeanInfo mbi, Locale locale, ClassLoader loader) { + this.mbi = mbi; + this.locale = locale; + if (loader == null) + loader = bootstrapLoader; + this.loader = loader; + + String intfName = (String) + mbi.getDescriptor().getFieldValue("interfaceClassName"); + if (intfName == null) + intfName = mbi.getClassName(); + int lastDot = intfName.lastIndexOf('.'); + this.packageName = intfName.substring(0, lastDot + 1); + this.simpleClassNamePlusDot = intfName.substring(lastDot + 1) + "."; + // Inner classes show up as Outer$Inner so won't match the dot. + // When there is no dot, lastDot is -1, + // packageName is empty, and simpleClassNamePlusDot is intfName. + } + + MBeanInfo getMBeanInfo() { + MBeanAttributeInfo[] mbais = + rewrite(mbi.getAttributes(), "attribute."); + MBeanOperationInfo[] mbois = + rewrite(mbi.getOperations(), "operation."); + MBeanConstructorInfo[] mbcis = + rewrite(mbi.getConstructors(), "constructor."); + MBeanNotificationInfo[] mbnis = + rewrite(mbi.getNotifications(), "notification."); + Descriptor d = mbi.getDescriptor(); + d = changeLocale(d); + String description = getDescription(d, "mbean", ""); + if (description == null) + description = mbi.getDescription(); + return new MBeanInfo( + mbi.getClassName(), description, + mbais, mbcis, mbois, mbnis, d); + } + + private Descriptor changeLocale(Descriptor d) { + if (d.getFieldValue(JMX.LOCALE_FIELD) != null) { + Map map = new HashMap(); + for (String field : d.getFieldNames()) + map.put(field, d.getFieldValue(field)); + map.remove(JMX.LOCALE_FIELD); + d = new ImmutableDescriptor(map); + } + return ImmutableDescriptor.union( + d, new ImmutableDescriptor(JMX.LOCALE_FIELD + "=" + locale)); + } + + private String getDescription( + Descriptor d, String defaultPrefix, String defaultSuffix) { + ResourceBundle bundle = bundleFromDescriptor(d); + if (bundle == null) + return null; + String key = + (String) d.getFieldValue(JMX.DESCRIPTION_RESOURCE_KEY_FIELD); + if (key == null) + key = simpleClassNamePlusDot + defaultPrefix + defaultSuffix; + return descriptionFromResource(bundle, key); + } + + private T[] rewrite( + T[] features, String resourcePrefix) { + for (int i = 0; i < features.length; i++) { + T feature = features[i]; + Descriptor d = feature.getDescriptor(); + String description = + getDescription(d, resourcePrefix, feature.getName()); + if (description != null && + !description.equals(feature.getDescription())) { + features[i] = setDescription(feature, description); + } + } + return features; + } + + private T setDescription( + T feature, String description) { + + Object newf; + String name = feature.getName(); + Descriptor d = feature.getDescriptor(); + + if (feature instanceof MBeanAttributeInfo) { + MBeanAttributeInfo mbai = (MBeanAttributeInfo) feature; + newf = new MBeanAttributeInfo( + name, mbai.getType(), description, + mbai.isReadable(), mbai.isWritable(), mbai.isIs(), + d); + } else if (feature instanceof MBeanOperationInfo) { + MBeanOperationInfo mboi = (MBeanOperationInfo) feature; + MBeanParameterInfo[] sig = rewrite( + mboi.getSignature(), "operation." + name + "."); + newf = new MBeanOperationInfo( + name, description, sig, + mboi.getReturnType(), mboi.getImpact(), d); + } else if (feature instanceof MBeanConstructorInfo) { + MBeanConstructorInfo mbci = (MBeanConstructorInfo) feature; + MBeanParameterInfo[] sig = rewrite( + mbci.getSignature(), "constructor." + name + "."); + newf = new MBeanConstructorInfo( + name, description, sig, d); + } else if (feature instanceof MBeanNotificationInfo) { + MBeanNotificationInfo mbni = (MBeanNotificationInfo) feature; + newf = new MBeanNotificationInfo( + mbni.getNotifTypes(), name, description, d); + } else if (feature instanceof MBeanParameterInfo) { + MBeanParameterInfo mbpi = (MBeanParameterInfo) feature; + newf = new MBeanParameterInfo( + name, mbpi.getType(), description, d); + } else { + logger().log(Level.FINE, "Unknown feature type: " + + feature.getClass()); + newf = feature; + } + + return Util.cast(newf); + } + + private ResourceBundle bundleFromDescriptor(Descriptor d) { + String bundleName = (String) d.getFieldValue( + JMX.DESCRIPTION_RESOURCE_BUNDLE_BASE_NAME_FIELD); + + if (bundleName != null) + return getBundle(bundleName); + + if (defaultBundleLoaded) + return defaultBundle; + + bundleName = packageName + "MBeanDescriptions"; + defaultBundle = getBundle(bundleName); + defaultBundleLoaded = true; + return defaultBundle; + } + + private String descriptionFromResource( + ResourceBundle bundle, String key) { + try { + return bundle.getString(key); + } catch (MissingResourceException e) { + logger().log(Level.FINEST, "No resource for " + key, e); + } catch (Exception e) { + logger().log(Level.FINE, "Bad resource for " + key, e); + } + return null; + } + + private ResourceBundle getBundle(String name) { + try { + return ResourceBundle.getBundle(name, locale, loader); + } catch (Exception e) { + logger().log(Level.FINE, + "Could not load ResourceBundle " + name, e); + return null; + } + } + + private Logger logger() { + return Logger.getLogger("javax.management.locale"); + } + } } diff --git a/src/share/classes/javax/management/MBeanOperationInfo.java b/src/share/classes/javax/management/MBeanOperationInfo.java index e3c26df5265a3cf69b34c08b9720e1c9c117c8cf..c3ee5382612d29271f98898c915026870f2dbede 100644 --- a/src/share/classes/javax/management/MBeanOperationInfo.java +++ b/src/share/classes/javax/management/MBeanOperationInfo.java @@ -113,7 +113,7 @@ public class MBeanOperationInfo extends MBeanFeatureInfo implements Cloneable { methodSignature(method), method.getReturnType().getName(), UNKNOWN, - Introspector.descriptorForElement(method)); + Introspector.descriptorForElement(method, false)); } /** @@ -308,17 +308,18 @@ public class MBeanOperationInfo extends MBeanFeatureInfo implements Cloneable { wrong should be less than the penalty we would pay if it were right and we needlessly hashed in the description and the parameter array. */ + @Override public int hashCode() { return getName().hashCode() ^ getReturnType().hashCode(); } private static MBeanParameterInfo[] methodSignature(Method method) { - final Class[] classes = method.getParameterTypes(); + final Class[] classes = method.getParameterTypes(); final Annotation[][] annots = method.getParameterAnnotations(); return parameters(classes, annots); } - static MBeanParameterInfo[] parameters(Class[] classes, + static MBeanParameterInfo[] parameters(Class[] classes, Annotation[][] annots) { final MBeanParameterInfo[] params = new MBeanParameterInfo[classes.length]; diff --git a/src/share/classes/javax/management/MBeanRegistration.java b/src/share/classes/javax/management/MBeanRegistration.java index 723045acc936b1d6d9de58ccaa596a7da3ec2970..93d391d7f17f9c7b10bbebe95f3b80d44f06cf44 100644 --- a/src/share/classes/javax/management/MBeanRegistration.java +++ b/src/share/classes/javax/management/MBeanRegistration.java @@ -79,6 +79,9 @@ package javax.management; * } * * + *

    (Listeners may be invoked in the same thread as the caller of + * {@code sender.sendNotification}.)

    + * *

    A field to be injected must not be static. It is recommended that * such fields be declared {@code volatile}.

    * diff --git a/src/share/classes/javax/management/MBeanServer.java b/src/share/classes/javax/management/MBeanServer.java index 90d42d2df6c2d2b2799b5a65c67e00685288d3f1..d602eadbcc5c3fe04e9f44c72f4b9b24b9916fd7 100644 --- a/src/share/classes/javax/management/MBeanServer.java +++ b/src/share/classes/javax/management/MBeanServer.java @@ -186,11 +186,11 @@ import javax.management.loading.ClassLoaderRepository; * caller's permissions must imply {@link * MBeanPermission#MBeanPermission(String,String,String,ObjectName,String) * MBeanPermission(mbeanServerName, null, null, null, "queryMBeans")}. - * Additionally, for each MBean that matches name, + * Additionally, for each MBean n that matches name, * if the caller's permissions do not imply {@link * MBeanPermission#MBeanPermission(String,String,String,ObjectName,String) - * MBeanPermission(mbeanServerName, className, null, name, "queryMBeans")}, the - * MBean server will behave as if that MBean did not exist.

    + * MBeanPermission(mbeanServerName, className, null, n, "queryMBeans")}, + * the MBean server will behave as if that MBean did not exist.

    * *

    Certain query elements perform operations on the MBean server. * If the caller does not have the required permissions for a given @@ -351,11 +351,14 @@ public interface MBeanServer extends MBeanServerConnection { /** *

    Registers a pre-existing object as an MBean with the MBean - * server. If the object name given is null, the MBean must - * provide its own name by implementing the {@link + * server. If the object name given is null, the + * MBean must provide its own name in one or both of two ways: by implementing the {@link * javax.management.MBeanRegistration MBeanRegistration} interface * and returning the name from the {@link - * MBeanRegistration#preRegister preRegister} method.

    + * MBeanRegistration#preRegister preRegister} method; or by defining + * an {@code objectNameTemplate} field in its {@link Descriptor}, + * typically using the {@link ObjectNameTemplate @ObjectNameTemplate} + * annotation.

    * *

    If this method successfully registers an MBean, a notification * is sent as described above.

    @@ -377,19 +380,19 @@ public interface MBeanServer extends MBeanServerConnection { * MBean will not be registered. * @exception RuntimeMBeanException If the postRegister * (MBeanRegistration interface) method of the MBean throws a - * RuntimeException, the registerMBean method will + * RuntimeException, the registerMBean method will * throw a RuntimeMBeanException, although the MBean * registration succeeded. In such a case, the MBean will be actually - * registered even though the registerMBean method + * registered even though the registerMBean method * threw an exception. Note that RuntimeMBeanException can * also be thrown by preRegister, in which case the MBean * will not be registered. * @exception RuntimeErrorException If the postRegister * (MBeanRegistration interface) method of the MBean throws an - * Error, the registerMBean method will + * Error, the registerMBean method will * throw a RuntimeErrorException, although the MBean * registration succeeded. In such a case, the MBean will be actually - * registered even though the registerMBean method + * registered even though the registerMBean method * threw an exception. Note that RuntimeErrorException can * also be thrown by preRegister, in which case the MBean * will not be registered. @@ -411,6 +414,8 @@ public interface MBeanServer extends MBeanServerConnection { * is sent as described above.

    * * @throws RuntimeOperationsException {@inheritDoc} + * @throws RuntimeMBeanException {@inheritDoc} + * @throws RuntimeErrorException {@inheritDoc} */ public void unregisterMBean(ObjectName name) throws InstanceNotFoundException, MBeanRegistrationException; @@ -419,10 +424,16 @@ public interface MBeanServer extends MBeanServerConnection { public ObjectInstance getObjectInstance(ObjectName name) throws InstanceNotFoundException; - // doc comment inherited from MBeanServerConnection + /** + * {@inheritDoc} + * @throws RuntimeOperationsException {@inheritDoc} + */ public Set queryMBeans(ObjectName name, QueryExp query); - // doc comment inherited from MBeanServerConnection + /** + * {@inheritDoc} + * @throws RuntimeOperationsException {@inheritDoc} + */ public Set queryNames(ObjectName name, QueryExp query); // doc comment inherited from MBeanServerConnection diff --git a/src/share/classes/javax/management/MBeanServerConnection.java b/src/share/classes/javax/management/MBeanServerConnection.java index 0897684a0b52f4d826b550a03c8793c2de73cf7d..11509df53c3fc28466fb57c8525fa8de9cd8c199 100644 --- a/src/share/classes/javax/management/MBeanServerConnection.java +++ b/src/share/classes/javax/management/MBeanServerConnection.java @@ -46,11 +46,14 @@ public interface MBeanServerConnection extends NotificationManager { * MBean server will use its {@link * javax.management.loading.ClassLoaderRepository Default Loader * Repository} to load the class of the MBean. An object name is - * associated to the MBean. If the object name given is null, the - * MBean must provide its own name by implementing the {@link + * associated with the MBean. If the object name given is null, the + * MBean must provide its own name in one or both of two ways: by implementing the {@link * javax.management.MBeanRegistration MBeanRegistration} interface * and returning the name from the {@link - * MBeanRegistration#preRegister preRegister} method.

    + * MBeanRegistration#preRegister preRegister} method; or by defining + * an {@code objectNameTemplate} field in its {@link Descriptor}, + * typically using the {@link ObjectNameTemplate @ObjectNameTemplate} + * annotation.

    * *

    This method is equivalent to {@link * #createMBean(String,ObjectName,Object[],String[]) @@ -76,7 +79,9 @@ public interface MBeanServerConnection extends NotificationManager { * preRegister (MBeanRegistration * interface) method of the MBean has thrown an exception. The * MBean will not be registered. - * @exception RuntimeMBeanException If the postRegister + * @exception RuntimeMBeanException If the MBean's constructor or its + * {@code preRegister} or {@code postRegister} method threw + * a {@code RuntimeException}. If the postRegister * (MBeanRegistration interface) method of the MBean throws a * RuntimeException, the createMBean method will * throw a RuntimeMBeanException, although the MBean creation @@ -115,13 +120,16 @@ public interface MBeanServerConnection extends NotificationManager { /** *

    Instantiates and registers an MBean in the MBean server. The * class loader to be used is identified by its object name. An - * object name is associated to the MBean. If the object name of + * object name is associated with the MBean. If the object name of * the loader is null, the ClassLoader that loaded the MBean - * server will be used. If the MBean's object name given is null, - * the MBean must provide its own name by implementing the {@link + * server will be used. If the object name given is null, the + * MBean must provide its own name in one or both of two ways: by implementing the {@link * javax.management.MBeanRegistration MBeanRegistration} interface * and returning the name from the {@link - * MBeanRegistration#preRegister preRegister} method.

    + * MBeanRegistration#preRegister preRegister} method; or by defining + * an {@code objectNameTemplate} field in its {@link Descriptor}, + * typically using the {@link ObjectNameTemplate @ObjectNameTemplate} + * annotation.

    * *

    This method is equivalent to {@link * #createMBean(String,ObjectName,ObjectName,Object[],String[]) @@ -148,7 +156,9 @@ public interface MBeanServerConnection extends NotificationManager { * preRegister (MBeanRegistration * interface) method of the MBean has thrown an exception. The * MBean will not be registered. - * @exception RuntimeMBeanException If the postRegister + * @exception RuntimeMBeanException If the MBean's constructor or its + * {@code preRegister} or {@code postRegister} method threw + * a {@code RuntimeException}. If the postRegister * (MBeanRegistration interface) method of the MBean throws a * RuntimeException, the createMBean method will * throw a RuntimeMBeanException, although the MBean creation @@ -194,11 +204,14 @@ public interface MBeanServerConnection extends NotificationManager { * MBean server will use its {@link * javax.management.loading.ClassLoaderRepository Default Loader * Repository} to load the class of the MBean. An object name is - * associated to the MBean. If the object name given is null, the - * MBean must provide its own name by implementing the {@link + * associated with the MBean. If the object name given is null, the + * MBean must provide its own name in one or both of two ways: by implementing the {@link * javax.management.MBeanRegistration MBeanRegistration} interface * and returning the name from the {@link - * MBeanRegistration#preRegister preRegister} method. + * MBeanRegistration#preRegister preRegister} method; or by defining + * an {@code objectNameTemplate} field in its {@link Descriptor}, + * typically using the {@link ObjectNameTemplate @ObjectNameTemplate} + * annotation.

    * * @param className The class name of the MBean to be instantiated. * @param name The object name of the MBean. May be null. @@ -223,7 +236,9 @@ public interface MBeanServerConnection extends NotificationManager { * preRegister (MBeanRegistration * interface) method of the MBean has thrown an exception. The * MBean will not be registered. - * @exception RuntimeMBeanException If the postRegister + * @exception RuntimeMBeanException If the MBean's constructor or its + * {@code preRegister} or {@code postRegister} method threw + * a {@code RuntimeException}. If the postRegister * (MBeanRegistration interface) method of the MBean throws a * RuntimeException, the createMBean method will * throw a RuntimeMBeanException, although the MBean creation @@ -261,15 +276,18 @@ public interface MBeanServerConnection extends NotificationManager { NotCompliantMBeanException, IOException; /** - * Instantiates and registers an MBean in the MBean server. The + *

    Instantiates and registers an MBean in the MBean server. The * class loader to be used is identified by its object name. An - * object name is associated to the MBean. If the object name of + * object name is associated with the MBean. If the object name of * the loader is not specified, the ClassLoader that loaded the - * MBean server will be used. If the MBean object name given is - * null, the MBean must provide its own name by implementing the - * {@link javax.management.MBeanRegistration MBeanRegistration} - * interface and returning the name from the {@link - * MBeanRegistration#preRegister preRegister} method. + * MBean server will be used. If the object name given is null, the + * MBean must provide its own name in one or both of two ways: by implementing the {@link + * javax.management.MBeanRegistration MBeanRegistration} interface + * and returning the name from the {@link + * MBeanRegistration#preRegister preRegister} method; or by defining + * an {@code objectNameTemplate} field in its {@link Descriptor}, + * typically using the {@link ObjectNameTemplate @ObjectNameTemplate} + * annotation.

    * * @param className The class name of the MBean to be instantiated. * @param name The object name of the MBean. May be null. @@ -295,7 +313,9 @@ public interface MBeanServerConnection extends NotificationManager { * preRegister (MBeanRegistration * interface) method of the MBean has thrown an exception. The * MBean will not be registered. - * @exception RuntimeMBeanException If the postRegister + * @exception RuntimeMBeanException The MBean's constructor or its + * {@code preRegister} or {@code postRegister} method threw + * a {@code RuntimeException}. If the postRegister * (MBeanRegistration interface) method of the MBean throws a * RuntimeException, the createMBean method will * throw a RuntimeMBeanException, although the MBean creation @@ -416,7 +436,17 @@ public interface MBeanServerConnection extends NotificationManager { * specified, all the MBeans registered will be retrieved. * @param query The query expression to be applied for selecting * MBeans. If null no query expression will be applied for - * selecting MBeans. + * selecting MBeans. ObjectName patterns that may be contained in the + * query expression will be + * evaluated in the context of the + * {@link javax.management.namespace namespace} + * in which the MBeans selected by {@code name} are registered. + * Thus, in the {@code query} parameter, no ObjectName pattern containing a + * namespace path can match any of the MBean names selected by {@code name}. + * See the + * namespaces documentation for more details. * * @return A set containing the ObjectInstance * objects for the selected MBeans. If no MBean satisfies the @@ -424,6 +454,11 @@ public interface MBeanServerConnection extends NotificationManager { * * @exception IOException A communication problem occurred when * talking to the MBean server. + * @exception RuntimeOperationsException Wraps a + * java.lang.IllegalArgumentException: The name + * parameter contains an invalid pattern. See the + * namespaces documentation for more details. */ public Set queryMBeans(ObjectName name, QueryExp query) throws IOException; @@ -444,7 +479,17 @@ public interface MBeanServerConnection extends NotificationManager { * specified, the name of all registered MBeans will be retrieved. * @param query The query expression to be applied for selecting * MBeans. If null no query expression will be applied for - * selecting MBeans. + * selecting MBeans. ObjectName patterns that may be contained in the + * query expression will be + * evaluated in the context of the + * {@link javax.management.namespace namespace} + * in which the MBeans slected by {@code name} are registered. + * Thus, in the {@code query} parameter, no ObjectName pattern containing a + * namespace path can match any of the MBean names selected by {@code name}. + * See the + * namespaces documentation for more details. * * @return A set containing the ObjectNames for the MBeans * selected. If no MBean satisfies the query, an empty list is @@ -452,6 +497,11 @@ public interface MBeanServerConnection extends NotificationManager { * * @exception IOException A communication problem occurred when * talking to the MBean server. + * @exception RuntimeOperationsException Wraps a + * java.lang.IllegalArgumentException: The name + * parameter contains an invalid pattern. See the + * namespaces documentation for more details. */ public Set queryNames(ObjectName name, QueryExp query) throws IOException; @@ -524,8 +574,30 @@ public interface MBeanServerConnection extends NotificationManager { /** - * Enables the values of several attributes of a named MBean. The MBean - * is identified by its object name. + *

    Retrieves the values of several attributes of a named MBean. The MBean + * is identified by its object name.

    + * + *

    If one or more attributes cannot be retrieved for some reason, they + * will be omitted from the returned {@code AttributeList}. The caller + * should check that the list is the same size as the {@code attributes} + * array. To discover what problem prevented a given attribute from being + * retrieved, call {@link #getAttribute getAttribute} for that attribute.

    + * + *

    Here is an example of calling this method and checking that it + * succeeded in retrieving all the requested attributes:

    + * + *
    +     * String[] attrNames = ...;
    +     * AttributeList list = mbeanServerConnection.getAttributes(objectName, attrNames);
    +     * if (list.size() == attrNames.length)
    +     *     System.out.println("All attributes were retrieved successfully");
    +     * else {
    +     *     {@code List} missing = new {@code ArrayList}({@link java.util.Arrays#asList Arrays.asList}(attrNames));
    +     *     missing.removeAll(list.toMap().keySet());
    +     *     System.out.println("Did not retrieve: " + missing);
    +     * }
    +     * 
    * * @param name The object name of the MBean from which the * attributes are retrieved. @@ -549,6 +621,7 @@ public interface MBeanServerConnection extends NotificationManager { throws InstanceNotFoundException, ReflectionException, IOException; + /** * Sets the value of a specific attribute of a named MBean. The MBean * is identified by its object name. @@ -584,10 +657,36 @@ public interface MBeanServerConnection extends NotificationManager { ReflectionException, IOException; - /** - * Sets the values of several attributes of a named MBean. The MBean is - * identified by its object name. + *

    Sets the values of several attributes of a named MBean. The MBean is + * identified by its object name.

    + * + *

    If one or more attributes cannot be set for some reason, they will be + * omitted from the returned {@code AttributeList}. The caller should check + * that the input {@code AttributeList} is the same size as the output one. + * To discover what problem prevented a given attribute from being retrieved, + * it will usually be possible to call {@link #setAttribute setAttribute} + * for that attribute, although this is not guaranteed to work. (For + * example, the values of two attributes may have been rejected because + * they were inconsistent with each other. Setting one of them alone might + * be allowed.)

    + * + *

    Here is an example of calling this method and checking that it + * succeeded in setting all the requested attributes:

    + * + *
    +     * AttributeList inputAttrs = ...;
    +     * AttributeList outputAttrs = mbeanServerConnection.setAttributes(objectName, inputAttrs);
    +     * if (inputAttrs.size() == outputAttrs.size())
    +     *     System.out.println("All attributes were set successfully");
    +     * else {
    +     *     {@code List} missing = new {@code ArrayList}(inputAttrs.toMap().keySet());
    +     *     missing.removeAll(outputAttrs.toMap().keySet());
    +     *     System.out.println("Did not set: " + missing);
    +     * }
    +     * 
    * * @param name The object name of the MBean within which the * attributes are to be set. @@ -614,7 +713,39 @@ public interface MBeanServerConnection extends NotificationManager { throws InstanceNotFoundException, ReflectionException, IOException; /** - * Invokes an operation on an MBean. + *

    Invokes an operation on an MBean.

    + * + *

    Because of the need for a {@code signature} to differentiate + * possibly-overloaded operations, it is much simpler to invoke operations + * through an {@linkplain JMX#newMBeanProxy(MBeanServerConnection, ObjectName, + * Class) MBean proxy} where possible. For example, suppose you have a + * Standard MBean interface like this:

    + * + *
    +     * public interface FooMBean {
    +     *     public int countMatches(String[] patterns, boolean ignoreCase);
    +     * }
    +     * 
    + * + *

    The {@code countMatches} operation can be invoked as follows:

    + * + *
    +     * String[] myPatterns = ...;
    +     * int count = (Integer) mbeanServerConnection.invoke(
    +     *         objectName,
    +     *         "countMatches",
    +     *         new Object[] {myPatterns, true},
    +     *         new String[] {String[].class.getName(), boolean.class.getName()});
    +     * 
    + * + *

    Alternatively, it can be invoked through a proxy as follows:

    + * + *
    +     * String[] myPatterns = ...;
    +     * FooMBean fooProxy = JMX.newMBeanProxy(
    +     *         mbeanServerConnection, objectName, FooMBean.class);
    +     * int count = fooProxy.countMatches(myPatterns, true);
    +     * 
    * * @param name The object name of the MBean on which the method is * to be invoked. @@ -622,7 +753,8 @@ public interface MBeanServerConnection extends NotificationManager { * @param params An array containing the parameters to be set when * the operation is invoked * @param signature An array containing the signature of the - * operation. The class objects will be loaded using the same + * operation, an array of class names in the format returned by + * {@link Class#getName()}. The class objects will be loaded using the same * class loader as the one used for loading the MBean on which the * operation was invoked. * diff --git a/src/share/classes/javax/management/MBeanServerFactory.java b/src/share/classes/javax/management/MBeanServerFactory.java index 365f2a7d9b59360ab3af9777c1c0b6d155924fd5..e0225200d8305a49d3eab61ed919d9870c3c7ff3 100644 --- a/src/share/classes/javax/management/MBeanServerFactory.java +++ b/src/share/classes/javax/management/MBeanServerFactory.java @@ -747,7 +747,7 @@ public class MBeanServerFactory { * Load the builder class through the context class loader. * @param builderClassName The name of the builder class. **/ - private static Class loadBuilderClass(String builderClassName) + private static Class loadBuilderClass(String builderClassName) throws ClassNotFoundException { final ClassLoader loader = Thread.currentThread().getContextClassLoader(); @@ -767,7 +767,7 @@ public class MBeanServerFactory { * If any checked exception needs to be thrown, it is embedded in * a JMRuntimeException. **/ - private static MBeanServerBuilder newBuilder(Class builderClass) { + private static MBeanServerBuilder newBuilder(Class builderClass) { try { final Object abuilder = builderClass.newInstance(); return (MBeanServerBuilder)abuilder; @@ -792,7 +792,7 @@ public class MBeanServerFactory { String builderClassName = AccessController.doPrivileged(act); try { - final Class newBuilderClass; + final Class newBuilderClass; if (builderClassName == null || builderClassName.length() == 0) newBuilderClass = MBeanServerBuilder.class; else @@ -800,7 +800,7 @@ public class MBeanServerFactory { // Check whether a new builder needs to be created if (builder != null) { - final Class builderClass = builder.getClass(); + final Class builderClass = builder.getClass(); if (newBuilderClass == builderClass) return; // no need to create a new builder... } diff --git a/src/share/classes/javax/management/MBeanServerInvocationHandler.java b/src/share/classes/javax/management/MBeanServerInvocationHandler.java index f111e577bf19bb2e09d923b279ff43d5687769b0..20c934f15c6fe7560c43cfda8722cf07fbeeb5cf 100644 --- a/src/share/classes/javax/management/MBeanServerInvocationHandler.java +++ b/src/share/classes/javax/management/MBeanServerInvocationHandler.java @@ -253,12 +253,12 @@ public class MBeanServerInvocationHandler implements InvocationHandler { boolean notificationBroadcaster) { final InvocationHandler handler = new MBeanServerInvocationHandler(connection, objectName); - final Class[] interfaces; + final Class[] interfaces; if (notificationBroadcaster) { interfaces = - new Class[] {interfaceClass, NotificationEmitter.class}; + new Class[] {interfaceClass, NotificationEmitter.class}; } else - interfaces = new Class[] {interfaceClass}; + interfaces = new Class[] {interfaceClass}; Object proxy = Proxy.newProxyInstance(interfaceClass.getClassLoader(), @@ -269,7 +269,7 @@ public class MBeanServerInvocationHandler implements InvocationHandler { public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { - final Class methodClass = method.getDeclaringClass(); + final Class methodClass = method.getDeclaringClass(); if (methodClass.equals(NotificationBroadcaster.class) || methodClass.equals(NotificationEmitter.class)) @@ -285,8 +285,8 @@ public class MBeanServerInvocationHandler implements InvocationHandler { return p.invoke(connection, objectName, method, args); } else { final String methodName = method.getName(); - final Class[] paramTypes = method.getParameterTypes(); - final Class returnType = method.getReturnType(); + final Class[] paramTypes = method.getParameterTypes(); + final Class returnType = method.getReturnType(); /* Inexplicably, InvocationHandler specifies that args is null when the method takes no arguments rather than a @@ -361,7 +361,13 @@ public class MBeanServerInvocationHandler implements InvocationHandler { if (p != null) return p; } - p = new MXBeanProxy(mxbeanInterface, mappingFactory); + try { + p = new MXBeanProxy(mxbeanInterface, mappingFactory); + } catch (IllegalArgumentException e) { + String msg = "Cannot make MXBean proxy for " + + mxbeanInterface.getName() + ": " + e.getMessage(); + throw new IllegalArgumentException(msg, e.getCause()); + } classToProxy.put(mxbeanInterface, new WeakReference(p)); return p; } @@ -452,7 +458,7 @@ public class MBeanServerInvocationHandler implements InvocationHandler { return true; if (methodName.equals("equals") && Arrays.equals(method.getParameterTypes(), - new Class[] {Object.class}) + new Class[] {Object.class}) && isLocal(proxy, method)) return true; return false; diff --git a/src/share/classes/javax/management/MBeanServerNotification.java b/src/share/classes/javax/management/MBeanServerNotification.java index 723d2d4c1e679371e78ac9df09d85017cc1c88f0..e9fe12ad9d6f71fa7bcae92007d99c2a276d0c19 100644 --- a/src/share/classes/javax/management/MBeanServerNotification.java +++ b/src/share/classes/javax/management/MBeanServerNotification.java @@ -27,15 +27,124 @@ package javax.management; /** - * Represents a notification emitted by the MBean server through the MBeanServerDelegate MBean. + * Represents a notification emitted by the MBean Server through the MBeanServerDelegate MBean. * The MBean Server emits the following types of notifications: MBean registration, MBean - * de-registration. + * unregistration. *

    - * To receive to MBeanServerNotifications, you need to be declared as listener to - * the {@link javax.management.MBeanServerDelegate javax.management.MBeanServerDelegate} MBean - * that represents the MBeanServer. The ObjectName of the MBeanServerDelegate is: + * To receive MBeanServerNotifications, you need to register a listener with + * the {@link MBeanServerDelegate MBeanServerDelegate} MBean + * that represents the MBeanServer. The ObjectName of the MBeanServerDelegate is + * {@link MBeanServerDelegate#DELEGATE_NAME}, which is * JMImplementation:type=MBeanServerDelegate. * + *

    The following code prints a message every time an MBean is registered + * or unregistered in the MBean Server {@code mbeanServer}:

    + * + *
    + * private static final NotificationListener printListener = new NotificationListener() {
    + *     public void handleNotification(Notification n, Object handback) {
    + *         if (!(n instanceof MBeanServerNotification)) {
    + *             System.out.println("Ignored notification of class " + n.getClass().getName());
    + *             return;
    + *         }
    + *         MBeanServerNotification mbsn = (MBeanServerNotification) n;
    + *         String what;
    + *         if (n.getType().equals(MBeanServerNotification.REGISTRATION_NOTIFICATION))
    + *             what = "MBean registered";
    + *         else if (n.getType().equals(MBeanServerNotification.UNREGISTRATION_NOTIFICATION))
    + *             what = "MBean unregistered";
    + *         else
    + *             what = "Unknown type " + n.getType();
    + *         System.out.println("Received MBean Server notification: " + what + ": " +
    + *                 mbsn.getMBeanName());
    + *     }
    + * };
    + *
    + * ...
    + *     mbeanServer.addNotificationListener(
    + *             MBeanServerDelegate.DELEGATE_NAME, printListener, null, null);
    + * 
    + *

    + * An MBean which is not an {@link MBeanServerDelegate} may also emit + * MBeanServerNotifications. In particular, a custom subclass of the + * {@link javax.management.namespace.JMXDomain JMXDomain} MBean or a custom + * subclass of the {@link javax.management.namespace.JMXNamespace JMXNamespace} + * MBean may emit an MBeanServerNotification for a group of MBeans.
    + * An MBeanServerNotification emitted to denote the registration or + * unregistration of a group of MBeans has the following characteristics: + *

    • Its {@linkplain Notification#getType() notification type} is + * {@code "JMX.mbean.registered.group"} or + * {@code "JMX.mbean.unregistered.group"}, which can also be written {@link + * MBeanServerNotification#REGISTRATION_NOTIFICATION}{@code + ".group"} or + * {@link + * MBeanServerNotification#UNREGISTRATION_NOTIFICATION}{@code + ".group"}. + *
    • + *
    • Its {@linkplain #getMBeanName() MBean name} is an ObjectName pattern + * that selects the set (or a superset) of the MBeans being registered + * or unregistered
    • + *
    • Its {@linkplain Notification#getUserData() user data} can optionally + * be set to an array of ObjectNames containing the names of all MBeans + * being registered or unregistered.
    • + *
    + *

    + *

    + * MBeans which emit these group registration/unregistration notifications will + * declare them in their {@link MBeanInfo#getNotifications() + * MBeanNotificationInfo}. + *

    + *

    + * To receive a group MBeanServerNotification, you need to register a listener + * with the MBean that emits it. For instance, assuming that the {@link + * javax.management.namespace.JMXNamespace JMXNamespace} MBean handling + * namespace {@code "foo"} has declared that it emits such a notification, + * you will need to register your notification listener with that MBean, which + * will be named {@link + * javax.management.namespace.JMXNamespaces#getNamespaceObjectName(java.lang.String) + * foo//:type=JMXNamespace}. + *

    + *

    The following code prints a message every time a group of MBean is + * registered or unregistered in the namespace {@code "foo"}, assumimg its + * {@link javax.management.namespace.JMXNamespace handler} supports + * group MBeanServerNotifications:

    + * + *
    + * private static final NotificationListener printListener = new NotificationListener() {
    + *     public void handleNotification(Notification n, Object handback) {
    + *         if (!(n instanceof MBeanServerNotification)) {
    + *             System.out.println("Ignored notification of class " + n.getClass().getName());
    + *             return;
    + *         }
    + *         MBeanServerNotification mbsn = (MBeanServerNotification) n;
    + *         String what;
    + *         ObjectName[] names = null;
    + *         if (n.getType().equals(MBeanServerNotification.REGISTRATION_NOTIFICATION)) {
    + *             what = "MBean registered";
    + *         } else if (n.getType().equals(MBeanServerNotification.UNREGISTRATION_NOTIFICATION)) {
    + *             what = "MBean unregistered";
    + *         } else if (n.getType().equals(MBeanServerNotification.REGISTRATION_NOTIFICATION+".group")) {
    + *             what = "Group of MBeans registered matching";
    + *             if (mbsn.getUserData() instanceof ObjectName[])
    + *                names =  (ObjectName[]) mbsn.getUserData();
    + *         } else if (n.getType().equals(MBeanServerNotification.UNREGISTRATION_NOTIFICATION+".group")) {
    + *             what = "Group of MBeans unregistered matching";
    + *             if (mbsn.getUserData() instanceof ObjectName[])
    + *                names = (ObjectName[]) mbsn.getUserData();
    + *         } else
    + *             what = "Unknown type " + n.getType();
    + *         System.out.println("Received MBean Server notification: " + what + ": " +
    + *                 mbsn.getMBeanName());
    + *         if (names != null) {
    + *              for (ObjectName mb : names)
    + *                  System.out.println("\t"+mb);
    + *         }
    + *     }
    + * };
    + *
    + * ...
    + *     mbeanServer.addNotificationListener(
    + *             JMXNamespaces.getNamespaceObjectName("foo"), printListener, null, null);
    + * 
    + * * @since 1.5 */ public class MBeanServerNotification extends Notification { diff --git a/src/share/classes/javax/management/Notification.java b/src/share/classes/javax/management/Notification.java index 07fc19b3e364c0ba2c5ed21f74856794456a30c6..85428cc8f4a35c49521e4808c5c284a02e0f450d 100644 --- a/src/share/classes/javax/management/Notification.java +++ b/src/share/classes/javax/management/Notification.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -54,7 +54,7 @@ import com.sun.jmx.mbeanserver.GetPropertyAction; * @since 1.5 */ @SuppressWarnings("serial") // serialVersionUID is not constant -public class Notification extends EventObject { +public class Notification extends EventObject implements Cloneable { // Serialization compatibility stuff: // Two serial forms are supported in this class. The selected form depends @@ -243,6 +243,26 @@ public class Notification extends EventObject { this.message = message ; } + /** + *

    Creates and returns a copy of this object. The copy is created as + * described for {@link Object#clone()}. This means, first, that the + * class of the object will be the same as the class of this object, and, + * second, that the copy is a "shallow copy". Fields of this notification + * are not themselves copied. In particular, the {@linkplain + * #getUserData user data} of the copy is the same object as the + * original.

    + * + * @return a copy of this object. + */ + @Override + public Object clone() { + try { + return super.clone(); + } catch (CloneNotSupportedException e) { + throw new AssertionError(e); + } + } + /** * Sets the source. * @@ -285,8 +305,10 @@ public class Notification extends EventObject { /** * Get the notification type. * - * @return The notification type. It's a string expressed in a dot notation similar - * to Java properties. An example of a notification type is network.alarm.router . + * @return The notification type. It's a string expressed in a dot notation + * similar to Java properties. It is recommended that the notification type + * should follow the reverse-domain-name convention used by Java package + * names. An example of a notification type is com.example.alarm.router. */ public String getType() { return type ; @@ -317,14 +339,25 @@ public class Notification extends EventObject { /** * Get the notification message. * - * @return The message string of this notification object. It contains in a string, - * which could be the explanation of the notification for displaying to a user + * @return The message string of this notification object. * + * @see #setMessage */ public String getMessage() { return message ; } + /** + * Set the notification message. + * + * @param message the new notification message. + * + * @see #getMessage + */ + public void setMessage(String message) { + this.message = message; + } + /** * Get the user data. * @@ -355,6 +388,7 @@ public class Notification extends EventObject { * * @return A String representation of this notification. */ + @Override public String toString() { return super.toString()+"[type="+type+"][message="+message+"]"; } diff --git a/src/share/classes/javax/management/NotificationBroadcasterSupport.java b/src/share/classes/javax/management/NotificationBroadcasterSupport.java index 33df960645021c5c4c012a824ec26e8f3d1d3a42..44f5a50647756fe35dea358aa4fbe1767b1b834c 100644 --- a/src/share/classes/javax/management/NotificationBroadcasterSupport.java +++ b/src/share/classes/javax/management/NotificationBroadcasterSupport.java @@ -249,6 +249,26 @@ public class NotificationBroadcasterSupport } } } + /** + * Returns true if there are any listeners. + * + * @return true if there is at least one listener that has been added with + * {@code addNotificationListener} and not subsequently removed with + * {@code removeNotificationListener} or {@code removeAllNotificationListeners}. + * @since 1.7 + */ + public boolean isListenedTo() { + return listenerList.size() > 0; + } + + /** + * Removes all listeners. + * + * @since 1.7 + */ + public void removeAllNotificationListeners() { + listenerList.clear(); + } /** *

    This method is called by {@link #sendNotification diff --git a/src/share/classes/javax/management/NotificationInfo.java b/src/share/classes/javax/management/NotificationInfo.java index 29712c5b2d358031118c4ca464997e7118c6ff1d..a5c2f46ac0394da9825603b2b5aee410564a7ff5 100644 --- a/src/share/classes/javax/management/NotificationInfo.java +++ b/src/share/classes/javax/management/NotificationInfo.java @@ -44,7 +44,13 @@ import java.lang.annotation.Target; * "com.example.notifs.destroy"}) * public interface CacheMBean {...} * - * public class Cache implements CacheMBean {...} + * public class Cache + * extends NotificationBroadcasterSupport implements CacheMBean { + * public Cache() { + * super(); // do not supply any MBeanNotificationInfo[] + * } + * ... + * } * * *

    @@ -52,7 +58,11 @@ import java.lang.annotation.Target;
      * {@link MBean @MBean}
      * {@code @NotificationInfo}(types={"com.example.notifs.create",
      *                          "com.example.notifs.destroy"})
    - * public class Cache {...}
    + * public class Cache {
    + *     {@code @Resource}
    + *     private volatile SendNotification sendNotification;
    + *     ...
    + * }
      * 
    * *

    Each {@code @NotificationInfo} produces an {@link @@ -64,6 +74,13 @@ import java.lang.annotation.Target; * several {@code @NotificationInfo} annotations into a containing * {@link NotificationInfos @NotificationInfos} annotation. * + *

    The {@code @NotificationInfo} and {@code @NotificationInfos} annotations + * are ignored on an MBean that is not a {@linkplain JMX#isNotificationSource + * notification source} or that implements {@link NotificationBroadcaster} and + * returns a non-empty array from its {@link + * NotificationBroadcaster#getNotificationInfo() getNotificationInfo()} + * method.

    + * *

    The {@code NotificationInfo} and {@code NotificationInfos} * annotations can be applied to the MBean implementation class, or to * any parent class or interface. These annotations on a class take @@ -71,7 +88,8 @@ import java.lang.annotation.Target; * If an MBean does not have these annotations on its class or any * superclass, then superinterfaces are examined. It is an error for * more than one superinterface to have these annotations, unless one - * of them is a child of all the others.

    + * of them is a descendant of all the others; registering such an erroneous + * MBean will cause a {@link NotCompliantMBeanException}.

    */ @Documented @Inherited diff --git a/src/share/classes/javax/management/NotificationListener.java b/src/share/classes/javax/management/NotificationListener.java index eb29f8bd072a7cd5209a5c7a10df5cd17f05d148..eddd06d48ddafacd950cf46ce3f86ccf5d6d0de5 100644 --- a/src/share/classes/javax/management/NotificationListener.java +++ b/src/share/classes/javax/management/NotificationListener.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -39,11 +39,10 @@ public interface NotificationListener extends java.util.EventListener { * blocking its notification broadcaster. * * @param notification The notification. - * @param handback An opaque object which helps the listener to associate information - * regarding the MBean emitter. This object is passed to the MBean during the - * addListener call and resent, without modification, to the listener. The MBean object - * should not use or modify the object. - * + * @param handback An opaque object which helps the listener to associate + * information regarding the MBean emitter. This object is passed to the + * addNotificationListener call and resent, without modification, to the + * listener. */ - public void handleNotification(Notification notification, Object handback) ; + public void handleNotification(Notification notification, Object handback); } diff --git a/src/share/classes/javax/management/ObjectName.java b/src/share/classes/javax/management/ObjectName.java index 8185edc274206b2e4e49edfae73f0e47c8ebe3e9..41025a7688aebe0e034a41121e0d004898fe3b0d 100644 --- a/src/share/classes/javax/management/ObjectName.java +++ b/src/share/classes/javax/management/ObjectName.java @@ -56,14 +56,38 @@ import java.util.Map; * properties.

    * *

    The domain is a string of characters not including - * the character colon (:). It is recommended that the domain - * should not contain the string "{@code //}", which is reserved for future use. + * the character colon (:).

    + *

    Starting with the version 2.0 of the JMX specification, the + * domain can also start with a {@linkplain + * javax.management.namespace#NamespacePrefix namespace prefix} identifying + * the {@linkplain javax.management.namespace namespace} in which the + * MBean is registered. A namespace prefix is a path string where + * elements are separated by a double slash (//). + * It identifies the {@linkplain javax.management.namespace namespace} in + * which the MBean so named is registered.

    + * + *

    For instance the ObjectName bar//baz:k=v identifiies an MBean + * named baz:k=v in the namespace bar. Similarly the + * ObjectName foo//bar//baz:k=v identifiies an MBean named + * baz:k=v in the namespace foo//bar. See the {@linkplain + * javax.management.namespace namespace} documentation for more details.

    * *

    If the domain includes at least one occurrence of the wildcard * characters asterisk (*) or question mark * (?), then the object name is a pattern. The asterisk * matches any sequence of zero or more characters, while the question - * mark matches any single character.

    + * mark matches any single character.
    + * A namespace separator // does not match wildcard + * characters unless it is at the very end of the domain string. + * So foo*bar*:* does not match foo//bar:k=v but it + * does match fooxbar//:k=v. + *

    + * + *

    When included in a namespace path the special path element + * ** matches any number of sub namespaces + * recursively, but only if used as a complete namespace path element, + * as in **//b//c//D:k=v or a//**//c//D:k=v + * - see below. * *

    If the domain is empty, it will be replaced in certain contexts * by the default domain of the MBean server in which the @@ -171,6 +195,51 @@ import java.util.Map; * with {@code \}.

  • * * + *

    Pattern and namespaces:

    + *

    In an object name pattern, a path element + * of exactly ** corresponds to a meta + * wildcard that will match any number of sub namespaces.
    Hence:

    + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
    patternmatchesdoesn't match
    • **//D:k=v
    a//D:k=v
    + * a//b//D:k=v
    + * a//b//c//D:k=v
    D:k=v
    • a//**//D:k=v
    a//b//D:k=v
    + * a//b//c//D:k=v
    b//b//c//D:k=v
    + * a//D:k=v
    + * D:k=v
    • a//**//e//D:k=v
    a//b//e//D:k=v
    + * a//b//c//e//D:k=v
    a//b//c//c//D:k=v
    + * b//b//c//e//D:k=v
    + * a//e//D:k=v
    + * e//D:k=v
    • a//b**//e//D:k=v
    a//b//e//D:k=va//b//c//e//D:k=v
    + * because in that case b**
    + * is not a meta-wildcard - and b**
    + * is thus equivalent to b*.
    + * + *

    + *

    + * Note: Although ObjectName patterns where the characters + * * and ? appear in the namespace path are legal, + * they are not valid in the {@code name} parameter of the MBean Server's + * {@link MBeanServer#queryNames queryNames} and {@link MBeanServer#queryMBeans + * queryMBeans} methods. See the + * namespaces documentation for more details. + *

    + * *

    An ObjectName can be written as a String with the following * elements in order:

    * @@ -439,11 +508,6 @@ public class ObjectName implements Comparable, QueryExp { _propertyList = aname._propertyList; _property_list_pattern = aname._property_list_pattern; _property_value_pattern = aname._property_value_pattern; - // TODO remove this hack - // if (toString().endsWith("//javax.management.service:type1=event_client_delegeate_mbean,type2=default")) { - // Thread.currentThread().dumpStack(); - // throw new Error("************************ Gotcha!"); - //} } // Instance private fields <======================================= @@ -1096,11 +1160,10 @@ public class ObjectName implements Comparable, QueryExp { */ private boolean isDomain(String domain) { if (domain == null) return true; - final char[] d=domain.toCharArray(); - final int len = d.length; + final int len = domain.length(); int next = 0; while (next < len) { - final char c = d[next++]; + final char c = domain.charAt(next++); switch (c) { case ':' : case '\n' : @@ -1234,12 +1297,6 @@ public class ObjectName implements Comparable, QueryExp { if (!nw.equals("")) { nameString = nw + NAMESPACE_SEPARATOR + nameString; } - // TODO remove this hack - // if (nameString.endsWith("//javax.management.service:type1=event_client_delegeate_mbean,type2=default")) { - // System.err.println("old="+old+", nw="+nw); - // Thread.currentThread().dumpStack(); - // throw new Error("************************ Gotcha!"); - // } return nameString; } @@ -1584,13 +1641,18 @@ public class ObjectName implements Comparable, QueryExp { * @return A new {@code ObjectName} that is the same as {@code this} * except the domain is {@code newDomain}. * @throws NullPointerException if {@code newDomain} is null. - * @throws MalformedObjectNameException if the new domain is syntactically - * illegal. + * @exception IllegalArgumentException The {@code newDomain} passed as a + * parameter does not have the right format. The {@linkplain + * Throwable#getCause() cause} of this exception will be a + * {@link MalformedObjectNameException}. * @since 1.7 **/ - public final ObjectName withDomain(String newDomain) - throws MalformedObjectNameException { - return new ObjectName(newDomain, this); + public final ObjectName withDomain(String newDomain) { + try { + return new ObjectName(newDomain, this); + } catch (MalformedObjectNameException x) { + throw new IllegalArgumentException(x.getMessage(),x); + } } /** diff --git a/src/share/classes/javax/management/ObjectNameTemplate.java b/src/share/classes/javax/management/ObjectNameTemplate.java new file mode 100644 index 0000000000000000000000000000000000000000..97e0c900fb328dca622c57d05074178350b3c92c --- /dev/null +++ b/src/share/classes/javax/management/ObjectNameTemplate.java @@ -0,0 +1,131 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ +package javax.management; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Annotation to allow an MBean to provide its name. + * This annotation can be used on the following types: + *
      + *
    • MBean or MXBean Java interface.
    • + *
    • Java class annotated with {@link javax.management.MBean @MBean} + * annotation.
    • + *
    • Java class annotated with {@link javax.management.MXBean @MXBean} + * annotation.
    • + *
    + * + *

    The value of this annotation is used to build the ObjectName + * when instances of the annotated type are registered in + * an MBeanServer and no explicit name is given to the + * {@code createMBean} or {@code registerMBean} method (the {@code ObjectName} + * is {@code null}).

    + * + *

    For Dynamic MBeans, which define their own {@code MBeanInfo}, you can + * produce the same effect as this annotation by including a field + * {@code objectNameTemplate} + * in the {@link Descriptor} for the {@code MBeanInfo} returned by + * {@link DynamicMBean#getMBeanInfo()}.

    + * + *

    For Standard MBeans and MXBeans, this annotation automatically produces + * an {@code objectNameTemplate} field in the {@code Descriptor}.

    + * + *

    The template can contain variables so that the name of the MBean + * depends on the value of one or more of its attributes. + * A variable that identifies an MBean attribute is of the form + * {attribute name}. For example, to make an MBean name + * depend on the Name attribute, use the variable + * {Name}. Attribute names are case sensitive. + * Naming attributes can be of any type. The String returned by + * toString() is included in the constructed name.

    + * + *

    If you need the attribute value to be quoted + * by a call to {@link ObjectName#quote(String) ObjectName.quote}, + * surround the variable with quotes. Quoting only applies to key values. + * For example, @ObjectNameTemplate("java.lang:type=MemoryPool,name=\"{Name}\""), + * quotes the Name attribute value. You can notice the "\" + * character needed to escape a quote within a String. A name + * produced by this template might look like + * {@code java.lang:type=MemoryPool,name="Code Cache"}.

    + * + *

    Variables can be used anywhere in the String. + * Be sure to make the template derived name comply with + * {@link ObjectName ObjectName} syntax.

    + * + *

    If an MBean is registered with a null name and it implements + * {@link javax.management.MBeanRegistration MBeanRegistration}, then + * the computed name is provided to the preRegister method. + * Similarly, + * if the MBean uses resource + * injection to discover its name, it is the computed name that will + * be injected.

    + *

    All of the above can be used with the {@link StandardMBean} class and + * the annotation is effective in that case too.

    + *

    If any exception occurs (such as unknown attribute, invalid syntax or + * exception + * thrown by the MBean) when the name is computed it is wrapped in a + * NotCompliantMBeanException.

    + *

    Some ObjectName template examples: + *

    • "com.example:type=Memory". Fixed ObjectName. Used to name a + * singleton MBean.
    • + *
    • "com.example:type=MemoryPool,name={Name}". Variable ObjectName. + * Name attribute is retrieved to compose the name + * key value.
    • + *
    • "com.example:type=SomeType,name={InstanceName},id={InstanceId}". + * Variable ObjectName. + * InstanceName and InstanceId attributes are + * retrieved to compose respectively + * the name and id key values.
    • + *
    • "com.example:type=OtherType,name=\"{ComplexName}\"". Variable ObjectName. + * ComplexName attribute is retrieved to compose the + * name key quoted value.
    • + *
    • "com.example:{TypeKey}=SomeOtherType". Variable ObjectName. + * TypeKey attribute is retrieved to compose the + * first key name.
    • + * *
    • "{Domain}:type=YetAnotherType". Variable ObjectName. + * Domain attribute is retrieved to compose the + * management domain.
    • + *
    • "{Naming}". Variable ObjectName. + * Naming attribute is retrieved to compose the + * complete name.
    • + *
    + *

    + */ +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface ObjectNameTemplate { + + /** + * The MBean name template. + * @return The MBean name template. + */ + @DescriptorKey("objectNameTemplate") + public String value(); +} diff --git a/src/share/classes/javax/management/QueryNotificationFilter.java b/src/share/classes/javax/management/QueryNotificationFilter.java index 7d1990fa2b9e1d703f57428aad47d37cd91fdb11..5d7e7815b80af5fd83b4136eb38b26753be272f1 100644 --- a/src/share/classes/javax/management/QueryNotificationFilter.java +++ b/src/share/classes/javax/management/QueryNotificationFilter.java @@ -26,7 +26,6 @@ package javax.management; import com.sun.jmx.mbeanserver.NotificationMBeanSupport; -import com.sun.jmx.mbeanserver.Util; import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -43,6 +42,11 @@ import java.util.Set; * on both the client and the server in the remote case, so using this class * instead is recommended where possible.

    * + *

    Because this class was introduced in version 2.0 of the JMX API, + * it may not be present on a remote JMX agent that is running an earlier + * version. The method {@link JMX#getSpecificationVersion + * JMX.getSpecificationVersion} can be used to determine the remote version.

    + * *

    This class uses the {@linkplain Query Query API} to specify the * filtering logic. For example, to select only notifications where the * {@linkplain Notification#getType() type} is {@code "com.example.mytype"}, diff --git a/src/share/classes/javax/management/StandardEmitterMBean.java b/src/share/classes/javax/management/StandardEmitterMBean.java index da5f991f4271505c2b997d67cdaad6c833e8595e..abce5b202eb8c1e3c8654aedcf0891963af22042 100644 --- a/src/share/classes/javax/management/StandardEmitterMBean.java +++ b/src/share/classes/javax/management/StandardEmitterMBean.java @@ -26,6 +26,7 @@ package javax.management; import com.sun.jmx.mbeanserver.MBeanInjector; +import com.sun.jmx.mbeanserver.MBeanIntrospector; import static javax.management.JMX.MBeanOptions; /** @@ -195,10 +196,12 @@ public class StandardEmitterMBean extends StandardMBean MBeanOptions options, NotificationEmitter emitter) { super(implementation, mbeanInterface, options); + MBeanNotificationInfo[] defaultMBNIs = defaultMBNIs(implementation); if (emitter == null) - emitter = defaultEmitter(); + emitter = defaultEmitter(defaultMBNIs); this.emitter = emitter; - this.notificationInfo = emitter.getNotificationInfo(); + this.notificationInfo = + firstNonEmpty(emitter.getNotificationInfo(), defaultMBNIs); injectEmitter(); } @@ -320,15 +323,23 @@ public class StandardEmitterMBean extends StandardMBean protected StandardEmitterMBean(Class mbeanInterface, MBeanOptions options, NotificationEmitter emitter) { super(mbeanInterface, options); + MBeanNotificationInfo[] defaultMBNIs = defaultMBNIs(this); if (emitter == null) - emitter = defaultEmitter(); + emitter = defaultEmitter(defaultMBNIs); this.emitter = emitter; - this.notificationInfo = emitter.getNotificationInfo(); + this.notificationInfo = + firstNonEmpty(emitter.getNotificationInfo(), defaultMBNIs); injectEmitter(); } - private NotificationEmitter defaultEmitter() { - MBeanNotificationInfo[] mbnis = getNotificationInfo(); + private static MBeanNotificationInfo[] defaultMBNIs(Object mbean) { + return MBeanIntrospector.findNotificationsFromAnnotations( + mbean.getClass()); + } + + private NotificationEmitter defaultEmitter(MBeanNotificationInfo[] defaultMBNIs) { + MBeanNotificationInfo[] mbnis = + firstNonEmpty(getNotificationInfo(), defaultMBNIs); // Will be null unless getNotificationInfo() is overridden, // since the notificationInfo field has not been set at this point. if (mbnis == null) @@ -336,6 +347,14 @@ public class StandardEmitterMBean extends StandardMBean return new NotificationBroadcasterSupport(mbnis); } + private static T[] firstNonEmpty(T[]... items) { + for (T[] t : items) { + if (t != null && t.length != 0) + return t; + } + return null; + } + private void injectEmitter() { if (emitter instanceof SendNotification) { try { diff --git a/src/share/classes/javax/management/StandardMBean.java b/src/share/classes/javax/management/StandardMBean.java index a779e8282bbf19fe8aea3133df8ca1afa455fdaf..0d015ec19f84149c33b59f2898b3e67934fdb891 100644 --- a/src/share/classes/javax/management/StandardMBean.java +++ b/src/share/classes/javax/management/StandardMBean.java @@ -28,14 +28,21 @@ package javax.management; import com.sun.jmx.mbeanserver.DescriptorCache; import com.sun.jmx.mbeanserver.Introspector; import com.sun.jmx.mbeanserver.MBeanInjector; +import com.sun.jmx.mbeanserver.MBeanInstantiator; +import com.sun.jmx.mbeanserver.MBeanIntrospector; import com.sun.jmx.mbeanserver.MBeanSupport; import com.sun.jmx.mbeanserver.MXBeanSupport; import com.sun.jmx.mbeanserver.StandardMBeanSupport; import com.sun.jmx.mbeanserver.Util; +import java.lang.reflect.Method; import java.security.AccessController; import java.security.PrivilegedAction; +import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; +import java.util.List; import java.util.Map; +import java.util.Set; import java.util.WeakHashMap; import java.util.logging.Level; import javax.management.openmbean.MXBeanMappingFactory; @@ -135,6 +142,7 @@ public class StandardMBean implements DynamicWrapperMBean, MBeanRegistration { private static final long serialVersionUID = 5107355471177517164L; private boolean wrappedVisible; + private boolean forwardRegistration; /** *

    Construct an {@code Options} object where all options have @@ -177,15 +185,56 @@ public class StandardMBean implements DynamicWrapperMBean, MBeanRegistration { this.wrappedVisible = visible; } - // Canonical objects for each of (MXBean,!MXBean) x (WVisible,!WVisible) + /** + *

    Defines whether the {@link MBeanRegistration MBeanRegistration} + * callbacks are forwarded to the wrapped object.

    + * + *

    If this option is true, then + * {@link #preRegister(MBeanServer, ObjectName) preRegister}, + * {@link #postRegister(Boolean) postRegister}, + * {@link #preDeregister preDeregister} and + * {@link #postDeregister postDeregister} methods are forwarded + * to the wrapped object, in addition to the behaviour specified + * for the StandardMBean instance itself. + * The default value is false for compatibility reasons, but true + * is a better value for most new code.

    + * + * @return true if the MBeanRegistration callbacks + * are forwarded to the wrapped object. + */ + public boolean isMBeanRegistrationForwarded() { + return this.forwardRegistration; + } + + /** + *

    Set the + * {@link #isMBeanRegistrationForwarded MBeanRegistrationForwarded} + * option to the given value.

    + * @param forward the new value. + */ + public void setMBeanRegistrationForwarded(boolean forward) { + this.forwardRegistration = forward; + } + + // Canonical objects for each of + // (MXBean,!MXBean) x (WVisible,!WVisible) x (Forward,!Forward) private static final Options[] CANONICALS = { new Options(), new Options(), new Options(), new Options(), + new Options(), new Options(), new Options(), new Options(), }; static { CANONICALS[1].setMXBeanMappingFactory(MXBeanMappingFactory.DEFAULT); CANONICALS[2].setWrappedObjectVisible(true); CANONICALS[3].setMXBeanMappingFactory(MXBeanMappingFactory.DEFAULT); CANONICALS[3].setWrappedObjectVisible(true); + CANONICALS[4].setMBeanRegistrationForwarded(true); + CANONICALS[5].setMXBeanMappingFactory(MXBeanMappingFactory.DEFAULT); + CANONICALS[5].setMBeanRegistrationForwarded(true); + CANONICALS[6].setWrappedObjectVisible(true); + CANONICALS[6].setMBeanRegistrationForwarded(true); + CANONICALS[7].setMXBeanMappingFactory(MXBeanMappingFactory.DEFAULT); + CANONICALS[7].setWrappedObjectVisible(true); + CANONICALS[7].setMBeanRegistrationForwarded(true); } @Override MBeanOptions[] canonicals() { @@ -195,7 +244,8 @@ public class StandardMBean implements DynamicWrapperMBean, MBeanRegistration { @Override boolean same(MBeanOptions opts) { return (super.same(opts) && opts instanceof Options && - ((Options) opts).wrappedVisible == wrappedVisible); + ((Options) opts).wrappedVisible == wrappedVisible && + ((Options) opts).forwardRegistration ==forwardRegistration); } } @@ -477,7 +527,9 @@ public class StandardMBean implements DynamicWrapperMBean, MBeanRegistration { * * @exception IllegalArgumentException if the given * implementation is null. - * + * @exception IllegalStateException if the + * {@link Options#isMBeanRegistrationForwarded MBeanRegistrationForwarded} + * option is true. * @exception NotCompliantMBeanException if the given * implementation does not implement the * Standard MBean (or MXBean) interface that was @@ -490,6 +542,12 @@ public class StandardMBean implements DynamicWrapperMBean, MBeanRegistration { if (implementation == null) throw new IllegalArgumentException("implementation is null"); + + if(options instanceof Options && + ((Options) options).isMBeanRegistrationForwarded()) + throw new IllegalStateException("Implementation can't be changed " + + "because MBeanRegistrationForwarded option is true"); + setImplementation2(implementation); } @@ -689,7 +747,7 @@ public class StandardMBean implements DynamicWrapperMBean, MBeanRegistration { getImplementationClass().getName()); } - MBeanSupport msupport = mbean; + MBeanSupport msupport = mbean; final MBeanInfo bi = msupport.getMBeanInfo(); final Object impl = msupport.getWrappedObject(); @@ -1058,10 +1116,6 @@ public class StandardMBean implements DynamicWrapperMBean, MBeanRegistration { cachedMBeanInfo = info; } - private boolean isMXBean() { - return mbean.isMXBean(); - } - private static boolean identicalArrays(T[] a, T[] b) { if (a == b) return true; @@ -1269,6 +1323,145 @@ public class StandardMBean implements DynamicWrapperMBean, MBeanRegistration { return natts; } + // ------------------------------------------------------------------ + // Resolve from a type name to a Class. + // ------------------------------------------------------------------ + private static Class resolveClass(MBeanFeatureInfo info, String type, + Class mbeanItf) + throws ClassNotFoundException { + String t = (String) info.getDescriptor(). + getFieldValue(JMX.ORIGINAL_TYPE_FIELD); + if (t == null) { + t = type; + } + Class clazz = MBeanInstantiator.primitiveType(t); + if(clazz == null) + clazz = Class.forName(t, false, mbeanItf.getClassLoader()); + return clazz; + } + + // ------------------------------------------------------------------ + // Return the subset of valid Management methods + // ------------------------------------------------------------------ + private static Method getManagementMethod(final Class mbeanType, + String opName, Class... parameters) throws NoSuchMethodException, + SecurityException { + Method m = mbeanType.getMethod(opName, parameters); + if (mbeanType.isInterface()) { + return m; + } + final List methods = new ArrayList(); + try { + MBeanIntrospector.getAnnotatedMethods(mbeanType, methods); + }catch (SecurityException ex) { + throw ex; + }catch (NoSuchMethodException ex) { + throw ex; + }catch (Exception ex) { + NoSuchMethodException nsme = + new NoSuchMethodException(ex.toString()); + nsme.initCause(ex); + throw nsme; + } + + if(methods.contains(m)) return m; + + throw new NoSuchMethodException("Operation " + opName + + " not found in management interface " + mbeanType.getName()); + } + /** + * Retrieve the set of MBean attribute accessor Methods + * located in the mbeanInterface MBean interface that + * correspond to the attr MBeanAttributeInfo + * parameter. + * @param mbeanInterface the management interface. + * Can be a standard MBean or MXBean interface, or a Java class + * annotated with {@link MBean @MBean} or {@link MXBean @MXBean}. + * @param attr The attribute we want the accessors for. + * @return The set of accessors. + * @throws java.lang.NoSuchMethodException if no accessor exists + * for the given {@link MBeanAttributeInfo MBeanAttributeInfo}. + * @throws java.lang.IllegalArgumentException if at least one + * of the two parameters is null. + * @throws java.lang.ClassNotFoundException if the class named in the + * attribute type is not found. + * @throws java.lang.SecurityException if this exception is + * encountered while introspecting the MBean interface. + */ + public static Set findAttributeAccessors(Class mbeanInterface, + MBeanAttributeInfo attr) + throws NoSuchMethodException, + ClassNotFoundException { + if (mbeanInterface == null || attr == null) { + throw new IllegalArgumentException("mbeanInterface or attr " + + "parameter is null"); + } + String attributeName = attr.getName(); + Set methods = new HashSet(); + Class clazz = resolveClass(attr, attr.getType(), mbeanInterface); + if (attr.isReadable()) { + String radical = "get"; + if(attr.isIs()) radical = "is"; + Method getter = getManagementMethod(mbeanInterface, radical + + attributeName); + if (getter.getReturnType().equals(clazz)) { + methods.add(getter); + } else { + throw new NoSuchMethodException("Invalid getter return type, " + + "should be " + clazz + ", found " + + getter.getReturnType()); + } + } + if (attr.isWritable()) { + Method setter = getManagementMethod(mbeanInterface, "set" + + attributeName, + clazz); + if (setter.getReturnType().equals(Void.TYPE)) { + methods.add(setter); + } else { + throw new NoSuchMethodException("Invalid setter return type, " + + "should be void, found " + setter.getReturnType()); + } + } + return methods; + } + + /** + * Retrieve the MBean operation Method + * located in the mbeanInterface MBean interface that + * corresponds to the provided op + * MBeanOperationInfo parameter. + * @param mbeanInterface the management interface. + * Can be a standard MBean or MXBean interface, or a Java class + * annotated with {@link MBean @MBean} or {@link MXBean @MXBean}. + * @param op The operation we want the method for. + * @return the method corresponding to the provided MBeanOperationInfo. + * @throws java.lang.NoSuchMethodException if no method exists + * for the given {@link MBeanOperationInfo MBeanOperationInfo}. + * @throws java.lang.IllegalArgumentException if at least one + * of the two parameters is null. + * @throws java.lang.ClassNotFoundException if one of the + * classes named in the operation signature array is not found. + * @throws java.lang.SecurityException if this exception is + * encountered while introspecting the MBean interface. + */ + public static Method findOperationMethod(Class mbeanInterface, + MBeanOperationInfo op) + throws ClassNotFoundException, NoSuchMethodException { + if (mbeanInterface == null || op == null) { + throw new IllegalArgumentException("mbeanInterface or op " + + "parameter is null"); + } + List> classes = new ArrayList>(); + for (MBeanParameterInfo info : op.getSignature()) { + Class clazz = resolveClass(info, info.getType(), mbeanInterface); + classes.add(clazz); + } + Class[] signature = new Class[classes.size()]; + classes.toArray(signature); + return getManagementMethod(mbeanInterface, op.getName(), signature); + } + /** *

    Allows the MBean to perform any operations it needs before * being registered in the MBean server. If the name of the MBean @@ -1277,10 +1470,14 @@ public class StandardMBean implements DynamicWrapperMBean, MBeanRegistration { * registered in the MBean server.

    * *

    The default implementation of this method returns the {@code name} - * parameter. It does nothing else for - * Standard MBeans. For MXBeans, it records the {@code MBeanServer} - * and {@code ObjectName} parameters so they can be used to translate - * inter-MXBean references.

    + * parameter. If the + * {@link Options#isMBeanRegistrationForwarded MBeanRegistrationForwarded} + * option is set to true, then this method is forwarded to the object + * returned by the {@link #getImplementation getImplementation()} method. + * The name returned by this call is then returned by this method. + * It does nothing else for Standard MBeans. For MXBeans, it records + * the {@code MBeanServer} and {@code ObjectName} parameters so they can + * be used to translate inter-MXBean references.

    * *

    It is good practice for a subclass that overrides this method * to call the overridden method via {@code super.preRegister(...)}. @@ -1315,6 +1512,11 @@ public class StandardMBean implements DynamicWrapperMBean, MBeanRegistration { */ public ObjectName preRegister(MBeanServer server, ObjectName name) throws Exception { + // Forward preRegister before to call register and + // inject parameters. + if(shouldForwardMBeanRegistration()) + name = ((MBeanRegistration)getImplementation()). + preRegister(server, name); mbean.register(server, name); MBeanInjector.inject(mbean.getWrappedObject(), server, name); return name; @@ -1324,7 +1526,11 @@ public class StandardMBean implements DynamicWrapperMBean, MBeanRegistration { *

    Allows the MBean to perform any operations needed after having been * registered in the MBean server or after the registration has failed.

    * - *

    The default implementation of this method does nothing for + *

    If the + * {@link Options#isMBeanRegistrationForwarded MBeanRegistrationForwarded} + * option is set to true, then this method is forwarded to the object + * returned by the {@link #getImplementation getImplementation()} method. + * The default implementation of this method does nothing else for * Standard MBeans. For MXBeans, it undoes any work done by * {@link #preRegister preRegister} if registration fails.

    * @@ -1342,16 +1548,24 @@ public class StandardMBean implements DynamicWrapperMBean, MBeanRegistration { public void postRegister(Boolean registrationDone) { if (!registrationDone) mbean.unregister(); + if(shouldForwardMBeanRegistration()) + ((MBeanRegistration)getImplementation()). + postRegister(registrationDone); } /** *

    Allows the MBean to perform any operations it needs before * being unregistered by the MBean server.

    * - *

    The default implementation of this method does nothing.

    + *

    If the + * {@link Options#isMBeanRegistrationForwarded MBeanRegistrationForwarded} + * option is set to true, then this method is forwarded to the object + * returned by the {@link #getImplementation getImplementation()} method. + * Other than that, the default implementation of this method does nothing. + *

    * *

    It is good practice for a subclass that overrides this method - * to call the overridden method via {@code super.preDeegister(...)}.

    + * to call the overridden method via {@code super.preDeregister(...)}.

    * * @throws Exception no checked exceptions are throw by this method * but {@code Exception} is declared so that subclasses can override @@ -1360,13 +1574,19 @@ public class StandardMBean implements DynamicWrapperMBean, MBeanRegistration { * @since 1.6 */ public void preDeregister() throws Exception { + if(shouldForwardMBeanRegistration()) + ((MBeanRegistration)getImplementation()).preDeregister(); } /** *

    Allows the MBean to perform any operations needed after having been * unregistered in the MBean server.

    * - *

    The default implementation of this method does nothing for + *

    If the + * {@link Options#isMBeanRegistrationForwarded MBeanRegistrationForwarded} + * option is set to true, then this method is forwarded to the object + * returned by the {@link #getImplementation getImplementation()} method. + * The default implementation of this method does nothing else for * Standard MBeans. For MXBeans, it removes any information that * was recorded by the {@link #preRegister preRegister} method.

    * @@ -1379,8 +1599,15 @@ public class StandardMBean implements DynamicWrapperMBean, MBeanRegistration { */ public void postDeregister() { mbean.unregister(); + if(shouldForwardMBeanRegistration()) + ((MBeanRegistration)getImplementation()).postDeregister(); } + private boolean shouldForwardMBeanRegistration() { + return (getImplementation() instanceof MBeanRegistration) && + (options instanceof Options && + ((Options) options).isMBeanRegistrationForwarded()); + } // // MBeanInfo immutability // @@ -1391,8 +1618,8 @@ public class StandardMBean implements DynamicWrapperMBean, MBeanRegistration { * garbage collected just because we know whether its MBeanInfo * is immutable. */ - private static final Map mbeanInfoSafeMap = - new WeakHashMap(); + private static final Map, Boolean> mbeanInfoSafeMap = + new WeakHashMap, Boolean>(); /** * Return true if {@code subclass} is known to preserve the immutability @@ -1438,9 +1665,9 @@ public class StandardMBean implements DynamicWrapperMBean, MBeanRegistration { private static class MBeanInfoSafeAction implements PrivilegedAction { - private final Class subclass; + private final Class subclass; - MBeanInfoSafeAction(Class subclass) { + MBeanInfoSafeAction(Class subclass) { this.subclass = subclass; } @@ -1454,26 +1681,26 @@ public class StandardMBean implements DynamicWrapperMBean, MBeanRegistration { // Check for "MBeanInfo getCachedMBeanInfo()" method. // if (overrides(subclass, StandardMBean.class, - "getCachedMBeanInfo", (Class[]) null)) + "getCachedMBeanInfo", (Class[]) null)) return false; // Check for "MBeanInfo getMBeanInfo()" method. // if (overrides(subclass, StandardMBean.class, - "getMBeanInfo", (Class[]) null)) + "getMBeanInfo", (Class[]) null)) return false; // Check for "MBeanNotificationInfo[] getNotificationInfo()" // method. // - // This method is only taken into account for the MBeanInfo + // This method is taken into account for the MBeanInfo // immutability checks if and only if the given subclass is // StandardEmitterMBean itself or can be assigned to // StandardEmitterMBean. // if (StandardEmitterMBean.class.isAssignableFrom(subclass)) if (overrides(subclass, StandardEmitterMBean.class, - "getNotificationInfo", (Class[]) null)) + "getNotificationInfo", (Class[]) null)) return false; return true; } diff --git a/src/share/classes/javax/management/event/EventClient.java b/src/share/classes/javax/management/event/EventClient.java index 6f5c84eb2cd4bc24c9bdfa0cc1b4f67450349fec..2688b94937f53d12a2b916a84e80c056ebaf42fd 100644 --- a/src/share/classes/javax/management/event/EventClient.java +++ b/src/share/classes/javax/management/event/EventClient.java @@ -29,7 +29,6 @@ import com.sun.jmx.event.DaemonThreadFactory; import com.sun.jmx.event.LeaseRenewer; import com.sun.jmx.event.ReceiverBuffer; import com.sun.jmx.event.RepeatedSingletonJob; -import com.sun.jmx.namespace.JMXNamespaceUtils; import com.sun.jmx.mbeanserver.PerThreadGroupPool; import com.sun.jmx.remote.util.ClassLogger; @@ -58,7 +57,6 @@ import javax.management.NotificationBroadcasterSupport; import javax.management.NotificationFilter; import javax.management.NotificationListener; import javax.management.ObjectName; -import javax.management.remote.JMXConnector; import javax.management.remote.NotificationResult; import javax.management.remote.TargetedNotification; @@ -117,23 +115,24 @@ public class EventClient implements EventConsumer, NotificationManager { public static final String NONFATAL = "jmx.event.service.nonfatal"; /** - *

    A notification string type used by an {@code EventClient} object to - * inform a listener added by {@code #addEventClientListener} that it - * has detected that notifications have been lost. The {@link - * Notification#getUserData() userData} of the notification is a Long which - * is an upper bound on the number of lost notifications that have just - * been detected.

    + *

    A notification string type used by an {@code EventClient} object + * to inform a listener added by {@link #addEventClientListener + * addEventClientListener} that it has detected that notifications have + * been lost. The {@link Notification#getUserData() userData} of the + * notification is a Long which is an upper bound on the number of lost + * notifications that have just been detected.

    * * @see #addEventClientListener */ public static final String NOTIFS_LOST = "jmx.event.service.notifs.lost"; /** - * The default lease time, {@value}, in milliseconds. + * The default lease time that EventClient instances will request, in + * milliseconds. This value is {@value}. * * @see EventClientDelegateMBean#lease */ - public static final long DEFAULT_LEASE_TIMEOUT = 300000; + public static final long DEFAULT_REQUESTED_LEASE_TIME = 300000; /** *

    Constructs a default {@code EventClient} object.

    @@ -173,7 +172,7 @@ public class EventClient implements EventConsumer, NotificationManager { */ public EventClient(EventClientDelegateMBean delegate) throws IOException { - this(delegate, null, null, null, DEFAULT_LEASE_TIMEOUT); + this(delegate, null, null, null, DEFAULT_REQUESTED_LEASE_TIME); } /** @@ -188,15 +187,16 @@ public class EventClient implements EventConsumer, NotificationManager { * forwarded by the {@link EventClientDelegateMBean}. If {@code null}, a * {@link FetchingEventRelay} object will be used. * @param distributingExecutor Used to distribute notifications to local - * listeners. If {@code null}, the thread that calls {@link - * EventReceiver#receive EventReceiver.receive} from the {@link EventRelay} - * object is used. + * listeners. Only one job at a time will be submitted to this Executor. + * If {@code distributingExecutor} is {@code null}, the thread that calls + * {@link EventReceiver#receive EventReceiver.receive} from the {@link + * EventRelay} object is used. * @param leaseScheduler An object that will be used to schedule the * periodic {@linkplain EventClientDelegateMBean#lease lease updates}. * If {@code null}, a default scheduler will be used. * @param requestedLeaseTime The lease time used to keep this client alive * in the {@link EventClientDelegateMBean}. A value of zero is equivalent - * to the {@linkplain #DEFAULT_LEASE_TIMEOUT default value}. + * to the {@linkplain #DEFAULT_REQUESTED_LEASE_TIME default value}. * * @throws IllegalArgumentException If {@code delegate} is null. * @throws IOException If an I/O error occurs when communicating with the @@ -213,7 +213,7 @@ public class EventClient implements EventConsumer, NotificationManager { } if (requestedLeaseTime == 0) - requestedLeaseTime = DEFAULT_LEASE_TIMEOUT; + requestedLeaseTime = DEFAULT_REQUESTED_LEASE_TIME; else if (requestedLeaseTime < 0) { throw new IllegalArgumentException( "Negative lease time: " + requestedLeaseTime); @@ -265,16 +265,43 @@ public class EventClient implements EventConsumer, NotificationManager { public ScheduledThreadPoolExecutor createThreadPool(ThreadGroup group) { ThreadFactory daemonThreadFactory = new DaemonThreadFactory( "JMX EventClient lease renewer %d"); - ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor( - 20, daemonThreadFactory); - exec.setKeepAliveTime(1, TimeUnit.SECONDS); - exec.allowCoreThreadTimeOut(true); - exec.setRemoveOnCancelPolicy(true); - return exec; + ScheduledThreadPoolExecutor executor = + new ScheduledThreadPoolExecutor(20, daemonThreadFactory); + executor.setKeepAliveTime(1, TimeUnit.SECONDS); + executor.allowCoreThreadTimeOut(true); + if (setRemoveOnCancelPolicy != null) { + try { + setRemoveOnCancelPolicy.invoke(executor, true); + } catch (Exception e) { + logger.trace("setRemoveOnCancelPolicy", e); + } + } + // By default, a ScheduledThreadPoolExecutor will keep jobs + // in its queue even after they have been cancelled. They + // will only be removed when their scheduled time arrives. + // Since the job references the LeaseRenewer which references + // this EventClient, this can lead to a moderately large number + // of objects remaining referenced until the renewal time + // arrives. Hence the above call, which removes the job from + // the queue as soon as it is cancelled. Since the call is + // new with JDK 7, we invoke it via reflection to make it + // easier to use this code on JDK 6. + return executor; } }; return leaseRenewerThreadPool.getThreadPoolExecutor(create); + } + private static final Method setRemoveOnCancelPolicy; + static { + Method m; + try { + m = ScheduledThreadPoolExecutor.class.getMethod( + "setRemoveOnCancelPolicy", boolean.class); + } catch (Exception e) { + m = null; + } + setRemoveOnCancelPolicy = m; } /** @@ -381,7 +408,7 @@ public class EventClient implements EventConsumer, NotificationManager { listenerId = eventClientDelegate.addListener(clientId, name, filter); } catch (EventClientNotFoundException ecnfe) { - final IOException ioe = new IOException(); + final IOException ioe = new IOException(ecnfe.getMessage()); ioe.initCause(ecnfe); throw ioe; } @@ -488,7 +515,7 @@ public class EventClient implements EventConsumer, NotificationManager { listenerId = eventClientDelegate.addSubscriber(clientId, name, filter); } catch (EventClientNotFoundException ecnfe) { - final IOException ioe = new IOException(); + final IOException ioe = new IOException(ecnfe.getMessage()); ioe.initCause(ecnfe); throw ioe; } @@ -519,7 +546,7 @@ public class EventClient implements EventConsumer, NotificationManager { * *

    The method returns the listeners which were added successfully. The * elements in the returned collection are a subset of the elements in - * {@code infoList}. If all listeners were added successfully, the two + * {@code listeners}. If all listeners were added successfully, the two * collections are the same. If no listener was added successfully, the * returned collection is empty.

    * @@ -569,8 +596,13 @@ public class EventClient implements EventConsumer, NotificationManager { } /** - * Returns the set of listeners that have been added through - * this {@code EventClient} and not subsequently removed. + *

    Returns the collection of listeners that have been added through + * this {@code EventClient} and not subsequently removed. The returned + * collection contains one entry for every listener added with + * {@link #addNotificationListener addNotificationListener} or + * {@link #subscribe subscribe} and not subsequently removed with + * {@link #removeNotificationListener removeNotificationListener} or + * {@link #unsubscribe unsubscribe}, respectively.

    * * @return A collection of listener information. Empty if there are no * current listeners or if this {@code EventClient} has been {@linkplain @@ -919,8 +951,10 @@ public class EventClient implements EventConsumer, NotificationManager { private final static MBeanNotificationInfo[] myInfo = new MBeanNotificationInfo[] { new MBeanNotificationInfo( - new String[] {FAILED, NOTIFS_LOST}, - Notification.class.getName(), "")}; + new String[] {FAILED, NONFATAL, NOTIFS_LOST}, + Notification.class.getName(), + "Notifications that can be sent to a listener added with " + + "EventClient.addEventClientListener")}; private final NotificationBroadcasterSupport broadcaster = new NotificationBroadcasterSupport(); @@ -1027,7 +1061,7 @@ public class EventClient implements EventConsumer, NotificationManager { final public EventClient call() throws Exception { EventClientDelegateMBean ecd = EventClientDelegate.getProxy(conn); return new EventClient(ecd, eventRelay, null, null, - DEFAULT_LEASE_TIMEOUT); + DEFAULT_REQUESTED_LEASE_TIME); } }; @@ -1065,24 +1099,6 @@ public class EventClient implements EventConsumer, NotificationManager { return clientId; } - /** - * Returns a JMX Connector that will use an {@link EventClient} - * to subscribe for notifications. If the server doesn't have - * an {@link EventClientDelegateMBean}, then the connector will - * use the legacy notification mechanism instead. - * - * @param wrapped The underlying JMX Connector wrapped by the returned - * connector. - * - * @return A JMX Connector that will uses an {@link EventClient}, if - * available. - * - * @see EventClient#getEventClientConnection(MBeanServerConnection) - */ - public static JMXConnector withEventClient(final JMXConnector wrapped) { - return JMXNamespaceUtils.withEventClient(wrapped); - } - private static final PerThreadGroupPool leaseRenewerThreadPool = PerThreadGroupPool.make(); } diff --git a/src/share/classes/javax/management/event/EventClientDelegate.java b/src/share/classes/javax/management/event/EventClientDelegate.java index 8d144123a8763d9b9647607b2d3bfe6c1fcbcb9a..8eeeeb1f5c12d1a64fe4bf04b9d7b8f00962ac3b 100644 --- a/src/share/classes/javax/management/event/EventClientDelegate.java +++ b/src/share/classes/javax/management/event/EventClientDelegate.java @@ -104,8 +104,8 @@ public class EventClientDelegate implements EventClientDelegateMBean { public static EventClientDelegate getEventClientDelegate(MBeanServer server) { EventClientDelegate delegate = null; synchronized(delegateMap) { - final WeakReference wrf = delegateMap.get(server); - delegate = (wrf == null) ? null : (EventClientDelegate)wrf.get(); + final WeakReference wrf = delegateMap.get(server); + delegate = (wrf == null) ? null : wrf.get(); if (delegate == null) { delegate = new EventClientDelegate(server); @@ -149,6 +149,7 @@ public class EventClientDelegate implements EventClientDelegateMBean { // of a setMBeanServer on some other forwarder later in the chain. private static class Forwarder extends SingleMBeanForwarder { + private MBeanServer loopMBS; private static class UnsupportedInvocationHandler implements InvocationHandler { @@ -173,7 +174,11 @@ public class EventClientDelegate implements EventClientDelegateMBean { private volatile boolean madeECD; Forwarder() { - super(OBJECT_NAME, makeUnsupportedECD()); + super(OBJECT_NAME, makeUnsupportedECD(), true); + } + + synchronized void setLoopMBS(MBeanServer loopMBS) { + this.loopMBS = loopMBS; } @Override @@ -186,7 +191,7 @@ public class EventClientDelegate implements EventClientDelegateMBean { AccessController.doPrivileged( new PrivilegedAction() { public EventClientDelegate run() { - return getEventClientDelegate(Forwarder.this); + return getEventClientDelegate(loopMBS); } }); DynamicMBean mbean = new StandardMBean( @@ -208,11 +213,46 @@ public class EventClientDelegate implements EventClientDelegateMBean { * that are targeted for that MBean and handles them itself. All other * requests are forwarded to the next element in the forwarder chain.

    * + * @param nextMBS the next {@code MBeanServer} in the chain of forwarders, + * which might be another {@code MBeanServerForwarder} or a plain {@code + * MBeanServer}. This is the object to which {@code MBeanServer} requests + * that do not concern the {@code EventClientDelegateMBean} are sent. + * It will be the value of {@link MBeanServerForwarder#getMBeanServer() + * getMBeanServer()} on the returned object, and can be changed with {@link + * MBeanServerForwarder#setMBeanServer setMBeanServer}. It can be null but + * must be set to a non-null value before any {@code MBeanServer} requests + * arrive. + * + * @param loopMBS the {@code MBeanServer} to which requests from the + * {@code EventClientDelegateMBean} should be sent. For example, + * when you invoke the {@link EventClientDelegateMBean#addListener + * addListener} operation on the {@code EventClientDelegateMBean}, it will + * result in a call to {@link + * MBeanServer#addNotificationListener(ObjectName, NotificationListener, + * NotificationFilter, Object) addNotificationListener} on this object. + * If this parameter is null, then these requests will be sent to the + * newly-created {@code MBeanServerForwarder}. Usually the parameter will + * either be null or will be the result of {@link + * javax.management.remote.JMXConnectorServer#getSystemMBeanServerForwarder() + * getSystemMBeanServerForwarder()} for the connector server in which + * this forwarder will be installed. + * * @return a new {@code MBeanServerForwarder} that simulates the existence * of an {@code EventClientDelegateMBean}. + * + * @see javax.management.remote.JMXConnectorServer#installStandardForwarders */ - public static MBeanServerForwarder newForwarder() { - return new Forwarder(); + public static MBeanServerForwarder newForwarder( + MBeanServer nextMBS, MBeanServer loopMBS) { + Forwarder mbsf = new Forwarder(); + // We must setLoopMBS before setMBeanServer, because when we + // setMBeanServer that will call getEventClientDelegate(loopMBS). + if (loopMBS == null) + loopMBS = mbsf; + mbsf.setLoopMBS(loopMBS); + if (nextMBS != null) + mbsf.setMBeanServer(nextMBS); + return mbsf; } /** @@ -282,7 +322,7 @@ public class EventClientDelegate implements EventClientDelegateMBean { Constructor foundCons = null; if (sig == null) sig = new String[0]; - for (Constructor cons : c.getConstructors()) { + for (Constructor cons : c.getConstructors()) { Class[] types = cons.getParameterTypes(); String[] consSig = new String[types.length]; for (int i = 0; i < types.length; i++) @@ -437,10 +477,9 @@ public class EventClientDelegate implements EventClientDelegateMBean { // private classes // ------------------------------------ private class ClientInfo { - String clientId; - EventBuffer buffer; - NotificationListener clientListener; - Map listenerInfoMap = + final String clientId; + final NotificationListener clientListener; + final Map listenerInfoMap = new HashMap(); ClientInfo(String clientId, EventForwarder forwarder) { @@ -703,7 +742,8 @@ public class EventClientDelegate implements EventClientDelegateMBean { clientInfo = clientInfoMap.get(clientId); if (clientInfo == null) { - throw new EventClientNotFoundException("The client is not found."); + throw new EventClientNotFoundException( + "Client not found (id " + clientId + ")"); } return clientInfo; diff --git a/src/share/classes/javax/management/event/EventClientDelegateMBean.java b/src/share/classes/javax/management/event/EventClientDelegateMBean.java index a9718a931dca6ae6e98bfa7a007515a720cf3eff..e6030b613a96d24bb3e2de3dbecced5728f056dc 100644 --- a/src/share/classes/javax/management/event/EventClientDelegateMBean.java +++ b/src/share/classes/javax/management/event/EventClientDelegateMBean.java @@ -51,7 +51,8 @@ import javax.management.remote.NotificationResult; * and the MBean Server, that will intercept accesses to the Event Client * Delegate MBean and treat them as the real MBean would. This forwarder is * inserted by default with the standard RMI Connector Server, and can also - * be created explicitly using {@link EventClientDelegate#newForwarder()}. + * be created explicitly using {@link EventClientDelegate#newForwarder + * EventClientDelegate.newForwarder}. * *
  • A variant on the above is to replace the MBean Server that is * used locally with a forwarder as described above. Since @@ -61,9 +62,7 @@ import javax.management.remote.NotificationResult; * *

      * MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();  // or whatever
    - * MBeanServerForwarder mbsf = EventClientDelegate.newForwarder();
    - * mbsf.setMBeanServer(mbs);
    - * mbs = mbsf;
    + * mbs = EventClientDelegate.newForwarder(mbs, null);
      * // now use mbs just as you did before, but it will have an EventClientDelegate
      * 
    * diff --git a/src/share/classes/javax/management/event/EventRelay.java b/src/share/classes/javax/management/event/EventRelay.java index d723bb04c4e535864a595a311c46aa5c00f8795b..d106a1605513cbf91146f9a6724b0f99ca50fd4a 100644 --- a/src/share/classes/javax/management/event/EventRelay.java +++ b/src/share/classes/javax/management/event/EventRelay.java @@ -27,7 +27,6 @@ package javax.management.event; import java.io.IOException; import java.util.concurrent.Executors; // for javadoc -import java.util.concurrent.ScheduledFuture; /** * This interface is used to specify a way to receive diff --git a/src/share/classes/javax/management/event/EventSubscriber.java b/src/share/classes/javax/management/event/EventSubscriber.java index 9948810bfeb52e03fcb40b8c06005014c19d7b53..5a472b5adb5fd0d10cfd5b66596ced4ff1377dcd 100644 --- a/src/share/classes/javax/management/event/EventSubscriber.java +++ b/src/share/classes/javax/management/event/EventSubscriber.java @@ -350,8 +350,7 @@ public class EventSubscriber implements EventConsumer { static { QueryExp broadcasterExp; try { - final Method m = Query.class.getMethod("isInstanceOf", - new Class[] {String.class}); + final Method m = Query.class.getMethod("isInstanceOf", String.class); broadcasterExp = (QueryExp)m.invoke(Query.class, new Object[] {NotificationBroadcaster.class.getName()}); } catch (Exception e) { diff --git a/src/share/classes/javax/management/event/FetchingEventRelay.java b/src/share/classes/javax/management/event/FetchingEventRelay.java index 2a456ec44c7b919641a6647fe702c6af1698875a..cbec8aa82be14eacda7d871b04c14f711cd53699 100644 --- a/src/share/classes/javax/management/event/FetchingEventRelay.java +++ b/src/share/classes/javax/management/event/FetchingEventRelay.java @@ -39,10 +39,18 @@ import javax.management.MBeanException; import javax.management.remote.NotificationResult; /** - * This class is an implementation of the {@link EventRelay} interface. It calls + *

    This class is an implementation of the {@link EventRelay} interface. It calls * {@link EventClientDelegateMBean#fetchNotifications * fetchNotifications(String, long, int, long)} to get - * notifications and then forwards them to an {@link EventReceiver} object. + * notifications and then forwards them to an {@link EventReceiver} object.

    + * + *

    A {@code fetchExecutor} parameter can be specified when creating a + * {@code FetchingEventRelay}. That is then the {@code Executor} that will + * be used to perform the {@code fetchNotifications} operation. Only one + * job at a time will be submitted to this {@code Executor}. The behavior + * is unspecified if {@link Executor#execute} throws an exception, including + * {@link java.util.concurrent.RejectedExecutionException + * RejectedExecutionException}. * * @since JMX 2.0 */ @@ -91,7 +99,7 @@ public class FetchingEventRelay implements EventRelay { * the fetching. * * @param delegate The {@code EventClientDelegateMBean} to work with. - * @param executor Used to do the fetching. A new thread is created if + * @param fetchExecutor Used to do the fetching. A new thread is created if * {@code null}. * @throws IOException If failed to work with the {@code delegate}. * @throws MBeanException if unable to add a client to the remote @@ -101,12 +109,12 @@ public class FetchingEventRelay implements EventRelay { * @throws IllegalArgumentException If {@code delegate} is {@code null}. */ public FetchingEventRelay(EventClientDelegateMBean delegate, - Executor executor) throws IOException, MBeanException { + Executor fetchExecutor) throws IOException, MBeanException { this(delegate, DEFAULT_BUFFER_SIZE, DEFAULT_WAITING_TIMEOUT, DEFAULT_MAX_NOTIFICATIONS, - executor); + fetchExecutor); } /** @@ -120,7 +128,7 @@ public class FetchingEventRelay implements EventRelay { * @param timeout The waiting time in millseconds when fetching * notifications from an {@code EventClientDelegateMBean}. * @param maxNotifs The maximum notifications to fetch every time. - * @param executor Used to do the fetching. A new thread is created if + * @param fetchExecutor Used to do the fetching. A new thread is created if * {@code null}. * @throws IOException if failed to communicate with the {@code delegate}. * @throws MBeanException if unable to add a client to the remote @@ -133,12 +141,12 @@ public class FetchingEventRelay implements EventRelay { int bufferSize, long timeout, int maxNotifs, - Executor executor) throws IOException, MBeanException { + Executor fetchExecutor) throws IOException, MBeanException { this(delegate, bufferSize, timeout, maxNotifs, - executor, + fetchExecutor, FetchingEventForwarder.class.getName(), new Object[] {bufferSize}, new String[] {int.class.getName()}); @@ -155,7 +163,7 @@ public class FetchingEventRelay implements EventRelay { * @param timeout The waiting time in millseconds when fetching * notifications from an {@code EventClientDelegateMBean}. * @param maxNotifs The maximum notifications to fetch every time. - * @param executor Used to do the fetching. + * @param fetchExecutor Used to do the fetching. * @param forwarderName the class name of a user specific EventForwarder * to create in server to forward notifications to this object. The class * should be a subclass of the class {@link FetchingEventForwarder}. @@ -174,7 +182,7 @@ public class FetchingEventRelay implements EventRelay { int bufferSize, long timeout, int maxNotifs, - Executor executor, + Executor fetchExecutor, String forwarderName, Object[] params, String[] sig) throws IOException, MBeanException { @@ -184,11 +192,11 @@ public class FetchingEventRelay implements EventRelay { bufferSize+" "+ timeout+" "+ maxNotifs+" "+ - executor+" "+ + fetchExecutor+" "+ forwarderName+" "); } - if(delegate == null) { + if (delegate == null) { throw new NullPointerException("Null EventClientDelegateMBean!"); } @@ -212,16 +220,16 @@ public class FetchingEventRelay implements EventRelay { this.timeout = timeout; this.maxNotifs = maxNotifs; - if (executor == null) { - ScheduledThreadPoolExecutor stpe = new ScheduledThreadPoolExecutor(1, - daemonThreadFactory); - stpe.setKeepAliveTime(1, TimeUnit.SECONDS); - stpe.allowCoreThreadTimeOut(true); - executor = stpe; - this.defaultExecutor = stpe; + if (fetchExecutor == null) { + ScheduledThreadPoolExecutor executor = + new ScheduledThreadPoolExecutor(1, daemonThreadFactory); + executor.setKeepAliveTime(1, TimeUnit.SECONDS); + executor.allowCoreThreadTimeOut(true); + fetchExecutor = executor; + this.defaultExecutor = executor; } else this.defaultExecutor = null; - this.executor = executor; + this.fetchExecutor = fetchExecutor; startSequenceNumber = 0; fetchingJob = new MyJob(); @@ -258,7 +266,7 @@ public class FetchingEventRelay implements EventRelay { private class MyJob extends RepeatedSingletonJob { public MyJob() { - super(executor); + super(fetchExecutor); } public boolean isSuspended() { @@ -368,7 +376,7 @@ public class FetchingEventRelay implements EventRelay { private String clientId; private boolean stopped = false; - private final Executor executor; + private final Executor fetchExecutor; private final ExecutorService defaultExecutor; private final MyJob fetchingJob; diff --git a/src/share/classes/javax/management/event/package-info.java b/src/share/classes/javax/management/event/package-info.java index c4c7dbed63dd1ae7e9cb302ebd4d96771bc1ad2f..728b095139e339b61358197e6a961a6de0b42c49 100644 --- a/src/share/classes/javax/management/event/package-info.java +++ b/src/share/classes/javax/management/event/package-info.java @@ -83,8 +83,8 @@ * javax.management.event.EventClientDelegateMBean EventClientDelegateMBean} * must be registered in the MBean Server, or the connector server must * be configured to simulate the existence of this MBean, for example - * using {@link javax.management.event.EventClientDelegate#newForwarder() - * EventClientDelegate.newForwarder()}. The standard RMI connector is so + * using {@link javax.management.event.EventClientDelegate#newForwarder + * EventClientDelegate.newForwarder}. The standard RMI connector is so * configured by default. The {@code EventClientDelegateMBean} documentation * has further details.

    * diff --git a/src/share/classes/javax/management/loading/DefaultLoaderRepository.java b/src/share/classes/javax/management/loading/DefaultLoaderRepository.java index 0d514dd780a80e9b12fa91e0579a218127b8514d..15a203c2767a05f01cdd850c1e445b8289867ce7 100644 --- a/src/share/classes/javax/management/loading/DefaultLoaderRepository.java +++ b/src/share/classes/javax/management/loading/DefaultLoaderRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -69,7 +69,7 @@ public class DefaultLoaderRepository { * @exception ClassNotFoundException The specified class could not be * found. */ - public static Class loadClass(String className) + public static Class loadClass(String className) throws ClassNotFoundException { MBEANSERVER_LOGGER.logp(Level.FINEST, DefaultLoaderRepository.class.getName(), @@ -93,7 +93,7 @@ public class DefaultLoaderRepository { * @exception ClassNotFoundException The specified class could not be * found. */ - public static Class loadClassWithout(ClassLoader loader, + public static Class loadClassWithout(ClassLoader loader, String className) throws ClassNotFoundException { MBEANSERVER_LOGGER.logp(Level.FINEST, @@ -102,12 +102,11 @@ public class DefaultLoaderRepository { return load(loader, className); } - private static Class load(ClassLoader without, String className) + private static Class load(ClassLoader without, String className) throws ClassNotFoundException { - final List mbsList = MBeanServerFactory.findMBeanServer(null); + final List mbsList = MBeanServerFactory.findMBeanServer(null); - for (Iterator it = mbsList.iterator(); it.hasNext(); ) { - MBeanServer mbs = (MBeanServer) it.next(); + for (MBeanServer mbs : mbsList) { ClassLoaderRepository clr = mbs.getClassLoaderRepository(); try { return clr.loadClassWithout(without, className); diff --git a/src/share/classes/javax/management/loading/MLet.java b/src/share/classes/javax/management/loading/MLet.java index d6540591e9843c244480dd0565d359f5248593ea..ffc5ce0afa1b05333f682d8c407d113997ffb925 100644 --- a/src/share/classes/javax/management/loading/MLet.java +++ b/src/share/classes/javax/management/loading/MLet.java @@ -1165,9 +1165,10 @@ public class MLet extends java.net.URLClassLoader file.deleteOnExit(); FileOutputStream fileOutput = new FileOutputStream(file); try { - int c; - while ((c = is.read()) != -1) { - fileOutput.write(c); + byte[] buf = new byte[4096]; + int n; + while ((n = is.read(buf)) >= 0) { + fileOutput.write(buf, 0, n); } } finally { fileOutput.close(); @@ -1291,7 +1292,7 @@ public class MLet extends java.net.URLClassLoader if (c != null) { try { Constructor cons = - c.getConstructor(new Class[] {String.class}); + c.getConstructor(String.class); Object[] oo = new Object[1]; oo[0]=param; return(cons.newInstance(oo)); diff --git a/src/share/classes/javax/management/loading/MLetObjectInputStream.java b/src/share/classes/javax/management/loading/MLetObjectInputStream.java index 8f9ea4cc69a6fbfe0a86cb215dd8e58b188bc255..b4e5a1ef333333c572363352acb971631276aabd 100644 --- a/src/share/classes/javax/management/loading/MLetObjectInputStream.java +++ b/src/share/classes/javax/management/loading/MLetObjectInputStream.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -55,30 +55,30 @@ class MLetObjectInputStream extends ObjectInputStream { this.loader = loader; } - private Class primitiveType(char c) { + private Class primitiveType(char c) { switch(c) { - case 66: /* 'B' */ + case 'B': return Byte.TYPE; - case 67: /* 'C' */ + case 'C': return Character.TYPE; - case 68: /* 'D' */ + case 'D': return Double.TYPE; - case 70: /* 'F' */ + case 'F': return Float.TYPE; - case 73: /* 'I' */ + case 'I': return Integer.TYPE; - case 74: /* 'J' */ + case 'J': return Long.TYPE; - case 83: /* 'S' */ + case 'S': return Short.TYPE; - case 90: /* 'Z' */ + case 'Z': return Boolean.TYPE; } return null; @@ -87,14 +87,15 @@ class MLetObjectInputStream extends ObjectInputStream { /** * Use the given ClassLoader rather than using the system class */ - protected Class resolveClass(ObjectStreamClass objectstreamclass) + @Override + protected Class resolveClass(ObjectStreamClass objectstreamclass) throws IOException, ClassNotFoundException { String s = objectstreamclass.getName(); if (s.startsWith("[")) { int i; for (i = 1; s.charAt(i) == '['; i++); - Class class1; + Class class1; if (s.charAt(i) == 'L') { class1 = loader.loadClass(s.substring(i + 1, s.length() - 1)); } else { diff --git a/src/share/classes/javax/management/modelmbean/DescriptorSupport.java b/src/share/classes/javax/management/modelmbean/DescriptorSupport.java index 66b8fec8b9abce9ae840a88756a4394bdedcb1ad..aa364c226ddebe3c09aa205376d1e28302bc9f70 100644 --- a/src/share/classes/javax/management/modelmbean/DescriptorSupport.java +++ b/src/share/classes/javax/management/modelmbean/DescriptorSupport.java @@ -229,9 +229,10 @@ public class DescriptorSupport init(inDescr.descriptorMap); } - /** - *

    Descriptor constructor taking an XML String.

    + *

    Descriptor constructor taking an XML String or a + * fieldName=fieldValue format String. The String parameter is + * parsed as XML if it begins with a '<' character.

    * *

    The format of the XML string is not defined, but an * implementation must ensure that the string returned by @@ -244,17 +245,20 @@ public class DescriptorSupport * programmer will have to reset or convert these fields * correctly.

    * - * @param inStr An XML-formatted string used to populate this - * Descriptor. The format is not defined, but any + * @param inStr An XML-format or a fieldName=fieldValue formatted string + * used to populate this Descriptor. The XML format is not defined, but any * implementation must ensure that the string returned by * method {@link #toXMLString toXMLString} on an existing * descriptor can be used to instantiate an equivalent * descriptor when instantiated using this constructor. * - * @exception RuntimeOperationsException If the String inStr - * passed in parameter is null + * @exception RuntimeOperationsException If the String inStr passed in + * parameter is null or, when it is not an XML string, if the field name or + * field value is illegal. If inStr is not an XML string then it must + * contain an "=". "fieldValue", "fieldName", and "fieldValue" are illegal. + * FieldName cannot be empty. "fieldName=" will cause the value to be empty. * @exception XMLParseException XML parsing problem while parsing - * the input String + * the XML-format input String * @exception MBeanException Wraps a distributed communication Exception. */ /* At some stage we should rewrite this code to be cleverer. Using @@ -283,14 +287,27 @@ public class DescriptorSupport throw new RuntimeOperationsException(iae, msg); } + // parse parameter string into structures + + init(null); + + if(!inStr.startsWith("<")) { + parseNamesValues(inStr); + if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) { + MODELMBEAN_LOGGER.logp(Level.FINEST, + DescriptorSupport.class.getName(), + "Descriptor(name=value)", "Exit"); + } + return; + } + final String lowerInStr = inStr.toLowerCase(); if (!lowerInStr.startsWith("") || !lowerInStr.endsWith("")) { throw new XMLParseException("No , pair"); } - // parse xmlstring into structures - init(null); + // create dummy descriptor: should have same size // as number of fields in xmlstring // loop through structures and put them in descriptor @@ -454,6 +471,16 @@ public class DescriptorSupport init(null); + parseNamesValues(fields); + + if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) { + MODELMBEAN_LOGGER.logp(Level.FINEST, + DescriptorSupport.class.getName(), + "Descriptor(String... fields)", "Exit"); + } + } + + private void parseNamesValues(String... fields) { for (int i=0; i < fields.length; i++) { if ((fields[i] == null) || (fields[i].equals(""))) { continue; @@ -495,11 +522,6 @@ public class DescriptorSupport setField(fieldName,fieldValue); } - if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) { - MODELMBEAN_LOGGER.logp(Level.FINEST, - DescriptorSupport.class.getName(), - "Descriptor(String... fields)", "Exit"); - } } private void init(Map initMap) { @@ -589,7 +611,7 @@ public class DescriptorSupport int numberOfEntries = descriptorMap.size(); String[] responseFields = new String[numberOfEntries]; - Set returnedSet = descriptorMap.entrySet(); + Set> returnedSet = descriptorMap.entrySet(); int i = 0; @@ -598,8 +620,9 @@ public class DescriptorSupport DescriptorSupport.class.getName(), "getFields()", "Returning " + numberOfEntries + " fields"); } - for (Iterator iter = returnedSet.iterator(); iter.hasNext(); i++) { - Map.Entry currElement = (Map.Entry) iter.next(); + for (Iterator> iter = returnedSet.iterator(); + iter.hasNext(); i++) { + Map.Entry currElement = iter.next(); if (currElement == null) { if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) { @@ -642,7 +665,7 @@ public class DescriptorSupport int numberOfEntries = descriptorMap.size(); String[] responseFields = new String[numberOfEntries]; - Set returnedSet = descriptorMap.entrySet(); + Set> returnedSet = descriptorMap.entrySet(); int i = 0; @@ -653,8 +676,9 @@ public class DescriptorSupport "Returning " + numberOfEntries + " fields"); } - for (Iterator iter = returnedSet.iterator(); iter.hasNext(); i++) { - Map.Entry currElement = (Map.Entry) iter.next(); + for (Iterator> iter = returnedSet.iterator(); + iter.hasNext(); i++) { + Map.Entry currElement = iter.next(); if (( currElement == null ) || (currElement.getKey() == null)) { if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) { @@ -700,9 +724,8 @@ public class DescriptorSupport } if (fieldNames == null) { - for (Iterator iter = descriptorMap.values().iterator(); - iter.hasNext(); i++) - responseFields[i] = iter.next(); + for (Object value : descriptorMap.values()) + responseFields[i++] = value; } else { for (i=0; i < fieldNames.length; i++) { if ((fieldNames[i] == null) || (fieldNames[i].equals(""))) { @@ -883,9 +906,9 @@ public class DescriptorSupport * not a String with value "t", "f", "true", "false". These String * values must not be case sensitive. *
  • visibility fieldName, if defined, is null, or not a - * Numeric String or a not Numeric Value >= 1 and <= 4 + * Numeric String or a not Numeric Value >= 1 and <= 4 *
  • severity fieldName, if defined, is null, or not a Numeric - * String or not a Numeric Value >= 0 and <= 6
    + * String or not a Numeric Value >= 0 and <= 6
    *
  • persistPolicy fieldName, if defined, is null, or not one of * the following strings:
    * "OnUpdate", "OnTimer", "NoMoreOftenThan", "OnUnregister", "Always", @@ -904,7 +927,7 @@ public class DescriptorSupport } // verify that the descriptor is valid, by iterating over each field... - Set returnedSet = descriptorMap.entrySet(); + Set> returnedSet = descriptorMap.entrySet(); if (returnedSet == null) { // null descriptor, not valid if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) { @@ -925,9 +948,7 @@ public class DescriptorSupport // According to the descriptor type we validate the fields contained - for (Iterator iter = returnedSet.iterator(); iter.hasNext();) { - Map.Entry currElement = (Map.Entry) iter.next(); - + for (Map.Entry currElement : returnedSet) { if (currElement != null) { if (currElement.getValue() != null) { // validate the field valued... @@ -1083,10 +1104,9 @@ public class DescriptorSupport */ public synchronized String toXMLString() { final StringBuilder buf = new StringBuilder(""); - Set returnedSet = descriptorMap.entrySet(); - for (Iterator iter = returnedSet.iterator(); iter.hasNext(); ) { - final Map.Entry currElement = (Map.Entry) iter.next(); - final String name = currElement.getKey().toString(); + Set> returnedSet = descriptorMap.entrySet(); + for (Map.Entry currElement : returnedSet) { + final String name = currElement.getKey(); Object value = currElement.getValue(); String valueString = null; /* Set valueString to non-null if and only if this is a string that @@ -1256,7 +1276,7 @@ public class DescriptorSupport } final Class c = Class.forName(className, false, contextClassLoader); - constr = c.getConstructor(new Class[] {String.class}); + constr = c.getConstructor(new Class[] {String.class}); } catch (Exception e) { throw new XMLParseException(e, "Cannot parse value: <" + s + ">"); diff --git a/src/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java b/src/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java index cc2ec0b7a415bae9dcb7a77f9fb230f9a4b14656..9ee9a6b46352b2c3365748b81303357aaca1d037 100644 --- a/src/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java +++ b/src/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java @@ -39,7 +39,6 @@ import java.io.ObjectOutputStream; import java.io.ObjectStreamField; import java.lang.reflect.Method; import java.security.AccessController; -import java.security.PrivilegedAction; import java.util.logging.Level; import javax.management.Descriptor; @@ -49,32 +48,56 @@ import javax.management.MBeanAttributeInfo; import javax.management.RuntimeOperationsException; /** - * The ModelMBeanAttributeInfo object describes an attribute of the ModelMBean. + *

    The ModelMBeanAttributeInfo object describes an attribute of the ModelMBean. * It is a subclass of MBeanAttributeInfo with the addition of an associated Descriptor - * and an implementation of the DescriptorAccess interface. - *

    - * The fields in the descriptor are defined, but not limited to, the following:

    - *

    - * name           : attribute name
    - * descriptorType : must be "attribute"
    - * value          : current value for attribute
    - * default        : default value for attribute
    - * displayName    : name of attribute to be used in displays
    - * getMethod      : name of operation descriptor for get method
    - * setMethod      : name of operation descriptor for set method
    - * protocolMap    : object which implements the Descriptor interface: mappings
    - *                  must be appropriate for the attribute
    - *                  and entries can be updated or augmented at runtime.
    - * persistPolicy  : OnUpdate|OnTimer|NoMoreOftenThan|OnUnregister|Always|Never
    - * persistPeriod  : seconds - frequency of persist cycle. Used when persistPolicy
    - *                  is "OnTimer" or "NoMoreOftenThan".
    - * currencyTimeLimit : how long value is valid, <0 never, =0 always, >0 seconds
    - * lastUpdatedTimeStamp : when value was set
    - * visibility     : 1-4 where 1: always visible, 4: rarely visible
    - * presentationString : xml formatted string to allow presentation of data
    - * 
    - * The default descriptor contains the name, descriptorType and displayName fields. - * The default value of the name and displayName fields is the name of the attribute. + * and an implementation of the DescriptorAccess interface.

    + * + *

    + * The fields in the descriptor are defined, but not limited to, the following. + * Note that when the Type in this table is Number, a String that is the decimal + * representation of a Long can also be used.

    + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
    NameTypeMeaning
    nameStringAttribute name.
    descriptorTypeStringMust be "attribute".
    valueObjectCurrent (cached) value for attribute.
    defaultObjectDefault value for attribute.
    displayNameStringName of attribute to be used in displays.
    getMethodStringName of operation descriptor for get method.
    setMethodStringName of operation descriptor for set method.
    protocolMapDescriptorSee the section "Protocol Map Support" in the JMX specification + * document. Mappings must be appropriate for the attribute and entries + * can be updated or augmented at runtime.
    persistPolicyStringOne of: OnUpdate|OnTimer|NoMoreOftenThan|OnUnregister|Always|Never. + * See the section "MBean Descriptor Fields" in the JMX specification + * document.
    persistPeriodNumberFrequency of persist cycle in seconds. Used when persistPolicy is + * "OnTimer" or "NoMoreOftenThan".
    currencyTimeLimitNumberHow long value is valid: <0 never, + * =0 always, >0 seconds.
    lastUpdatedTimeStampNumberWhen value was set.
    visibilityNumber1-4 where 1: always visible, 4: rarely visible.
    presentationStringStringXML formatted string to allow presentation of data.
    + * + *

    The default descriptor contains the name, descriptorType and displayName + * fields. The default value of the name and displayName fields is the name of + * the attribute.

    * *

    Note: because of inconsistencies in previous versions of * this specification, it is recommended not to use negative or zero diff --git a/src/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java b/src/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java index a6e7ceab7374c5a61abc2324a4b4ee67e6b066f4..ecf8ecf002bdd7a4a390b969baca9d09d4656de4 100644 --- a/src/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java +++ b/src/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java @@ -49,22 +49,33 @@ import javax.management.MBeanParameterInfo; import javax.management.RuntimeOperationsException; /** - * The ModelMBeanConstructorInfo object describes a constructor of the ModelMBean. + *

    The ModelMBeanConstructorInfo object describes a constructor of the ModelMBean. * It is a subclass of MBeanConstructorInfo with the addition of an associated Descriptor - * and an implementation of the DescriptorAccess interface. - *

    - *

    - * The fields in the descriptor are defined, but not limited to, the following: 

    - * name : constructor name - * descriptorType : must be "operation" - * role : must be "constructor" - * displayName : human readable name of constructor - * visibility : 1-4 where 1: always visible 4: rarely visible - * presentationString : xml formatted string to describe how to present operation - *

    + * and an implementation of the DescriptorAccess interface.

    + * + *

    + * The fields in the descriptor are defined, but not limited to, the following. + * Note that when the Type in this table is Number, a String that is the decimal + * representation of a Long can also be used.

    + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
    NameTypeMeaning
    nameStringConstructor name.
    descriptorTypeStringMust be "operation".
    roleStringMust be "constructor".
    displayNameStringHuman readable name of constructor.
    visibilityNumber1-4 where 1: always visible 4: rarely visible.
    presentationStringStringXML formatted string to describe how to present operation
    * *

    The {@code persistPolicy} and {@code currencyTimeLimit} fields - * are meaningless for constructors, but are not considered invalid. + * are meaningless for constructors, but are not considered invalid.

    * *

    The default descriptor will have the {@code name}, {@code * descriptorType}, {@code displayName} and {@code role} fields. The @@ -152,7 +163,7 @@ public class ModelMBeanConstructorInfo * describing the MBean constructor. */ public ModelMBeanConstructorInfo(String description, - Constructor constructorMethod) + Constructor constructorMethod) { super(description, constructorMethod); if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) { @@ -194,7 +205,7 @@ public class ModelMBeanConstructorInfo */ public ModelMBeanConstructorInfo(String description, - Constructor constructorMethod, + Constructor constructorMethod, Descriptor descriptor) { diff --git a/src/share/classes/javax/management/modelmbean/ModelMBeanInfo.java b/src/share/classes/javax/management/modelmbean/ModelMBeanInfo.java index 367e616eb09b6b051fe79adf35ad3e5db4c2784d..79655741b52e08e633251113dd8db0d85ab24548 100644 --- a/src/share/classes/javax/management/modelmbean/ModelMBeanInfo.java +++ b/src/share/classes/javax/management/modelmbean/ModelMBeanInfo.java @@ -1,5 +1,5 @@ /* - * Portions Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved. + * Portions Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -156,29 +156,55 @@ public interface ModelMBeanInfo /** - * Returns the ModelMBean's descriptor which contains MBean wide policies. This descriptor contains - * metadata about the MBean and default policies for persistence and caching. - *

    - * The fields in the descriptor are defined, but not limited to, the following: - *

    -     * name           : MBean name
    -     * descriptorType : must be "mbean"
    -     * displayName    : name of attribute to be used in displays
    -     * persistPolicy  : OnUpdate|OnTimer|NoMoreOftenThan|OnUnregister|Always|Never
    -     * persistLocation : The fully qualified directory name where the MBean should be persisted (if appropriate)
    -     * persistFile    : File name into which the MBean should be persisted
    -     * persistPeriod  : seconds - frequency of persist cycle for OnTime and NoMoreOftenThan PersistPolicy
    -     * currencyTimeLimit : how long value is valid, <0 never, =0 always, >0 seconds
    -     * log            : where t: log all notifications f: log no notifications
    -     * logfile        : fully qualified filename to log events to
    -     * visibility     : 1-4 where 1: always visible 4: rarely visible
    -     * export         : name to be used to export/expose this MBean so that it is findable by
    -     *                  other JMX Agents.
    -     * presentationString : xml formatted string to allow presentation of data to be associated with the MBean.
    -     * 
    + *

    Returns the ModelMBean's descriptor which contains MBean wide + * policies. This descriptor contains metadata about the MBean and default + * policies for persistence and caching.

    + * + *

    + * The fields in the descriptor are defined, but not limited to, the + * following. Note that when the Type in this table is Number, a String + * that is the decimal representation of a Long can also be used.

    + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
    NameTypeMeaning
    nameStringMBean name.
    descriptorTypeStringMust be "mbean".
    displayNameStringName of MBean to be used in displays.
    persistPolicyStringOne of: OnUpdate|OnTimer|NoMoreOftenThan|OnUnregister|Always|Never. + * See the section "MBean Descriptor Fields" in the JMX specification + * document.
    persistLocationStringThe fully qualified directory name where the MBean should be + * persisted (if appropriate).
    persistFileStringFile name into which the MBean should be persisted.
    persistPeriodNumberFrequency of persist cycle in seconds, for OnTime and + * NoMoreOftenThan PersistPolicy
    currencyTimeLimitNumberHow long cached value is valid: <0 never, =0 always, + * >0 seconds.
    logStringt: log all notifications, f: log no notifications.
    logfileStringFully qualified filename to log events to.
    visibilityNumber1-4 where 1: always visible 4: rarely visible.
    exportStringName to be used to export/expose this MBean so that it is + * findable by other JMX Agents.
    presentationStringStringXML formatted string to allow presentation of data to be + * associated with the MBean.
    + * *

    * The default descriptor is: name=className,descriptorType="mbean", displayName=className, - * persistPolicy="never",log="F",export="F",visibility="1" + * persistPolicy="never",log="F",visibility="1" * If the descriptor does not contain all these fields, they will be added with these default values. * *

    Note: because of inconsistencies in previous versions of @@ -207,7 +233,7 @@ public interface ModelMBeanInfo * does a complete replacement of the descriptor, no merging is done. If the descriptor to * set to is null then the default descriptor will be created. * The default descriptor is: name=className,descriptorType="mbean", displayName=className, - * persistPolicy="never",log="F",export="F",visibility="1" + * persistPolicy="never",log="F",visibility="1" * If the descriptor does not contain all these fields, they will be added with these default values. * * See {@link #getMBeanDescriptor getMBeanDescriptor} method javadoc for description of valid field names. diff --git a/src/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java b/src/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java index 52f1317db816bce840a3944a8b7f6c9b2f11a1db..4b637ee08f8cf187ff944e8d8adee2a95f806419 100644 --- a/src/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java +++ b/src/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java @@ -46,34 +46,46 @@ import javax.management.MBeanNotificationInfo; import javax.management.RuntimeOperationsException; /** - * The ModelMBeanNotificationInfo object describes a notification emitted + *

    The ModelMBeanNotificationInfo object describes a notification emitted * by a ModelMBean. * It is a subclass of MBeanNotificationInfo with the addition of an - * associated Descriptor and an implementation of the Descriptor interface. - *

    - * The fields in the descriptor are defined, but not limited to, - * the following: - *

    - * name           : notification name
    - * descriptorType : must be "notification"
    - * severity       : 0-6 where 0: unknown; 1: non-recoverable;
    - *                  2: critical, failure; 3: major, severe;
    - *                  4: minor, marginal, error; 5: warning;
    - *                  6: normal, cleared, informative
    - * messageID      : unique key for message text (to allow translation,
    - *                  analysis)
    - * messageText    : text of notification
    - * log            : T - log message F - do not log message
    - * logfile        : string fully qualified file name appropriate for
    - *                  operating system
    - * visibility     : 1-4 where 1: always visible 4: rarely visible
    - * presentationString : xml formatted string to allow presentation of data
    - * 
    - * The default descriptor contains the name, descriptorType, + * associated Descriptor and an implementation of the Descriptor interface.

    + * + *

    + * The fields in the descriptor are defined, but not limited to, the following. + * Note that when the Type in this table is Number, a String that is the decimal + * representation of a Long can also be used.

    + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
    NameTypeMeaning
    nameStringNotification name.
    descriptorTypeStringMust be "notification".
    severityNumber0-6 where 0: unknown; 1: non-recoverable; + * 2: critical, failure; 3: major, severe; + * 4: minor, marginal, error; 5: warning; + * 6: normal, cleared, informative
    messageIDStringUnique key for message text (to allow translation, analysis).
    messageTextStringText of notification.
    logStringT - log message, F - do not log message.
    logfileStringfully qualified file name appropriate for operating system.
    visibilityNumber1-4 where 1: always visible 4: rarely visible.
    presentationStringStringXML formatted string to allow presentation of data.
    + * + *

    The default descriptor contains the name, descriptorType, * displayName and severity(=6) fields. The default value of the name * and displayName fields is the name of the Notification class (as * specified by the name parameter of the - * ModelMBeanNotificationInfo constructor). + * ModelMBeanNotificationInfo constructor).

    * *

    The serialVersionUID of this class is -7445681389570207141L. * diff --git a/src/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java b/src/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java index 2ed992240671802c1481b72da731d944b914ecac..6ebea49954dc0fc2619e615bc6693c77f06fe116 100644 --- a/src/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java +++ b/src/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java @@ -49,27 +49,48 @@ import javax.management.MBeanParameterInfo; import javax.management.RuntimeOperationsException; /** - * The ModelMBeanOperationInfo object describes a management operation of the ModelMBean. - * It is a subclass of MBeanOperationInfo with the addition of an associated Descriptor - * and an implementation of the DescriptorAccess interface. - *

    - *

    - * The fields in the descriptor are defined, but not limited to, the following:
    - * name           : operation name
    - * descriptorType : must be "operation"
    - * class          : class where method is defined (fully qualified)
    - * role           : must be "operation", "getter", or "setter
    - * targetObject   : object on which to execute this method
    - * targetType     : type of object reference for targetObject. Can be:
    - *                  ObjectReference | Handle | EJBHandle | IOR | RMIReference.
    - * value          : cached value for operation
    - * currencyTimeLimit : how long cached value is valid
    - * lastUpdatedTimeStamp : when cached value was set
    - * visibility            : 1-4 where 1: always visible 4: rarely visible
    - * presentationString :  xml formatted string to describe how to present operation
    - * 
    - * The default descriptor will have name, descriptorType, displayName and role fields set. - * The default value of the name and displayName fields is the operation name. + *

    The ModelMBeanOperationInfo object describes a management operation of + * the ModelMBean. It is a subclass of MBeanOperationInfo with the addition + * of an associated Descriptor and an implementation of the DescriptorAccess + * interface.

    + * + *

    + * The fields in the descriptor are defined, but not limited to, the following. + * Note that when the Type in this table is Number, a String that is the decimal + * representation of a Long can also be used.

    + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
    NameTypeMeaning
    nameStringOperation name.
    descriptorTypeStringMust be "operation".
    classStringClass where method is defined (fully qualified).
    roleStringMust be "operation", "getter", or "setter".
    targetObjectObjectObject on which to execute this method.
    targetTypeStringtype of object reference for targetObject. Can be: + * ObjectReference | Handle | EJBHandle | IOR | RMIReference.
    valueObjectCached value for operation.
    displayNameStringHuman readable display name of the operation.
    currencyTimeLimitNumberHow long cached value is valid.
    lastUpdatedTimeStampNumberWhen cached value was set.
    visibilityNumber1-4 where 1: always visible 4: rarely visible.
    presentationStringStringXML formatted string to describe how to present operation
    + * + *

    The default descriptor will have name, descriptorType, displayName and + * role fields set. The default value of the name and displayName fields is + * the operation name.

    * *

    Note: because of inconsistencies in previous versions of * this specification, it is recommended not to use negative or zero diff --git a/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java b/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java index 7d99fba0021ca50f1df2e2f4a8e61d6943adf62f..b9bec5ecc869eb6e2de5ba04cf9b5742935adfd2 100644 --- a/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java +++ b/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java @@ -1074,7 +1074,7 @@ public class RequiredModelMBean } } - final Class targetClass; + final Class targetClass; if (opClassName != null) { try { @@ -1126,20 +1126,20 @@ public class RequiredModelMBean "resolving " + targetClass.getName() + "." + opMethodName); } - final Class[] argClasses; + final Class[] argClasses; if (sig == null) argClasses = null; else { final ClassLoader targetClassLoader = targetClass.getClassLoader(); - argClasses = new Class[sig.length]; + argClasses = new Class[sig.length]; for (int i = 0; i < sig.length; i++) { if (tracing) { MODELMBEAN_LOGGER.logp(Level.FINER, RequiredModelMBean.class.getName(),"resolveMethod", "resolve type " + sig[i]); } - argClasses[i] = (Class) primitiveClassMap.get(sig[i]); + argClasses[i] = (Class) primitiveClassMap.get(sig[i]); if (argClasses[i] == null) { try { argClasses[i] = @@ -1170,7 +1170,7 @@ public class RequiredModelMBean /* Map e.g. "int" to int.class. Goodness knows how many time this particular wheel has been reinvented. */ - private static final Class[] primitiveClasses = { + private static final Class[] primitiveClasses = { int.class, long.class, boolean.class, double.class, float.class, short.class, byte.class, char.class, }; @@ -1178,7 +1178,7 @@ public class RequiredModelMBean new HashMap>(); static { for (int i = 0; i < primitiveClasses.length; i++) { - final Class c = primitiveClasses[i]; + final Class c = primitiveClasses[i]; primitiveClassMap.put(c.getName(), c); } } @@ -1645,7 +1645,7 @@ public class RequiredModelMBean try { ClassLoader cl = response.getClass().getClassLoader(); - Class c = Class.forName(respType, true, cl); + Class c = Class.forName(respType, true, cl); subtype = c.isInstance(response); } catch (Exception e) { subtype = false; @@ -1904,7 +1904,7 @@ public class RequiredModelMBean if (attrSetMethod == null) { if (attrValue != null) { try { - final Class clazz = loadClass(attrType); + final Class clazz = loadClass(attrType); if (! clazz.isInstance(attrValue)) throw new InvalidAttributeValueException(clazz.getName() + " expected, " + @@ -2044,8 +2044,7 @@ public class RequiredModelMBean final AttributeList responseList = new AttributeList(); // Go through the list of attributes - for (Iterator i = attributes.iterator(); i.hasNext();) { - final Attribute attr = (Attribute) i.next(); + for (Attribute attr : attributes.asList()) { try { setAttribute(attr); responseList.add(attr); @@ -2799,7 +2798,7 @@ public class RequiredModelMBean return MBeanServerFactory.getClassLoaderRepository(server); } - private Class loadClass(String className) + private Class loadClass(String className) throws ClassNotFoundException { try { return Class.forName(className); diff --git a/src/share/classes/javax/management/monitor/CounterMonitor.java b/src/share/classes/javax/management/monitor/CounterMonitor.java index b592b171b629df5022bda87dd03b51058183667b..b27e57f62273e490716936b17aaffea2d39fda9d 100644 --- a/src/share/classes/javax/management/monitor/CounterMonitor.java +++ b/src/share/classes/javax/management/monitor/CounterMonitor.java @@ -265,6 +265,7 @@ public class CounterMonitor extends Monitor implements CounterMonitorMBean { * @return The derived gauge of the specified object. * */ + @Override public synchronized Number getDerivedGauge(ObjectName object) { return (Number) super.getDerivedGauge(object); } @@ -280,6 +281,7 @@ public class CounterMonitor extends Monitor implements CounterMonitorMBean { * @return The derived gauge timestamp of the specified object. * */ + @Override public synchronized long getDerivedGaugeTimeStamp(ObjectName object) { return super.getDerivedGaugeTimeStamp(object); } @@ -595,6 +597,7 @@ public class CounterMonitor extends Monitor implements CounterMonitorMBean { * name of the Java class of the notification and the notification * types sent by the counter monitor. */ + @Override public MBeanNotificationInfo[] getNotificationInfo() { return notifsInfo; } diff --git a/src/share/classes/javax/management/monitor/GaugeMonitor.java b/src/share/classes/javax/management/monitor/GaugeMonitor.java index 7077f38cee1e3b46a15bdddf7270188a4c0a356b..ab71f10af4be5afe1c8a0fddaae9b75b11f1998b 100644 --- a/src/share/classes/javax/management/monitor/GaugeMonitor.java +++ b/src/share/classes/javax/management/monitor/GaugeMonitor.java @@ -258,6 +258,7 @@ public class GaugeMonitor extends Monitor implements GaugeMonitorMBean { * @return The derived gauge of the specified object. * */ + @Override public synchronized Number getDerivedGauge(ObjectName object) { return (Number) super.getDerivedGauge(object); } @@ -273,6 +274,7 @@ public class GaugeMonitor extends Monitor implements GaugeMonitorMBean { * @return The derived gauge timestamp of the specified object. * */ + @Override public synchronized long getDerivedGaugeTimeStamp(ObjectName object) { return super.getDerivedGaugeTimeStamp(object); } @@ -477,6 +479,7 @@ public class GaugeMonitor extends Monitor implements GaugeMonitorMBean { * name of the Java class of the notification and the notification * types sent by the gauge monitor. */ + @Override public MBeanNotificationInfo[] getNotificationInfo() { return notifsInfo; } diff --git a/src/share/classes/javax/management/monitor/Monitor.java b/src/share/classes/javax/management/monitor/Monitor.java index 081c5ede4292d66f8c3b0e0bdacc76c1a53c50d0..fb3e1a476f0cfd0ef8cdc68736f097aeca92f8d6 100644 --- a/src/share/classes/javax/management/monitor/Monitor.java +++ b/src/share/classes/javax/management/monitor/Monitor.java @@ -34,7 +34,6 @@ import java.security.AccessController; import java.security.PrivilegedAction; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.LinkedBlockingQueue; @@ -181,7 +180,7 @@ public abstract class Monitor /** * Executor Service. */ - private static final ExecutorService executor; + private static final ThreadPoolExecutor executor; static { final String maximumPoolSizeSysProp = "jmx.x.monitor.maximum.pool.size"; final String maximumPoolSizeStr = AccessController.doPrivileged( @@ -218,7 +217,7 @@ public abstract class Monitor TimeUnit.SECONDS, new LinkedBlockingQueue(), new DaemonThreadFactory("Executor")); - ((ThreadPoolExecutor)executor).allowCoreThreadTimeOut(true); + executor.allowCoreThreadTimeOut(true); } /** @@ -517,7 +516,7 @@ public abstract class Monitor // ObservedObject o = createObservedObject(object); o.setAlreadyNotified(RESET_FLAGS_ALREADY_NOTIFIED); - o.setDerivedGauge(null); + o.setDerivedGauge(INTEGER_ZERO); o.setDerivedGaugeTimeStamp(System.currentTimeMillis()); observedObjects.add(o); diff --git a/src/share/classes/javax/management/monitor/MonitorNotification.java b/src/share/classes/javax/management/monitor/MonitorNotification.java index 744d7434f1f531e1b569ec3091b1880eb0074188..f0d65c6da176c00d1e86047b594877a9edad91e0 100644 --- a/src/share/classes/javax/management/monitor/MonitorNotification.java +++ b/src/share/classes/javax/management/monitor/MonitorNotification.java @@ -201,7 +201,7 @@ public class MonitorNotification extends javax.management.Notification { * @param derGauge The derived gauge. * @param trigger The threshold/string (depending on the monitor type) that triggered the notification. */ - MonitorNotification(String type, Object source, long sequenceNumber, long timeStamp, String msg, + public MonitorNotification(String type, Object source, long sequenceNumber, long timeStamp, String msg, ObjectName obsObj, String obsAtt, Object derGauge, Object trigger) { super(type, source, sequenceNumber, timeStamp, msg); diff --git a/src/share/classes/javax/management/namespace/JMXDomain.java b/src/share/classes/javax/management/namespace/JMXDomain.java index bff3c1370624db19ab97825f470253407c1d00c2..ca108bf126b3b90d2ff24b88312c7cdcd892b7c2 100644 --- a/src/share/classes/javax/management/namespace/JMXDomain.java +++ b/src/share/classes/javax/management/namespace/JMXDomain.java @@ -35,7 +35,6 @@ import static javax.management.namespace.JMXNamespaces.NAMESPACE_SEPARATOR; import javax.management.InstanceNotFoundException; import javax.management.MBeanServer; import javax.management.MBeanServerDelegate; -import javax.management.MalformedObjectNameException; import javax.management.ObjectName; /** @@ -291,12 +290,9 @@ public class JMXDomain extends JMXNamespace { public static ObjectName getDomainObjectName(String domain) { if (domain == null) return null; if (domain.contains(NAMESPACE_SEPARATOR)) - throw new IllegalArgumentException(domain); - try { - return ObjectName.getInstance(domain, "type", TYPE); - } catch (MalformedObjectNameException x) { - throw new IllegalArgumentException(domain,x); - } + throw new IllegalArgumentException("domain contains " + + NAMESPACE_SEPARATOR+": "+domain); + return ObjectName.valueOf(domain, "type", TYPE); } diff --git a/src/share/classes/javax/management/namespace/JMXNamespacePermission.java b/src/share/classes/javax/management/namespace/JMXNamespacePermission.java index 5dd012672b3ba2afe86057ea36c68f3fe9b8bcb0..62608cb061050af83c8197fe669ed6d24ad9076d 100644 --- a/src/share/classes/javax/management/namespace/JMXNamespacePermission.java +++ b/src/share/classes/javax/management/namespace/JMXNamespacePermission.java @@ -136,7 +136,8 @@ import java.security.Permission; * ** matches any number of sub namespaces * recursively, but only if used as a complete namespace path element, * as in **//b//c//D:k=v or a//**//c//D:k=v - * - see below. + * - see ObjectName documentation + * for more details. *

    * * @@ -270,38 +271,9 @@ import java.security.Permission; * *

    Note on wildcards: In an object name pattern, a path element * of exactly ** corresponds to a meta - * wildcard that will match any number of sub namespaces. Hence:

    - *
      - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
      patternmatchesdoesn't match
      **//D:k=va//D:k=v
      - * a//b//D:k=v
      - * a//b//c//D:k=v
      D:k=v
      a//**//D:k=va//b//D:k=v
      - * a//b//c//D:k=v
      b//b//c//D:k=v
      - * a//D:k=v
      - * D:k=v
      a//**//e//D:k=va//b//e//D:k=v
      - * a//b//c//e//D:k=v
      a//b//c//c//D:k=v
      - * b//b//c//e//D:k=v
      - * a//e//D:k=v
      - * e//D:k=v
      a//b**//e//D:k=va//b//e//D:k=va//b//c//e//D:k=v
      - * because in that case b**
      - * is not a meta-wildcard - and b**
      - * is thus equivalent to b*.
      - *
    + * wildcard that will match any number of sub namespaces. + * See ObjectName documentation + * for more details.

    * *

    If {@code ::} is omitted, then one of * member or object name may be omitted. diff --git a/src/share/classes/javax/management/namespace/JMXNamespaces.java b/src/share/classes/javax/management/namespace/JMXNamespaces.java index 429a9d466d6175a2f56e0f5b4d7c74d2b7fb8211..ca7244abd283d5189917987f5651cf03e45db382 100644 --- a/src/share/classes/javax/management/namespace/JMXNamespaces.java +++ b/src/share/classes/javax/management/namespace/JMXNamespaces.java @@ -26,21 +26,19 @@ package javax.management.namespace; import com.sun.jmx.defaults.JmxProperties; -import com.sun.jmx.namespace.JMXNamespaceUtils; import com.sun.jmx.namespace.ObjectNameRouter; import com.sun.jmx.namespace.serial.RewritingProcessor; import com.sun.jmx.namespace.RoutingConnectionProxy; import com.sun.jmx.namespace.RoutingServerProxy; -import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; +import javax.management.InstanceNotFoundException; import javax.management.MBeanServer; import javax.management.MBeanServerConnection; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; -import javax.management.remote.JMXConnector; /** * Static constants and utility methods to help work with @@ -68,23 +66,6 @@ public class JMXNamespaces { NAMESPACE_SEPARATOR.length(); - /** - * Returns a connector connected to a sub name space exposed through - * the parent connector. - * @param parent the parent connector. - * @param namespace the {@linkplain javax.management.namespace name space} - * to which the returned connector is - * connected. - * @return A connector connected to a sub name space exposed through - * the parent connector. - **/ - public static JMXConnector narrowToNamespace(final JMXConnector parent, - final String namespace) - throws IOException { - - return JMXNamespaceUtils.cd(parent,namespace,true); - } - /** * Creates a new {@code MBeanServerConnection} proxy on a * {@linkplain javax.management.namespace sub name space} @@ -96,15 +77,18 @@ public class JMXNamespaces { * name space} in which to narrow. * @return A new {@code MBeanServerConnection} proxy that shows the content * of that name space. - * @throws IllegalArgumentException if the name space does not exist, or - * if a proxy for that name space cannot be created. + * @throws IllegalArgumentException if either argument is null, + * or the name space does not exist, or if a proxy for that name space + * cannot be created. The {@linkplain Throwable#getCause() cause} of + * this exception will be an {@link InstanceNotFoundException} if and only + * if the name space is found not to exist. */ public static MBeanServerConnection narrowToNamespace( MBeanServerConnection parent, String namespace) { if (LOG.isLoggable(Level.FINER)) LOG.finer("Making MBeanServerConnection for: " +namespace); - return RoutingConnectionProxy.cd(parent,namespace); + return RoutingConnectionProxy.cd(parent, namespace, true); } /** @@ -120,13 +104,15 @@ public class JMXNamespaces { * of that name space. * @throws IllegalArgumentException if either argument is null, * or the name space does not exist, or if a proxy for that name space - * cannot be created. + * cannot be created. The {@linkplain Throwable#getCause() cause} of + * this exception will be an {@link InstanceNotFoundException} if and only + * if the name space is found not to exist. */ public static MBeanServer narrowToNamespace(MBeanServer parent, String namespace) { if (LOG.isLoggable(Level.FINER)) - LOG.finer("Making NamespaceServerProxy for: " +namespace); - return RoutingServerProxy.cd(parent,namespace); + LOG.finer("Making MBeanServer for: " +namespace); + return RoutingServerProxy.cd(parent, namespace, true); } /** @@ -266,7 +252,7 @@ public class JMXNamespaces { ObjectNameRouter.normalizeNamespacePath(namespace,false, true,false); try { - // We could use Util.newObjectName here - but throwing an + // We could use ObjectName.valueOf here - but throwing an // IllegalArgumentException that contains just the supplied // namespace instead of the whole ObjectName seems preferable. return ObjectName.getInstance(sourcePath+ @@ -306,17 +292,13 @@ public class JMXNamespaces { if (path == null || to == null) throw new IllegalArgumentException("Null argument"); checkTrailingSlashes(path); - try { - String prefix = path; - if (!prefix.equals("")) prefix = - ObjectNameRouter.normalizeNamespacePath( + String prefix = path; + if (!prefix.equals("")) + prefix = ObjectNameRouter.normalizeNamespacePath( prefix + NAMESPACE_SEPARATOR,false,false,false); - return to.withDomain( + return to.withDomain( ObjectNameRouter.normalizeDomain( prefix+to.getDomain(),false)); - } catch (MalformedObjectNameException x) { - throw new IllegalArgumentException(path+": "+x,x); - } } /** diff --git a/src/share/classes/javax/management/namespace/JMXRemoteNamespace.java b/src/share/classes/javax/management/namespace/JMXRemoteNamespace.java index 6958f57f2d72db7a17c99e2acb93fb058c33b1f3..1c4d29bae30cb0ae80acb68a14ae2bfa1eef8b46 100644 --- a/src/share/classes/javax/management/namespace/JMXRemoteNamespace.java +++ b/src/share/classes/javax/management/namespace/JMXRemoteNamespace.java @@ -27,10 +27,10 @@ package javax.management.namespace; import com.sun.jmx.defaults.JmxProperties; import com.sun.jmx.mbeanserver.Util; -import com.sun.jmx.namespace.JMXNamespaceUtils; import com.sun.jmx.remote.util.EnvHelp; import java.io.IOException; +import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicLong; @@ -39,6 +39,7 @@ import java.util.logging.Logger; import javax.management.AttributeChangeNotification; +import javax.management.ClientContext; import javax.management.InstanceNotFoundException; import javax.management.ListenerNotFoundException; import javax.management.MBeanNotificationInfo; @@ -220,17 +221,26 @@ public class JMXRemoteNamespace initParentOnce(this); // URL must not be null. - this.jmxURL = JMXNamespaceUtils.checkNonNull(sourceURL,"url"); + if (sourceURL == null) + throw new IllegalArgumentException("Null URL"); + this.jmxURL = sourceURL; this.broadcaster = new NotificationBroadcasterSupport(connectNotification); // handles options - this.optionsMap = JMXNamespaceUtils.unmodifiableMap(optionsMap); + this.optionsMap = unmodifiableMap(optionsMap); // handles (dis)connection events this.listener = new ConnectionListener(); } + // returns un unmodifiable view of a map. + private static Map unmodifiableMap(Map aMap) { + if (aMap == null || aMap.isEmpty()) + return Collections.emptyMap(); + return Collections.unmodifiableMap(aMap); + } + /** * Returns the {@code JMXServiceURL} that is (or will be) used to * connect to the remote name space.

    @@ -483,106 +493,171 @@ public class JMXRemoteNamespace } } - JMXConnector connect(JMXServiceURL url, Map env) + private JMXConnector connect(JMXServiceURL url, Map env) throws IOException { - final JMXConnector c = newJMXConnector(jmxURL, env); + final JMXConnector c = newJMXConnector(url, env); c.connect(env); return c; } /** - * Creates a new JMXConnector with the specified {@code url} and - * {@code env} options map. - *

    - * This method first calls {@link JMXConnectorFactory#newJMXConnector - * JMXConnectorFactory.newJMXConnector(jmxURL, env)} to obtain a new - * JMX connector, and returns that. - *

    - *

    - * A subclass of {@link JMXRemoteNamespace} can provide an implementation - * that connects to a sub namespace of the remote server by subclassing - * this class in the following way: + *

    Creates a new JMXConnector with the specified {@code url} and + * {@code env} options map. The default implementation of this method + * returns {@link JMXConnectorFactory#newJMXConnector + * JMXConnectorFactory.newJMXConnector(jmxURL, env)}. Subclasses can + * override this method to customize behavior.

    + * + * @param url The JMXServiceURL of the remote server. + * @param optionsMap An options map that will be passed to the + * {@link JMXConnectorFactory} when {@linkplain + * JMXConnectorFactory#newJMXConnector creating} the + * {@link JMXConnector} that can connect to the remote source + * MBean Server. + * @return A JMXConnector to use to connect to the remote server + * @throws IOException if the connector could not be created. + * @see JMXConnectorFactory#newJMXConnector(javax.management.remote.JMXServiceURL, java.util.Map) + * @see #JMXRemoteNamespace + */ + protected JMXConnector newJMXConnector(JMXServiceURL url, + Map optionsMap) throws IOException { + return JMXConnectorFactory.newJMXConnector(jmxURL, optionsMap); + } + + /** + *

    Called when a new connection is established using {@link #connect} + * so that subclasses can customize the connection. The default + * implementation of this method effectively does the following:

    + * + *
    +     * MBeanServerConnection mbsc = {@link JMXConnector#getMBeanServerConnection()
    +     *                               jmxc.getMBeanServerConnection()};
    +     * try {
    +     *     return {@link ClientContext#withDynamicContext
    +     *             ClientContext.withDynamicContext(mbsc)};
    +     * } catch (IllegalArgumentException e) {
    +     *     return mbsc;
    +     * }
    +     * 
    + * + *

    In other words, it arranges for the client context to be forwarded + * to the remote MBean Server if the remote MBean Server supports contexts; + * otherwise it ignores the client context.

    + * + *

    Example: connecting to a remote namespace

    + * + *

    A subclass that wanted to narrow into a namespace of + * the remote MBeanServer might look like this:

    + * *
          * class JMXRemoteSubNamespace extends JMXRemoteNamespace {
    -     *    private final String subnamespace;
    -     *    JMXRemoteSubNamespace(JMXServiceURL url,
    -     *              Map{@code } env, String subnamespace) {
    -     *        super(url,options);
    +     *     private final String subnamespace;
    +     *
    +     *     JMXRemoteSubNamespace(
    +     *             JMXServiceURL url, Map{@code } env, String subnamespace) {
    +     *        super(url, env);
          *        this.subnamespace = subnamespace;
    -     *    }
    -     *    protected JMXConnector newJMXConnector(JMXServiceURL url,
    -     *              Map env) throws IOException {
    -     *        final JMXConnector inner = super.newJMXConnector(url,env);
    -     *        return {@link JMXNamespaces#narrowToNamespace(JMXConnector,String)
    -     *               JMXNamespaces.narrowToNamespace(inner,subnamespace)};
    -     *    }
    +     *     }
    +     *
    +     *     {@code @Override}
    +     *     protected MBeanServerConnection getMBeanServerConnection(
    +     *             JMXConnector jmxc) throws IOException {
    +     *         MBeanServerConnection mbsc = super.getMBeanServerConnection(jmxc);
    +     *         return {@link JMXNamespaces#narrowToNamespace(MBeanServerConnection,String)
    +     *                 JMXNamespaces.narrowToNamespace(mbsc, subnamespace)};
    +     *     }
          * }
          * 
    - *

    - *

    - * Some connectors, like the JMXMP connector server defined by the - * version 1.2 of the JMX API may not have been upgraded to use the - * new {@linkplain javax.management.event Event Service} defined in this - * version of the JMX API. - *

    - * In that case, and if the remote server to which this JMXRemoteNamespace - * connects also contains namespaces, it may be necessary to configure - * explicitly an {@linkplain - * javax.management.event.EventClientDelegate#newForwarder() - * Event Client Forwarder} on the remote server side, and to force the use - * of an {@link EventClient} on this client side. - *
    - * A subclass of {@link JMXRemoteNamespace} can provide an implementation - * of {@code newJMXConnector} that will force notification subscriptions - * to flow through an {@link EventClient} over a legacy protocol by - * overriding this method in the following way: - *

    + * + *

    Example: using the Event Service for notifications

    + * + *

    Some connectors may have been designed to work with an earlier + * version of the JMX API, and may not have been upgraded to use + * the {@linkplain javax.management.event Event Service} defined in + * this version of the JMX API. In that case, and if the remote + * server to which this JMXRemoteNamespace connects also contains + * namespaces, it may be necessary to configure explicitly an {@linkplain + * javax.management.event.EventClientDelegate#newForwarder Event Client + * Forwarder} on the remote server side, and to force the use of an {@link + * EventClient} on this client side.

    + * + *

    A subclass of {@link JMXRemoteNamespace} can provide an + * implementation of {@code getMBeanServerConnection} that will force + * notification subscriptions to flow through an {@link EventClient} over + * a legacy protocol. It can do so by overriding this method in the + * following way:

    + * *
          * class JMXRemoteEventClientNamespace extends JMXRemoteNamespace {
    -     *    JMXRemoteSubNamespaceConnector(JMXServiceURL url,
    -     *              Map env) {
    -     *        super(url,options);
    -     *    }
    -     *    protected JMXConnector newJMXConnector(JMXServiceURL url,
    -     *              Map env) throws IOException {
    -     *        final JMXConnector inner = super.newJMXConnector(url,env);
    -     *        return {@link EventClient#withEventClient(
    -     *                JMXConnector) EventClient.withEventClient(inner)};
    -     *    }
    +     *     JMXRemoteEventClientNamespace(JMXServiceURL url, {@code Map} env) {
    +     *         super(url, env);
    +     *     }
    +     *
    +     *     {@code @Override}
    +     *     protected MBeanServerConnection getMBeanServerConnection(JMXConnector jmxc)
    +     *             throws IOException {
    +     *         MBeanServerConnection mbsc = super.getMBeanServerConnection(jmxc);
    +     *         return EventClient.getEventClientConnection(mbsc);
    +     *     }
          * }
          * 
    + * *

    * Note that the remote server also needs to provide an {@link - * javax.management.event.EventClientDelegateMBean}: only configuring - * the client side (this object) is not enough.
    - * In summary, this technique should be used if the remote server + * javax.management.event.EventClientDelegateMBean}: configuring only + * the client side (this object) is not enough.

    + * + *

    In summary, this technique should be used if the remote server * supports JMX namespaces, but uses a JMX Connector Server whose * implementation does not transparently use the new Event Service * (as would be the case with the JMXMPConnectorServer implementation * from the reference implementation of the JMX Remote API 1.0 - * specification). - *

    - * @param url The JMXServiceURL of the remote server. - * @param optionsMap An unmodifiable options map that will be passed to the - * {@link JMXConnectorFactory} when {@linkplain - * JMXConnectorFactory#newJMXConnector creating} the - * {@link JMXConnector} that can connect to the remote source - * MBean Server. - * @return An unconnected JMXConnector to use to connect to the remote - * server - * @throws java.io.IOException if the connector could not be created. - * @see JMXConnectorFactory#newJMXConnector(javax.management.remote.JMXServiceURL, java.util.Map) - * @see #JMXRemoteNamespace + * specification).

    + * + * @param jmxc the newly-created {@code JMXConnector}. + * + * @return an {@code MBeanServerConnection} connected to the remote + * MBeanServer. + * + * @throws IOException if the connection cannot be made. If this method + * throws {@code IOException} then the calling {@link #connect()} method + * will also fail with an {@code IOException}. + * + * @see #connect */ - protected JMXConnector newJMXConnector(JMXServiceURL url, - Map optionsMap) throws IOException { - final JMXConnector c = - JMXConnectorFactory.newJMXConnector(jmxURL, optionsMap); -// TODO: uncomment this when contexts are added -// return ClientContext.withDynamicContext(c); - return c; + protected MBeanServerConnection getMBeanServerConnection(JMXConnector jmxc) + throws IOException { + final MBeanServerConnection mbsc = jmxc.getMBeanServerConnection(); + try { + return ClientContext.withDynamicContext(mbsc); + } catch (IllegalArgumentException e) { + LOG.log(Level.FINER, "ClientContext.withDynamicContext", e); + return mbsc; + } } + /** + * {@inheritDoc} + * + *

    The sequence of events when this method is called includes, + * effectively, the following code:

    + * + *
    +     * JMXServiceURL url = {@link #getJMXServiceURL getJMXServiceURL}();
    +     * JMXConnector jmxc = {@link #newJMXConnector newJMXConnector}(url, env);
    +     * jmxc.connect();
    +     * MBeanServerConnection mbsc = {@link #getMBeanServerConnection(JMXConnector)
    +     *                               getMBeanServerConnection}(jmxc);
    +     * 
    + * + *

    Here, {@code env} is a {@code Map} containing the entries from the + * {@code optionsMap} that was passed to the {@linkplain #JMXRemoteNamespace + * constructor} or to the {@link #newJMXRemoteNamespace newJMXRemoteNamespace} + * factory method.

    + * + *

    Subclasses can customize connection behavior by overriding the + * {@code getJMXServiceURL}, {@code newJMXConnector}, or + * {@code getMBeanServerConnection} methods.

    + */ public void connect() throws IOException { LOG.fine("connecting..."); final Map env = @@ -590,7 +665,7 @@ public class JMXRemoteNamespace try { // XXX: We should probably document this... // This allows to specify a loader name - which will be - // retrieved from the paret MBeanServer. + // retrieved from the parent MBeanServer. defaultClassLoader = EnvHelp.resolveServerClassLoader(env,getMBeanServer()); } catch (InstanceNotFoundException x) { @@ -604,7 +679,7 @@ public class JMXRemoteNamespace final JMXConnector aconn = connect(url,env); final MBeanServerConnection msc; try { - msc = aconn.getMBeanServerConnection(); + msc = getMBeanServerConnection(aconn); aconn.addConnectionNotificationListener(listener,null,aconn); } catch (IOException io) { close(aconn); diff --git a/src/share/classes/javax/management/namespace/MBeanServerSupport.java b/src/share/classes/javax/management/namespace/MBeanServerSupport.java index 903be3c308f1029a76777a1cbb18efa7a0de2a92..ea070ae262e2e5d321d0742579fbfbc906cc8ce5 100644 --- a/src/share/classes/javax/management/namespace/MBeanServerSupport.java +++ b/src/share/classes/javax/management/namespace/MBeanServerSupport.java @@ -457,7 +457,11 @@ public abstract class MBeanServerSupport implements MBeanServer { * All the various flavors of {@code MBeanServer.createMBean} methods * will eventually call this method. A subclass that wishes to * support MBean creation through {@code createMBean} thus only - * needs to provide an implementation for this one method. + * needs to provide an implementation for this one method.

    + * + *

    A subclass implementation of this method should respect the contract + * of the various {@code createMBean} methods in the {@link MBeanServer} + * interface, in particular as regards exception wrapping.

    * * @param className The class name of the MBean to be instantiated. * @param name The object name of the MBean. May be null. @@ -488,6 +492,17 @@ public abstract class MBeanServerSupport implements MBeanServer { * preRegister (MBeanRegistration * interface) method of the MBean has thrown an exception. The * MBean will not be registered. + * @exception RuntimeMBeanException If the MBean's constructor or its + * {@code preRegister} or {@code postRegister} method threw + * a {@code RuntimeException}. If the postRegister + * (MBeanRegistration interface) method of the MBean throws a + * RuntimeException, the createMBean method will + * throw a RuntimeMBeanException, although the MBean creation + * and registration succeeded. In such a case, the MBean will be actually + * registered even though the createMBean method + * threw an exception. Note that RuntimeMBeanException can + * also be thrown by preRegister, in which case the MBean + * will not be registered. * @exception MBeanException The constructor of the MBean has * thrown an exception * @exception NotCompliantMBeanException This class is not a JMX @@ -1096,7 +1111,7 @@ public abstract class MBeanServerSupport implements MBeanServer { MBeanRegistrationException, MBeanException, NotCompliantMBeanException { try { - return safeCreateMBean(className, name, null, params, signature, true); + return createMBean(className, name, null, params, signature, true); } catch (InstanceNotFoundException ex) { // should not happen! throw new MBeanException(ex, "Unexpected exception: " + ex); @@ -1113,7 +1128,7 @@ public abstract class MBeanServerSupport implements MBeanServer { throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException, InstanceNotFoundException { - return safeCreateMBean(className, name, loaderName, params, signature, false); + return createMBean(className, name, loaderName, params, signature, false); } /** @@ -1126,7 +1141,7 @@ public abstract class MBeanServerSupport implements MBeanServer { MBeanRegistrationException, MBeanException, NotCompliantMBeanException { try { - return safeCreateMBean(className, name, null, null, null, true); + return createMBean(className, name, null, null, null, true); } catch (InstanceNotFoundException ex) { // should not happen! throw new MBeanException(ex, "Unexpected exception: " + ex); @@ -1143,32 +1158,7 @@ public abstract class MBeanServerSupport implements MBeanServer { throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException, InstanceNotFoundException { - return safeCreateMBean(className, name, loaderName, null, null, false); - } - - // make sure all exceptions are correctly wrapped in a JMXException - private ObjectInstance safeCreateMBean(String className, - ObjectName name, ObjectName loaderName, Object[] params, - String[] signature, boolean useRepository) - throws ReflectionException, InstanceAlreadyExistsException, - MBeanRegistrationException, MBeanException, - NotCompliantMBeanException, InstanceNotFoundException { - try { - return createMBean(className, name, loaderName, params, - signature, useRepository); - } catch (ReflectionException x) { throw x; - } catch (InstanceAlreadyExistsException x) { throw x; - } catch (MBeanRegistrationException x) { throw x; - } catch (MBeanException x) { throw x; - } catch (NotCompliantMBeanException x) { throw x; - } catch (InstanceNotFoundException x) { throw x; - } catch (SecurityException x) { throw x; - } catch (JMRuntimeException x) { throw x; - } catch (RuntimeException x) { - throw new RuntimeOperationsException(x, x.toString()); - } catch (Exception x) { - throw new MBeanException(x, x.toString()); - } + return createMBean(className, name, loaderName, null, null, false); } diff --git a/src/share/classes/javax/management/namespace/package-info.java b/src/share/classes/javax/management/namespace/package-info.java index df8354bab635379c29f3340676192c2c1b0a5238..5c014286d4de06cd9cfb292b4d2b6cb46bf627a2 100644 --- a/src/share/classes/javax/management/namespace/package-info.java +++ b/src/share/classes/javax/management/namespace/package-info.java @@ -204,7 +204,38 @@ * * An easier way to access MBeans contained in a name space is to * cd inside the name space, as shown in the following paragraph. - *

    + *

    + * Although ObjectName patterns where the characters + * * and ? appear in the namespace path are + * legal, they are not valid in the {@code name} parameter of the + * MBean Server {@link + * javax.management.MBeanServer#queryNames queryNames} and {@link + * javax.management.MBeanServer#queryMBeans queryMBeans} methods.
    + * When invoking queryNames or queryMBeans, + * only ObjectNames of the form:
    + * [namespace-without-pattern//]*[pattern-without-namespace]:key-properties-with-or-without-pattern + * are valid.
    + * In other words: in the case of {@link + * javax.management.MBeanServer#queryNames queryNames} and {@link + * javax.management.MBeanServer#queryMBeans queryMBeans}, if a + * namespace path is present, it must not contain any pattern. + *

    + * There is no such restriction for the {@code query} parameter of these + * methods. However, it must be noted that the {@code query} parameter + * will be evaluated in the context of the namespace where the MBeans + * selected by the pattern specified in {@code name} are located. + * This means that if {@code query} parameter is an ObjectName pattern that + * contains a namespace path, no MBean name will match and the result of + * the query will be empty.
    + * In other words:

    + *
    • {@code queryNames("foo//bar//?a?:*","b?z:type=Monitor,*")} will select + * all MBeans in namespace foo//bar whose names match both + * ?a?:* and b?z:type=Monitor,*, but
    • + *
    • {@code queryNames("foo//bar//?a?:*","foo//bar//b?z:type=Monitor,*")} + * will select nothing because no name matching ?a?:* will + * also match foo//bar//b?z:type=Monitor,*. + *
    • + *
    * *

    Narrowing Down Into a Name Spaces

    *

    @@ -228,7 +259,8 @@ * to name space {@code "foo"} behaves just like a regular MBean server. * However, it may sometimes throw an {@link * java.lang.UnsupportedOperationException UnsupportedOperationException} - * wrapped in a JMX exception if you try to call an operation which is not + * wrapped in a {@link javax.management.RuntimeOperationsException + * RuntimeOperationsException} if you try to call an operation which is not * supported by the underlying name space handler. *
    For instance, {@link javax.management.MBeanServer#registerMBean * registerMBean} is not supported for name spaces mounted from remote diff --git a/src/share/classes/javax/management/openmbean/ArrayType.java b/src/share/classes/javax/management/openmbean/ArrayType.java index 49c8bbf1f63769bd57f66e3d71e8768fd520fbe1..0cbb677cf88145945ec39cdb5e3ac6e2c71c3ba0 100644 --- a/src/share/classes/javax/management/openmbean/ArrayType.java +++ b/src/share/classes/javax/management/openmbean/ArrayType.java @@ -296,7 +296,7 @@ public class ArrayType extends OpenType { // Check and construct state specific to ArrayType // if (elementType.isArray()) { - ArrayType at = (ArrayType) elementType; + ArrayType at = (ArrayType) elementType; this.dimension = at.getDimension() + dimension; this.elementType = at.getElementOpenType(); this.primitiveArray = at.isPrimitiveArray(); @@ -384,7 +384,7 @@ public class ArrayType extends OpenType { /* Package-private constructor for callers we trust to get it right. */ ArrayType(String className, String typeName, String description, - int dimension, OpenType elementType, + int dimension, OpenType elementType, boolean primitiveArray) { super(className, typeName, description, true); this.dimension = dimension; @@ -397,7 +397,7 @@ public class ArrayType extends OpenType { throws OpenDataException { boolean isPrimitiveArray = false; if (elementType.isArray()) { - isPrimitiveArray = ((ArrayType) elementType).isPrimitiveArray(); + isPrimitiveArray = ((ArrayType) elementType).isPrimitiveArray(); } return buildArrayClassName(dimension, elementType, isPrimitiveArray); } @@ -443,7 +443,7 @@ public class ArrayType extends OpenType { throws OpenDataException { boolean isPrimitiveArray = false; if (elementType.isArray()) { - isPrimitiveArray = ((ArrayType) elementType).isPrimitiveArray(); + isPrimitiveArray = ((ArrayType) elementType).isPrimitiveArray(); } return buildArrayDescription(dimension, elementType, isPrimitiveArray); } @@ -453,7 +453,7 @@ public class ArrayType extends OpenType { boolean isPrimitiveArray) throws OpenDataException { if (elementType.isArray()) { - ArrayType at = (ArrayType) elementType; + ArrayType at = (ArrayType) elementType; dimension += at.getDimension(); elementType = at.getElementOpenType(); isPrimitiveArray = at.isPrimitiveArray(); @@ -551,7 +551,7 @@ public class ArrayType extends OpenType { return false; } - Class objClass = obj.getClass(); + Class objClass = obj.getClass(); String objClassName = objClass.getName(); // if obj is not an array, return false @@ -636,8 +636,8 @@ public class ArrayType extends OpenType { } @Override - boolean isAssignableFrom(OpenType ot) { - if (!(ot instanceof ArrayType)) + boolean isAssignableFrom(OpenType ot) { + if (!(ot instanceof ArrayType)) return false; ArrayType at = (ArrayType) ot; return (at.getDimension() == getDimension() && @@ -675,9 +675,9 @@ public class ArrayType extends OpenType { // if obj is not an ArrayType, return false // - if (!(obj instanceof ArrayType)) + if (!(obj instanceof ArrayType)) return false; - ArrayType other = (ArrayType) obj; + ArrayType other = (ArrayType) obj; // if other's dimension is different than this instance's, return false // @@ -879,6 +879,7 @@ public class ArrayType extends OpenType { // Build primitive array // try { + @SuppressWarnings("rawtypes") ArrayType at = new ArrayType(simpleType, true); if (n > 1) at = new ArrayType(n - 1, at); @@ -934,7 +935,7 @@ public class ArrayType extends OpenType { } } - private ArrayType convertFromWrapperToPrimitiveTypes() { + private ArrayType convertFromWrapperToPrimitiveTypes() { String cn = getClassName(); String tn = getTypeName(); String d = getDescription(); @@ -952,8 +953,8 @@ public class ArrayType extends OpenType { break; } } - return new ArrayType(cn, tn, d, - dimension, elementType, primitiveArray); + return new ArrayType(cn, tn, d, + dimension, elementType, primitiveArray); } /** @@ -1002,7 +1003,7 @@ public class ArrayType extends OpenType { } } - private ArrayType convertFromPrimitiveToWrapperTypes() { + private ArrayType convertFromPrimitiveToWrapperTypes() { String cn = getClassName(); String tn = getTypeName(); String d = getDescription(); @@ -1020,7 +1021,7 @@ public class ArrayType extends OpenType { break; } } - return new ArrayType(cn, tn, d, - dimension, elementType, primitiveArray); + return new ArrayType(cn, tn, d, + dimension, elementType, primitiveArray); } } diff --git a/src/share/classes/javax/management/openmbean/CompositeDataInvocationHandler.java b/src/share/classes/javax/management/openmbean/CompositeDataInvocationHandler.java index e0414e9d031fc8bd8beef703c2ec26bcb9904ddf..2262c2a5ef72c245f270f5a7efc0fa27472f823a 100644 --- a/src/share/classes/javax/management/openmbean/CompositeDataInvocationHandler.java +++ b/src/share/classes/javax/management/openmbean/CompositeDataInvocationHandler.java @@ -236,8 +236,8 @@ public class CompositeDataInvocationHandler implements InvocationHandler { if (other == null) return false; - final Class proxyClass = proxy.getClass(); - final Class otherClass = other.getClass(); + final Class proxyClass = proxy.getClass(); + final Class otherClass = other.getClass(); if (proxyClass != otherClass) return false; InvocationHandler otherih = Proxy.getInvocationHandler(other); diff --git a/src/share/classes/javax/management/openmbean/CompositeDataSupport.java b/src/share/classes/javax/management/openmbean/CompositeDataSupport.java index 4ef93b47611ccc649afec6294b6c993607a171d2..9a2f307fd79c06f5c827f90c06f488bf52cf2eea 100644 --- a/src/share/classes/javax/management/openmbean/CompositeDataSupport.java +++ b/src/share/classes/javax/management/openmbean/CompositeDataSupport.java @@ -33,12 +33,14 @@ import java.io.Serializable; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import java.util.SortedMap; import java.util.TreeMap; // jmx import +import java.util.TreeSet; // @@ -60,16 +62,15 @@ public class CompositeDataSupport * respective values. * A {@link SortedMap} is used for faster retrieval of elements. */ - private SortedMap contents = new TreeMap(); + private final SortedMap contents; /** * @serial The composite type of this composite data instance. */ - private CompositeType compositeType; + private final CompositeType compositeType; /** - *

    - * Constructs a CompositeDataSupport instance with the specified + *

    Constructs a CompositeDataSupport instance with the specified * compositeType, whose item values * are specified by itemValues[], in the same order as in * itemNames[]. @@ -79,103 +80,67 @@ public class CompositeDataSupport * The items contained in this CompositeDataSupport instance are * internally stored in a TreeMap, * thus sorted in ascending lexicographic order of their names, for faster - * retrieval of individual item values. - *

    - * The constructor checks that all the constraints listed below for each + * retrieval of individual item values.

    + * + *

    The constructor checks that all the constraints listed below for each * parameter are satisfied, - * and throws the appropriate exception if they are not. - *

    - * @param compositeType the composite type of this composite - * data instance; - * must not be null. - *

    - * @param itemNames itemNames must list, in any order, all the - * item names defined in compositeType; - * the order in which the names are listed, is used to - * match values in itemValues[]; - * must not be null or empty. - *

    - * @param itemValues the values of the items, listed in the same order as - * their respective names in itemNames; - * each item value can be null, but if it is non-null it must be - * a valid value for the open type defined in compositeType for the corresponding item; - * must be of the same size as itemNames; must not be null or empty. - *

    - * @throws IllegalArgumentException compositeType is null, or itemNames[] or itemValues[] is null or empty, - * or one of the elements in itemNames[] is a null or empty string, - * or itemNames[] and itemValues[] are not of the same size. - *

    - * @throws OpenDataException itemNames[] or itemValues[]'s size differs from - * the number of items defined in compositeType, - * or one of the elements in itemNames[] does not exist as an item name defined in compositeType, - * or one of the elements in itemValues[] is not a valid value for the corresponding item - * as defined in compositeType. - *

    + * and throws the appropriate exception if they are not.

    + * + * @param compositeType the composite type of this composite + * data instance; must not be null. + * + * @param itemNames itemNames must list, in any order, all the + * item names defined in compositeType; the order in which the + * names are listed, is used to match values in itemValues[]; must + * not be null. + * + * @param itemValues the values of the items, listed in the same order as + * their respective names in itemNames; each item value can be + * null, but if it is non-null it must be a valid value for the open type + * defined in compositeType for the corresponding item; must be of + * the same size as itemNames; must not be null. + * + * @throws IllegalArgumentException compositeType is null, or + * itemNames[] or itemValues[] is null, or one + * of the elements in itemNames[] is a null or empty string, or + * itemNames[] and itemValues[] are not of the same size. + * + * @throws OpenDataException itemNames[] or + * itemValues[]'s size differs from the number of items defined in + * compositeType, or one of the elements in itemNames[] + * does not exist as an item name defined in compositeType, or one + * of the elements in itemValues[] is not a valid value for the + * corresponding item as defined in compositeType. */ - public CompositeDataSupport(CompositeType compositeType, String[] itemNames, Object[] itemValues) - throws OpenDataException { - - // Check compositeType is not null - // - if (compositeType == null) { - throw new IllegalArgumentException("Argument compositeType cannot be null."); - } - - // item names defined in compositeType: - Set namesSet = compositeType.keySet(); - - // Check the array itemNames is not null or empty (length!=0) and - // that there is no null element or empty string in it - // - checkForNullElement(itemNames, "itemNames"); - checkForEmptyString(itemNames, "itemNames"); + public CompositeDataSupport( + CompositeType compositeType, String[] itemNames, Object[] itemValues) + throws OpenDataException { + this(makeMap(itemNames, itemValues), compositeType); + } - // Check the array itemValues is not null or empty (length!=0) - // (NOTE: we allow null values as array elements) - // - if ( (itemValues == null) || (itemValues.length == 0) ) { - throw new IllegalArgumentException("Argument itemValues[] cannot be null or empty."); - } + private static SortedMap makeMap( + String[] itemNames, Object[] itemValues) + throws OpenDataException { - // Check that the sizes of the 2 arrays itemNames and itemValues are the same - // + if (itemNames == null || itemValues == null) + throw new IllegalArgumentException("Null itemNames or itemValues"); if (itemNames.length != itemValues.length) { - throw new IllegalArgumentException("Array arguments itemNames[] and itemValues[] "+ - "should be of same length (got "+ itemNames.length + - " and "+ itemValues.length +")."); - } - - // Check the size of the 2 arrays is equal to the number of items defined in compositeType - // - if (itemNames.length != namesSet.size()) { - throw new OpenDataException("The size of array arguments itemNames[] and itemValues[] should be equal to the number of items defined"+ - " in argument compositeType (found "+ itemNames.length +" elements in itemNames[] and itemValues[],"+ - " expecting "+ namesSet.size() +" elements according to compositeType."); - } - - // Check parameter itemNames[] contains all names defined in the compositeType of this instance - // - if ( ! Arrays.asList(itemNames).containsAll(namesSet) ) { - throw new OpenDataException("Argument itemNames[] does not contain all names defined in the compositeType of this instance."); + throw new IllegalArgumentException( + "Different lengths: itemNames[" + itemNames.length + + "], itemValues[" + itemValues.length + "]"); } - // Check each element of itemValues[], if not null, is of the open type defined for the corresponding item - // - OpenType itemType; - for (int i=0; i map = new TreeMap(); + for (int i = 0; i < itemNames.length; i++) { + String name = itemNames[i]; + if (name == null || name.equals("")) + throw new IllegalArgumentException("Null or empty item name"); + if (map.containsKey(name)) + throw new OpenDataException("Duplicate item name " + name); + map.put(itemNames[i], itemValues[i]); } - // Initialize internal fields: compositeType and contents - // - this.compositeType = compositeType; - for (int i=0; iitems. * This constructor converts the keys to a string array and the values to an object array and calls * CompositeDataSupport(javax.management.openmbean.CompositeType, java.lang.String[], java.lang.Object[]). - *

    + * * @param compositeType the composite type of this composite data instance; * must not be null. - *

    * @param items the mappings of all the item names to their values; * items must contain all the item names defined in compositeType; - * must not be null or empty. - *

    - * @throws IllegalArgumentException compositeType is null, or items is null or empty, - * or one of the keys in items is a null or empty string, - * or one of the values in items is null. - *

    - * @throws OpenDataException items' size differs from the number of items defined in compositeType, - * or one of the keys in items does not exist as an item name defined in compositeType, - * or one of the values in items is not a valid value for the corresponding item - * as defined in compositeType. - *

    - * @throws ArrayStoreException one or more keys in items is not of the class java.lang.String. - *

    + * must not be null. + * + * @throws IllegalArgumentException compositeType is null, or + * items is null, or one of the keys in items is a null + * or empty string. + * @throws OpenDataException items' size differs from the + * number of items defined in compositeType, or one of the + * keys in items does not exist as an item name defined in + * compositeType, or one of the values in items + * is not a valid value for the corresponding item as defined in + * compositeType. + * @throws ArrayStoreException one or more keys in items is not of + * the class java.lang.String. + * + * @see #toMap */ public CompositeDataSupport(CompositeType compositeType, Map items) throws OpenDataException { + this(makeMap(items), compositeType); + } - - // Let the other constructor do the job, as the call to another constructor must be the first call - // - this( compositeType, - (items==null ? null : items.keySet().toArray(new String[items.size()])), // may raise an ArrayStoreException - (items==null ? null : items.values().toArray()) ); + private static SortedMap makeMap(Map items) { + if (items == null) + throw new IllegalArgumentException("Null items map"); + if (items.containsKey(null) || items.containsKey("")) + throw new IllegalArgumentException("Null or empty item name"); + + SortedMap map = new TreeMap(); + for (Object key : items.keySet()) { + if (!(key instanceof String)) { + throw new ArrayStoreException("Item name is not string: " + key); + // This can happen because of erasure. The particular + // exception is a historical artifact - an implementation + // detail that leaked into the API. + } + map.put((String) key, items.get(key)); + } + return map; } - /** - * - */ - private static void checkForNullElement(Object[] arg, String argName) { - if ( (arg == null) || (arg.length == 0) ) { - throw new IllegalArgumentException( - "Argument "+ argName +"[] cannot be null or empty."); + private CompositeDataSupport( + SortedMap items, CompositeType compositeType) + throws OpenDataException { + + // Check compositeType is not null + // + if (compositeType == null) { + throw new IllegalArgumentException("Argument compositeType cannot be null."); } - for (int i=0; i namesFromType = compositeType.keySet(); + Set namesFromItems = items.keySet(); + + // This is just a comparison, but we do it this way for a better + // exception message. + if (!namesFromType.equals(namesFromItems)) { + Set extraFromType = new TreeSet(namesFromType); + extraFromType.removeAll(namesFromItems); + Set extraFromItems = new TreeSet(namesFromItems); + extraFromItems.removeAll(namesFromType); + if (!extraFromType.isEmpty() || !extraFromItems.isEmpty()) { + throw new OpenDataException( + "Item names do not match CompositeType: " + + "names in items but not in CompositeType: " + extraFromItems + + "; names in CompositeType but not in items: " + extraFromType); } } - } - /** - * - */ - private static void checkForEmptyString(String[] arg, String argName) { - for (int i=0; i itemType = compositeType.getType(name); + if (!itemType.isValue(value)) { + throw new OpenDataException( + "Argument value of wrong type for item " + name + + ": value " + value + ", type " + itemType); + } } } + + // Initialize internal fields: compositeType and contents + // + this.compositeType = compositeType; + this.contents = items; } /** @@ -328,6 +328,54 @@ public class CompositeDataSupport return Collections.unmodifiableCollection(contents.values()); } + /** + *

    Returns a Map representing the contents of the given CompositeData. + * Each item in the CompositeData is represented by an entry in the map, + * where the name and value of the item are the key and value of the entry. + * The returned value is modifiable but modifications to it have no effect + * on the original CompositeData.

    + * + *

    For example, if you have a CompositeData {@code cd1} and you want + * to produce another CompositeData {@code cd2} which is the same except + * that the value of its {@code id} item has been changed to 253, you + * could write:

    + * + *
    +     * CompositeData cd1 = ...;
    +     * {@code Map} map = CompositeDataSupport.toMap(cd1);
    +     * assert(map.get("id") instanceof Integer);
    +     * map.put("id", 253);
    +     * CompositeData cd2 = {@link #CompositeDataSupport(CompositeType, Map)
    +     * new CompositeDataSupport}(cd1.getCompositeType(), map);
    +     * 
    + * + *

    Logically, this method would be a method in the {@link CompositeData} + * interface, but cannot be for compatibility reasons.

    + * + * @param cd the CompositeData to convert to a Map. + * + * @return a Map that is a copy of the contents of {@code cd}. + * + * @throws IllegalArgumentException if {@code cd} is null. + * + * @see #CompositeDataSupport(CompositeType, Map) + */ + public static Map toMap(CompositeData cd) { + if (cd == null) + throw new IllegalArgumentException("Null argument"); + + // If we really wanted, we could check whether cd is a + // CompositeDataSupport and return a copy of cd.contents if so, + // but I don't think that would be substantially faster. + Map map = new LinkedHashMap(); + CompositeType ct = cd.getCompositeType(); + for (String key : ct.keySet()) { + Object value = cd.get(key); + map.put(key, value); + } + return map; + } + /** * Compares the specified obj parameter with this * CompositeDataSupport instance for equality. diff --git a/src/share/classes/javax/management/openmbean/CompositeType.java b/src/share/classes/javax/management/openmbean/CompositeType.java index b4c662ec9bce8a7f0e91a112c990fa6f3dc666fb..28c3fd72b7f7a2e744cbaa6893cb2a2be76e4e9c 100644 --- a/src/share/classes/javax/management/openmbean/CompositeType.java +++ b/src/share/classes/javax/management/openmbean/CompositeType.java @@ -329,7 +329,7 @@ public class CompositeType extends OpenType { * @return true if {@code ot} is assignable to this open type. */ @Override - boolean isAssignableFrom(OpenType ot) { + boolean isAssignableFrom(OpenType ot) { if (!(ot instanceof CompositeType)) return false; CompositeType ct = (CompositeType) ot; @@ -420,9 +420,7 @@ public class CompositeType extends OpenType { if (myHashCode == null) { int value = 0; value += this.getTypeName().hashCode(); - String key; - for (Iterator k = nameToDescription.keySet().iterator(); k.hasNext(); ) { - key = (String) k.next(); + for (String key : nameToDescription.keySet()) { value += key.hashCode(); value += this.nameToType.get(key).hashCode(); } @@ -457,10 +455,10 @@ public class CompositeType extends OpenType { result.append(getTypeName()); result.append(",items=("); int i=0; - Iterator k=nameToType.keySet().iterator(); + Iterator k=nameToType.keySet().iterator(); String key; while (k.hasNext()) { - key = (String) k.next(); + key = k.next(); if (i > 0) result.append(","); result.append("(itemName="); result.append(key); diff --git a/src/share/classes/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java b/src/share/classes/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java index bcfa4c157ad79ad113690cd6437d80f932481b99..3ad03ef58ae0a83aeb2e5710f77727ef0b7cbf7f 100644 --- a/src/share/classes/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java +++ b/src/share/classes/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java @@ -78,12 +78,12 @@ public class OpenMBeanAttributeInfoSupport /** * @serial The open mbean attribute's min value */ - private final Comparable minValue; + private final Comparable minValue; /** * @serial The open mbean attribute's max value */ - private final Comparable maxValue; + private final Comparable maxValue; // As this instance is immutable, these two values need only @@ -450,7 +450,7 @@ public class OpenMBeanAttributeInfoSupport } static void check(OpenMBeanParameterInfo info) throws OpenDataException { - OpenType openType = info.getOpenType(); + OpenType openType = info.getOpenType(); if (openType == null) throw new IllegalArgumentException("OpenType cannot be null"); @@ -562,7 +562,7 @@ public class OpenMBeanAttributeInfoSupport } - @SuppressWarnings("unchecked") + @SuppressWarnings({"unchecked", "rawtypes"}) static int compare(Object x, Object y) { return ((Comparable) x).compareTo(y); } @@ -657,11 +657,11 @@ public class OpenMBeanAttributeInfoSupport return result; } - static Comparable comparableValueFrom(Descriptor d, String name, - OpenType openType) { + static Comparable comparableValueFrom(Descriptor d, String name, + OpenType openType) { T t = valueFrom(d, name, openType); if (t == null || t instanceof Comparable) - return (Comparable) t; + return (Comparable) t; final String msg = "Descriptor field " + name + " with value " + t + " is not Comparable"; @@ -925,7 +925,7 @@ public class OpenMBeanAttributeInfoSupport return isValue(this, obj); } - @SuppressWarnings("unchecked") // cast to Comparable + @SuppressWarnings({"unchecked", "rawtypes"}) // cast to Comparable static boolean isValue(OpenMBeanParameterInfo info, Object obj) { if (info.hasDefaultValue() && obj == null) return true; diff --git a/src/share/classes/javax/management/openmbean/OpenMBeanParameterInfoSupport.java b/src/share/classes/javax/management/openmbean/OpenMBeanParameterInfoSupport.java index b67ac60d77c5fe4568682475b8746a80edabf773..b836cddaa766ec4a78d9bfb63fe1451f62a01cb2 100644 --- a/src/share/classes/javax/management/openmbean/OpenMBeanParameterInfoSupport.java +++ b/src/share/classes/javax/management/openmbean/OpenMBeanParameterInfoSupport.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -74,12 +74,12 @@ public class OpenMBeanParameterInfoSupport /** * @serial The open mbean parameter's min value */ - private Comparable minValue = null; + private Comparable minValue = null; /** * @serial The open mbean parameter's max value */ - private Comparable maxValue = null; + private Comparable maxValue = null; // As this instance is immutable, these two values need only diff --git a/src/share/classes/javax/management/openmbean/OpenType.java b/src/share/classes/javax/management/openmbean/OpenType.java index 7aac2c0fd8fd555800d48f71b9bdd9f3d71979c3..3f74c3cda60ece5f4ecab18b894bdf0c3e889503 100644 --- a/src/share/classes/javax/management/openmbean/OpenType.java +++ b/src/share/classes/javax/management/openmbean/OpenType.java @@ -206,7 +206,7 @@ public abstract class OpenType implements Serializable { } } - private static boolean overridesGetClassName(final Class c) { + private static boolean overridesGetClassName(final Class c) { return AccessController.doPrivileged(new PrivilegedAction() { public Boolean run() { try { diff --git a/src/share/classes/javax/management/openmbean/SimpleType.java b/src/share/classes/javax/management/openmbean/SimpleType.java index 7837819c4c245858dfe03a81540d491160218a0c..1d4f90e6a9b460243024cc116db72c334becfe08 100644 --- a/src/share/classes/javax/management/openmbean/SimpleType.java +++ b/src/share/classes/javax/management/openmbean/SimpleType.java @@ -163,7 +163,7 @@ public final class SimpleType extends OpenType { public static final SimpleType OBJECTNAME = new SimpleType(ObjectName.class); - private static final SimpleType[] typeArray = { + private static final SimpleType[] typeArray = { VOID, BOOLEAN, CHARACTER, BYTE, SHORT, INTEGER, LONG, FLOAT, DOUBLE, STRING, BIGDECIMAL, BIGINTEGER, DATE, OBJECTNAME, }; @@ -232,10 +232,10 @@ public final class SimpleType extends OpenType { return (this == obj); */ - if (!(obj instanceof SimpleType)) + if (!(obj instanceof SimpleType)) return false; - SimpleType other = (SimpleType) obj; + SimpleType other = (SimpleType) obj; // Test if other's className field is the same as for this instance // @@ -290,11 +290,11 @@ public final class SimpleType extends OpenType { return myToString; } - private static final Map canonicalTypes = - new HashMap(); + private static final Map,SimpleType> canonicalTypes = + new HashMap,SimpleType>(); static { for (int i = 0; i < typeArray.length; i++) { - final SimpleType type = typeArray[i]; + final SimpleType type = typeArray[i]; canonicalTypes.put(type, type); } } @@ -310,7 +310,7 @@ public final class SimpleType extends OpenType { * resolved. */ public Object readResolve() throws ObjectStreamException { - final SimpleType canonical = canonicalTypes.get(this); + final SimpleType canonical = canonicalTypes.get(this); if (canonical == null) { // Should not happen throw new InvalidObjectException("Invalid SimpleType: " + this); diff --git a/src/share/classes/javax/management/openmbean/TabularDataSupport.java b/src/share/classes/javax/management/openmbean/TabularDataSupport.java index 4e0c51cc9bae522179fab1980b25c41d9f5d173c..faeba1a91e9b270deecb046425e25c516dbc089a 100644 --- a/src/share/classes/javax/management/openmbean/TabularDataSupport.java +++ b/src/share/classes/javax/management/openmbean/TabularDataSupport.java @@ -30,6 +30,7 @@ package javax.management.openmbean; // java import // import com.sun.jmx.mbeanserver.GetPropertyAction; +import com.sun.jmx.mbeanserver.Util; import java.io.IOException; import java.io.ObjectInputStream; import java.io.Serializable; @@ -611,7 +612,7 @@ public class TabularDataSupport @SuppressWarnings("unchecked") // historical confusion about the return type public Collection values() { - return (Collection) dataMap.values() ; + return Util.cast(dataMap.values()); } @@ -647,7 +648,7 @@ public class TabularDataSupport @SuppressWarnings("unchecked") // historical confusion about the return type public Set> entrySet() { - return (Set) dataMap.entrySet(); + return Util.cast(dataMap.entrySet()); } @@ -725,8 +726,7 @@ public class TabularDataSupport if (this.size() != other.size()) { return false; } - for (Iterator iter = this.values().iterator(); iter.hasNext(); ) { - CompositeData value = (CompositeData) iter.next(); + for (CompositeData value : dataMap.values()) { if ( ! other.containsValue(value) ) { return false; } @@ -760,9 +760,8 @@ public class TabularDataSupport int result = 0; result += this.tabularType.hashCode(); - for (Iterator iter = this.values().iterator(); iter.hasNext(); ) { - result += ((CompositeData)iter.next()).hashCode(); - } + for (Object value : values()) + result += value.hashCode(); return result; diff --git a/src/share/classes/javax/management/openmbean/TabularType.java b/src/share/classes/javax/management/openmbean/TabularType.java index b45f2f661d57f6befa93c05835295cf258f1415c..8f953107539a9908df880d2b963dbe470f99c59a 100644 --- a/src/share/classes/javax/management/openmbean/TabularType.java +++ b/src/share/classes/javax/management/openmbean/TabularType.java @@ -237,7 +237,7 @@ public class TabularType extends OpenType { } @Override - boolean isAssignableFrom(OpenType ot) { + boolean isAssignableFrom(OpenType ot) { if (!(ot instanceof TabularType)) return false; TabularType tt = (TabularType) ot; @@ -329,9 +329,8 @@ public class TabularType extends OpenType { int value = 0; value += this.getTypeName().hashCode(); value += this.rowType.hashCode(); - for (Iterator k = indexNames.iterator(); k.hasNext(); ) { - value += k.next().hashCode(); - } + for (String index : indexNames) + value += index.hashCode(); myHashCode = Integer.valueOf(value); } @@ -364,12 +363,10 @@ public class TabularType extends OpenType { .append(",rowType=") .append(rowType.toString()) .append(",indexNames=("); - int i=0; - Iterator k = indexNames.iterator(); - while( k.hasNext() ) { - if (i > 0) result.append(","); - result.append(k.next().toString()); - i++; + String sep = ""; + for (String index : indexNames) { + result.append(sep).append(index); + sep = ","; } result.append("))"); myToString = result.toString(); diff --git a/src/share/classes/javax/management/package.html b/src/share/classes/javax/management/package.html index 14027d648ea40993dbfd6e59e1f36f4e50941d03..372c30efd9f26216e82a3f6dd2b6b19456c867f6 100644 --- a/src/share/classes/javax/management/package.html +++ b/src/share/classes/javax/management/package.html @@ -1,7 +1,7 @@ - -javax.management package - - - -

    Provides the core classes for the Java Management Extensions.

    + --> + + +

    Provides the core classes for the Java Management Extensions.

    -

    The Java Management Extensions - (JMXTM) API is a standard - API for management and monitoring. Typical uses include:

    +

    The Java Management Extensions + (JMXTM) API is a standard + API for management and monitoring. Typical uses include:

    -
      -
    • consulting and changing application configuration
    • +
        +
      • consulting and changing application configuration
      • -
      • accumulating statistics about application behavior and - making them available
      • +
      • accumulating statistics about application behavior and + making them available
      • -
      • notifying of state changes and erroneous conditions.
      • -
      +
    • notifying of state changes and erroneous conditions.
    • +
    -

    The JMX API can also be used as part of a solution for - managing systems, networks, and so on.

    +

    The JMX API can also be used as part of a solution for + managing systems, networks, and so on.

    -

    The API includes remote access, so a remote management - program can interact with a running application for these - purposes.

    +

    The API includes remote access, so a remote management + program can interact with a running application for these + purposes.

    -

    MBeans

    +

    MBeans

    -

    The fundamental notion of the JMX API is the MBean. - An MBean is a named managed object representing a - resource. It has a management interface consisting - of:

    +

    The fundamental notion of the JMX API is the MBean. + An MBean is a named managed object representing a + resource. It has a management interface consisting + of:

    • named and typed attributes that can be read and/or @@ -92,40 +92,40 @@ have any questions.
           public interface ConfigurationMBean {
      -	public int getCacheSize();
      -	public void setCacheSize(int size);
      -	public long getLastChangedTime();
      -	public void save();
      +         public int getCacheSize();
      +         public void setCacheSize(int size);
      +         public long getLastChangedTime();
      +         public void save();
           }
      -      
      + -

      The methods getCacheSize and - setCacheSize define a read-write attribute of - type int called CacheSize (with an - initial capital, unlike the JavaBeans convention).

      +

      The methods getCacheSize and + setCacheSize define a read-write attribute of + type int called CacheSize (with an + initial capital, unlike the JavaBeans convention).

      -

      The method getLastChangedTime defines an - attribute of type long called - LastChangedTime. This is a read-only attribute, - since there is no method setLastChangedTime.

      +

      The method getLastChangedTime defines an + attribute of type long called + LastChangedTime. This is a read-only attribute, + since there is no method setLastChangedTime.

      -

      The method save defines an operation called - save. It is not an attribute, since its name - does not begin with get, set, or - is.

      +

      The method save defines an operation called + save. It is not an attribute, since its name + does not begin with get, set, or + is.

      -

      The exact naming patterns for Standard MBeans are detailed in - the JMX Specification.

      +

      The exact naming patterns for Standard MBeans are detailed in + the JMX Specification.

      -

      There are two ways to make a Java object that is an MBean - with this management interface. One is for the object to be - of a class that has exactly the same name as the Java - interface but without the MBean suffix. So in - the example the object would be of the class - Configuration, in the same Java package as - ConfigurationMBean. The second way is to use the - {@link javax.management.StandardMBean StandardMBean} - class.

      +

      There are two ways to make a Java object that is an MBean + with this management interface. One is for the object to be + of a class that has exactly the same name as the Java + interface but without the MBean suffix. So in + the example the object would be of the class + Configuration, in the same Java package as + ConfigurationMBean. The second way is to use the + {@link javax.management.StandardMBean StandardMBean} + class.

      Defining Standard MBeans with annotations

      @@ -272,37 +272,37 @@ have any questions.
           int cacheSize = mbs.getAttribute(name, "CacheSize");
           {@link javax.management.Attribute Attribute} newCacheSize =
      -    	new Attribute("CacheSize", new Integer(2000));
      +         new Attribute("CacheSize", new Integer(2000));
           mbs.setAttribute(name, newCacheSize);
           mbs.invoke(name, "save", new Object[0], new Class[0]);
      -      
      +

      Alternatively, if you have a Java interface that corresponds to the management interface for the MBean, you can use an MBean proxy like this:

      -
      +        
           ConfigurationMBean conf =
               {@link javax.management.JMX#newMBeanProxy
                   JMX.newMBeanProxy}(mbs, name, ConfigurationMBean.class);
           int cacheSize = conf.getCacheSize();
           conf.setCacheSize(2000);
           conf.save();
      -      
      +
      -

      Using an MBean proxy is just a convenience. The second - example ends up calling the same MBeanServer - operations as the first one.

      +

      Using an MBean proxy is just a convenience. The second + example ends up calling the same MBeanServer + operations as the first one.

      -

      An MBean Server can be queried for MBeans whose names match - certain patterns and/or whose attributes meet certain - constraints. Name patterns are constructed using the {@link - javax.management.ObjectName ObjectName} class and constraints - are constructed using the {@link javax.management.Query Query} - class. The methods {@link - javax.management.MBeanServer#queryNames queryNames} and {@link - javax.management.MBeanServer#queryMBeans queryMBeans} then - perform the query.

      +

      An MBean Server can be queried for MBeans whose names match + certain patterns and/or whose attributes meet certain + constraints. Name patterns are constructed using the {@link + javax.management.ObjectName ObjectName} class and constraints + are constructed using the {@link javax.management.Query Query} + class. The methods {@link + javax.management.MBeanServer#queryNames queryNames} and {@link + javax.management.MBeanServer#queryMBeans queryMBeans} then + perform the query.

      MBean lifecycle and resource injection

      @@ -407,6 +407,92 @@ have any questions. So for example an SNMP GET operation might result in a getAttribute on the MBean Server.

      +

      Interoperability between versions of the JMX + specification

      + +

      When a client connects to a server using the JMX Remote + API, it is possible that they do not have the same version + of the JMX specification. The version of the JMX + specification described here is version 2.0. Previous + versions were 1.0, 1.1, 1.2, and 1.4. (There was no 1.3.) + The standard JMX Remote API is defined to work with version + 1.2 onwards, so in standards-based deployment the only + interoperability questions that arise concern version 1.2 + onwards.

      + +

      Every version of the JMX specification continues to + implement the features of previous versions. So when the + client is running an earlier version than the server, there + should not be any interoperability concerns. The only + exception is the unlikely one where a pre-2.0 client used + the string {@code //} in the domain part of an {@link + javax.management.ObjectName ObjectName}.

      + +

      When the client is running a later version than the server, + certain newer features may not be available, as detailed in + the next sections. The method {@link + javax.management.JMX#getSpecificationVersion + JMX.getSpecificationVersion} can be used to determine the + server version to check if required features are + available.

      + +

      If the remote MBean Server is 1.4

      + +
        + +
      • You cannot use {@link + javax.management.QueryNotificationFilter + QueryNotificationFilter} in {@link + javax.management.MBeanServerConnection#addNotificationListener + addNotificationListener} since this class did not exist + in 1.4.

        + +
      • In an attribute in a query, you cannot access values + inside complex types using dot syntax, for example + {@link javax.management.Query#attr Query.attr}{@code + ("HeapMemoryUsage.used")}.

        + +
      • The packages {@link javax.management.event} and + {@link javax.management.namespace} did not exist in 1.4, + so you cannot remotely create instances of the MBeans + they define.

        + +
      • Even if the remote MBean Server is 2.0, you cannot in + general suppose that {@link + javax.management.event.EventClient EventClient} or + {@link javax.management.ClientContext ClientContext} + will work there without first checking. If the remote + MBean Server is 1.4 then those checks will return false. + An attempt to use these features without checking will + fail in the same way as for a remote 2.0 that is not + configured to support them.

        +
      + +

      If the remote MBean Server is 1.2

      + +

      In addition to the above,

      + +
        + +
      • You cannot use wildcards in a key property of an + {@link javax.management.ObjectName ObjectName}, for + example {@code domain:type=Foo,name=*}. Wildcards that + match whole properties are still allowed, for example + {@code *:*} or {@code *:type=Foo,*}.

        + +
      • You cannot use {@link + javax.management.Query#isInstanceOf Query.isInstanceOf} + in a query.

        + +
      • You cannot use dot syntax such as {@code + HeapMemoryUsage.used} in the {@linkplain + javax.management.monitor.Monitor#setObservedAttribute + observed attribute} of a monitor, as described in the + documentation for the {@link javax.management.monitor} + package.

        + +
      +

      @see Java SE 6 Platform documentation on JMX technology diff --git a/src/share/classes/javax/management/relation/MBeanServerNotificationFilter.java b/src/share/classes/javax/management/relation/MBeanServerNotificationFilter.java index 3b1edc58a4dc42079d665592b6402246b3b716ec..73e9baf8771e957a8caa4e3455c9f6d51ab74949 100644 --- a/src/share/classes/javax/management/relation/MBeanServerNotificationFilter.java +++ b/src/share/classes/javax/management/relation/MBeanServerNotificationFilter.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -354,7 +354,7 @@ public class MBeanServerNotificationFilter extends NotificationFilterSupport { // Checks the type first String ntfType = notif.getType(); - Vector enabledTypes = getEnabledTypes(); + Vector enabledTypes = getEnabledTypes(); if (!(enabledTypes.contains(ntfType))) { RELATION_LOGGER.logp(Level.FINER, MBeanServerNotificationFilter.class.getName(), @@ -464,8 +464,8 @@ public class MBeanServerNotificationFilter extends NotificationFilterSupport { // Serializes this instance in the old serial form // ObjectOutputStream.PutField fields = out.putFields(); - fields.put("mySelectObjNameList", (Vector)selectedNames); - fields.put("myDeselectObjNameList", (Vector)deselectedNames); + fields.put("mySelectObjNameList", selectedNames); + fields.put("myDeselectObjNameList", deselectedNames); out.writeFields(); } else diff --git a/src/share/classes/javax/management/relation/RelationService.java b/src/share/classes/javax/management/relation/RelationService.java index 98a4809ea4173433362b98cc6e0761566c55a565..fcf0cb0127e77de2e65e5898fe49590468295970 100644 --- a/src/share/classes/javax/management/relation/RelationService.java +++ b/src/share/classes/javax/management/relation/RelationService.java @@ -1111,7 +1111,7 @@ public class RelationService extends NotificationBroadcasterSupport throw new IllegalArgumentException(excMsg); } - if (!(oldValue instanceof ArrayList)) + if (!(oldValue instanceof ArrayList)) oldValue = new ArrayList(oldValue); RELATION_LOGGER.entering(RelationService.class.getName(), @@ -1881,7 +1881,7 @@ public class RelationService extends NotificationBroadcasterSupport "getRole", params, signature)); - if (invokeResult == null || invokeResult instanceof ArrayList) + if (invokeResult == null || invokeResult instanceof ArrayList) result = invokeResult; else result = new ArrayList(invokeResult); @@ -2786,7 +2786,7 @@ public class RelationService extends NotificationBroadcasterSupport // Note that it is possible that the MBean has already been removed // from the internal map: this is the case when the MBean is // unregistered, the role is updated, then we arrive here. - HashMap mbeanRefMap = (HashMap) + Map> mbeanRefMap = (myRefedMBeanObjName2RelIdsMap.get(objectName)); if (mbeanRefMap == null) { @@ -2796,11 +2796,11 @@ public class RelationService extends NotificationBroadcasterSupport return true; } - ArrayList roleNames = new ArrayList(); + List roleNames = null; if (!allRolesFlag) { // Now retrieves the roles of current relation where the MBean // was referenced - roleNames = (ArrayList)(mbeanRefMap.get(relationId)); + roleNames = mbeanRefMap.get(relationId); // Removes obsolete reference to role int obsRefIdx = roleNames.indexOf(roleName); @@ -2840,8 +2840,8 @@ public class RelationService extends NotificationBroadcasterSupport // // -exception RelationServiceNotRegisteredException if the Relation // Service is not registered in the MBean Server. - private void updateUnregistrationListener(List newRefList, - List obsoleteRefList) + private void updateUnregistrationListener(List newRefList, + List obsoleteRefList) throws RelationServiceNotRegisteredException { if (newRefList != null && obsoleteRefList != null) { @@ -2871,24 +2871,14 @@ public class RelationService extends NotificationBroadcasterSupport // Enables ObjectNames in newRefList if (newRefList != null) { - for (Iterator newRefIter = newRefList.iterator(); - newRefIter.hasNext();) { - - ObjectName newObjName = (ObjectName) - (newRefIter.next()); + for (ObjectName newObjName : newRefList) myUnregNtfFilter.enableObjectName(newObjName); - } } if (obsoleteRefList != null) { // Disables ObjectNames in obsoleteRefList - for (Iterator obsRefIter = obsoleteRefList.iterator(); - obsRefIter.hasNext();) { - - ObjectName obsObjName = (ObjectName) - (obsRefIter.next()); + for (ObjectName obsObjName : obsoleteRefList) myUnregNtfFilter.disableObjectName(obsObjName); - } } // Under test @@ -3047,18 +3037,13 @@ public class RelationService extends NotificationBroadcasterSupport // to see which roles have not been initialized // Note: no need to test if list not null before cloning, not allowed // to have an empty relation type. - ArrayList roleInfoList = (ArrayList) - (((ArrayList)(relType.getRoleInfos())).clone()); + List roleInfoList = new ArrayList(relType.getRoleInfos()); if (roleList != null) { - for (Iterator roleIter = roleList.iterator(); - roleIter.hasNext();) { - - Role currRole = (Role)(roleIter.next()); + for (Role currRole : roleList.asList()) { String currRoleName = currRole.getRoleName(); - ArrayList currRoleValue = (ArrayList) - (currRole.getRoleValue()); + List currRoleValue = currRole.getRoleValue(); // Retrieves corresponding role info // Can throw a RoleInfoNotFoundException to be converted into a // RoleNotFoundException @@ -3137,9 +3122,7 @@ public class RelationService extends NotificationBroadcasterSupport // Only role list parameter used, as default initialization of roles // done automatically in initializeMissingRoles() sets each // uninitialized role to an empty value. - for (Iterator roleIter = roleList.iterator(); - roleIter.hasNext();) { - Role currRole = (Role)(roleIter.next()); + for (Role currRole : roleList.asList()) { // Creates a dummy empty ArrayList of ObjectNames to be the old // role value :) List dummyList = new ArrayList(); @@ -3191,7 +3174,7 @@ public class RelationService extends NotificationBroadcasterSupport // -exception IllegalArgumentException if null parameter private Integer checkRoleInt(int chkType, String roleName, - List roleValue, + List roleValue, RoleInfo roleInfo, boolean writeChkFlag) throws IllegalArgumentException { @@ -3266,9 +3249,7 @@ public class RelationService extends NotificationBroadcasterSupport // registered in the same MBean Server. String expClassName = roleInfo.getRefMBeanClassName(); - for (Iterator refMBeanIter = roleValue.iterator(); - refMBeanIter.hasNext();) { - ObjectName currObjName = (ObjectName)(refMBeanIter.next()); + for (ObjectName currObjName : roleValue) { // Checks it is registered if (currObjName == null) { @@ -3330,7 +3311,7 @@ public class RelationService extends NotificationBroadcasterSupport ObjectName relationObjName, String relationId, String relationTypeName, - List roleInfoList) + List roleInfoList) throws IllegalArgumentException, RelationServiceNotRegisteredException, InvalidRoleValueException { @@ -3361,10 +3342,8 @@ public class RelationService extends NotificationBroadcasterSupport // with an empty list of ObjectNames. // A check is performed to verify that the role can be set to an // empty value, according to its minimum cardinality - for (Iterator roleInfoIter = roleInfoList.iterator(); - roleInfoIter.hasNext();) { + for (RoleInfo currRoleInfo : roleInfoList) { - RoleInfo currRoleInfo = (RoleInfo)(roleInfoIter.next()); String roleName = currRoleInfo.getName(); // Creates an empty value @@ -3663,7 +3642,7 @@ public class RelationService extends NotificationBroadcasterSupport // not exist in the relation private void handleReferenceUnregistration(String relationId, ObjectName objectName, - List roleNameList) + List roleNameList) throws IllegalArgumentException, RelationServiceNotRegisteredException, RelationNotFoundException, @@ -3694,14 +3673,12 @@ public class RelationService extends NotificationBroadcasterSupport // Flag to specify if the relation has to be deleted boolean deleteRelFlag = false; - for (Iterator roleNameIter = roleNameList.iterator(); - roleNameIter.hasNext();) { + for (String currRoleName : roleNameList) { if (deleteRelFlag) { break; } - String currRoleName = (String)(roleNameIter.next()); // Retrieves number of MBeans currently referenced in role // BEWARE! Do not use getRole() as role may be not readable // @@ -3753,10 +3730,7 @@ public class RelationService extends NotificationBroadcasterSupport // using setRole(). So the Relation Service will update the // myRefedMBeanObjName2RelIdsMap to refelect the new role // value! - for (Iterator roleNameIter = roleNameList.iterator(); - roleNameIter.hasNext();) { - - String currRoleName = (String)(roleNameIter.next()); + for (String currRoleName : roleNameList) { if (relObj instanceof RelationSupport) { // Internal relation diff --git a/src/share/classes/javax/management/relation/RelationSupport.java b/src/share/classes/javax/management/relation/RelationSupport.java index ed0958e9b4a57afaef224f730238fc846b55c136..c714a3ecbaab48edc0325dd3597101fd87ebc250 100644 --- a/src/share/classes/javax/management/relation/RelationSupport.java +++ b/src/share/classes/javax/management/relation/RelationSupport.java @@ -108,7 +108,7 @@ public class RelationSupport // via Relation Service setRole() and setRoles() methods // - if the relation is internal to the Relation Service, via // setRoleInt() and setRolesInt() methods. - private Map myRoleName2ValueMap = new HashMap(); + private final Map myRoleName2ValueMap = new HashMap(); // Flag to indicate if the object has been added in the Relation Service private final AtomicBoolean myInRelServFlg = new AtomicBoolean(); @@ -424,7 +424,7 @@ public class RelationSupport } } - ArrayList roleValue = (ArrayList)(role.getRoleValue()); + List roleValue = role.getRoleValue(); RELATION_LOGGER.exiting(RelationSupport.class.getName(), "getRoleCardinality"); @@ -855,8 +855,7 @@ public class RelationSupport // Note: no need to test if role value (list) not null before // cloning, null value not allowed, empty list if // nothing. - result = (ArrayList) - (((ArrayList)(role.getRoleValue())).clone()); + result = new ArrayList(role.getRoleValue()); } else { // Role retrieved during multi-role retrieval: returns the @@ -1492,10 +1491,7 @@ public class RelationSupport RoleList roleList = new RoleList(); RoleUnresolvedList roleUnresList = new RoleUnresolvedList(); - for (Iterator roleIter = list.iterator(); - roleIter.hasNext();) { - - Role currRole = (Role)(roleIter.next()); + for (Role currRole : list.asList()) { Object currResult = null; // Can throw: @@ -1617,12 +1613,10 @@ public class RelationSupport synchronized(myRoleName2ValueMap) { - for (Iterator roleIter = list.iterator(); - roleIter.hasNext();) { + for (Role currRole : list.asList()) { // No need to check if role is null, it is not allowed to store // a null role in a RoleList :) - Role currRole = (Role)(roleIter.next()); String currRoleName = currRole.getRoleName(); if (myRoleName2ValueMap.containsKey(currRoleName)) { diff --git a/src/share/classes/javax/management/relation/Role.java b/src/share/classes/javax/management/relation/Role.java index dc8f7944304fdf682acf81855d557b6841df4e27..8ce7aa860efc88f2fcc1bcc66e56a325a679cb40 100644 --- a/src/share/classes/javax/management/relation/Role.java +++ b/src/share/classes/javax/management/relation/Role.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -228,9 +228,9 @@ public class Role implements Serializable { public String toString() { StringBuilder result = new StringBuilder(); result.append("role name: " + name + "; role value: "); - for (Iterator objNameIter = objectNameList.iterator(); + for (Iterator objNameIter = objectNameList.iterator(); objNameIter.hasNext();) { - ObjectName currObjName = (ObjectName)(objNameIter.next()); + ObjectName currObjName = objNameIter.next(); result.append(currObjName.toString()); if (objNameIter.hasNext()) { result.append(", "); @@ -325,7 +325,7 @@ public class Role implements Serializable { // ObjectOutputStream.PutField fields = out.putFields(); fields.put("myName", name); - fields.put("myObjNameList", (ArrayList)objectNameList); + fields.put("myObjNameList", objectNameList); out.writeFields(); } else diff --git a/src/share/classes/javax/management/relation/RoleList.java b/src/share/classes/javax/management/relation/RoleList.java index a03ffe28065cce667539cfb73a097bd791a61d18..398e0016ed7fa83ea3fed61fe0fc633aa424bd39 100644 --- a/src/share/classes/javax/management/relation/RoleList.java +++ b/src/share/classes/javax/management/relation/RoleList.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ package javax.management.relation; +import com.sun.jmx.mbeanserver.Util; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -140,7 +141,7 @@ public class RoleList extends ArrayList { checkTypeSafe(this); typeSafe = true; } - return (List) (List) this; + return Util.cast(this); } // diff --git a/src/share/classes/javax/management/relation/RoleResult.java b/src/share/classes/javax/management/relation/RoleResult.java index 64df5b97ecb03c9d87bee90efc02e6742df7d534..3a051440087cab76c386a56e24b3b69824d89066 100644 --- a/src/share/classes/javax/management/relation/RoleResult.java +++ b/src/share/classes/javax/management/relation/RoleResult.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -172,7 +172,7 @@ public class RoleResult implements Serializable { roleList = new RoleList(); - for (Iterator roleIter = list.iterator(); + for (Iterator roleIter = list.iterator(); roleIter.hasNext();) { Role currRole = (Role)(roleIter.next()); roleList.add((Role)(currRole.clone())); @@ -195,7 +195,7 @@ public class RoleResult implements Serializable { unresolvedRoleList = new RoleUnresolvedList(); - for (Iterator roleUnresIter = unresolvedList.iterator(); + for (Iterator roleUnresIter = unresolvedList.iterator(); roleUnresIter.hasNext();) { RoleUnresolved currRoleUnres = (RoleUnresolved)(roleUnresIter.next()); diff --git a/src/share/classes/javax/management/relation/RoleUnresolved.java b/src/share/classes/javax/management/relation/RoleUnresolved.java index 8b25797488b961e34b830c4b5f9de85e0666bfbd..9bd31bd1f2bc0b51127f0778fee6da644db25b93 100644 --- a/src/share/classes/javax/management/relation/RoleUnresolved.java +++ b/src/share/classes/javax/management/relation/RoleUnresolved.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -285,9 +285,9 @@ public class RoleUnresolved implements Serializable { result.append("role name: " + roleName); if (roleValue != null) { result.append("; value: "); - for (Iterator objNameIter = roleValue.iterator(); + for (Iterator objNameIter = roleValue.iterator(); objNameIter.hasNext();) { - ObjectName currObjName = (ObjectName)(objNameIter.next()); + ObjectName currObjName = objNameIter.next(); result.append(currObjName.toString()); if (objNameIter.hasNext()) { result.append(", "); @@ -344,7 +344,7 @@ public class RoleUnresolved implements Serializable { // ObjectOutputStream.PutField fields = out.putFields(); fields.put("myRoleName", roleName); - fields.put("myRoleValue", (ArrayList)roleValue); + fields.put("myRoleValue", roleValue); fields.put("myPbType", problemType); out.writeFields(); } diff --git a/src/share/classes/javax/management/relation/RoleUnresolvedList.java b/src/share/classes/javax/management/relation/RoleUnresolvedList.java index 3b4e42ebfc6a62c4c9ce26a81213088d6193d964..fb94ad744308a0af562cb80c6aee8c658f1a763e 100644 --- a/src/share/classes/javax/management/relation/RoleUnresolvedList.java +++ b/src/share/classes/javax/management/relation/RoleUnresolvedList.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ package javax.management.relation; +import com.sun.jmx.mbeanserver.Util; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -140,7 +141,7 @@ public class RoleUnresolvedList extends ArrayList { checkTypeSafe(this); typeSafe = true; } - return (List) (List) this; + return Util.cast(this); } // diff --git a/src/share/classes/javax/management/remote/JMXConnectorFactory.java b/src/share/classes/javax/management/remote/JMXConnectorFactory.java index 219865b603c9dc1e07d5b8fb5aaaceb841c65b11..77f700c32159a79ad619be8cd622f262c3e462a1 100644 --- a/src/share/classes/javax/management/remote/JMXConnectorFactory.java +++ b/src/share/classes/javax/management/remote/JMXConnectorFactory.java @@ -322,10 +322,12 @@ public class JMXConnectorFactory { JMXConnectorProvider.class; final String protocol = serviceURL.getProtocol(); final String providerClassName = "ClientProvider"; + final JMXServiceURL providerURL = serviceURL; - JMXConnectorProvider provider = - getProvider(serviceURL, envcopy, providerClassName, - targetInterface, loader); + JMXConnectorProvider provider = getProvider(providerURL, envcopy, + providerClassName, + targetInterface, + loader); IOException exception = null; if (provider == null) { @@ -336,7 +338,7 @@ public class JMXConnectorFactory { if (loader != null) { try { JMXConnector connection = - getConnectorAsService(loader, serviceURL, envcopy); + getConnectorAsService(loader, providerURL, envcopy); if (connection != null) return connection; } catch (JMXProviderException e) { @@ -345,8 +347,7 @@ public class JMXConnectorFactory { exception = e; } } - provider = - getProvider(protocol, PROTOCOL_PROVIDER_DEFAULT_PACKAGE, + provider = getProvider(protocol, PROTOCOL_PROVIDER_DEFAULT_PACKAGE, JMXConnectorFactory.class.getClassLoader(), providerClassName, targetInterface); } @@ -367,7 +368,8 @@ public class JMXConnectorFactory { return provider.newJMXConnector(serviceURL, fixedenv); } - private static String resolvePkgs(Map env) throws JMXProviderException { + private static String resolvePkgs(Map env) + throws JMXProviderException { Object pkgsObject = null; @@ -447,9 +449,10 @@ public class JMXConnectorFactory { getProviderIterator(JMXConnectorProvider.class, loader); JMXConnector connection; IOException exception = null; - while(providers.hasNext()) { + while (providers.hasNext()) { + JMXConnectorProvider provider = providers.next(); try { - connection = providers.next().newJMXConnector(url, map); + connection = provider.newJMXConnector(url, map); return connection; } catch (JMXProviderException e) { throw e; @@ -521,7 +524,7 @@ public class JMXConnectorFactory { return null; } - static ClassLoader resolveClassLoader(Map environment) { + static ClassLoader resolveClassLoader(Map environment) { ClassLoader loader = null; if (environment != null) { @@ -552,4 +555,5 @@ public class JMXConnectorFactory { private static String protocol2package(String protocol) { return protocol.replace('+', '.').replace('-', '_'); } + } diff --git a/src/share/classes/javax/management/remote/JMXConnectorServer.java b/src/share/classes/javax/management/remote/JMXConnectorServer.java index 88348ff5de39d5517f7c4a3409f11c2ce7261937..056114cfc76ca3552028cfea0eff944d54fd4d96 100644 --- a/src/share/classes/javax/management/remote/JMXConnectorServer.java +++ b/src/share/classes/javax/management/remote/JMXConnectorServer.java @@ -33,6 +33,7 @@ import java.util.List; import java.util.Map; import java.util.NoSuchElementException; +import javax.management.ClientContext; import javax.management.MBeanInfo; // for javadoc import javax.management.MBeanNotificationInfo; import javax.management.MBeanRegistration; @@ -101,6 +102,56 @@ public abstract class JMXConnectorServer public static final String DELEGATE_TO_EVENT_SERVICE = "jmx.remote.delegate.event.service"; + /** + *

      Name of the attribute that specifies whether this connector + * server allows clients to communicate a context with each request. + * The value associated with this attribute, if any, must be a string + * that is equal to {@code "true"} or {@code "false"}, ignoring case. + * If it is {@code "true"}, then the connector server will simulate + * a namespace {@code jmx.context//}, as described in + * {@link ClientContext#newContextForwarder}. This namespace is needed + * for {@link ClientContext#withContext ClientContext.withContext} to + * function correctly.

      + * + *

      Not all connector servers will understand this attribute, but the + * standard {@linkplain javax.management.remote.rmi.RMIConnectorServer + * RMI Connector Server} does. For a connector server that understands + * this attribute, the default value is {@code "true"}.

      + * + * @since 1.7 + */ + public static final String CONTEXT_FORWARDER = + "jmx.remote.context.forwarder"; + + /** + *

      Name of the attribute that specifies whether this connector server + * localizes the descriptions in the {@link MBeanInfo} object returned by + * {@link MBeanServer#getMBeanInfo MBeanServer.getMBeanInfo}, based on the + * locale communicated by the client.

      + * + *

      The value associated with this attribute, if any, must be a string + * that is equal to {@code "true"} or {@code "false"}, ignoring case. + * If it is {@code "true"}, then the connector server will localize + * {@code MBeanInfo} descriptions as specified in {@link + * ClientContext#newLocalizeMBeanInfoForwarder}.

      + * + *

      Not all connector servers will understand this attribute, but the + * standard {@linkplain javax.management.remote.rmi.RMIConnectorServer + * RMI Connector Server} does. For a connector server that understands + * this attribute, the default value is {@code "false"}.

      + * + *

      Because localization requires the client to be able to communicate + * its locale, it does not make sense to specify this attribute as + * {@code "true"} if {@link #CONTEXT_FORWARDER} is not also {@code "true"}. + * For a connector server that understands these attributes, specifying + * this inconsistent combination will result in an {@link + * IllegalArgumentException}.

      + * + * @since 1.7 + */ + public static final String LOCALIZE_MBEAN_INFO_FORWARDER = + "jmx.remote.localize.mbean.info"; + /** *

      Name of the attribute that specifies whether this connector * server simulates the existence of the {@link EventClientDelegate} @@ -155,7 +206,7 @@ public abstract class JMXConnectorServer * to, or null if it is not yet attached to an MBean server. * * @see #setMBeanServerForwarder - * @see #getSystemMBeanServer + * @see #getSystemMBeanServerForwarder */ public synchronized MBeanServer getMBeanServer() { return userMBeanServer; @@ -176,30 +227,36 @@ public abstract class JMXConnectorServer * this method, the first occurrence in the chain of an object that is * {@linkplain Object#equals equal} to {@code mbsf} will have been * removed.

      + * * @param mbsf the forwarder to remove + * * @throws NoSuchElementException if there is no occurrence of {@code mbsf} * in the chain. - * @throws IllegalArgumentException if {@code mbsf} is null. + * @throws IllegalArgumentException if {@code mbsf} is null or is the + * {@linkplain #getSystemMBeanServerForwarder() system forwarder}. + * + * @since 1.7 */ public synchronized void removeMBeanServerForwarder(MBeanServerForwarder mbsf) { if (mbsf == null) throw new IllegalArgumentException("Invalid null argument: mbsf"); + if (systemMBeanServerForwarder.equals(mbsf)) + throw new IllegalArgumentException("Cannot remove system forwarder"); - MBeanServerForwarder prev = null; - MBeanServer curr = systemMBeanServer; - while (curr instanceof MBeanServerForwarder && !mbsf.equals(curr)) { - prev = (MBeanServerForwarder) curr; + MBeanServerForwarder prev = systemMBeanServerForwarder; + MBeanServer curr; + while (true) { curr = prev.getMBeanServer(); + if (mbsf.equals(curr)) + break; + if (curr instanceof MBeanServerForwarder) + prev = (MBeanServerForwarder) curr; + else + throw new NoSuchElementException("MBeanServerForwarder not in chain"); } - if (!(curr instanceof MBeanServerForwarder)) - throw new NoSuchElementException("MBeanServerForwarder not in chain"); - MBeanServerForwarder deleted = (MBeanServerForwarder) curr; - MBeanServer next = deleted.getMBeanServer(); - if (prev != null) - prev.setMBeanServer(next); - if (systemMBeanServer == deleted) - systemMBeanServer = next; - if (userMBeanServer == deleted) + MBeanServer next = mbsf.getMBeanServer(); + prev.setMBeanServer(next); + if (userMBeanServer == mbsf) userMBeanServer = next; } @@ -209,66 +266,63 @@ public abstract class JMXConnectorServer * the systemMBeanServer and userMBeanServer field declarations. */ private void insertUserMBeanServer(MBeanServer mbs) { - MBeanServerForwarder lastSystemMBSF = null; - for (MBeanServer mbsi = systemMBeanServer; - mbsi != userMBeanServer; - mbsi = lastSystemMBSF.getMBeanServer()) { + MBeanServerForwarder lastSystemMBSF = systemMBeanServerForwarder; + while (true) { + MBeanServer mbsi = lastSystemMBSF.getMBeanServer(); + if (mbsi == userMBeanServer) + break; lastSystemMBSF = (MBeanServerForwarder) mbsi; } userMBeanServer = mbs; - if (lastSystemMBSF == null) - systemMBeanServer = mbs; - else - lastSystemMBSF.setMBeanServer(mbs); + lastSystemMBSF.setMBeanServer(mbs); } /** *

      Returns the first item in the chain of system and then user - * forwarders. In the simplest case, a {@code JMXConnectorServer} - * is connected directly to an {@code MBeanServer}. But there can - * also be a chain of {@link MBeanServerForwarder}s between the two. - * This chain consists of two sub-chains: first the system chain - * and then the user chain. Incoming requests are given to the - * first forwarder in the system chain. Each forwarder can handle - * a request itself, or more usually forward it to the next forwarder, - * perhaps with some extra behavior such as logging or security - * checking before or after the forwarding. The last forwarder in - * the system chain is followed by the first forwarder in the user - * chain.

      - * - *

      The system chain is usually - * defined by a connector server based on the environment Map; - * see {@link JMXConnectorServerFactory#newJMXConnectorServer}. Allowing the - * connector server to define its forwarders in this way ensures that - * they are in the correct order - some forwarders need to be inserted - * before others for correct behavior. It is possible to modify the - * system chain, for example using {@link #setSystemMBeanServerForwarder} or - * {@link #removeMBeanServerForwarder}, but in that case the system - * chain is no longer guaranteed to be correct.

      + * forwarders. There is a chain of {@link MBeanServerForwarder}s between + * a {@code JMXConnectorServer} and its {@code MBeanServer}. This chain + * consists of two sub-chains: first the system chain and then + * the user chain. Incoming requests are given to the first + * forwarder in the system chain. Each forwarder can handle a request + * itself, or more usually forward it to the next forwarder, perhaps with + * some extra behavior such as logging or security checking before or after + * the forwarding. The last forwarder in the system chain is followed by + * the first forwarder in the user chain.

      + * + *

      The object returned by this method is the first forwarder in the + * system chain. For a given {@code JMXConnectorServer}, this method + * always returns the same object, which simply forwards every request + * to the next object in the chain.

      + * + *

      Not all connector servers support a system chain of forwarders, + * although the standard {@linkplain + * javax.management.remote.rmi.RMIConnectorServer RMI connector + * server} does. For those that do not, this method will throw {@code + * UnsupportedOperationException}. All + * connector servers do support a user chain of forwarders.

      + * + *

      The system chain is usually defined by a + * connector server based on the environment Map; see {@link + * JMXConnectorServerFactory#newJMXConnectorServer + * JMXConnectorServerFactory.newJMXConnectorServer}. Allowing + * the connector server to define its forwarders in this way + * ensures that they are in the correct order - some forwarders + * need to be inserted before others for correct behavior. It is + * possible to modify the system chain, for example using {@code + * connectorServer.getSystemMBeanServerForwarder().setMBeanServer(mbsf)} or + * {@link #removeMBeanServerForwarder removeMBeanServerForwarder}, but in + * that case the system chain is no longer guaranteed to be correct.

      * *

      The user chain is defined by calling {@link - * #setMBeanServerForwarder} to insert forwarders at the head of the user - * chain.

      - * - *

      If there are no forwarders in either chain, then both - * {@link #getMBeanServer()} and {@code getSystemMBeanServer()} will - * return the {@code MBeanServer} for this connector server. If there - * are forwarders in the user chain but not the system chain, then - * both methods will return the first forwarder in the user chain. - * If there are forwarders in the system chain but not the user chain, - * then {@code getSystemMBeanServer()} will return the first forwarder - * in the system chain, and {@code getMBeanServer()} will return the - * {@code MBeanServer} for this connector server. Finally, if there - * are forwarders in each chain then {@code getSystemMBeanServer()} - * will return the first forwarder in the system chain, and {@code - * getMBeanServer()} will return the first forwarder in the user chain.

      + * #setMBeanServerForwarder setMBeanServerForwarder} to insert forwarders + * at the head of the user chain.

      * *

      This code illustrates how the chains can be traversed:

      * *
            * JMXConnectorServer cs;
            * System.out.println("system chain:");
      -     * MBeanServer mbs = cs.getSystemMBeanServer();
      +     * MBeanServer mbs = cs.getSystemMBeanServerForwarder();
            * while (true) {
            *     if (mbs == cs.getMBeanServer())
            *         System.out.println("user chain:");
      @@ -281,65 +335,40 @@ public abstract class JMXConnectorServer
            * System.out.println("--MBean Server");
            * 
      * + *

      Note for connector server implementors

      + * + *

      Existing connector server implementations can be updated to support + * a system chain of forwarders as follows:

      + * + *
        + *
      • Override the {@link #supportsSystemMBeanServerForwarder()} + * method so that it returns true.

        + * + *
      • Call {@link #installStandardForwarders} from the constructor of + * the connector server.

        + * + *
      • Direct incoming requests to the result of {@link + * #getSystemMBeanServerForwarder()} instead of the result of {@link + * #getMBeanServer()}.

        + *
      + * * @return the first item in the system chain of forwarders. * - * @see #setSystemMBeanServerForwarder - */ - public synchronized MBeanServer getSystemMBeanServer() { - return systemMBeanServer; - } - - /** - *

      Inserts an object that intercepts requests for the MBean server - * that arrive through this connector server. This object will be - * supplied as the MBeanServer for any new connection - * created by this connector server. Existing connections are - * unaffected.

      - * - *

      This method can be called more than once with different - * {@link MBeanServerForwarder} objects. The result is a chain - * of forwarders. The last forwarder added is the first in the chain.

      - * - *

      This method modifies the system chain of {@link MBeanServerForwarder}s. - * Usually user code should change the user chain instead, via - * {@link #setMBeanServerForwarder}.

      - * - *

      Not all connector servers support a system chain of forwarders. - * Calling this method on a connector server that does not will produce an - * {@link UnsupportedOperationException}.

      - * - *

      Suppose {@code mbs} is the result of {@link #getSystemMBeanServer()} - * before calling this method. If {@code mbs} is not null, then - * {@code mbsf.setMBeanServer(mbs)} will be called. If doing so - * produces an exception, this method throws the same exception without - * any other effect. If {@code mbs} is null, or if the call to - * {@code mbsf.setMBeanServer(mbs)} succeeds, then this method will - * return normally and {@code getSystemMBeanServer()} will then return - * {@code mbsf}.

      - * - *

      The result of {@link #getMBeanServer()} is unchanged by this method.

      - * - * @param mbsf the new MBeanServerForwarder. - * - * @throws IllegalArgumentException if the call to {@link - * MBeanServerForwarder#setMBeanServer mbsf.setMBeanServer} fails - * with IllegalArgumentException, or if - * mbsf is null. - * - * @throws UnsupportedOperationException if - * {@link #supportsSystemMBeanServerForwarder} returns false. - * - * @see #getSystemMBeanServer() + * @throws UnsupportedOperationException if {@link + * #supportsSystemMBeanServerForwarder} returns false. + * + * @see #supportsSystemMBeanServerForwarder + * @see #setMBeanServerForwarder + * + * @since 1.7 */ - public synchronized void setSystemMBeanServerForwarder( - MBeanServerForwarder mbsf) { - if (mbsf == null) - throw new IllegalArgumentException("Invalid null argument: mbsf"); - mustSupportSystemMBSF(); - - if (systemMBeanServer != null) - mbsf.setMBeanServer(systemMBeanServer); - systemMBeanServer = mbsf; + public MBeanServerForwarder getSystemMBeanServerForwarder() { + if (!supportsSystemMBeanServerForwarder()) { + throw new UnsupportedOperationException( + "System MBeanServerForwarder not supported by this " + + "connector server"); + } + return systemMBeanServerForwarder; } /** @@ -350,17 +379,39 @@ public abstract class JMXConnectorServer * * @return true if this connector server supports the system chain of * forwarders. + * + * @since 1.7 */ public boolean supportsSystemMBeanServerForwarder() { return false; } - private void mustSupportSystemMBSF() { - if (!supportsSystemMBeanServerForwarder()) { - throw new UnsupportedOperationException( - "System MBeanServerForwarder not supported by this " + - "connector server"); - } + /** + * Closes a client connection. If the connection is successfully closed, + * the method {@link #connectionClosed} is called to notify interested parties. + *

      Not all connector servers support this method. For those that do, it + * should be possible to cause a new client connection to fail before it + * can be used, by calling this method from within a + * {@link javax.management.NotificationListener} + * when it receives a {@link JMXConnectionNotification#OPENED} notification. + * This allows the owner of a connector server to deny certain connections, + * typically based on the information in the connection id. + *

      The implementation of this method in {@code JMXConnectorServer} throws + * {@code UnsupportedOperationException}. Subclasses can override this + * method to support closing a specified client connection. + * + * @param connectionId the id of the client connection to be closed. + * @throws IllegalStateException if the server is not started or is closed. + * @throws IllegalArgumentException if {@code connectionId} is null or is + * not the id of any open connection. + * @throws java.io.IOException if an I/O error appears when closing the + * connection. + * + * @since 1.7 + */ + public void closeConnection(String connectionId) + throws IOException { + throw new UnsupportedOperationException(); } /** @@ -374,34 +425,90 @@ public abstract class JMXConnectorServer *

        * *
      • If {@link #EVENT_CLIENT_DELEGATE_FORWARDER} is absent, or is - * present with the value {@code "true"}, then a forwarder with the - * functionality of {@link EventClientDelegate#newForwarder} is inserted - * at the start of the system chain.
      • + * present with the value {@code "true"}, then a forwarder + * equivalent to {@link EventClientDelegate#newForwarder + * EventClientDelegate.newForwarder}{@code (sysMBSF.getMBeanServer(), + * sysMBSF)} is inserted at the start of the system chain, + * where {@code sysMBSF} is the object returned by {@link + * #getSystemMBeanServerForwarder()}. + * + *
      • If {@link #LOCALIZE_MBEAN_INFO_FORWARDER} is present with the + * value {@code "true"}, then a forwarder equivalent to + * {@link ClientContext#newLocalizeMBeanInfoForwarder + * ClientContext.newLocalizeMBeanInfoForwarder}{@code + * (sysMBSF.getMBeanServer())} is inserted at the start of the system + * chain.
      • + * + *
      • If {@link #CONTEXT_FORWARDER} is absent, or is present with + * the value {@code "true"}, then a forwarder equivalent to + * {@link ClientContext#newContextForwarder + * ClientContext.newContextForwarder}{@code (sysMSBF.getMBeanServer(), + * sysMBSF)} is inserted at the tart of the system chain.
      • * *
      * - *

      For {@code EVENT_CLIENT_DELEGATE_FORWARDER}, if the - * attribute is absent from the {@code Map} and a system property - * of the same name is defined, then the value of the system - * property is used as if it were in the {@code Map}. + *

      For {@code EVENT_CLIENT_DELEGATE_FORWARDER} and {@code + * CONTEXT_FORWARDER}, if the attribute is absent from the {@code + * Map} and a system property of the same name is defined, then + * the value of the system property is used as if it were in the + * {@code Map}. + * + *

      Since each forwarder is inserted at the start of the chain, + * the final order of the forwarders is the reverse of the order + * above. This is important, because the {@code + * LOCALIZE_MBEAN_INFO_FORWARDER} can only work if the {@code + * CONTEXT_FORWARDER} has already installed the remote client's locale + * in the {@linkplain ClientContext#getContext context} of the current + * thread.

      * *

      Attributes in {@code env} that are not listed above are ignored * by this method.

      * * @throws UnsupportedOperationException if {@link * #supportsSystemMBeanServerForwarder} is false. + * + * @throws IllegalArgumentException if the relevant attributes in {@code env} are + * inconsistent, for example if {@link #LOCALIZE_MBEAN_INFO_FORWARDER} is + * {@code "true"} but {@link #CONTEXT_FORWARDER} is {@code "false"}; or + * if one of the attributes has an illegal value. + * + * @since 1.7 */ protected void installStandardForwarders(Map env) { - mustSupportSystemMBSF(); + MBeanServerForwarder sysMBSF = getSystemMBeanServerForwarder(); // Remember that forwarders must be added in reverse order! boolean ecd = EnvHelp.computeBooleanFromString( env, EVENT_CLIENT_DELEGATE_FORWARDER, false, true); + boolean localize = EnvHelp.computeBooleanFromString( + env, LOCALIZE_MBEAN_INFO_FORWARDER, false, false); + boolean context = EnvHelp.computeBooleanFromString( + env, CONTEXT_FORWARDER, false, true); + + if (localize && !context) { + throw new IllegalArgumentException( + "Inconsistent environment parameters: " + + LOCALIZE_MBEAN_INFO_FORWARDER + "=\"true\" requires " + + CONTEXT_FORWARDER + "=\"true\""); + } if (ecd) { - MBeanServerForwarder mbsf = EventClientDelegate.newForwarder(); - setSystemMBeanServerForwarder(mbsf); + MBeanServerForwarder mbsf = EventClientDelegate.newForwarder( + sysMBSF.getMBeanServer(), sysMBSF); + sysMBSF.setMBeanServer(mbsf); + } + + if (localize) { + MBeanServerForwarder mbsf = ClientContext.newLocalizeMBeanInfoForwarder( + sysMBSF.getMBeanServer()); + sysMBSF.setMBeanServer(mbsf); + } + + if (context) { + MBeanServerForwarder mbsf = ClientContext.newContextForwarder( + sysMBSF.getMBeanServer(), sysMBSF); + sysMBSF.setMBeanServer(mbsf); } } @@ -473,6 +580,7 @@ public abstract class JMXConnectorServer * * @return the array of possible notifications. */ + @Override public MBeanNotificationInfo[] getNotificationInfo() { final String[] types = { JMXConnectionNotification.OPENED, @@ -684,30 +792,29 @@ public abstract class JMXConnectorServer * Fields describing the chains of forwarders (MBeanServerForwarders). * In the general case, the forwarders look something like this: * - * systemMBeanServer userMBeanServer - * | | - * v v - * mbsf1 -> mbsf2 -> mbsf3 -> mbsf4 -> mbsf5 -> mbs + * userMBeanServer + * | + * v + * systemMBeanServerForwarder -> mbsf2 -> mbsf3 -> mbsf4 -> mbsf5 -> mbs * * Here, each mbsfi is an MBeanServerForwarder, and the arrows * illustrate its getMBeanServer() method. The last MBeanServerForwarder * can point to an MBeanServer that is not instanceof MBeanServerForwarder, * here mbs. * - * Initially, the chain can be empty if this JMXConnectorServer was - * constructed without an MBeanServer. In this case, both systemMBS - * and userMBS will be null. If there is initially an MBeanServer, - * then both systemMBS and userMBS will point to it. - * - * Whenever userMBS is changed, the system chain must be updated. If there - * are forwarders in the system chain (between systemMBS and userMBS in the - * picture above), then the last one must point to the old value of userMBS - * (possibly null). It must be updated to point to the new value. If there - * are no forwarders in the system chain, then systemMBS must be updated to - * the new value of userMBS. The invariant is that starting from systemMBS - * and repeatedly calling MBSF.getMBeanServer() you will end up at - * userMBS. The implication is that you will not see any MBeanServer - * object on the way that is not also an MBeanServerForwarder. + * The system chain is never empty because it always has at least + * systemMBeanServerForwarder. Initially, the user chain can be empty if + * this JMXConnectorServer was constructed without an MBeanServer. In + * this case, userMBS will be null. If there is initially an MBeanServer, + * userMBS will point to it. + * + * Whenever userMBS is changed, the system chain must be updated. Before + * the update, the last forwarder in the system chain points to the old + * value of userMBS (possibly null). It must be updated to point to + * the new value. The invariant is that starting from systemMBSF and + * repeatedly calling MBSF.getMBeanServer() you will end up at userMBS. + * The implication is that you will not see any MBeanServer object on the + * way that is not also an MBeanServerForwarder. * * The method insertUserMBeanServer contains the logic to change userMBS * and adjust the system chain appropriately. @@ -716,7 +823,7 @@ public abstract class JMXConnectorServer * MBeanServer, then userMBS becomes that MBeanServer, and the system * chain must be updated as just described. * - * When systemMBS is updated, there is no effect on userMBS. The system + * When systemMBSF is updated, there is no effect on userMBS. The system * chain may contain forwarders even though the user chain is empty * (there is no MBeanServer). In that case an attempt to forward an * incoming request through the chain will fall off the end and fail with a @@ -726,7 +833,8 @@ public abstract class JMXConnectorServer private MBeanServer userMBeanServer; - private MBeanServer systemMBeanServer; + private final MBeanServerForwarder systemMBeanServerForwarder = + new IdentityMBeanServerForwarder(); /** * The name used to registered this server in an MBeanServer. diff --git a/src/share/classes/javax/management/remote/JMXConnectorServerMBean.java b/src/share/classes/javax/management/remote/JMXConnectorServerMBean.java index fb6f883a2b74f63bd110ea59b1ce24fe8d7196ac..b784b87e48c84c83c8b612c7bb61ce41751ddac6 100644 --- a/src/share/classes/javax/management/remote/JMXConnectorServerMBean.java +++ b/src/share/classes/javax/management/remote/JMXConnectorServerMBean.java @@ -132,7 +132,7 @@ public interface JMXConnectorServerMBean { * *

      A connector server may support two chains of forwarders, * a system chain and a user chain. See {@link - * JMXConnectorServer#setSystemMBeanServerForwarder} for details.

      + * JMXConnectorServer#getSystemMBeanServerForwarder} for details.

      * * @param mbsf the new MBeanServerForwarder. * @@ -141,7 +141,7 @@ public interface JMXConnectorServerMBean { * with IllegalArgumentException. This includes the * case where mbsf is null. * - * @see JMXConnectorServer#setSystemMBeanServerForwarder + * @see JMXConnectorServer#getSystemMBeanServerForwarder */ public void setMBeanServerForwarder(MBeanServerForwarder mbsf); diff --git a/src/share/classes/javax/management/remote/rmi/NoCallStackClassLoader.java b/src/share/classes/javax/management/remote/rmi/NoCallStackClassLoader.java index a4c5fe0eadf47097e081213234d4290310b662be..d3f9c03bdcf3eb73c8dbbedfb389fca0999b66e8 100644 --- a/src/share/classes/javax/management/remote/rmi/NoCallStackClassLoader.java +++ b/src/share/classes/javax/management/remote/rmi/NoCallStackClassLoader.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -118,7 +118,8 @@ class NoCallStackClassLoader extends ClassLoader { * if it is one of the classes whose byte code we have, or * delegate the load if it is one of the referenced classes. */ - protected Class findClass(String name) throws ClassNotFoundException { + @Override + protected Class findClass(String name) throws ClassNotFoundException { for (int i = 0; i < classNames.length; i++) { if (name.equals(classNames[i])) { return defineClass(classNames[i], byteCodes[i], 0, diff --git a/src/share/classes/javax/management/remote/rmi/RMIConnection.java b/src/share/classes/javax/management/remote/rmi/RMIConnection.java index 863b3dca8cccf9ce282e4778ff7489d2bf540747..01c7bbdf6fc7a5895510a911de34b15fdd99e42a 100644 --- a/src/share/classes/javax/management/remote/rmi/RMIConnection.java +++ b/src/share/classes/javax/management/remote/rmi/RMIConnection.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,7 +31,6 @@ import java.rmi.MarshalledObject; import java.rmi.Remote; import java.util.Set; -import javax.management.Attribute; import javax.management.AttributeList; import javax.management.AttributeNotFoundException; import javax.management.InstanceAlreadyExistsException; @@ -45,11 +44,11 @@ import javax.management.MBeanRegistrationException; import javax.management.MBeanServerConnection; import javax.management.NotCompliantMBeanException; -import javax.management.NotificationFilter; import javax.management.ObjectInstance; import javax.management.ObjectName; -import javax.management.QueryExp; import javax.management.ReflectionException; +import javax.management.RuntimeMBeanException; +import javax.management.RuntimeOperationsException; import javax.management.remote.NotificationResult; import javax.security.auth.Subject; @@ -89,8 +88,9 @@ import javax.security.auth.Subject; * even though it would add useful information to the documentation. The * reason is that it was only added in Mustang (Java SE 6), whereas versions * 1.4 and 2.0 of the JMX API must be implementable on Tiger per our - * commitments for JSR 255. + * commitments for JSR 255. This is also why we suppress rawtypes warnings. */ +@SuppressWarnings("rawtypes") public interface RMIConnection extends Closeable, Remote { /** *

      Returns the connection ID. This string is different for diff --git a/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java b/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java index a87d146e94ef2b52b1a7023929cf4ae707354354..acac5ec8f22c17ac26da3eaef9f55ddc06ebde7e 100644 --- a/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java +++ b/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java @@ -308,6 +308,7 @@ public class RMIConnectionImpl implements RMIConnection, Unreferenced { } } + @SuppressWarnings("rawtypes") // MarshalledObject public ObjectInstance createMBean(String className, ObjectName name, MarshalledObject params, @@ -368,6 +369,7 @@ public class RMIConnectionImpl implements RMIConnection, Unreferenced { } } + @SuppressWarnings("rawtypes") // MarshalledObject public ObjectInstance createMBean(String className, ObjectName name, ObjectName loaderName, @@ -493,6 +495,7 @@ public class RMIConnectionImpl implements RMIConnection, Unreferenced { } } + @SuppressWarnings("rawtypes") // MarshalledObject public Set queryMBeans(ObjectName name, MarshalledObject query, @@ -527,6 +530,7 @@ public class RMIConnectionImpl implements RMIConnection, Unreferenced { } } + @SuppressWarnings("rawtypes") // MarshalledObject public Set queryNames(ObjectName name, MarshalledObject query, @@ -668,6 +672,7 @@ public class RMIConnectionImpl implements RMIConnection, Unreferenced { } } + @SuppressWarnings("rawtypes") // MarshalledObject public void setAttribute(ObjectName name, MarshalledObject attribute, Subject delegationSubject) @@ -720,6 +725,7 @@ public class RMIConnectionImpl implements RMIConnection, Unreferenced { } } + @SuppressWarnings("rawtypes") // MarshalledObject public AttributeList setAttributes(ObjectName name, MarshalledObject attributes, Subject delegationSubject) @@ -765,6 +771,7 @@ public class RMIConnectionImpl implements RMIConnection, Unreferenced { } } + @SuppressWarnings("rawtypes") // MarshalledObject public Object invoke(ObjectName name, String operationName, MarshalledObject params, @@ -928,6 +935,7 @@ public class RMIConnectionImpl implements RMIConnection, Unreferenced { } } + @SuppressWarnings("rawtypes") // MarshalledObject public Integer[] addNotificationListeners(ObjectName[] names, MarshalledObject[] filters, Subject[] delegationSubjects) @@ -1013,6 +1021,7 @@ public class RMIConnectionImpl implements RMIConnection, Unreferenced { } } + @SuppressWarnings("rawtypes") // MarshalledObject public void addNotificationListener(ObjectName name, ObjectName listener, MarshalledObject filter, @@ -1148,6 +1157,7 @@ public class RMIConnectionImpl implements RMIConnection, Unreferenced { } } + @SuppressWarnings("rawtypes") // MarshalledObject public void removeNotificationListener(ObjectName name, ObjectName listener, MarshalledObject filter, @@ -1809,7 +1819,7 @@ public class RMIConnectionImpl implements RMIConnection, Unreferenced { } } - private static T unwrap(final MarshalledObject mo, + private static T unwrap(final MarshalledObject mo, final ClassLoader cl, final Class wrappedClass) throws IOException { @@ -1847,7 +1857,7 @@ public class RMIConnectionImpl implements RMIConnection, Unreferenced { return null; } - private static T unwrap(final MarshalledObject mo, + private static T unwrap(final MarshalledObject mo, final ClassLoader cl1, final ClassLoader cl2, final Class wrappedClass) diff --git a/src/share/classes/javax/management/remote/rmi/RMIConnector.java b/src/share/classes/javax/management/remote/rmi/RMIConnector.java index a620235ac139f8302732a3d30b41d2d5dfa1b7ae..5f1b8ac71ce6b10fc39e8d1d3770ec44aa13161f 100644 --- a/src/share/classes/javax/management/remote/rmi/RMIConnector.java +++ b/src/share/classes/javax/management/remote/rmi/RMIConnector.java @@ -28,6 +28,7 @@ package javax.management.remote.rmi; import com.sun.jmx.event.DaemonThreadFactory; import com.sun.jmx.event.EventConnection; import com.sun.jmx.mbeanserver.PerThreadGroupPool; +import com.sun.jmx.mbeanserver.Util; import com.sun.jmx.remote.internal.ClientCommunicatorAdmin; import com.sun.jmx.remote.internal.ClientListenerInfo; import com.sun.jmx.remote.internal.ClientNotifForwarder; @@ -71,9 +72,8 @@ import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.WeakHashMap; -import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.Executor; -import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -134,14 +134,14 @@ import sun.rmi.transport.LiveRef; public class RMIConnector implements JMXConnector, Serializable, JMXAddressable { private static final ClassLogger logger = - new ClassLogger("javax.management.remote.rmi", "RMIConnector"); + new ClassLogger("javax.management.remote.rmi", "RMIConnector"); private static final long serialVersionUID = 817323035842634473L; private RMIConnector(RMIServer rmiServer, JMXServiceURL address, - Map environment) { + Map environment) { if (rmiServer == null && address == null) throw new - IllegalArgumentException("rmiServer and jmxServiceURL both null"); + IllegalArgumentException("rmiServer and jmxServiceURL both null"); initTransients(); @@ -257,7 +257,7 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable } public synchronized void connect(Map environment) - throws IOException { + throws IOException { final boolean tracing = logger.traceOn(); String idstr = (tracing?"["+this.toString()+"]":null); @@ -274,8 +274,8 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable if (tracing) logger.trace("connect",idstr + " connecting..."); final Map usemap = - new HashMap((this.env==null) ? - Collections.emptyMap() : this.env); + new HashMap((this.env==null) ? + Collections.emptyMap() : this.env); if (environment != null) { @@ -315,7 +315,7 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable defaultClassLoader = EnvHelp.resolveClientClassLoader(usemap); usemap.put(JMXConnectorFactory.DEFAULT_CLASS_LOADER, - defaultClassLoader); + defaultClassLoader); rmiNotifClient = new RMINotifClient(defaultClassLoader, usemap); @@ -333,12 +333,12 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable eventServiceEnabled = EnvHelp.eventServiceEnabled(env); Notification connectedNotif = - new JMXConnectionNotification(JMXConnectionNotification.OPENED, - this, - connectionId, - clientNotifSeqNo++, - "Successful connection", - null); + new JMXConnectionNotification(JMXConnectionNotification.OPENED, + this, + connectionId, + clientNotifSeqNo++, + "Successful connection", + null); sendNotification(connectedNotif); // whether or not event service @@ -363,7 +363,7 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable if (terminated || !connected) { if (logger.traceOn()) logger.trace("getConnectionId","["+this.toString()+ - "] not connected."); + "] not connected."); throw new IOException("Not connected"); } @@ -374,23 +374,23 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable } public synchronized MBeanServerConnection getMBeanServerConnection() - throws IOException { + throws IOException { return getMBeanServerConnection(null); } public synchronized MBeanServerConnection - getMBeanServerConnection(Subject delegationSubject) + getMBeanServerConnection(Subject delegationSubject) throws IOException { if (terminated) { if (logger.traceOn()) logger.trace("getMBeanServerConnection","[" + this.toString() + - "] already closed."); + "] already closed."); throw new IOException("Connection closed"); } else if (!connected) { if (logger.traceOn()) logger.trace("getMBeanServerConnection","[" + this.toString() + - "] is not connected."); + "] is not connected."); throw new IOException("Not connected"); } @@ -405,7 +405,7 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable rmbsc, EventClientDelegateMBean.OBJECT_NAME, EventClientDelegateMBean.class); EventClient ec = new EventClient(ecd, null, defaultExecutor(), null, - EventClient.DEFAULT_LEASE_TIMEOUT); + EventClient.DEFAULT_REQUESTED_LEASE_TIME); rmbsc = EventConnection.Factory.make(rmbsc, ec); ec.addEventClientListener( @@ -421,29 +421,29 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable public ThreadPoolExecutor createThreadPool(ThreadGroup group) { ThreadFactory daemonThreadFactory = new DaemonThreadFactory( "JMX RMIConnector listener dispatch %d"); - ThreadPoolExecutor exec = new ThreadPoolExecutor( + ThreadPoolExecutor executor = new ThreadPoolExecutor( 1, 10, 1, TimeUnit.SECONDS, - new LinkedBlockingDeque(), + new LinkedBlockingQueue(), daemonThreadFactory); - exec.allowCoreThreadTimeOut(true); - return exec; + executor.allowCoreThreadTimeOut(true); + return executor; } }; return listenerDispatchThreadPool.getThreadPoolExecutor(create); } public void - addConnectionNotificationListener(NotificationListener listener, - NotificationFilter filter, - Object handback) { + addConnectionNotificationListener(NotificationListener listener, + NotificationFilter filter, + Object handback) { if (listener == null) throw new NullPointerException("listener"); connectionBroadcaster.addNotificationListener(listener, filter, - handback); + handback); } public void - removeConnectionNotificationListener(NotificationListener listener) + removeConnectionNotificationListener(NotificationListener listener) throws ListenerNotFoundException { if (listener == null) throw new NullPointerException("listener"); @@ -451,14 +451,14 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable } public void - removeConnectionNotificationListener(NotificationListener listener, - NotificationFilter filter, - Object handback) + removeConnectionNotificationListener(NotificationListener listener, + NotificationFilter filter, + Object handback) throws ListenerNotFoundException { if (listener == null) throw new NullPointerException("listener"); connectionBroadcaster.removeNotificationListener(listener, filter, - handback); + handback); } private void sendNotification(Notification n) { @@ -526,11 +526,11 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable try { rmiNotifClient.terminate(); if (tracing) logger.trace("close",idstr + - " RMI Notification client terminated."); + " RMI Notification client terminated."); } catch (RuntimeException x) { closeException = x; if (tracing) logger.trace("close",idstr + - " Failed to terminate RMI Notification client: " + x); + " Failed to terminate RMI Notification client: " + x); if (debug) logger.debug("close",x); } } @@ -544,7 +544,7 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable } catch (IOException e) { closeException = e; if (tracing) logger.trace("close",idstr + - " Failed to close RMIServer: " + e); + " Failed to close RMIServer: " + e); if (debug) logger.debug("close",e); } } @@ -559,12 +559,12 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable if (savedConnectionId != null) { Notification closedNotif = - new JMXConnectionNotification(JMXConnectionNotification.CLOSED, - this, - savedConnectionId, - clientNotifSeqNo++, - "Client has been closed", - null); + new JMXConnectionNotification(JMXConnectionNotification.CLOSED, + this, + savedConnectionId, + clientNotifSeqNo++, + "Client has been closed", + null); sendNotification(closedNotif); } @@ -572,20 +572,20 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable // if (closeException != null) { if (tracing) logger.trace("close",idstr + " failed to close: " + - closeException); + closeException); if (closeException instanceof IOException) throw (IOException) closeException; if (closeException instanceof RuntimeException) throw (RuntimeException) closeException; final IOException x = - new IOException("Failed to close: " + closeException); + new IOException("Failed to close: " + closeException); throw EnvHelp.initCause(x,closeException); } } // added for re-connection private Integer addListenerWithSubject(ObjectName name, - MarshalledObject filter, + MarshalledObject filter, Subject delegationSubject, boolean reconnect) throws InstanceNotFoundException, IOException { @@ -593,50 +593,51 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable final boolean debug = logger.debugOn(); if (debug) logger.debug("addListenerWithSubject", - "(ObjectName,MarshalledObject,Subject)"); + "(ObjectName,MarshalledObject,Subject)"); final ObjectName[] names = new ObjectName[] {name}; - final MarshalledObject[] filters = new MarshalledObject[] {filter}; + final MarshalledObject[] filters = + Util.cast(new MarshalledObject[] {filter}); final Subject[] delegationSubjects = new Subject[] { delegationSubject }; final Integer[] listenerIDs = - addListenersWithSubjects(names,filters,delegationSubjects, - reconnect); + addListenersWithSubjects(names,filters,delegationSubjects, + reconnect); if (debug) logger.debug("addListenerWithSubject","listenerID=" - + listenerIDs[0]); + + listenerIDs[0]); return listenerIDs[0]; } // added for re-connection private Integer[] addListenersWithSubjects(ObjectName[] names, - MarshalledObject[] filters, + MarshalledObject[] filters, Subject[] delegationSubjects, boolean reconnect) throws InstanceNotFoundException, IOException { final boolean debug = logger.debugOn(); if (debug) - logger.debug("addListenersWithSubjects", - "(ObjectName[],MarshalledObject[],Subject[])"); + logger.debug("addListenersWithSubjects", + "(ObjectName[],MarshalledObject[],Subject[])"); final ClassLoader old = pushDefaultClassLoader(); Integer[] listenerIDs = null; try { listenerIDs = connection.addNotificationListeners(names, - filters, - delegationSubjects); + filters, + delegationSubjects); } catch (NoSuchObjectException noe) { // maybe reconnect if (reconnect) { communicatorAdmin.gotIOException(noe); listenerIDs = connection.addNotificationListeners(names, - filters, - delegationSubjects); + filters, + delegationSubjects); } else { throw noe; } @@ -670,65 +671,65 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable } public ObjectInstance createMBean(String className, - ObjectName name) + ObjectName name) throws ReflectionException, - InstanceAlreadyExistsException, - MBeanRegistrationException, - MBeanException, - NotCompliantMBeanException, - IOException { + InstanceAlreadyExistsException, + MBeanRegistrationException, + MBeanException, + NotCompliantMBeanException, + IOException { if (logger.debugOn()) logger.debug("createMBean(String,ObjectName)", - "className=" + className + ", name=" + - name); + "className=" + className + ", name=" + + name); final ClassLoader old = pushDefaultClassLoader(); try { return connection.createMBean(className, - name, - delegationSubject); + name, + delegationSubject); } catch (IOException ioe) { communicatorAdmin.gotIOException(ioe); return connection.createMBean(className, - name, - delegationSubject); + name, + delegationSubject); } finally { popDefaultClassLoader(old); } } public ObjectInstance createMBean(String className, - ObjectName name, - ObjectName loaderName) - throws ReflectionException, - InstanceAlreadyExistsException, - MBeanRegistrationException, - MBeanException, - NotCompliantMBeanException, - InstanceNotFoundException, - IOException { + ObjectName name, + ObjectName loaderName) + throws ReflectionException, + InstanceAlreadyExistsException, + MBeanRegistrationException, + MBeanException, + NotCompliantMBeanException, + InstanceNotFoundException, + IOException { if (logger.debugOn()) logger.debug("createMBean(String,ObjectName,ObjectName)", - "className=" + className + ", name=" - + name + ", loaderName=" - + loaderName + ")"); + "className=" + className + ", name=" + + name + ", loaderName=" + + loaderName + ")"); final ClassLoader old = pushDefaultClassLoader(); try { return connection.createMBean(className, - name, - loaderName, - delegationSubject); + name, + loaderName, + delegationSubject); } catch (IOException ioe) { communicatorAdmin.gotIOException(ioe); return connection.createMBean(className, - name, - loaderName, - delegationSubject); + name, + loaderName, + delegationSubject); } finally { popDefaultClassLoader(old); @@ -736,90 +737,90 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable } public ObjectInstance createMBean(String className, - ObjectName name, - Object params[], - String signature[]) + ObjectName name, + Object params[], + String signature[]) throws ReflectionException, - InstanceAlreadyExistsException, - MBeanRegistrationException, - MBeanException, - NotCompliantMBeanException, - IOException { + InstanceAlreadyExistsException, + MBeanRegistrationException, + MBeanException, + NotCompliantMBeanException, + IOException { if (logger.debugOn()) - logger.debug("createMBean(String,ObjectName,Object[],String[])", - "className=" + className + ", name=" - + name + ", params=" - + objects(params) + ", signature=" - + strings(signature)); + logger.debug("createMBean(String,ObjectName,Object[],String[])", + "className=" + className + ", name=" + + name + ", params=" + + objects(params) + ", signature=" + + strings(signature)); final MarshalledObject sParams = new MarshalledObject(params); final ClassLoader old = pushDefaultClassLoader(); try { return connection.createMBean(className, - name, - sParams, - signature, - delegationSubject); + name, + sParams, + signature, + delegationSubject); } catch (IOException ioe) { communicatorAdmin.gotIOException(ioe); return connection.createMBean(className, - name, - sParams, - signature, - delegationSubject); + name, + sParams, + signature, + delegationSubject); } finally { popDefaultClassLoader(old); } } public ObjectInstance createMBean(String className, - ObjectName name, - ObjectName loaderName, - Object params[], - String signature[]) + ObjectName name, + ObjectName loaderName, + Object params[], + String signature[]) throws ReflectionException, - InstanceAlreadyExistsException, - MBeanRegistrationException, - MBeanException, - NotCompliantMBeanException, - InstanceNotFoundException, - IOException { + InstanceAlreadyExistsException, + MBeanRegistrationException, + MBeanException, + NotCompliantMBeanException, + InstanceNotFoundException, + IOException { if (logger.debugOn()) logger.debug( - "createMBean(String,ObjectName,ObjectName,Object[],String[])", - "className=" + className + ", name=" + name + ", loaderName=" - + loaderName + ", params=" + objects(params) - + ", signature=" + strings(signature)); + "createMBean(String,ObjectName,ObjectName,Object[],String[])", + "className=" + className + ", name=" + name + ", loaderName=" + + loaderName + ", params=" + objects(params) + + ", signature=" + strings(signature)); final MarshalledObject sParams = new MarshalledObject(params); final ClassLoader old = pushDefaultClassLoader(); try { return connection.createMBean(className, - name, - loaderName, - sParams, - signature, - delegationSubject); + name, + loaderName, + sParams, + signature, + delegationSubject); } catch (IOException ioe) { communicatorAdmin.gotIOException(ioe); return connection.createMBean(className, - name, - loaderName, - sParams, - signature, - delegationSubject); + name, + loaderName, + sParams, + signature, + delegationSubject); } finally { popDefaultClassLoader(old); } } public void unregisterMBean(ObjectName name) - throws InstanceNotFoundException, - MBeanRegistrationException, - IOException { + throws InstanceNotFoundException, + MBeanRegistrationException, + IOException { if (logger.debugOn()) logger.debug("unregisterMBean", "name=" + name); @@ -836,8 +837,8 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable } public ObjectInstance getObjectInstance(ObjectName name) - throws InstanceNotFoundException, - IOException { + throws InstanceNotFoundException, + IOException { if (logger.debugOn()) logger.debug("getObjectInstance", "name=" + name); @@ -854,10 +855,10 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable } public Set queryMBeans(ObjectName name, - QueryExp query) - throws IOException { + QueryExp query) + throws IOException { if (logger.debugOn()) logger.debug("queryMBeans", - "name=" + name + ", query=" + query); + "name=" + name + ", query=" + query); final MarshalledObject sQuery = new MarshalledObject(query); @@ -874,10 +875,10 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable } public Set queryNames(ObjectName name, - QueryExp query) + QueryExp query) throws IOException { if (logger.debugOn()) logger.debug("queryNames", - "name=" + name + ", query=" + query); + "name=" + name + ", query=" + query); final MarshalledObject sQuery = new MarshalledObject(query); @@ -894,7 +895,7 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable } public boolean isRegistered(ObjectName name) - throws IOException { + throws IOException { if (logger.debugOn()) logger.debug("isRegistered", "name=" + name); @@ -911,7 +912,7 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable } public Integer getMBeanCount() - throws IOException { + throws IOException { if (logger.debugOn()) logger.debug("getMBeanCount", ""); final ClassLoader old = pushDefaultClassLoader(); @@ -927,53 +928,53 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable } public Object getAttribute(ObjectName name, - String attribute) + String attribute) throws MBeanException, - AttributeNotFoundException, - InstanceNotFoundException, - ReflectionException, - IOException { + AttributeNotFoundException, + InstanceNotFoundException, + ReflectionException, + IOException { if (logger.debugOn()) logger.debug("getAttribute", - "name=" + name + ", attribute=" - + attribute); + "name=" + name + ", attribute=" + + attribute); final ClassLoader old = pushDefaultClassLoader(); try { return connection.getAttribute(name, - attribute, - delegationSubject); + attribute, + delegationSubject); } catch (IOException ioe) { communicatorAdmin.gotIOException(ioe); return connection.getAttribute(name, - attribute, - delegationSubject); + attribute, + delegationSubject); } finally { popDefaultClassLoader(old); } } public AttributeList getAttributes(ObjectName name, - String[] attributes) + String[] attributes) throws InstanceNotFoundException, - ReflectionException, - IOException { + ReflectionException, + IOException { if (logger.debugOn()) logger.debug("getAttributes", - "name=" + name + ", attributes=" - + strings(attributes)); + "name=" + name + ", attributes=" + + strings(attributes)); final ClassLoader old = pushDefaultClassLoader(); try { return connection.getAttributes(name, - attributes, - delegationSubject); + attributes, + delegationSubject); } catch (IOException ioe) { communicatorAdmin.gotIOException(ioe); return connection.getAttributes(name, - attributes, - delegationSubject); + attributes, + delegationSubject); } finally { popDefaultClassLoader(old); } @@ -981,20 +982,20 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable public void setAttribute(ObjectName name, - Attribute attribute) - throws InstanceNotFoundException, - AttributeNotFoundException, - InvalidAttributeValueException, - MBeanException, - ReflectionException, - IOException { + Attribute attribute) + throws InstanceNotFoundException, + AttributeNotFoundException, + InvalidAttributeValueException, + MBeanException, + ReflectionException, + IOException { if (logger.debugOn()) logger.debug("setAttribute", - "name=" + name + ", attribute=" - + attribute); + "name=" + name + ", attribute=" + + attribute); final MarshalledObject sAttribute = - new MarshalledObject(attribute); + new MarshalledObject(attribute); final ClassLoader old = pushDefaultClassLoader(); try { connection.setAttribute(name, sAttribute, delegationSubject); @@ -1008,28 +1009,28 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable } public AttributeList setAttributes(ObjectName name, - AttributeList attributes) - throws InstanceNotFoundException, - ReflectionException, - IOException { + AttributeList attributes) + throws InstanceNotFoundException, + ReflectionException, + IOException { if (logger.debugOn()) logger.debug("setAttributes", - "name=" + name + ", attributes=" - + attributes); + "name=" + name + ", attributes=" + + attributes); final MarshalledObject sAttributes = - new MarshalledObject(attributes); + new MarshalledObject(attributes); final ClassLoader old = pushDefaultClassLoader(); try { return connection.setAttributes(name, - sAttributes, - delegationSubject); + sAttributes, + delegationSubject); } catch (IOException ioe) { communicatorAdmin.gotIOException(ioe); return connection.setAttributes(name, - sAttributes, - delegationSubject); + sAttributes, + delegationSubject); } finally { popDefaultClassLoader(old); } @@ -1037,37 +1038,37 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable public Object invoke(ObjectName name, - String operationName, - Object params[], - String signature[]) + String operationName, + Object params[], + String signature[]) throws InstanceNotFoundException, - MBeanException, - ReflectionException, - IOException { + MBeanException, + ReflectionException, + IOException { if (logger.debugOn()) logger.debug("invoke", - "name=" + name - + ", operationName=" + operationName - + ", params=" + objects(params) - + ", signature=" + strings(signature)); + "name=" + name + + ", operationName=" + operationName + + ", params=" + objects(params) + + ", signature=" + strings(signature)); final MarshalledObject sParams = new MarshalledObject(params); final ClassLoader old = pushDefaultClassLoader(); try { return connection.invoke(name, - operationName, - sParams, - signature, - delegationSubject); + operationName, + sParams, + signature, + delegationSubject); } catch (IOException ioe) { communicatorAdmin.gotIOException(ioe); return connection.invoke(name, - operationName, - sParams, - signature, - delegationSubject); + operationName, + sParams, + signature, + delegationSubject); } finally { popDefaultClassLoader(old); } @@ -1075,7 +1076,7 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable public String getDefaultDomain() - throws IOException { + throws IOException { if (logger.debugOn()) logger.debug("getDefaultDomain", ""); final ClassLoader old = pushDefaultClassLoader(); @@ -1106,10 +1107,10 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable } public MBeanInfo getMBeanInfo(ObjectName name) - throws InstanceNotFoundException, - IntrospectionException, - ReflectionException, - IOException { + throws InstanceNotFoundException, + IntrospectionException, + ReflectionException, + IOException { if (logger.debugOn()) logger.debug("getMBeanInfo", "name=" + name); final ClassLoader old = pushDefaultClassLoader(); @@ -1126,41 +1127,41 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable public boolean isInstanceOf(ObjectName name, - String className) + String className) throws InstanceNotFoundException, - IOException { + IOException { if (logger.debugOn()) logger.debug("isInstanceOf", "name=" + name + - ", className=" + className); + ", className=" + className); final ClassLoader old = pushDefaultClassLoader(); try { return connection.isInstanceOf(name, - className, - delegationSubject); + className, + delegationSubject); } catch (IOException ioe) { communicatorAdmin.gotIOException(ioe); return connection.isInstanceOf(name, - className, - delegationSubject); + className, + delegationSubject); } finally { popDefaultClassLoader(old); } } public void addNotificationListener(ObjectName name, - ObjectName listener, - NotificationFilter filter, - Object handback) + ObjectName listener, + NotificationFilter filter, + Object handback) throws InstanceNotFoundException, - IOException { + IOException { if (logger.debugOn()) logger.debug("addNotificationListener" + - "(ObjectName,ObjectName,NotificationFilter,Object)", - "name=" + name + ", listener=" + listener - + ", filter=" + filter + ", handback=" + handback); + "(ObjectName,ObjectName,NotificationFilter,Object)", + "name=" + name + ", listener=" + listener + + ", filter=" + filter + ", handback=" + handback); final MarshalledObject sFilter = new MarshalledObject(filter); @@ -1169,64 +1170,64 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable final ClassLoader old = pushDefaultClassLoader(); try { connection.addNotificationListener(name, - listener, - sFilter, - sHandback, - delegationSubject); + listener, + sFilter, + sHandback, + delegationSubject); } catch (IOException ioe) { communicatorAdmin.gotIOException(ioe); connection.addNotificationListener(name, - listener, - sFilter, - sHandback, - delegationSubject); + listener, + sFilter, + sHandback, + delegationSubject); } finally { popDefaultClassLoader(old); } } public void removeNotificationListener(ObjectName name, - ObjectName listener) + ObjectName listener) throws InstanceNotFoundException, - ListenerNotFoundException, - IOException { + ListenerNotFoundException, + IOException { if (logger.debugOn()) logger.debug("removeNotificationListener" + - "(ObjectName,ObjectName)", - "name=" + name - + ", listener=" + listener); + "(ObjectName,ObjectName)", + "name=" + name + + ", listener=" + listener); final ClassLoader old = pushDefaultClassLoader(); try { connection.removeNotificationListener(name, - listener, - delegationSubject); + listener, + delegationSubject); } catch (IOException ioe) { communicatorAdmin.gotIOException(ioe); connection.removeNotificationListener(name, - listener, - delegationSubject); + listener, + delegationSubject); } finally { popDefaultClassLoader(old); } } public void removeNotificationListener(ObjectName name, - ObjectName listener, - NotificationFilter filter, - Object handback) + ObjectName listener, + NotificationFilter filter, + Object handback) throws InstanceNotFoundException, - ListenerNotFoundException, - IOException { + ListenerNotFoundException, + IOException { if (logger.debugOn()) logger.debug("removeNotificationListener" + - "(ObjectName,ObjectName,NotificationFilter,Object)", - "name=" + name - + ", listener=" + listener - + ", filter=" + filter - + ", handback=" + handback); + "(ObjectName,ObjectName,NotificationFilter,Object)", + "name=" + name + + ", listener=" + listener + + ", filter=" + filter + + ", handback=" + handback); final MarshalledObject sFilter = new MarshalledObject(filter); @@ -1235,18 +1236,18 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable final ClassLoader old = pushDefaultClassLoader(); try { connection.removeNotificationListener(name, - listener, - sFilter, - sHandback, - delegationSubject); + listener, + sFilter, + sHandback, + delegationSubject); } catch (IOException ioe) { communicatorAdmin.gotIOException(ioe); connection.removeNotificationListener(name, - listener, - sFilter, - sHandback, - delegationSubject); + listener, + sFilter, + sHandback, + delegationSubject); } finally { popDefaultClassLoader(old); } @@ -1255,34 +1256,34 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable // Specific Notification Handle ---------------------------------- public void addNotificationListener(ObjectName name, - NotificationListener listener, - NotificationFilter filter, - Object handback) + NotificationListener listener, + NotificationFilter filter, + Object handback) throws InstanceNotFoundException, - IOException { + IOException { final boolean debug = logger.debugOn(); if (debug) logger.debug("addNotificationListener" + - "(ObjectName,NotificationListener,"+ - "NotificationFilter,Object)", - "name=" + name - + ", listener=" + listener - + ", filter=" + filter - + ", handback=" + handback); + "(ObjectName,NotificationListener,"+ + "NotificationFilter,Object)", + "name=" + name + + ", listener=" + listener + + ", filter=" + filter + + ", handback=" + handback); final Integer listenerID = - addListenerWithSubject(name, - new MarshalledObject(filter), - delegationSubject,true); + addListenerWithSubject(name, + new MarshalledObject(filter), + delegationSubject,true); rmiNotifClient.addNotificationListener(listenerID, name, listener, - filter, handback, - delegationSubject); + filter, handback, + delegationSubject); } public void removeNotificationListener(ObjectName name, - NotificationListener listener) + NotificationListener listener) throws InstanceNotFoundException, ListenerNotFoundException, IOException { @@ -1290,28 +1291,28 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable final boolean debug = logger.debugOn(); if (debug) logger.debug("removeNotificationListener"+ - "(ObjectName,NotificationListener)", - "name=" + name - + ", listener=" + listener); + "(ObjectName,NotificationListener)", + "name=" + name + + ", listener=" + listener); final Integer[] ret = - rmiNotifClient.removeNotificationListener(name, listener); + rmiNotifClient.removeNotificationListener(name, listener); if (debug) logger.debug("removeNotificationListener", - "listenerIDs=" + objects(ret)); + "listenerIDs=" + objects(ret)); final ClassLoader old = pushDefaultClassLoader(); try { connection.removeNotificationListeners(name, - ret, - delegationSubject); + ret, + delegationSubject); } catch (IOException ioe) { communicatorAdmin.gotIOException(ioe); connection.removeNotificationListeners(name, - ret, - delegationSubject); + ret, + delegationSubject); } finally { popDefaultClassLoader(old); } @@ -1319,41 +1320,41 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable } public void removeNotificationListener(ObjectName name, - NotificationListener listener, - NotificationFilter filter, - Object handback) - throws InstanceNotFoundException, - ListenerNotFoundException, - IOException { + NotificationListener listener, + NotificationFilter filter, + Object handback) + throws InstanceNotFoundException, + ListenerNotFoundException, + IOException { final boolean debug = logger.debugOn(); if (debug) logger.debug("removeNotificationListener"+ - "(ObjectName,NotificationListener,"+ - "NotificationFilter,Object)", - "name=" + name - + ", listener=" + listener - + ", filter=" + filter - + ", handback=" + handback); + "(ObjectName,NotificationListener,"+ + "NotificationFilter,Object)", + "name=" + name + + ", listener=" + listener + + ", filter=" + filter + + ", handback=" + handback); final Integer ret = - rmiNotifClient.removeNotificationListener(name, listener, - filter, handback); + rmiNotifClient.removeNotificationListener(name, listener, + filter, handback); if (debug) logger.debug("removeNotificationListener", - "listenerID=" + ret); + "listenerID=" + ret); final ClassLoader old = pushDefaultClassLoader(); try { connection.removeNotificationListeners(name, - new Integer[] {ret}, - delegationSubject); + new Integer[] {ret}, + delegationSubject); } catch (IOException ioe) { communicatorAdmin.gotIOException(ioe); connection.removeNotificationListeners(name, - new Integer[] {ret}, - delegationSubject); + new Integer[] {ret}, + delegationSubject); } finally { popDefaultClassLoader(old); } @@ -1363,21 +1364,21 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable //-------------------------------------------------------------------- private class RMINotifClient extends ClientNotifForwarder { - public RMINotifClient(ClassLoader cl, Map env) { + public RMINotifClient(ClassLoader cl, Map env) { super(cl, env); } protected NotificationResult fetchNotifs(long clientSequenceNumber, - int maxNotifications, - long timeout) + int maxNotifications, + long timeout) throws IOException, ClassNotFoundException { IOException org; while (true) { // used for a successful re-connection try { return connection.fetchNotifications(clientSequenceNumber, - maxNotifications, - timeout); + maxNotifications, + timeout); } catch (IOException ioe) { org = ioe; @@ -1416,7 +1417,7 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable clear we can do much better. */ if (ume.detail instanceof WriteAbortedException) { WriteAbortedException wae = - (WriteAbortedException) ume.detail; + (WriteAbortedException) ume.detail; if (wae.detail instanceof IOException) throw (IOException) wae.detail; } @@ -1434,52 +1435,52 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable } protected Integer addListenerForMBeanRemovedNotif() - throws IOException, InstanceNotFoundException { + throws IOException, InstanceNotFoundException { NotificationFilterSupport clientFilter = - new NotificationFilterSupport(); + new NotificationFilterSupport(); clientFilter.enableType( - MBeanServerNotification.UNREGISTRATION_NOTIFICATION); + MBeanServerNotification.UNREGISTRATION_NOTIFICATION); MarshalledObject sFilter = new MarshalledObject(clientFilter); Integer[] listenerIDs; final ObjectName[] names = new ObjectName[] {MBeanServerDelegate.DELEGATE_NAME}; - final MarshalledObject[] filters = - new MarshalledObject[] {sFilter}; + final MarshalledObject[] filters = + Util.cast(new MarshalledObject[] {sFilter}); final Subject[] subjects = new Subject[] {null}; try { listenerIDs = - connection.addNotificationListeners(names, - filters, - subjects); + connection.addNotificationListeners(names, + filters, + subjects); } catch (IOException ioe) { communicatorAdmin.gotIOException(ioe); listenerIDs = - connection.addNotificationListeners(names, - filters, - subjects); + connection.addNotificationListeners(names, + filters, + subjects); } return listenerIDs[0]; } protected void removeListenerForMBeanRemovedNotif(Integer id) - throws IOException, InstanceNotFoundException, - ListenerNotFoundException { + throws IOException, InstanceNotFoundException, + ListenerNotFoundException { try { connection.removeNotificationListeners( - MBeanServerDelegate.DELEGATE_NAME, - new Integer[] {id}, - null); + MBeanServerDelegate.DELEGATE_NAME, + new Integer[] {id}, + null); } catch (IOException ioe) { communicatorAdmin.gotIOException(ioe); connection.removeNotificationListeners( - MBeanServerDelegate.DELEGATE_NAME, - new Integer[] {id}, - null); + MBeanServerDelegate.DELEGATE_NAME, + new Integer[] {id}, + null); } } @@ -1503,7 +1504,7 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable super(period); } - public void gotIOException (IOException ioe) throws IOException { + public void gotIOException(IOException ioe) throws IOException { if (ioe instanceof NoSuchObjectException) { // need to restart super.gotIOException(ioe); @@ -1529,7 +1530,7 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable // we should close the connection, // but send a failed notif at first final Notification failedNotif = - new JMXConnectionNotification( + new JMXConnectionNotification( JMXConnectionNotification.FAILED, this, connectionId, @@ -1558,7 +1559,7 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable will throw a ServerException at client side which wraps this UnmarshalException. No failed notif here. - */ + */ Throwable tt = ((ServerException)ioe).detail; if (tt instanceof IOException) { @@ -1581,7 +1582,8 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable final ObjectName[] names = new ObjectName[len]; final NotificationListener[] listeners = new NotificationListener[len]; final NotificationFilter[] filters = new NotificationFilter[len]; - final MarshalledObject[] mFilters = new MarshalledObject[len]; + final MarshalledObject[] mFilters = + Util.cast(new MarshalledObject[len]); final Object[] handbacks = new Object[len]; for (i=0;i environment) throws IOException { if (rmiServer instanceof javax.rmi.CORBA.Stub) { javax.rmi.CORBA.Stub stub = (javax.rmi.CORBA.Stub) rmiServer; @@ -1777,21 +1779,21 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable * does not point to an {@link org.omg.CORBA.ORB ORB}. * @exception IOException if the ORB initialization failed. **/ - static ORB resolveOrb(Map environment) + static ORB resolveOrb(Map environment) throws IOException { if (environment != null) { final Object orb = environment.get(EnvHelp.DEFAULT_ORB); if (orb != null && !(orb instanceof ORB)) throw new IllegalArgumentException(EnvHelp.DEFAULT_ORB + - " must be an instance of org.omg.CORBA.ORB."); + " must be an instance of org.omg.CORBA.ORB."); if (orb != null) return (ORB)orb; } final ORB orb = - (RMIConnector.orb==null)?null:RMIConnector.orb.get(); + (RMIConnector.orb==null)?null:RMIConnector.orb.get(); if (orb != null) return orb; final ORB newOrb = - ORB.init((String[])null, (Properties)null); + ORB.init((String[])null, (Properties)null); RMIConnector.orb = new WeakReference(newOrb); return newOrb; } @@ -1808,11 +1810,11 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable * @see #RMIConnector(RMIServer,Map) **/ private void readObject(java.io.ObjectInputStream s) - throws IOException, ClassNotFoundException { + throws IOException, ClassNotFoundException { s.defaultReadObject(); if (rmiServer == null && jmxServiceURL == null) throw new - InvalidObjectException("rmiServer and jmxServiceURL both null"); + InvalidObjectException("rmiServer and jmxServiceURL both null"); initTransients(); } @@ -1849,9 +1851,9 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable * @see #RMIConnector(RMIServer,Map) **/ private void writeObject(java.io.ObjectOutputStream s) - throws IOException { + throws IOException { if (rmiServer == null && jmxServiceURL == null) throw new - InvalidObjectException("rmiServer and jmxServiceURL both null."); + InvalidObjectException("rmiServer and jmxServiceURL both null."); connectStub(this.rmiServer,env); s.defaultWriteObject(); } @@ -1890,21 +1892,21 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable //-------------------------------------------------------------------- private static void checkStub(Remote stub, - Class stubClass) { + Class stubClass) { // Check remote stub is from the expected class. // if (stub.getClass() != stubClass) { if (!Proxy.isProxyClass(stub.getClass())) { throw new SecurityException( - "Expecting a " + stubClass.getName() + " stub!"); + "Expecting a " + stubClass.getName() + " stub!"); } else { InvocationHandler handler = Proxy.getInvocationHandler(stub); if (handler.getClass() != RemoteObjectInvocationHandler.class) throw new SecurityException( - "Expecting a dynamic proxy instance with a " + - RemoteObjectInvocationHandler.class.getName() + - " invocation handler!"); + "Expecting a dynamic proxy instance with a " + + RemoteObjectInvocationHandler.class.getName() + + " invocation handler!"); else stub = (Remote) handler; } @@ -1916,8 +1918,8 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable RemoteRef ref = ((RemoteObject)stub).getRef(); if (ref.getClass() != UnicastRef2.class) throw new SecurityException( - "Expecting a " + UnicastRef2.class.getName() + - " remote reference in stub!"); + "Expecting a " + UnicastRef2.class.getName() + + " remote reference in stub!"); // Check RMIClientSocketFactory in stub is from the expected class // "javax.rmi.ssl.SslRMIClientSocketFactory". @@ -1926,8 +1928,8 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable RMIClientSocketFactory csf = liveRef.getClientSocketFactory(); if (csf == null || csf.getClass() != SslRMIClientSocketFactory.class) throw new SecurityException( - "Expecting a " + SslRMIClientSocketFactory.class.getName() + - " RMI client socket factory in stub!"); + "Expecting a " + SslRMIClientSocketFactory.class.getName() + + " RMI client socket factory in stub!"); } //-------------------------------------------------------------------- @@ -1935,8 +1937,8 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable //-------------------------------------------------------------------- private RMIServer findRMIServer(JMXServiceURL directoryURL, - Map environment) - throws NamingException, IOException { + Map environment) + throws NamingException, IOException { final boolean isIiop = RMIConnectorServer.isIiopURL(directoryURL,true); if (isIiop) { // Make sure java.naming.corba.orb is in the Map. @@ -1954,7 +1956,7 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable return findRMIServerIIOP(path.substring(5,end), environment, isIiop); else { final String msg = "URL path must begin with /jndi/ or /stub/ " + - "or /ior/: " + path; + "or /ior/: " + path; throw new MalformedURLException(msg); } } @@ -1973,8 +1975,8 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable * @exception NamingException if the stub couldn't be found. **/ private RMIServer findRMIServerJNDI(String jndiURL, Map env, - boolean isIiop) - throws NamingException { + boolean isIiop) + throws NamingException { InitialContext ctx = new InitialContext(EnvHelp.mapToHashtable(env)); @@ -1995,25 +1997,25 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable private static RMIServer narrowIIOPServer(Object objref) { try { return (RMIServer) - PortableRemoteObject.narrow(objref, RMIServer.class); + PortableRemoteObject.narrow(objref, RMIServer.class); } catch (ClassCastException e) { if (logger.traceOn()) logger.trace("narrowIIOPServer","Failed to narrow objref=" + - objref + ": " + e); + objref + ": " + e); if (logger.debugOn()) logger.debug("narrowIIOPServer",e); return null; } } - private RMIServer findRMIServerIIOP(String ior, Map env, boolean isIiop) { + private RMIServer findRMIServerIIOP(String ior, Map env, boolean isIiop) { // could forbid "rmi:" URL here -- but do we need to? final ORB orb = (ORB) - env.get(EnvHelp.DEFAULT_ORB); + env.get(EnvHelp.DEFAULT_ORB); final Object stub = orb.string_to_object(ior); return (RMIServer) PortableRemoteObject.narrow(stub, RMIServer.class); } - private RMIServer findRMIServerJRMP(String base64, Map env, boolean isIiop) + private RMIServer findRMIServerJRMP(String base64, Map env, boolean isIiop) throws IOException { // could forbid "iiop:" URL here -- but do we need to? final byte[] serialized; @@ -2021,15 +2023,15 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable serialized = base64ToByteArray(base64); } catch (IllegalArgumentException e) { throw new MalformedURLException("Bad BASE64 encoding: " + - e.getMessage()); + e.getMessage()); } final ByteArrayInputStream bin = new ByteArrayInputStream(serialized); final ClassLoader loader = EnvHelp.resolveClientClassLoader(env); final ObjectInputStream oin = - (loader == null) ? - new ObjectInputStream(bin) : - new ObjectInputStreamWithLoader(bin, loader); + (loader == null) ? + new ObjectInputStream(bin) : + new ObjectInputStreamWithLoader(bin, loader); final Object stub; try { stub = oin.readObject(); @@ -2042,12 +2044,13 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable private static final class ObjectInputStreamWithLoader extends ObjectInputStream { ObjectInputStreamWithLoader(InputStream in, ClassLoader cl) - throws IOException { + throws IOException { super(in); this.loader = cl; } - protected Class resolveClass(ObjectStreamClass classDesc) + @Override + protected Class resolveClass(ObjectStreamClass classDesc) throws IOException, ClassNotFoundException { return Class.forName(classDesc.getName(), false, loader); } @@ -2122,68 +2125,68 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable private static final String rmiServerImplStubClassName = RMIServer.class.getName() + "Impl_Stub"; - private static final Class rmiServerImplStubClass; + private static final Class rmiServerImplStubClass; private static final String rmiConnectionImplStubClassName = - RMIConnection.class.getName() + "Impl_Stub"; + RMIConnection.class.getName() + "Impl_Stub"; private static final Class rmiConnectionImplStubClass; private static final String pRefClassName = "com.sun.jmx.remote.internal.PRef"; - private static final Constructor proxyRefConstructor; + private static final Constructor proxyRefConstructor; static { final String pRefByteCodeString = - "\312\376\272\276\0\0\0.\0\27\12\0\5\0\15\11\0\4\0\16\13\0\17\0"+ - "\20\7\0\21\7\0\22\1\0\6\1\0\36(Ljava/rmi/server/RemoteRef;"+ - ")V\1\0\4Code\1\0\6invoke\1\0S(Ljava/rmi/Remote;Ljava/lang/reflec"+ - "t/Method;[Ljava/lang/Object;J)Ljava/lang/Object;\1\0\12Exception"+ - "s\7\0\23\14\0\6\0\7\14\0\24\0\25\7\0\26\14\0\11\0\12\1\0\40com/"+ - "sun/jmx/remote/internal/PRef\1\0$com/sun/jmx/remote/internal/Pr"+ - "oxyRef\1\0\23java/lang/Exception\1\0\3ref\1\0\33Ljava/rmi/serve"+ - "r/RemoteRef;\1\0\31java/rmi/server/RemoteRef\0!\0\4\0\5\0\0\0\0"+ - "\0\2\0\1\0\6\0\7\0\1\0\10\0\0\0\22\0\2\0\2\0\0\0\6*+\267\0\1\261"+ - "\0\0\0\0\0\1\0\11\0\12\0\2\0\10\0\0\0\33\0\6\0\6\0\0\0\17*\264\0"+ - "\2+,-\26\4\271\0\3\6\0\260\0\0\0\0\0\13\0\0\0\4\0\1\0\14\0\0"; + "\312\376\272\276\0\0\0.\0\27\12\0\5\0\15\11\0\4\0\16\13\0\17\0"+ + "\20\7\0\21\7\0\22\1\0\6\1\0\36(Ljava/rmi/server/RemoteRef;"+ + ")V\1\0\4Code\1\0\6invoke\1\0S(Ljava/rmi/Remote;Ljava/lang/reflec"+ + "t/Method;[Ljava/lang/Object;J)Ljava/lang/Object;\1\0\12Exception"+ + "s\7\0\23\14\0\6\0\7\14\0\24\0\25\7\0\26\14\0\11\0\12\1\0\40com/"+ + "sun/jmx/remote/internal/PRef\1\0$com/sun/jmx/remote/internal/Pr"+ + "oxyRef\1\0\23java/lang/Exception\1\0\3ref\1\0\33Ljava/rmi/serve"+ + "r/RemoteRef;\1\0\31java/rmi/server/RemoteRef\0!\0\4\0\5\0\0\0\0"+ + "\0\2\0\1\0\6\0\7\0\1\0\10\0\0\0\22\0\2\0\2\0\0\0\6*+\267\0\1\261"+ + "\0\0\0\0\0\1\0\11\0\12\0\2\0\10\0\0\0\33\0\6\0\6\0\0\0\17*\264\0"+ + "\2+,-\26\4\271\0\3\6\0\260\0\0\0\0\0\13\0\0\0\4\0\1\0\14\0\0"; final byte[] pRefByteCode = - NoCallStackClassLoader.stringToBytes(pRefByteCodeString); + NoCallStackClassLoader.stringToBytes(pRefByteCodeString); PrivilegedExceptionAction> action = new PrivilegedExceptionAction>() { public Constructor run() throws Exception { Class thisClass = RMIConnector.class; ClassLoader thisLoader = thisClass.getClassLoader(); ProtectionDomain thisProtectionDomain = - thisClass.getProtectionDomain(); + thisClass.getProtectionDomain(); String[] otherClassNames = {ProxyRef.class.getName()}; ClassLoader cl = - new NoCallStackClassLoader(pRefClassName, - pRefByteCode, - otherClassNames, - thisLoader, - thisProtectionDomain); + new NoCallStackClassLoader(pRefClassName, + pRefByteCode, + otherClassNames, + thisLoader, + thisProtectionDomain); Class c = cl.loadClass(pRefClassName); return c.getConstructor(RemoteRef.class); } }; - Class serverStubClass; + Class serverStubClass; try { serverStubClass = Class.forName(rmiServerImplStubClassName); } catch (Exception e) { logger.error("", - "Failed to instantiate " + - rmiServerImplStubClassName + ": " + e); + "Failed to instantiate " + + rmiServerImplStubClassName + ": " + e); logger.debug("",e); serverStubClass = null; } rmiServerImplStubClass = serverStubClass; Class stubClass; - Constructor constr; + Constructor constr; try { stubClass = Class.forName(rmiConnectionImplStubClassName); - constr = (Constructor) AccessController.doPrivileged(action); + constr = (Constructor) AccessController.doPrivileged(action); } catch (Exception e) { logger.error("", - "Failed to initialize proxy reference constructor "+ - "for " + rmiConnectionImplStubClassName + ": " + e); + "Failed to initialize proxy reference constructor "+ + "for " + rmiConnectionImplStubClassName + ": " + e); logger.debug("",e); stubClass = null; constr = null; @@ -2193,18 +2196,17 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable } private static RMIConnection shadowJrmpStub(RemoteObject stub) - throws InstantiationException, IllegalAccessException, - InvocationTargetException, ClassNotFoundException, - NoSuchMethodException { + throws InstantiationException, IllegalAccessException, + InvocationTargetException, ClassNotFoundException, + NoSuchMethodException { RemoteRef ref = stub.getRef(); RemoteRef proxyRef = (RemoteRef) proxyRefConstructor.newInstance(new Object[] {ref}); - final Class[] constrTypes = {RemoteRef.class}; - final Constructor rmiConnectionImplStubConstructor = - rmiConnectionImplStubClass.getConstructor(constrTypes); + final Constructor rmiConnectionImplStubConstructor = + rmiConnectionImplStubClass.getConstructor(RemoteRef.class); Object[] args = {proxyRef}; RMIConnection proxyStub = (RMIConnection) - rmiConnectionImplStubConstructor.newInstance(args); + rmiConnectionImplStubConstructor.newInstance(args); return proxyStub; } @@ -2324,55 +2326,55 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable */ private static final String iiopConnectionStubClassName = - "org.omg.stub.javax.management.remote.rmi._RMIConnection_Stub"; + "org.omg.stub.javax.management.remote.rmi._RMIConnection_Stub"; private static final String proxyStubClassName = - "com.sun.jmx.remote.internal.ProxyStub"; + "com.sun.jmx.remote.internal.ProxyStub"; private static final String pInputStreamClassName = "com.sun.jmx.remote.internal.PInputStream"; - private static final Class proxyStubClass; + private static final Class proxyStubClass; static { final String proxyStubByteCodeString = - "\312\376\272\276\0\0\0.\0)\12\0\14\0\26\7\0\27\12\0\14\0\30\12"+ - "\0\2\0\31\7\0\32\12\0\5\0\33\12\0\5\0\34\12\0\5\0\35\12\0\2\0"+ - "\36\12\0\14\0\37\7\0\40\7\0!\1\0\6\1\0\3()V\1\0\4Code\1"+ - "\0\7_invoke\1\0K(Lorg/omg/CORBA/portable/OutputStream;)Lorg/o"+ - "mg/CORBA/portable/InputStream;\1\0\12Exceptions\7\0\"\1\0\15_"+ - "releaseReply\1\0'(Lorg/omg/CORBA/portable/InputStream;)V\14\0"+ - "\15\0\16\1\0(com/sun/jmx/remote/internal/PInputStream\14\0\20"+ - "\0\21\14\0\15\0\25\1\0+org/omg/CORBA/portable/ApplicationExce"+ - "ption\14\0#\0$\14\0%\0&\14\0\15\0'\14\0(\0$\14\0\24\0\25\1\0%"+ - "com/sun/jmx/remote/internal/ProxyStub\1\0\1\0\3()V\1\0\4Code\1"+ + "\0\7_invoke\1\0K(Lorg/omg/CORBA/portable/OutputStream;)Lorg/o"+ + "mg/CORBA/portable/InputStream;\1\0\12Exceptions\7\0\"\1\0\15_"+ + "releaseReply\1\0'(Lorg/omg/CORBA/portable/InputStream;)V\14\0"+ + "\15\0\16\1\0(com/sun/jmx/remote/internal/PInputStream\14\0\20"+ + "\0\21\14\0\15\0\25\1\0+org/omg/CORBA/portable/ApplicationExce"+ + "ption\14\0#\0$\14\0%\0&\14\0\15\0'\14\0(\0$\14\0\24\0\25\1\0%"+ + "com/sun/jmx/remote/internal/ProxyStub\1\0\1\0'(L"+ - "org/omg/CORBA/portable/InputStream;)V\1\0\4Code\1\0\10read_an"+ - "y\1\0\25()Lorg/omg/CORBA/Any;\1\0\12read_value\1\0)(Ljava/lan"+ - "g/Class;)Ljava/io/Serializable;\14\0\10\0\11\14\0\30\0\31\7\0"+ - "\32\14\0\13\0\14\14\0\33\0\34\7\0\35\14\0\15\0\16\1\0(com/sun"+ - "/jmx/remote/internal/PInputStream\1\0,com/sun/jmx/remote/inte"+ - "rnal/ProxyInputStream\1\0\2in\1\0$Lorg/omg/CORBA/portable/Inp"+ - "utStream;\1\0\"org/omg/CORBA/portable/InputStream\1\0\6narrow"+ - "\1\0*()Lorg/omg/CORBA_2_3/portable/InputStream;\1\0&org/omg/C"+ - "ORBA_2_3/portable/InputStream\0!\0\6\0\7\0\0\0\0\0\3\0\1\0\10"+ - "\0\11\0\1\0\12\0\0\0\22\0\2\0\2\0\0\0\6*+\267\0\1\261\0\0\0\0"+ - "\0\1\0\13\0\14\0\1\0\12\0\0\0\24\0\1\0\1\0\0\0\10*\264\0\2\266"+ - "\0\3\260\0\0\0\0\0\1\0\15\0\16\0\1\0\12\0\0\0\25\0\2\0\2\0\0\0"+ - "\11*\266\0\4+\266\0\5\260\0\0\0\0\0\0"; + "\312\376\272\276\0\0\0.\0\36\12\0\7\0\17\11\0\6\0\20\12\0\21\0"+ + "\22\12\0\6\0\23\12\0\24\0\25\7\0\26\7\0\27\1\0\6\1\0'(L"+ + "org/omg/CORBA/portable/InputStream;)V\1\0\4Code\1\0\10read_an"+ + "y\1\0\25()Lorg/omg/CORBA/Any;\1\0\12read_value\1\0)(Ljava/lan"+ + "g/Class;)Ljava/io/Serializable;\14\0\10\0\11\14\0\30\0\31\7\0"+ + "\32\14\0\13\0\14\14\0\33\0\34\7\0\35\14\0\15\0\16\1\0(com/sun"+ + "/jmx/remote/internal/PInputStream\1\0,com/sun/jmx/remote/inte"+ + "rnal/ProxyInputStream\1\0\2in\1\0$Lorg/omg/CORBA/portable/Inp"+ + "utStream;\1\0\"org/omg/CORBA/portable/InputStream\1\0\6narrow"+ + "\1\0*()Lorg/omg/CORBA_2_3/portable/InputStream;\1\0&org/omg/C"+ + "ORBA_2_3/portable/InputStream\0!\0\6\0\7\0\0\0\0\0\3\0\1\0\10"+ + "\0\11\0\1\0\12\0\0\0\22\0\2\0\2\0\0\0\6*+\267\0\1\261\0\0\0\0"+ + "\0\1\0\13\0\14\0\1\0\12\0\0\0\24\0\1\0\1\0\0\0\10*\264\0\2\266"+ + "\0\3\260\0\0\0\0\0\1\0\15\0\16\0\1\0\12\0\0\0\25\0\2\0\2\0\0\0"+ + "\11*\266\0\4+\266\0\5\260\0\0\0\0\0\0"; final byte[] proxyStubByteCode = - NoCallStackClassLoader.stringToBytes(proxyStubByteCodeString); + NoCallStackClassLoader.stringToBytes(proxyStubByteCodeString); final byte[] pInputStreamByteCode = - NoCallStackClassLoader.stringToBytes(pInputStreamByteCodeString); + NoCallStackClassLoader.stringToBytes(pInputStreamByteCodeString); final String[] classNames={proxyStubClassName, pInputStreamClassName}; final byte[][] byteCodes = {proxyStubByteCode, pInputStreamByteCode}; final String[] otherClassNames = { @@ -2386,13 +2388,13 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable Class thisClass = RMIConnector.class; ClassLoader thisLoader = thisClass.getClassLoader(); ProtectionDomain thisProtectionDomain = - thisClass.getProtectionDomain(); + thisClass.getProtectionDomain(); ClassLoader cl = - new NoCallStackClassLoader(classNames, - byteCodes, - otherClassNames, - thisLoader, - thisProtectionDomain); + new NoCallStackClassLoader(classNames, + byteCodes, + otherClassNames, + thisLoader, + thisProtectionDomain); return cl.loadClass(proxyStubClassName); } }; @@ -2401,7 +2403,7 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable stubClass = AccessController.doPrivileged(action); } catch (Exception e) { logger.error("", - "Unexpected exception making shadow IIOP stub class: "+e); + "Unexpected exception making shadow IIOP stub class: "+e); logger.debug("",e); stubClass = null; } @@ -2409,15 +2411,15 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable } private static RMIConnection shadowIiopStub(Stub stub) - throws InstantiationException, IllegalAccessException { + throws InstantiationException, IllegalAccessException { Stub proxyStub = (Stub) proxyStubClass.newInstance(); proxyStub._set_delegate(stub._get_delegate()); return (RMIConnection) proxyStub; } private static RMIConnection getConnection(RMIServer server, - Object credentials, - boolean checkStub) + Object credentials, + boolean checkStub) throws IOException { RMIConnection c = server.newClient(credentials); if (checkStub) checkStub(c, rmiConnectionImplStubClass); @@ -2427,14 +2429,14 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable if (c.getClass().getName().equals(iiopConnectionStubClassName)) return shadowIiopStub((Stub) c); logger.trace("getConnection", - "Did not wrap " + c.getClass() + " to foil " + - "stack search for classes: class loading semantics " + - "may be incorrect"); + "Did not wrap " + c.getClass() + " to foil " + + "stack search for classes: class loading semantics " + + "may be incorrect"); } catch (Exception e) { logger.error("getConnection", - "Could not wrap " + c.getClass() + " to foil " + - "stack search for classes: class loading semantics " + - "may be incorrect: " + e); + "Could not wrap " + c.getClass() + " to foil " + + "stack search for classes: class loading semantics " + + "may be incorrect: " + e); logger.debug("getConnection",e); // so just return the original stub, which will work for all // but the most exotic class loading situations @@ -2447,7 +2449,7 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable int numGroups = sLen/4; if (4*numGroups != sLen) throw new IllegalArgumentException( - "String length must be a multiple of four."); + "String length must be a multiple of four."); int missingBytesInLastGroup = 0; int numFullGroups = numGroups; if (sLen != 0) { @@ -2533,21 +2535,21 @@ public class RMIConnector implements JMXConnector, Serializable, JMXAddressable final ClassLoader old = t.getContextClassLoader(); if (defaultClassLoader != null) AccessController.doPrivileged(new PrivilegedAction() { - public Void run() { - t.setContextClassLoader(defaultClassLoader); - return null; - } - }); - return old; - } - - private void popDefaultClassLoader(final ClassLoader old) { - AccessController.doPrivileged(new PrivilegedAction() { public Void run() { - Thread.currentThread().setContextClassLoader(old); + t.setContextClassLoader(defaultClassLoader); return null; } }); + return old; + } + + private void popDefaultClassLoader(final ClassLoader old) { + AccessController.doPrivileged(new PrivilegedAction() { + public Void run() { + Thread.currentThread().setContextClassLoader(old); + return null; + } + }); } //-------------------------------------------------------------------- diff --git a/src/share/classes/javax/management/remote/rmi/RMIConnectorServer.java b/src/share/classes/javax/management/remote/rmi/RMIConnectorServer.java index 2cbe315bfdd1115983a23b73069f86ba2b212a59..7acc02adbd5aa861ab5c5d06e6d4419012ccf130 100644 --- a/src/share/classes/javax/management/remote/rmi/RMIConnectorServer.java +++ b/src/share/classes/javax/management/remote/rmi/RMIConnectorServer.java @@ -383,7 +383,7 @@ public class RMIConnectorServer extends JMXConnectorServer { try { if (tracing) logger.trace("start", "setting default class loader"); defaultClassLoader = EnvHelp.resolveServerClassLoader( - attributes, getSystemMBeanServer()); + attributes, getSystemMBeanServerForwarder()); } catch (InstanceNotFoundException infc) { IllegalArgumentException x = new IllegalArgumentException("ClassLoader not found: "+infc); @@ -398,7 +398,7 @@ public class RMIConnectorServer extends JMXConnectorServer { else rmiServer = newServer(); - rmiServer.setMBeanServer(getSystemMBeanServer()); + rmiServer.setMBeanServer(getSystemMBeanServerForwarder()); rmiServer.setDefaultClassLoader(defaultClassLoader); rmiServer.setRMIConnectorServer(this); rmiServer.export(); @@ -423,7 +423,7 @@ public class RMIConnectorServer extends JMXConnectorServer { try { if (tracing) logger.trace("start", "binding to " + jndiUrl); - final Hashtable usemap = EnvHelp.mapToHashtable(attributes); + final Hashtable usemap = EnvHelp.mapToHashtable(attributes); bind(jndiUrl, usemap, objref, rebind); @@ -555,7 +555,7 @@ public class RMIConnectorServer extends JMXConnectorServer { logger.trace("stop", "unbind from external directory: " + boundJndiUrl); - final Hashtable usemap = EnvHelp.mapToHashtable(attributes); + final Hashtable usemap = EnvHelp.mapToHashtable(attributes); InitialContext ctx = new InitialContext(usemap); @@ -592,31 +592,6 @@ public class RMIConnectorServer extends JMXConnectorServer { return Collections.unmodifiableMap(map); } - @Override - public synchronized void setMBeanServerForwarder(MBeanServerForwarder mbsf) { - MBeanServer oldSMBS = getSystemMBeanServer(); - super.setMBeanServerForwarder(mbsf); - if (oldSMBS != getSystemMBeanServer()) - updateMBeanServer(); - // If the system chain of MBeanServerForwarders is not empty, then - // there is no need to call rmiServerImpl.setMBeanServer, because - // it is pointing to the head of the system chain and that has not - // changed. (The *end* of the system chain will have been changed - // to point to mbsf.) - } - - private void updateMBeanServer() { - if (rmiServerImpl != null) - rmiServerImpl.setMBeanServer(getSystemMBeanServer()); - } - - @Override - public synchronized void setSystemMBeanServerForwarder( - MBeanServerForwarder mbsf) { - super.setSystemMBeanServerForwarder(mbsf); - updateMBeanServer(); - } - /** * {@inheritDoc} * @return true, since this connector server does support a system chain @@ -627,20 +602,43 @@ public class RMIConnectorServer extends JMXConnectorServer { return true; } + /** + * {@inheritDoc} + *

      The {@code RMIConnectorServer} class does support closing a specified + * client connection. + * @throws IllegalStateException if the server is not started or is closed. + * @throws IllegalArgumentException if {@code connectionId} is null or is + * not the id of any open connection. + * @since 1.7 + */ + @Override + public void closeConnection(String connectionId) + throws IOException { + if (isActive()) { + rmiServerImpl.closeConnection(connectionId); + } else { + throw new IllegalStateException( + "The server is not started or is closed."); + } + } + /* We repeat the definitions of connection{Opened,Closed,Failed} here so that they are accessible to other classes in this package even though they have protected access. */ + @Override protected void connectionOpened(String connectionId, String message, Object userData) { super.connectionOpened(connectionId, message, userData); } + @Override protected void connectionClosed(String connectionId, String message, Object userData) { super.connectionClosed(connectionId, message, userData); } + @Override protected void connectionFailed(String connectionId, String message, Object userData) { super.connectionFailed(connectionId, message, userData); @@ -655,7 +653,7 @@ public class RMIConnectorServer extends JMXConnectorServer { * @param rmiServer The object to bind in the registry * @param rebind true if the object must be rebound. **/ - void bind(String jndiUrl, Hashtable attributes, + void bind(String jndiUrl, Hashtable attributes, RMIServer rmiServer, boolean rebind) throws NamingException, MalformedURLException { // if jndiURL is not null, we nust bind the stub to a @@ -692,7 +690,8 @@ public class RMIConnectorServer extends JMXConnectorServer { * @param attributes A Map containing environment parameters, * built from the Map specified at this object creation. **/ - private void encodeStubInAddress(RMIServer rmiServer, Map attributes) + private void encodeStubInAddress( + RMIServer rmiServer, Map attributes) throws IOException { final String protocol, host; @@ -735,14 +734,16 @@ public class RMIConnectorServer extends JMXConnectorServer { /** * Returns the IOR of the given rmiServer. **/ - static String encodeStub(RMIServer rmiServer, Map env) throws IOException { + static String encodeStub( + RMIServer rmiServer, Map env) throws IOException { if (rmiServer instanceof javax.rmi.CORBA.Stub) return "/ior/" + encodeIIOPStub(rmiServer, env); else return "/stub/" + encodeJRMPStub(rmiServer, env); } - static String encodeJRMPStub(RMIServer rmiServer, Map env) + static String encodeJRMPStub( + RMIServer rmiServer, Map env) throws IOException { ByteArrayOutputStream bout = new ByteArrayOutputStream(); ObjectOutputStream oout = new ObjectOutputStream(bout); @@ -752,7 +753,8 @@ public class RMIConnectorServer extends JMXConnectorServer { return byteArrayToBase64(bytes); } - static String encodeIIOPStub(RMIServer rmiServer, Map env) + static String encodeIIOPStub( + RMIServer rmiServer, Map env) throws IOException { try { javax.rmi.CORBA.Stub stub = @@ -767,7 +769,8 @@ public class RMIConnectorServer extends JMXConnectorServer { * Object that we will bind to the registry. * This object is a stub connected to our RMIServerImpl. **/ - private static RMIServer objectToBind(RMIServerImpl rmiServer, Map env) + private static RMIServer objectToBind( + RMIServerImpl rmiServer, Map env) throws IOException { return RMIConnector. connectStub((RMIServer)rmiServer.toStub(),env); diff --git a/src/share/classes/javax/management/remote/rmi/RMIJRMPServerImpl.java b/src/share/classes/javax/management/remote/rmi/RMIJRMPServerImpl.java index bf8c5ca4fae4e3e3bbf987ab6f67e54b6cbd18f0..ef4f5e988a9ba61b719a1bd6de6e73d0fed6fb20 100644 --- a/src/share/classes/javax/management/remote/rmi/RMIJRMPServerImpl.java +++ b/src/share/classes/javax/management/remote/rmi/RMIJRMPServerImpl.java @@ -38,6 +38,9 @@ import java.util.Collections; import javax.security.auth.Subject; import com.sun.jmx.remote.internal.RMIExporter; +import com.sun.jmx.remote.util.EnvHelp; +import sun.rmi.server.UnicastServerRef; +import sun.rmi.server.UnicastServerRef2; /** *

      An {@link RMIServer} object that is exported through JRMP and that @@ -93,12 +96,27 @@ public class RMIJRMPServerImpl extends RMIServerImpl { } private void export(Remote obj) throws RemoteException { - RMIExporter exporter = + final RMIExporter exporter = (RMIExporter) env.get(RMIExporter.EXPORTER_ATTRIBUTE); - if (exporter == null) - UnicastRemoteObject.exportObject(obj, port, csf, ssf); - else + final boolean daemon = EnvHelp.isServerDaemon(env); + + if (daemon && exporter != null) { + throw new IllegalArgumentException("If "+EnvHelp.JMX_SERVER_DAEMON+ + " is specified as true, "+RMIExporter.EXPORTER_ATTRIBUTE+ + " cannot be used to specify an exporter!"); + } + + if (daemon) { + if (csf == null && ssf == null) { + new UnicastServerRef(port).exportObject(obj, null, true); + } else { + new UnicastServerRef2(port, csf, ssf).exportObject(obj, null, true); + } + } else if (exporter != null) { exporter.exportObject(obj, port, csf, ssf); + } else { + UnicastRemoteObject.exportObject(obj, port, csf, ssf); + } } private void unexport(Remote obj, boolean force) diff --git a/src/share/classes/javax/management/remote/rmi/RMIServerImpl.java b/src/share/classes/javax/management/remote/rmi/RMIServerImpl.java index bc15562f5eb063c86cdb90d116713c49ab947c4b..e7e5ffeb43b1abc1702dca36c5a8b4205cf7ca50 100644 --- a/src/share/classes/javax/management/remote/rmi/RMIServerImpl.java +++ b/src/share/classes/javax/management/remote/rmi/RMIServerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -75,7 +75,7 @@ public abstract class RMIServerImpl implements Closeable, RMIServer { * to an empty Map. */ public RMIServerImpl(Map env) { - this.env = (env == null) ? Collections.EMPTY_MAP : env; + this.env = (env == null) ? Collections.emptyMap() : env; } void setRMIConnectorServer(RMIConnectorServer connServer) @@ -249,20 +249,73 @@ public abstract class RMIServerImpl implements Closeable, RMIServer { RMIConnection client = makeClient(connectionId, subject); - connServer.connectionOpened(connectionId, "Connection opened", null); - dropDeadReferences(); WeakReference wr = new WeakReference(client); synchronized (clientList) { clientList.add(wr); } + connServer.connectionOpened(connectionId, "Connection opened", null); + + synchronized (clientList) { + if (!clientList.contains(wr)) { + // can be removed only by a JMXConnectionNotification listener + throw new IOException("The connection is refused."); + } + } + if (tracing) logger.trace("newClient","new connection done: " + connectionId ); return client; } + /** + * Closes a client connection. + * @param connectionId the id of the client connection to be closed. + * @throws IllegalArgumentException if {@code connectionId} is null or is + * not the id of any open connection. + * @throws java.io.IOException if an I/O error appears when closing the + * connection. + * + * @since 1.7 + */ + public void closeConnection(String connectionId) + throws IOException { + final boolean debug = logger.debugOn(); + + if (debug) logger.trace("closeConnection","cconnectionId="+connectionId); + + if (connectionId == null) + throw new IllegalArgumentException("Null connectionId."); + + RMIConnection client = null; + synchronized (clientList) { + dropDeadReferences(); + for (Iterator> it = clientList.iterator(); + it.hasNext(); ) { + client = it.next().get(); + if (client != null && connectionId.equals(client.getConnectionId())) { + it.remove(); + break; + } + } + } + + if (client == null) { + throw new IllegalArgumentException("Unknown id: "+connectionId); + } + + if (debug) logger.trace("closeConnection", "closing client connection."); + closeClient(client); + + if (debug) logger.trace("closeConnection", "sending notif"); + connServer.connectionClosed(connectionId, + "Client connection closed", null); + + if (debug) logger.trace("closeConnection","done"); + } + /** *

      Creates a new client connection. This method is called by * the public method {@link #newClient(Object)}.

      @@ -337,8 +390,9 @@ public abstract class RMIServerImpl implements Closeable, RMIServer { synchronized (clientList) { dropDeadReferences(); - for (Iterator it = clientList.iterator(); it.hasNext(); ) { - WeakReference wr = (WeakReference) it.next(); + for (Iterator> it = clientList.iterator(); + it.hasNext(); ) { + WeakReference wr = it.next(); if (wr.get() == client) { it.remove(); break; @@ -417,9 +471,10 @@ public abstract class RMIServerImpl implements Closeable, RMIServer { dropDeadReferences(), this will usually be the first element of the list, but a garbage collection could have happened in between. */ - for (Iterator it = clientList.iterator(); it.hasNext(); ) { - WeakReference wr = (WeakReference) it.next(); - RMIConnection client = (RMIConnection) wr.get(); + for (Iterator> it = clientList.iterator(); + it.hasNext(); ) { + WeakReference wr = it.next(); + RMIConnection client = wr.get(); it.remove(); if (client != null) { try { @@ -475,10 +530,10 @@ public abstract class RMIServerImpl implements Closeable, RMIServer { buf.append("//").append(clientHost); buf.append(" "); if (subject != null) { - Set principals = subject.getPrincipals(); + Set principals = subject.getPrincipals(); String sep = ""; - for (Iterator it = principals.iterator(); it.hasNext(); ) { - Principal p = (Principal) it.next(); + for (Iterator it = principals.iterator(); it.hasNext(); ) { + Principal p = it.next(); String name = p.getName().replace(' ', '_').replace(';', ':'); buf.append(sep).append(name); sep = ";"; @@ -492,8 +547,9 @@ public abstract class RMIServerImpl implements Closeable, RMIServer { private void dropDeadReferences() { synchronized (clientList) { - for (Iterator it = clientList.iterator(); it.hasNext(); ) { - WeakReference wr = (WeakReference) it.next(); + for (Iterator> it = clientList.iterator(); + it.hasNext(); ) { + WeakReference wr = it.next(); if (wr.get() == null) it.remove(); } @@ -522,7 +578,7 @@ public abstract class RMIServerImpl implements Closeable, RMIServer { private MBeanServer mbeanServer; - private final Map env; + private final Map env; private RMIConnectorServer connServer; diff --git a/src/share/classes/javax/management/timer/Timer.java b/src/share/classes/javax/management/timer/Timer.java index ea4d0b24a2a36cd05e348efe3acbec155cc0543a..909a1bbb0e55c6dd67b33f237df5531650c586b2 100644 --- a/src/share/classes/javax/management/timer/Timer.java +++ b/src/share/classes/javax/management/timer/Timer.java @@ -248,8 +248,7 @@ public class Timer extends NotificationBroadcasterSupport */ public synchronized MBeanNotificationInfo[] getNotificationInfo() { Set notifTypes = new TreeSet(); - for (Iterator it = timerTable.values().iterator(); it.hasNext(); ) { - Object[] entry = (Object[]) it.next(); + for (Object[] entry : timerTable.values()) { TimerNotification notif = (TimerNotification) entry[TIMER_NOTIF_INDEX]; notifTypes.add(notif.getType()); diff --git a/src/share/classes/javax/swing/AbstractCellEditor.java b/src/share/classes/javax/swing/AbstractCellEditor.java index 90b1c8d69b401e3208b4c802228e14a01e3527f7..a2e5963f2ceae2d084de67d6ffce95747d8fee82 100644 --- a/src/share/classes/javax/swing/AbstractCellEditor.java +++ b/src/share/classes/javax/swing/AbstractCellEditor.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/AbstractListModel.java b/src/share/classes/javax/swing/AbstractListModel.java index 00c8841a533081caa59baa7f60e6527789e28fb4..b0c67b7f7959891b034cef2bbfcba370a9039f39 100644 --- a/src/share/classes/javax/swing/AbstractListModel.java +++ b/src/share/classes/javax/swing/AbstractListModel.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/AbstractSpinnerModel.java b/src/share/classes/javax/swing/AbstractSpinnerModel.java index 9cf16c6db149fdb6ff2214b0cbc29a7ed60fc03d..1f3e9e3b28823d45e7d1a2c0f5d6a3b1ab0e0134 100644 --- a/src/share/classes/javax/swing/AbstractSpinnerModel.java +++ b/src/share/classes/javax/swing/AbstractSpinnerModel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/ActionMap.java b/src/share/classes/javax/swing/ActionMap.java index 3858eabe43153558e37cfe60e056bcaa2295eda2..14486bbd1a057c4c230e0bb1da37cedf8fec11ed 100644 --- a/src/share/classes/javax/swing/ActionMap.java +++ b/src/share/classes/javax/swing/ActionMap.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/AncestorNotifier.java b/src/share/classes/javax/swing/AncestorNotifier.java index eb67ed154849cd749167623fd0e659144505a7d9..ce27282f10c7df28f5a018577d32c6aef2e9599b 100644 --- a/src/share/classes/javax/swing/AncestorNotifier.java +++ b/src/share/classes/javax/swing/AncestorNotifier.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/ArrayTable.java b/src/share/classes/javax/swing/ArrayTable.java index 1ee5f07d88c2b3a81f4a5a36e7c3ecc6ab1f8ee5..068ca72a4ba9b5707a00c5b615f66829b8061a77 100644 --- a/src/share/classes/javax/swing/ArrayTable.java +++ b/src/share/classes/javax/swing/ArrayTable.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/ButtonGroup.java b/src/share/classes/javax/swing/ButtonGroup.java index 395417044abfe5d7c9d48a5e92e83f9043acf0b9..4bf211dbfa539f92e7251d8340b45839f5b2c260 100644 --- a/src/share/classes/javax/swing/ButtonGroup.java +++ b/src/share/classes/javax/swing/ButtonGroup.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/DefaultBoundedRangeModel.java b/src/share/classes/javax/swing/DefaultBoundedRangeModel.java index c718ce6027fc2294ee543d78bfeec11c3b71a546..12bcf04509127976c00ccd47f0606e17b2ba8a9a 100644 --- a/src/share/classes/javax/swing/DefaultBoundedRangeModel.java +++ b/src/share/classes/javax/swing/DefaultBoundedRangeModel.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/DefaultButtonModel.java b/src/share/classes/javax/swing/DefaultButtonModel.java index 8ad0acddb466d1f44f1604eedd3c4b550fee30c9..14b6964260776892778a43706c4696a94d8324de 100644 --- a/src/share/classes/javax/swing/DefaultButtonModel.java +++ b/src/share/classes/javax/swing/DefaultButtonModel.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/DefaultFocusManager.java b/src/share/classes/javax/swing/DefaultFocusManager.java index 021867a5ccab79b132f4fb78f865b52bcb39e880..fd34cee4c8bc54ebaf1be15fa07c237e0089d118 100644 --- a/src/share/classes/javax/swing/DefaultFocusManager.java +++ b/src/share/classes/javax/swing/DefaultFocusManager.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/DefaultSingleSelectionModel.java b/src/share/classes/javax/swing/DefaultSingleSelectionModel.java index c03b51f16ddf054223ecdbc43c360207cc9cebdc..ed1c99ae3c917088f54f14df513a67eab4471f15 100644 --- a/src/share/classes/javax/swing/DefaultSingleSelectionModel.java +++ b/src/share/classes/javax/swing/DefaultSingleSelectionModel.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/GroupLayout.java b/src/share/classes/javax/swing/GroupLayout.java index fb59d0c85640e5b557194b9caa3bdb386e2f3514..9e5653f7147a93bfdc1450a5d991ad5e02e04c6c 100644 --- a/src/share/classes/javax/swing/GroupLayout.java +++ b/src/share/classes/javax/swing/GroupLayout.java @@ -1,5 +1,5 @@ /* - * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2006-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/InputMap.java b/src/share/classes/javax/swing/InputMap.java index 0992b1188f8e8871f5c91b6ad5ddaf4e74ad6995..c5f08fff456add370c32a5e824c708e5b0966640 100644 --- a/src/share/classes/javax/swing/InputMap.java +++ b/src/share/classes/javax/swing/InputMap.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/JDesktopPane.java b/src/share/classes/javax/swing/JDesktopPane.java index 19cfefd65f9a53f98a79a141936fab3f961abaa4..553732728c86c62e80cc19ccfa2b33b623743c21 100644 --- a/src/share/classes/javax/swing/JDesktopPane.java +++ b/src/share/classes/javax/swing/JDesktopPane.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/JDialog.java b/src/share/classes/javax/swing/JDialog.java index 7964094908402159ae16d136b654999e2ab61319..b0aaf5afcaf1c076feda73e681c150c22ee2642f 100644 --- a/src/share/classes/javax/swing/JDialog.java +++ b/src/share/classes/javax/swing/JDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/JLayeredPane.java b/src/share/classes/javax/swing/JLayeredPane.java index e971fe1d8efe214df6d8c776ae665eb372d6e0de..640ef3003f2d72d8f044859db87afa691ff71255 100644 --- a/src/share/classes/javax/swing/JLayeredPane.java +++ b/src/share/classes/javax/swing/JLayeredPane.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/JMenu.java b/src/share/classes/javax/swing/JMenu.java index cf069116c2163f0b5ed43b7068c8314e724543eb..1f82dc9fa98b77f6ed7cfe87714cdcd39f1ea31e 100644 --- a/src/share/classes/javax/swing/JMenu.java +++ b/src/share/classes/javax/swing/JMenu.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/JMenuItem.java b/src/share/classes/javax/swing/JMenuItem.java index 5f5a869221e77d5b32aa83442e11b90945160d5f..a50be349fe623685b04a51d6ad5b3eb2edba4ac7 100644 --- a/src/share/classes/javax/swing/JMenuItem.java +++ b/src/share/classes/javax/swing/JMenuItem.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/JSpinner.java b/src/share/classes/javax/swing/JSpinner.java index c5cebda03f7cd153498476eb0d825bffbb99b8ce..ddd92b9b4e48f1da85cf1f3acabbad48dcabefe3 100644 --- a/src/share/classes/javax/swing/JSpinner.java +++ b/src/share/classes/javax/swing/JSpinner.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/JTextField.java b/src/share/classes/javax/swing/JTextField.java index 56ca320a746ebe6f3835ddf1456c6af49e529a65..c104f36ec98763b9e4e44ff2dc4b75b73a6c7193 100644 --- a/src/share/classes/javax/swing/JTextField.java +++ b/src/share/classes/javax/swing/JTextField.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/JTree.java b/src/share/classes/javax/swing/JTree.java index 012db5063dc5463b3bce56b58ca559262cc1ecc6..639dd45e8f99f2a4b81db3257134a1a84757a70c 100644 --- a/src/share/classes/javax/swing/JTree.java +++ b/src/share/classes/javax/swing/JTree.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/JWindow.java b/src/share/classes/javax/swing/JWindow.java index d805838b0e034c7eeaba1007b1ceff1a40e9d031..e29ccc34d7e65e4c75dbcf8239a06021d593005a 100644 --- a/src/share/classes/javax/swing/JWindow.java +++ b/src/share/classes/javax/swing/JWindow.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/KeyboardManager.java b/src/share/classes/javax/swing/KeyboardManager.java index d5ed58ba003d9380cd26c95b8b7af0a304e5dcef..1e4f032aec6dfe6137dbd8b49fbb8a37703d2c38 100644 --- a/src/share/classes/javax/swing/KeyboardManager.java +++ b/src/share/classes/javax/swing/KeyboardManager.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/LayoutComparator.java b/src/share/classes/javax/swing/LayoutComparator.java index 01ba6e54df04a0572b4f49f2b5247436656c4c1b..5b206975e19cdd575610be3196de9bd2d3cd72aa 100644 --- a/src/share/classes/javax/swing/LayoutComparator.java +++ b/src/share/classes/javax/swing/LayoutComparator.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/LayoutFocusTraversalPolicy.java b/src/share/classes/javax/swing/LayoutFocusTraversalPolicy.java index 33d81a91a4892b2608a3422a73118e950642c7be..3515beb05c65093e3c30942a47e8dc7bf857bb43 100644 --- a/src/share/classes/javax/swing/LayoutFocusTraversalPolicy.java +++ b/src/share/classes/javax/swing/LayoutFocusTraversalPolicy.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/LegacyGlueFocusTraversalPolicy.java b/src/share/classes/javax/swing/LegacyGlueFocusTraversalPolicy.java index fe73a08957ff3bd1f7144e38c594cbb4451a2d9d..03294eb4721404ca2f3fb460d8040686ac92e677 100644 --- a/src/share/classes/javax/swing/LegacyGlueFocusTraversalPolicy.java +++ b/src/share/classes/javax/swing/LegacyGlueFocusTraversalPolicy.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/MultiUIDefaults.java b/src/share/classes/javax/swing/MultiUIDefaults.java index d7d435ef15f8a2e5ba3863084ca0adf86137368e..d5904d05ca2da401d1eda4175498f93a349c842c 100644 --- a/src/share/classes/javax/swing/MultiUIDefaults.java +++ b/src/share/classes/javax/swing/MultiUIDefaults.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/RepaintManager.java b/src/share/classes/javax/swing/RepaintManager.java index b0e6c048f620198a0a81acc9e7f3a45553fa2a7f..f051acdc67582758015abe77965b400064093d13 100644 --- a/src/share/classes/javax/swing/RepaintManager.java +++ b/src/share/classes/javax/swing/RepaintManager.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java b/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java index 85a2bb96a25a76ad3af8905abb337c8917f0b662..73c391faac5c7f60587b1cfbd43220b7f8b7005e 100644 --- a/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java +++ b/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/SpringLayout.java b/src/share/classes/javax/swing/SpringLayout.java index e825f4c6104cfa7756b8e6fcecbacd62ea6ac089..e566781e6734adf4cb3b4f7301bae5ad16bd2d50 100644 --- a/src/share/classes/javax/swing/SpringLayout.java +++ b/src/share/classes/javax/swing/SpringLayout.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2001-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/Timer.java b/src/share/classes/javax/swing/Timer.java index 4f339158efca2c76e6d6cb29e2252c94305cb78e..fabee31930ded16a99562be60015262d08df8eef 100644 --- a/src/share/classes/javax/swing/Timer.java +++ b/src/share/classes/javax/swing/Timer.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/TimerQueue.java b/src/share/classes/javax/swing/TimerQueue.java index f68f4e9968870d933914ae8fe39e35f76afa37b3..8cd7d16d87c526b5c453f59ba86ba9d2ed6954dc 100644 --- a/src/share/classes/javax/swing/TimerQueue.java +++ b/src/share/classes/javax/swing/TimerQueue.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/UIDefaults.java b/src/share/classes/javax/swing/UIDefaults.java index 7a372e79753d60afc806a6bacfc427b9e43308d3..97e860a5d40ff25ad9175ce3243858deaabbd450 100644 --- a/src/share/classes/javax/swing/UIDefaults.java +++ b/src/share/classes/javax/swing/UIDefaults.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/UIManager.java b/src/share/classes/javax/swing/UIManager.java index a4a62f0096caa92ba4e63297080dc0f73260adbd..43476f2d6933756877c9b5952e28282718a9c928 100644 --- a/src/share/classes/javax/swing/UIManager.java +++ b/src/share/classes/javax/swing/UIManager.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/border/CompoundBorder.java b/src/share/classes/javax/swing/border/CompoundBorder.java index 46ac44e50c02553c33123e7d967dcba33d82a9eb..553aa337d9574ed81304a1eb4567cd952c7321b6 100644 --- a/src/share/classes/javax/swing/border/CompoundBorder.java +++ b/src/share/classes/javax/swing/border/CompoundBorder.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/basic/BasicButtonListener.java b/src/share/classes/javax/swing/plaf/basic/BasicButtonListener.java index c366217b73dd54568a6abcd9e1d227167009c2ce..aed5c115af8b79fe22f7f6f9a97670148109b586 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicButtonListener.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicButtonListener.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/basic/BasicComboBoxEditor.java b/src/share/classes/javax/swing/plaf/basic/BasicComboBoxEditor.java index c7ec981845c874c9301ff876ac899eca45ffa313..ded1d6a017d487cab10cb59452ddd1a9471b0b44 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicComboBoxEditor.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicComboBoxEditor.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java b/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java index c49387fd91f05055ada42b2ea37a3cee1873e796..ef05d87f035304d4dc3efb1542fce6e5a72209bb 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/basic/BasicGraphicsUtils.java b/src/share/classes/javax/swing/plaf/basic/BasicGraphicsUtils.java index 3cf822cfec21a16e075ab578e97b271ab68235a2..6d831493746c2ec7bf20180d56a3a7f5ef706c17 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicGraphicsUtils.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicGraphicsUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/basic/BasicInternalFrameTitlePane.java b/src/share/classes/javax/swing/plaf/basic/BasicInternalFrameTitlePane.java index b131824f441fc92209d0bfe9ad735e1b9085be4a..6ef9622e7485fda8db9b05e1ebb8846baf40ac9d 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicInternalFrameTitlePane.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicInternalFrameTitlePane.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/basic/BasicLabelUI.java b/src/share/classes/javax/swing/plaf/basic/BasicLabelUI.java index c1f65d2aa2396b85badd0981439842ae72c1f8ca..9ca6dcd4e2c8a9918509a1bd62a91abb1cf21f7e 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicLabelUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicLabelUI.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/basic/BasicMenuUI.java b/src/share/classes/javax/swing/plaf/basic/BasicMenuUI.java index 6bedcf85325b4f6a522d2a7f08f8c4d5500fd293..ba31712eb47fd69d79308f0d67898ab492683a59 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicMenuUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicMenuUI.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/basic/BasicPopupMenuUI.java b/src/share/classes/javax/swing/plaf/basic/BasicPopupMenuUI.java index 8fbb79fffae56c4e2c51b0e03e8380e6a687b323..dc94bf547f9b1d4a3ae1884f258a8fcc4db9fa60 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicPopupMenuUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicPopupMenuUI.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/basic/BasicRadioButtonUI.java b/src/share/classes/javax/swing/plaf/basic/BasicRadioButtonUI.java index d1ddab9934a4ed9aa0e4d0c8dd3a08d4468d9284..be9d13204c7f5d31a818c1ea2d223a2e61925e98 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicRadioButtonUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicRadioButtonUI.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java b/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java index 0c7e995f05343be1de0c9f3ce6a509038cf86a56..2f0bffae8ab896df9192a647925f3a24dc88b0ec 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicSplitPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java b/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java index 6b038d5cf51ed72feef2bd942b99c5849bd15629..166c6fc8a8674cfe21f356fcc8211834f707ee4d 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/basic/BasicToggleButtonUI.java b/src/share/classes/javax/swing/plaf/basic/BasicToggleButtonUI.java index 18daffa5999faa77fa16d8ebc49bd8a2ed946453..e519d3202d947001788156b2c42f81092a36e99c 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicToggleButtonUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicToggleButtonUI.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java b/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java index eee08821e05741f6a51596b29f6237f9434b19cd..05e3183b52467698e5671bd863c622139133d278 100644 --- a/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java +++ b/src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/basic/DragRecognitionSupport.java b/src/share/classes/javax/swing/plaf/basic/DragRecognitionSupport.java index be457ccb258e3b86327525dcec8de6689a77b601..a58d09c6c7371fe6055a28c87de467b5bbb26acc 100644 --- a/src/share/classes/javax/swing/plaf/basic/DragRecognitionSupport.java +++ b/src/share/classes/javax/swing/plaf/basic/DragRecognitionSupport.java @@ -1,5 +1,5 @@ /* - * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/basic/LazyActionMap.java b/src/share/classes/javax/swing/plaf/basic/LazyActionMap.java index e57ff78d23d9a167a77a10e691d74d4ebee03b65..77ab8b42f18506f92d6639458263379b27705ee7 100644 --- a/src/share/classes/javax/swing/plaf/basic/LazyActionMap.java +++ b/src/share/classes/javax/swing/plaf/basic/LazyActionMap.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/metal/DefaultMetalTheme.java b/src/share/classes/javax/swing/plaf/metal/DefaultMetalTheme.java index 96b944d0db249585ea24a3ae78db76591b95462f..c7dd73c373de524ab9eb83a721103d15cc461e64 100644 --- a/src/share/classes/javax/swing/plaf/metal/DefaultMetalTheme.java +++ b/src/share/classes/javax/swing/plaf/metal/DefaultMetalTheme.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/metal/MetalBumps.java b/src/share/classes/javax/swing/plaf/metal/MetalBumps.java index 47e379a48ff04ce2a3836fe67d9cc4940695807a..655393b43fd035f042a99173ff362b2c66c7bed9 100644 --- a/src/share/classes/javax/swing/plaf/metal/MetalBumps.java +++ b/src/share/classes/javax/swing/plaf/metal/MetalBumps.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/metal/MetalFileChooserUI.java b/src/share/classes/javax/swing/plaf/metal/MetalFileChooserUI.java index fd837b9abf2a8b0356fcc5da26c1f807f4e7d7e1..763dfdc3fc1e01ff220bc91f8738d689c4a60880 100644 --- a/src/share/classes/javax/swing/plaf/metal/MetalFileChooserUI.java +++ b/src/share/classes/javax/swing/plaf/metal/MetalFileChooserUI.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/metal/MetalInternalFrameTitlePane.java b/src/share/classes/javax/swing/plaf/metal/MetalInternalFrameTitlePane.java index 6de655d586eb449904c4bdd8ec97df1d8b049fb2..c57d8f98fb4487e5d27871b32b81dad4c1f6afab 100644 --- a/src/share/classes/javax/swing/plaf/metal/MetalInternalFrameTitlePane.java +++ b/src/share/classes/javax/swing/plaf/metal/MetalInternalFrameTitlePane.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/metal/MetalRadioButtonUI.java b/src/share/classes/javax/swing/plaf/metal/MetalRadioButtonUI.java index ba96b21e6ee6e06ef08b84c5cbf9fa507bcc65de..088daed9dd3f2e5af1af218e5a2cca8768607c8d 100644 --- a/src/share/classes/javax/swing/plaf/metal/MetalRadioButtonUI.java +++ b/src/share/classes/javax/swing/plaf/metal/MetalRadioButtonUI.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/metal/MetalSliderUI.java b/src/share/classes/javax/swing/plaf/metal/MetalSliderUI.java index 7a26c46b225679877f255c10199a87db8d43244a..28d22705b1618c4896035f2ed926c781509a8a8a 100644 --- a/src/share/classes/javax/swing/plaf/metal/MetalSliderUI.java +++ b/src/share/classes/javax/swing/plaf/metal/MetalSliderUI.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/metal/MetalToolBarUI.java b/src/share/classes/javax/swing/plaf/metal/MetalToolBarUI.java index 24e4e54f394be173c7abb091c645803f9c7f0fc2..5ca7be0580e13229c2b9f2d703719479665c106e 100644 --- a/src/share/classes/javax/swing/plaf/metal/MetalToolBarUI.java +++ b/src/share/classes/javax/swing/plaf/metal/MetalToolBarUI.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/synth/DefaultSynthStyleFactory.java b/src/share/classes/javax/swing/plaf/synth/DefaultSynthStyleFactory.java index bbcbbad8168d993fa2bc5ea4c10a285ab12145ed..bcea7123c6eead8e4a8822dab463ad577b5133e2 100644 --- a/src/share/classes/javax/swing/plaf/synth/DefaultSynthStyleFactory.java +++ b/src/share/classes/javax/swing/plaf/synth/DefaultSynthStyleFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/synth/ImagePainter.java b/src/share/classes/javax/swing/plaf/synth/ImagePainter.java index 943e91dbde78b4707cd12df903a4168ab90371e4..abdf259dadd885826e7580efb8f61994153a5579 100644 --- a/src/share/classes/javax/swing/plaf/synth/ImagePainter.java +++ b/src/share/classes/javax/swing/plaf/synth/ImagePainter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/synth/Region.java b/src/share/classes/javax/swing/plaf/synth/Region.java index bd144bf682893d13681210bac7249490f04dcd75..c7de782ba59e7bc273689cc95f2afc81a03c3b82 100644 --- a/src/share/classes/javax/swing/plaf/synth/Region.java +++ b/src/share/classes/javax/swing/plaf/synth/Region.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/synth/SynthButtonUI.java b/src/share/classes/javax/swing/plaf/synth/SynthButtonUI.java index e0f057e903752efa6620eb59bd7f36c2f925d23d..c395f54eb4162f569f6a4591698828ad9f2480d9 100644 --- a/src/share/classes/javax/swing/plaf/synth/SynthButtonUI.java +++ b/src/share/classes/javax/swing/plaf/synth/SynthButtonUI.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java b/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java index b4b0b9db4e14722578cf8779beaf3bd3497dbf8d..6b8d4bbc999df766275bc82104ebe8a2dd9b6b1b 100644 --- a/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java +++ b/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/synth/SynthContext.java b/src/share/classes/javax/swing/plaf/synth/SynthContext.java index f63c3abcfddf95a70726f02bc7854a4e6df88b94..a88eaa92190bbcc999d08b31a296b876ea4e8a00 100644 --- a/src/share/classes/javax/swing/plaf/synth/SynthContext.java +++ b/src/share/classes/javax/swing/plaf/synth/SynthContext.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/synth/SynthEditorPaneUI.java b/src/share/classes/javax/swing/plaf/synth/SynthEditorPaneUI.java index f99741a013884469606f441a8be39e2bd1477b56..e864944fad5372b8d223bbf3d2c90dcdb07c7b27 100644 --- a/src/share/classes/javax/swing/plaf/synth/SynthEditorPaneUI.java +++ b/src/share/classes/javax/swing/plaf/synth/SynthEditorPaneUI.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/synth/SynthInternalFrameTitlePane.java b/src/share/classes/javax/swing/plaf/synth/SynthInternalFrameTitlePane.java index f1c888952a48bc6e8d81655d049e551d260ccb37..51e9d1497d661cbafcb74823a8140e519b44df35 100644 --- a/src/share/classes/javax/swing/plaf/synth/SynthInternalFrameTitlePane.java +++ b/src/share/classes/javax/swing/plaf/synth/SynthInternalFrameTitlePane.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java b/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java index c9f6f7687e3768145ea10bbfb3337ca2f11ddd3e..178981fd8fcf92edea97b622ab25f790aaf6d2dd 100644 --- a/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java +++ b/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/synth/SynthParser.java b/src/share/classes/javax/swing/plaf/synth/SynthParser.java index 5f7a9b6c2827bb113ce8e217987ae53e6be6867f..0ff3307cdb594ee11a64128773a78095560fb2fe 100644 --- a/src/share/classes/javax/swing/plaf/synth/SynthParser.java +++ b/src/share/classes/javax/swing/plaf/synth/SynthParser.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/synth/SynthStyle.java b/src/share/classes/javax/swing/plaf/synth/SynthStyle.java index ab9e42b41e5e1ec21dbd535f767aca490984c1f7..d595ef6e84866059daa44ea7dccf03602f5239c0 100644 --- a/src/share/classes/javax/swing/plaf/synth/SynthStyle.java +++ b/src/share/classes/javax/swing/plaf/synth/SynthStyle.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/synth/SynthTextAreaUI.java b/src/share/classes/javax/swing/plaf/synth/SynthTextAreaUI.java index d07c4d5ad888adf7019b16011b4a560f0cfd7d1e..3a650d2abebdf9bb7f8e256e2552ee5f812dfe52 100644 --- a/src/share/classes/javax/swing/plaf/synth/SynthTextAreaUI.java +++ b/src/share/classes/javax/swing/plaf/synth/SynthTextAreaUI.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/synth/SynthTextFieldUI.java b/src/share/classes/javax/swing/plaf/synth/SynthTextFieldUI.java index 28bbdf843c40d8838e203678ab171521ce95254e..225a965d874dea2aec2415dddb0659cae14bb8a1 100644 --- a/src/share/classes/javax/swing/plaf/synth/SynthTextFieldUI.java +++ b/src/share/classes/javax/swing/plaf/synth/SynthTextFieldUI.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java b/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java index 464b947b071fb100da72d346b7e354ccc6922fdc..5603c2035ae6ea55ae48bc10b4d53ea53052324e 100644 --- a/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java +++ b/src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/table/AbstractTableModel.java b/src/share/classes/javax/swing/table/AbstractTableModel.java index 9d6f4cafdcb11f14316e9616e5f23879bd5abc8f..92ecd00c9d17f2bcefb3091b2fe7619b121f9c7f 100644 --- a/src/share/classes/javax/swing/table/AbstractTableModel.java +++ b/src/share/classes/javax/swing/table/AbstractTableModel.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/table/DefaultTableModel.java b/src/share/classes/javax/swing/table/DefaultTableModel.java index 0a63bfa73cda297d5162960d99504bcd5a1d1b05..6eb61129da56769912f8d89b7c56c41877301f00 100644 --- a/src/share/classes/javax/swing/table/DefaultTableModel.java +++ b/src/share/classes/javax/swing/table/DefaultTableModel.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/AsyncBoxView.java b/src/share/classes/javax/swing/text/AsyncBoxView.java index ae11bde81227a85068eafee1cf709324addcd4a4..445eb550d16f37d3dbd1ef6daca26e4293287e2e 100644 --- a/src/share/classes/javax/swing/text/AsyncBoxView.java +++ b/src/share/classes/javax/swing/text/AsyncBoxView.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/ComponentView.java b/src/share/classes/javax/swing/text/ComponentView.java index 085d999675d9b86ff65f4793fefc863ea5468708..d57c991c856ed7868854bda09713683d92674e4f 100644 --- a/src/share/classes/javax/swing/text/ComponentView.java +++ b/src/share/classes/javax/swing/text/ComponentView.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/DefaultCaret.java b/src/share/classes/javax/swing/text/DefaultCaret.java index e0e156811888ff61df76626a9e2f9b155c28782d..80d06101b986d8888ef3225311852443434f5819 100644 --- a/src/share/classes/javax/swing/text/DefaultCaret.java +++ b/src/share/classes/javax/swing/text/DefaultCaret.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/DefaultFormatter.java b/src/share/classes/javax/swing/text/DefaultFormatter.java index 51dab601ca19b0bad3681df6871afa893ee6737b..6db4ebf5ddffd636abbafd3eb9c8d910de7c97c0 100644 --- a/src/share/classes/javax/swing/text/DefaultFormatter.java +++ b/src/share/classes/javax/swing/text/DefaultFormatter.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/DefaultHighlighter.java b/src/share/classes/javax/swing/text/DefaultHighlighter.java index 028b24c0ea630fcb3499cfcec632c96d1fa32ed2..5b61828da9c94d75ea059179fae10471a4543392 100644 --- a/src/share/classes/javax/swing/text/DefaultHighlighter.java +++ b/src/share/classes/javax/swing/text/DefaultHighlighter.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/DefaultStyledDocument.java b/src/share/classes/javax/swing/text/DefaultStyledDocument.java index d3ba5d98df8a55585e638e27f84e3df0f761efa6..354fa23f5ec24f7355f8253468f9b1da8511cc50 100644 --- a/src/share/classes/javax/swing/text/DefaultStyledDocument.java +++ b/src/share/classes/javax/swing/text/DefaultStyledDocument.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/ElementIterator.java b/src/share/classes/javax/swing/text/ElementIterator.java index b44101ae1a94c8408f3a4dbd63c0feeec101b39e..91da2fbc4b062bf6dea9325585d434d224d9bf5b 100644 --- a/src/share/classes/javax/swing/text/ElementIterator.java +++ b/src/share/classes/javax/swing/text/ElementIterator.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/GapContent.java b/src/share/classes/javax/swing/text/GapContent.java index 186f50625c90522a820aba0c09ae0830df43fb95..c266ca8132f87b8eb3dcf5f148cc9f006ace5584 100644 --- a/src/share/classes/javax/swing/text/GapContent.java +++ b/src/share/classes/javax/swing/text/GapContent.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/InternationalFormatter.java b/src/share/classes/javax/swing/text/InternationalFormatter.java index 0c9af931e4755d6c35b91ad2d72de78eaf7ef50c..04f037ee6faad4558f29a4c22ad1e4f58278578a 100644 --- a/src/share/classes/javax/swing/text/InternationalFormatter.java +++ b/src/share/classes/javax/swing/text/InternationalFormatter.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/LayoutQueue.java b/src/share/classes/javax/swing/text/LayoutQueue.java index e02f9b0f9b607a9069905cf456ccb2de1d763be9..38fd665c40e6e89db33786c5d06815a61805c640 100644 --- a/src/share/classes/javax/swing/text/LayoutQueue.java +++ b/src/share/classes/javax/swing/text/LayoutQueue.java @@ -1,5 +1,5 @@ /* - * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/MaskFormatter.java b/src/share/classes/javax/swing/text/MaskFormatter.java index 7efa9619d875655a92d5001eb62be01ae99f7724..4e13ca82750fa201a14a1b1174e9786cafa555b7 100644 --- a/src/share/classes/javax/swing/text/MaskFormatter.java +++ b/src/share/classes/javax/swing/text/MaskFormatter.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/SegmentCache.java b/src/share/classes/javax/swing/text/SegmentCache.java index 8eafe53d942487cd96f2942210051957cbcce3b5..0a8441464130fa647f6e62f4dd96af651019b23c 100644 --- a/src/share/classes/javax/swing/text/SegmentCache.java +++ b/src/share/classes/javax/swing/text/SegmentCache.java @@ -1,5 +1,5 @@ /* - * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2001-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/SimpleAttributeSet.java b/src/share/classes/javax/swing/text/SimpleAttributeSet.java index 69f7b428c54e26c34755a6492565a0479fc76c31..1a058c3c6ebfbd03b977361bb9843cb5164908c8 100644 --- a/src/share/classes/javax/swing/text/SimpleAttributeSet.java +++ b/src/share/classes/javax/swing/text/SimpleAttributeSet.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/StringContent.java b/src/share/classes/javax/swing/text/StringContent.java index 00cc0aca46da0a66dc0e1300366bcca6e1d824d0..cd3efdd29523871a60a41e81d8147f9ffe343f52 100644 --- a/src/share/classes/javax/swing/text/StringContent.java +++ b/src/share/classes/javax/swing/text/StringContent.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2001 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/StyleContext.java b/src/share/classes/javax/swing/text/StyleContext.java index 1607cb3acdd9bf7915c307d69140c31e6ff9cab8..4d194eb9054cd5b4a999126dce9c7fb29f0cc1d4 100644 --- a/src/share/classes/javax/swing/text/StyleContext.java +++ b/src/share/classes/javax/swing/text/StyleContext.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/TableView.java b/src/share/classes/javax/swing/text/TableView.java index 4d1cc3e860e07ca33b148891129f5d1df09311e7..ee2dbe7535114e41da794ae8838be9ebd6c3bcb8 100644 --- a/src/share/classes/javax/swing/text/TableView.java +++ b/src/share/classes/javax/swing/text/TableView.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/TextAction.java b/src/share/classes/javax/swing/text/TextAction.java index d0358f71e51841535d0cc8416c810b373faceb0e..5d01ad232330c616cd2f1586d05c6606e7a54895 100644 --- a/src/share/classes/javax/swing/text/TextAction.java +++ b/src/share/classes/javax/swing/text/TextAction.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/TextLayoutStrategy.java b/src/share/classes/javax/swing/text/TextLayoutStrategy.java index 01523d6a5d778445630b19fff10431b07e054025..85afd75d973137f4a83a7650708e036d32a32d20 100644 --- a/src/share/classes/javax/swing/text/TextLayoutStrategy.java +++ b/src/share/classes/javax/swing/text/TextLayoutStrategy.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/ZoneView.java b/src/share/classes/javax/swing/text/ZoneView.java index b683159d37ca1d99586312bb5699613bf8bf4e4b..df0293f121f08f382358f478a045b39db7b55428 100644 --- a/src/share/classes/javax/swing/text/ZoneView.java +++ b/src/share/classes/javax/swing/text/ZoneView.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/html/HRuleView.java b/src/share/classes/javax/swing/text/html/HRuleView.java index 26303a59602937bff60664e6e00800ac3934cfcd..86bafee2230a3b1556ac8b0e3b513dd40c700589 100644 --- a/src/share/classes/javax/swing/text/html/HRuleView.java +++ b/src/share/classes/javax/swing/text/html/HRuleView.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/html/HTML.java b/src/share/classes/javax/swing/text/html/HTML.java index e0a58aab86d95552dd8513e975891a66d71b8ca9..46f0ef5dab5f9a635bae3a62f6f92e62bc16d367 100644 --- a/src/share/classes/javax/swing/text/html/HTML.java +++ b/src/share/classes/javax/swing/text/html/HTML.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/html/HTMLDocument.java b/src/share/classes/javax/swing/text/html/HTMLDocument.java index 97e7d83877e56b6a6b2c72194c2cc3bd3a21d7f9..627c0b95bd56f6e603344d098f8fc6da189346b1 100644 --- a/src/share/classes/javax/swing/text/html/HTMLDocument.java +++ b/src/share/classes/javax/swing/text/html/HTMLDocument.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/html/HTMLWriter.java b/src/share/classes/javax/swing/text/html/HTMLWriter.java index c0c8d74d07249d3a154e333843fbbe84f45c9df4..60965d067bb9e62c560e1f2d0d0b7b97aadfdc03 100644 --- a/src/share/classes/javax/swing/text/html/HTMLWriter.java +++ b/src/share/classes/javax/swing/text/html/HTMLWriter.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/html/Map.java b/src/share/classes/javax/swing/text/html/Map.java index a7256602fba2e4d92e0c038e2d584f4a74217e78..a785d75058b8cfb0dc94c9644d867fa5dba90bc4 100644 --- a/src/share/classes/javax/swing/text/html/Map.java +++ b/src/share/classes/javax/swing/text/html/Map.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/html/MinimalHTMLWriter.java b/src/share/classes/javax/swing/text/html/MinimalHTMLWriter.java index b44f82b9fc213619a028ef39e388453ca9d61c3d..b06fd929d20af8ba84845e282c7c71261f751ed6 100644 --- a/src/share/classes/javax/swing/text/html/MinimalHTMLWriter.java +++ b/src/share/classes/javax/swing/text/html/MinimalHTMLWriter.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-1999 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/html/OptionListModel.java b/src/share/classes/javax/swing/text/html/OptionListModel.java index 33adc24fe667b8646019ee138ea72cdf4b6bd86d..e75d0cf2f301cc171833993c7baa1bb0e93e925f 100644 --- a/src/share/classes/javax/swing/text/html/OptionListModel.java +++ b/src/share/classes/javax/swing/text/html/OptionListModel.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2000 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/html/StyleSheet.java b/src/share/classes/javax/swing/text/html/StyleSheet.java index 014c9ce80c2a71681dbcfbf2ace8cbe41ad44707..0cf1804787229e2e3dcd0e24374f738e617e6477 100644 --- a/src/share/classes/javax/swing/text/html/StyleSheet.java +++ b/src/share/classes/javax/swing/text/html/StyleSheet.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/html/TableView.java b/src/share/classes/javax/swing/text/html/TableView.java index e2739542670973704e89bccb9582726a5e24a1ac..b5f42344509eae81bc935da27d3e12fc89914556 100644 --- a/src/share/classes/javax/swing/text/html/TableView.java +++ b/src/share/classes/javax/swing/text/html/TableView.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/html/parser/TagStack.java b/src/share/classes/javax/swing/text/html/parser/TagStack.java index c43688b4f952c73fa4506ee7a500feeeccb4c54a..54172ffa2a0a7e486c73e28853b69d89b2be2dae 100644 --- a/src/share/classes/javax/swing/text/html/parser/TagStack.java +++ b/src/share/classes/javax/swing/text/html/parser/TagStack.java @@ -1,5 +1,5 @@ /* - * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/rtf/MockAttributeSet.java b/src/share/classes/javax/swing/text/rtf/MockAttributeSet.java index b1063ff12e58feb7c169c5a2d30aac3f9430392f..351f78656775e8b59658b2747d20592405b89ced 100644 --- a/src/share/classes/javax/swing/text/rtf/MockAttributeSet.java +++ b/src/share/classes/javax/swing/text/rtf/MockAttributeSet.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/rtf/RTFParser.java b/src/share/classes/javax/swing/text/rtf/RTFParser.java index d8ba8dde6834e1910c83ecf4b2ad3e5df241b5b6..c0a6578a72adb1f7b72a5991095dd917348d7af0 100644 --- a/src/share/classes/javax/swing/text/rtf/RTFParser.java +++ b/src/share/classes/javax/swing/text/rtf/RTFParser.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/text/rtf/RTFReader.java b/src/share/classes/javax/swing/text/rtf/RTFReader.java index f9d76c92750836d22f5612d7be3d09a22b18479a..8faca9e14494f683d7f5a44c17661b03513aa79a 100644 --- a/src/share/classes/javax/swing/text/rtf/RTFReader.java +++ b/src/share/classes/javax/swing/text/rtf/RTFReader.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/tree/DefaultTreeCellEditor.java b/src/share/classes/javax/swing/tree/DefaultTreeCellEditor.java index b0acd9be7e90645b4d62cca291fea46ed2ed7910..6703c1891e1af2f1ef9b880acaf718007b927c08 100644 --- a/src/share/classes/javax/swing/tree/DefaultTreeCellEditor.java +++ b/src/share/classes/javax/swing/tree/DefaultTreeCellEditor.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/tree/DefaultTreeModel.java b/src/share/classes/javax/swing/tree/DefaultTreeModel.java index f4e8b14f2907e79a72ee685b63498b9ff9653297..78a75ddab223b5c1d1c354c2eef0c55411d00f80 100644 --- a/src/share/classes/javax/swing/tree/DefaultTreeModel.java +++ b/src/share/classes/javax/swing/tree/DefaultTreeModel.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/tree/FixedHeightLayoutCache.java b/src/share/classes/javax/swing/tree/FixedHeightLayoutCache.java index 57b813bc72c421e0a51b4c9fe035c2d08a56dbdf..a0d8a8506b069162c2eaf51cb813d47aef527c5c 100644 --- a/src/share/classes/javax/swing/tree/FixedHeightLayoutCache.java +++ b/src/share/classes/javax/swing/tree/FixedHeightLayoutCache.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/tree/VariableHeightLayoutCache.java b/src/share/classes/javax/swing/tree/VariableHeightLayoutCache.java index cdf0a1a7355bc1a8cf09d1f0abeb1c7e62875ab7..8a7f655622ecb3f98058fab59febf7e09205136a 100644 --- a/src/share/classes/javax/swing/tree/VariableHeightLayoutCache.java +++ b/src/share/classes/javax/swing/tree/VariableHeightLayoutCache.java @@ -1,5 +1,5 @@ /* - * Copyright 1998-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/undo/StateEdit.java b/src/share/classes/javax/swing/undo/StateEdit.java index 554ed053736ef749e67a26a73393659a4cbf4208..27af446a748bf66c2e1426f8c2f06d2e36125b35 100644 --- a/src/share/classes/javax/swing/undo/StateEdit.java +++ b/src/share/classes/javax/swing/undo/StateEdit.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/undo/UndoManager.java b/src/share/classes/javax/swing/undo/UndoManager.java index fb1dcaf8ee37d07583845a8e34b4ac4f064db3fb..4862f75653eee5763daf40d9eae54be4e3d6920c 100644 --- a/src/share/classes/javax/swing/undo/UndoManager.java +++ b/src/share/classes/javax/swing/undo/UndoManager.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/javax/swing/undo/UndoableEditSupport.java b/src/share/classes/javax/swing/undo/UndoableEditSupport.java index 7b791bf677bef6c83f49a6e454ea087b77bb160d..6df5cd92d0e03b2fefaffee91a1227d622d32f0c 100644 --- a/src/share/classes/javax/swing/undo/UndoableEditSupport.java +++ b/src/share/classes/javax/swing/undo/UndoableEditSupport.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/org/jcp/xml/dsig/internal/DigesterOutputStream.java b/src/share/classes/org/jcp/xml/dsig/internal/DigesterOutputStream.java index 025f4fd7f403a0e638b115e3b7d2df60ac2f2071..045b9137230a1ff0c868c5415300d51d1997c8d0 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/DigesterOutputStream.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/DigesterOutputStream.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DigesterOutputStream.java,v 1.2 2008/07/24 15:20:31 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/SignerOutputStream.java b/src/share/classes/org/jcp/xml/dsig/internal/SignerOutputStream.java index 41ae1f2d38730701b3f2d27c39bf4e19945e96f1..db14f1a537a03d7cc5fdab4c0246739b6e52fccc 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/SignerOutputStream.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/SignerOutputStream.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: SignerOutputStream.java,v 1.2 2008/07/24 15:20:31 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheCanonicalizer.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheCanonicalizer.java index 66a4c07182044a157d8ffeb00d2ee32508ef8bb3..5a833f017990c4f02cd0f83ea4d8e91fcc36ead3 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheCanonicalizer.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheCanonicalizer.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: ApacheCanonicalizer.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheData.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheData.java index 7aa6be7e52de990d95d8edda357d5dbe273d3ae2..e285f88125b998667d9f80d292633526bb937928 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheData.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheData.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: ApacheData.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheNodeSetData.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheNodeSetData.java index abf90588c62b2deca9e9db00c381d2a0d8193f3c..8bda94f494335816627c51ccdf3477afb76bfcbe 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheNodeSetData.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheNodeSetData.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: ApacheNodeSetData.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheOctetStreamData.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheOctetStreamData.java index 5f1dc4b54a0e7f7f6fc1a4ad6c8303c7218a3120..ac4cfc1481fefd5fcfb67cf2098e5b27e41acd92 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheOctetStreamData.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheOctetStreamData.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: ApacheOctetStreamData.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheTransform.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheTransform.java index 4b4f141397e32d5ae997917a52b7603d1af5a24c..3237dc892b9cb552b79a4418e9ded926ed0fd5c8 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheTransform.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheTransform.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: ApacheTransform.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMBase64Transform.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMBase64Transform.java index 5646bf9417601993b9efd0dd8820642daacc38bb..daeb7df98a3424b52d31214a1d497d4e6331874b 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMBase64Transform.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMBase64Transform.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMBase64Transform.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCanonicalXMLC14NMethod.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCanonicalXMLC14NMethod.java index 7443dbad53db7380c07d4094e373c6cf1c5f3dd6..1a93e8f2dad982990b9973def8f146ba81cf11c3 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCanonicalXMLC14NMethod.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCanonicalXMLC14NMethod.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMCanonicalXMLC14NMethod.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java index 2b2469f36868699c792e58c0c604624ff5a313f7..6fa16f15932ace82b8362b2c6fad369f6e1f5635 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMCanonicalizationMethod.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCryptoBinary.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCryptoBinary.java index bd6e30bc6589b84ea812a5037509403b85e926d0..8aecc44915558ad64b1abacd60542b08caa5b357 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCryptoBinary.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMCryptoBinary.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMCryptoBinary.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMDigestMethod.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMDigestMethod.java index 620c9a77ea1eb30418c8431bf065151c7e0420b8..74081c50b29e11ce7abe6c6bf02f6760047094f2 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMDigestMethod.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMDigestMethod.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMDigestMethod.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMEnvelopedTransform.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMEnvelopedTransform.java index 0d8b8e6b577a92ef0ee5824193a36b44fbbab816..96d47b1d0596357658a7a7687dd4c3512f935ce9 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMEnvelopedTransform.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMEnvelopedTransform.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMEnvelopedTransform.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMExcC14NMethod.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMExcC14NMethod.java index 5dd5a85115fe6978c5fe6596b73d0e690d3f3299..fe0fec55aaade5a4d39a52f3a879941369201d59 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMExcC14NMethod.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMExcC14NMethod.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMExcC14NMethod.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMHMACSignatureMethod.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMHMACSignatureMethod.java index 66ce33f5db205f389fa11c1cf393d2eaad5c3609..5a9000c898c630ce7b12814c361d0f0db3a5c2fe 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMHMACSignatureMethod.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMHMACSignatureMethod.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMHMACSignatureMethod.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyInfo.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyInfo.java index 9c89f200028cfa9e41f43b4bb60d8d77d5057a53..23c2d2255950e229efd81a20c6034fd6e2a13014 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyInfo.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyInfo.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMKeyInfo.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyInfoFactory.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyInfoFactory.java index 58b227670cf00c309c41a1bd455ff5fb64c0e76f..8cbe035dd23d78707735ce87e18744e682a923d9 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyInfoFactory.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyInfoFactory.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMKeyInfoFactory.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyName.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyName.java index 5403ebe7b8716430ad02177a9ca80384de06a72f..4adff7b5936722b60375039ade6369ae7af10549 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyName.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyName.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMKeyName.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java index c23f54200a061683dcd54e5af1ccbaca3288a7f2..15bb80886f7f09ffe60aa2d372c5da23b36ae9f9 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMKeyValue.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMManifest.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMManifest.java index e2bb4da03bbc7018a8210c969afc9a54bbaf288b..2f3d220223701115b9b346906c6a588bc450273d 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMManifest.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMManifest.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMManifest.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMPGPData.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMPGPData.java index 1593a570b6248ab6245bb9905ee6cea7461b0c8d..a9384585cf19148d3b97567f5f169f417f4f14a6 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMPGPData.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMPGPData.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMPGPData.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureMethod.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureMethod.java index 67a4fa55f2e8c33081f37000d5825919d68239e0..40a3bfea0f8f81408f2cd3b1dd7f1f51088ae7c9 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureMethod.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureMethod.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMSignatureMethod.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java index 07f3b89ed38314476530cd49131ba4079a28bb81..56d894e07f8e0b576204e38b492bd19e3afc0302 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMSignatureProperties.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java index d868558289daad323c2c466da4e7ede6d6674e4a..26b3ac89d79004bae062d4347e52dd80322ca4fc 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMSignatureProperty.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignedInfo.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignedInfo.java index 3597c5f0c3543e4feb9049f5863104d3f4efdc0c..c48bc9bd307208bef056f6bb8dbb26050ef54ab6 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignedInfo.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignedInfo.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMSignedInfo.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMStructure.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMStructure.java index 19b5359be83d7d38332168fcf9e15a7fdd9b241e..4aac65d8659a6e02b99084ac15f8d9c65cdcf19a 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMStructure.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMStructure.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMStructure.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSubTreeData.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSubTreeData.java index fc88ae6436cd1baba5f2daa2922b454e20f194f8..d9364e1d5cc603710f4e9098f5a6730fac0fd594 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSubTreeData.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSubTreeData.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMSubTreeData.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMTransform.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMTransform.java index 4425a00d3683959e5197a36feb5be9fe37827771..d239db878263c8b8dd82c90d880e9ed26aed1547 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMTransform.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMTransform.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMTransform.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMURIDereferencer.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMURIDereferencer.java index b6c23c25cde7f81ef50c3c0201a7f53c1008b2aa..89352037f6d51117e3af9f32d907d1afd0f5686d 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMURIDereferencer.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMURIDereferencer.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMURIDereferencer.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMUtils.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMUtils.java index ccd3e1957815e06bc1e51799c7439b6a6faaa4cd..7f8f956c962af044080b3bb8ddfcaf27c804357b 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMUtils.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMUtils.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMUtils.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509Data.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509Data.java index 8ee3db600a50e99c26b74137bbd9272c496b7c28..79c251d06c3f5aa400af585af4080500e8c45a14 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509Data.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509Data.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMX509Data.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509IssuerSerial.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509IssuerSerial.java index ecfe5851fd9349471d2e3b49512d981e265a2024..6e0d80f12602ed526213237db287daa750302abf 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509IssuerSerial.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509IssuerSerial.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMX509IssuerSerial.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLObject.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLObject.java index 45f9984bc2ecc3865fd23f720b8c58dcc256482b..3ea04dd90f4f515409824c603b78cc797120b418 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLObject.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLObject.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMXMLObject.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java index 59e0ebe3946e11792f7b20caa435628d1559f650..cc97fa3e240ea8dc2bd82743039ca11b9b76a46f 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMXMLSignatureFactory.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXPathTransform.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXPathTransform.java index 3272f76c888244cdb3efcbf3ab49bbb9d1682bed..b8d39dd45988b781f5c54c3ac60cdfa334484d46 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXPathTransform.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXPathTransform.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMXPathTransform.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXSLTTransform.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXSLTTransform.java index 2ee51105638f5ad65416fb6d30dca0982986d5d5..3e19f7067070978f4c87b90e202a07ad034bd8d0 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXSLTTransform.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXSLTTransform.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: DOMXSLTTransform.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/org/jcp/xml/dsig/internal/dom/Utils.java b/src/share/classes/org/jcp/xml/dsig/internal/dom/Utils.java index 1bbd7b20477f120d694a12ca20e1b34d8c00c4c1..3739ffde865aca43608015c80e571ca809951fc5 100644 --- a/src/share/classes/org/jcp/xml/dsig/internal/dom/Utils.java +++ b/src/share/classes/org/jcp/xml/dsig/internal/dom/Utils.java @@ -19,7 +19,7 @@ * */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All rights reserved. */ /* * $Id: Utils.java,v 1.2 2008/07/24 15:20:32 mullan Exp $ diff --git a/src/share/classes/sun/awt/im/CompositionArea.java b/src/share/classes/sun/awt/im/CompositionArea.java index 4808aa457307472e1a9aac365345e86a40826378..acdc67a80aa85c59531f7f99e155f89eebb6709a 100644 --- a/src/share/classes/sun/awt/im/CompositionArea.java +++ b/src/share/classes/sun/awt/im/CompositionArea.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/sun/io/ByteToCharCp850.java b/src/share/classes/sun/io/ByteToCharCp850.java index c048a6b7ec1b500fd7f28634b962d4c6c5acb5b7..62ceb3dba84221c6437e6acb6864bece0a84734d 100644 --- a/src/share/classes/sun/io/ByteToCharCp850.java +++ b/src/share/classes/sun/io/ByteToCharCp850.java @@ -1,5 +1,5 @@ /* - * Copyright 1996-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1996-2002 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,6 @@ * have any questions. */ - package sun.io; import sun.nio.cs.IBM850; @@ -32,6 +31,7 @@ import sun.nio.cs.IBM850; * A table to convert to Cp850 to Unicode * * @author ConverterGenerator tool + * @version >= JDK1.1.6 */ public class ByteToCharCp850 extends ByteToCharSingleByte { @@ -41,6 +41,6 @@ public class ByteToCharCp850 extends ByteToCharSingleByte { } public ByteToCharCp850() { - super.byteToCharTable = IBM850.getDecoderSingleByteMappings(); + super.byteToCharTable = new IBM850().getDecoderSingleByteMappings(); } } diff --git a/src/share/classes/sun/io/CharToByteJIS0201.java b/src/share/classes/sun/io/CharToByteJIS0201.java index ea78fa7ddc46ff7772ff833a9f99ad6b0005efb9..ac85f5da75cbf1f71b8fd140abecb2a57a11d41d 100644 --- a/src/share/classes/sun/io/CharToByteJIS0201.java +++ b/src/share/classes/sun/io/CharToByteJIS0201.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-1998 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,6 +29,7 @@ package sun.io; * Tables and data to convert Unicode to JIS0201 * * @author ConverterGenerator tool + * @version >= JDK1.1.6 */ class CharToByteJIS0201 extends CharToByteSingleByte { @@ -41,8 +42,21 @@ class CharToByteJIS0201 extends CharToByteSingleByte { super.mask1 = 0xFF00; super.mask2 = 0x00FF; super.shift = 8; + /* super.index1 = index1; super.index2 = index2; + */ + } + + public byte getNative(char inputChar) { + return (byte)index2.charAt(index1[(inputChar & mask1) >> shift] + + (inputChar & mask2)); + } + + public boolean canConvert(char ch) { + if (index2.charAt(index1[((ch & mask1) >> shift)] + (ch & mask2)) != '\u0000') + return true; + return (ch == '\u0000'); } private final static String index2 = diff --git a/src/share/classes/sun/io/CharToByteSingleByte.java b/src/share/classes/sun/io/CharToByteSingleByte.java index 0812b6822e24db7d33a91cd1fe7f17e77a7d5b6b..f56e3279a398b6ac412fcc0f36a36dbef2f59de7 100644 --- a/src/share/classes/sun/io/CharToByteSingleByte.java +++ b/src/share/classes/sun/io/CharToByteSingleByte.java @@ -1,5 +1,5 @@ /* - * Copyright 1996-2002 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,8 @@ package sun.io; +import static sun.nio.cs.CharsetMapping.*; + /** * A table driven conversion from char to byte for single byte * character sets. Tables will reside in the class CharToByteYYYYY, @@ -35,6 +37,7 @@ package sun.io; * * @author Lloyd Honomichl * @author Asmus Freytag +* @version 8/28/96 */ public abstract class CharToByteSingleByte extends CharToByteConverter { @@ -42,12 +45,12 @@ public abstract class CharToByteSingleByte extends CharToByteConverter { /* * 1st level index, provided by subclass */ - protected short index1[]; + protected char[] index1; /* * 2nd level index, provided by subclass */ - protected String index2; + protected char[] index2; /* * Mask to isolate bits for 1st level index, from subclass @@ -66,11 +69,11 @@ public abstract class CharToByteSingleByte extends CharToByteConverter { private char highHalfZoneCode; - public short[] getIndex1() { + public char[] getIndex1() { return index1; } - public String getIndex2() { + public char[] getIndex2() { return index2; } public int flush(byte[] output, int outStart, int outEnd) @@ -229,9 +232,18 @@ public abstract class CharToByteSingleByte extends CharToByteConverter { return 1; } + int encodeChar(char ch) { + char index = index1[ch >> 8]; + if (index == UNMAPPABLE_ENCODING) + return UNMAPPABLE_ENCODING; + return index2[index + (ch & 0xff)]; + } + public byte getNative(char inputChar) { - return (byte)index2.charAt(index1[(inputChar & mask1) >> shift] - + (inputChar & mask2)); + int b = encodeChar(inputChar); + if (b == UNMAPPABLE_ENCODING) + return 0; + return (byte)b; } /** @@ -248,11 +260,6 @@ public abstract class CharToByteSingleByte extends CharToByteConverter { * @return true if a character is mappable */ public boolean canConvert(char ch) { - // Look it up in the table - if (index2.charAt(index1[((ch & mask1) >> shift)] + (ch & mask2)) != '\u0000') - return true; - - // Nulls are always mappable - return (ch == '\u0000'); + return encodeChar(ch) != UNMAPPABLE_ENCODING; } } diff --git a/src/share/classes/sun/management/jmxremote/ConnectorBootstrap.java b/src/share/classes/sun/management/jmxremote/ConnectorBootstrap.java index 43cae9144e9b1077995a854f6c2bc45c67613ec7..1ff66405e5ed512141214fc58c5ddbd5970d56b3 100644 --- a/src/share/classes/sun/management/jmxremote/ConnectorBootstrap.java +++ b/src/share/classes/sun/management/jmxremote/ConnectorBootstrap.java @@ -80,7 +80,7 @@ import sun.management.AgentConfigurationError; import static sun.management.AgentConfigurationError.*; import sun.management.ConnectorAddressLink; import sun.management.FileSystem; -import sun.management.snmp.util.MibLogger; +import com.sun.jmx.remote.util.ClassLogger; import com.sun.jmx.remote.internal.RMIExporter; import com.sun.jmx.remote.security.JMXPluggableAuthenticator; @@ -99,6 +99,7 @@ public final class ConnectorBootstrap { public static final String PORT = "0"; public static final String CONFIG_FILE_NAME = "management.properties"; public static final String USE_SSL = "true"; + public static final String USE_LOCAL_ONLY = "true"; public static final String USE_REGISTRY_SSL = "false"; public static final String USE_AUTHENTICATION = "true"; public static final String PASSWORD_FILE_NAME = "jmxremote.password"; @@ -115,6 +116,8 @@ public final class ConnectorBootstrap { "com.sun.management.jmxremote.port"; public static final String CONFIG_FILE_NAME = "com.sun.management.config.file"; + public static final String USE_LOCAL_ONLY = + "com.sun.management.jmxremote.local.only"; public static final String USE_SSL = "com.sun.management.jmxremote.ssl"; public static final String USE_REGISTRY_SSL = @@ -384,7 +387,7 @@ public final class ConnectorBootstrap { checkAccessFile(accessFileName); } - if (log.isDebugOn()) { + if (log.debugOn()) { log.debug("initialize", Agent.getText("jmxremote.ConnectorBootstrap.initialize") + "\n\t" + PropertyNames.PORT + "=" + port + @@ -477,6 +480,18 @@ public final class ConnectorBootstrap { MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); try { JMXServiceURL url = new JMXServiceURL("rmi", localhost, 0); + // Do we accept connections from local interfaces only? + Properties props = Agent.getManagementProperties(); + if (props == null) { + props = new Properties(); + } + String useLocalOnlyStr = props.getProperty( + PropertyNames.USE_LOCAL_ONLY, DefaultValues.USE_LOCAL_ONLY); + boolean useLocalOnly = Boolean.valueOf(useLocalOnlyStr).booleanValue(); + if (useLocalOnly) { + env.put(RMIConnectorServer.RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE, + new LocalRMIServerSocketFactory()); + } JMXConnectorServer server = JMXConnectorServerFactory.newJMXConnectorServer(url, env, mbs); server.start(); @@ -764,7 +779,7 @@ public final class ConnectorBootstrap { private ConnectorBootstrap() { } - // XXX Revisit: should probably clone this MibLogger.... - private static final MibLogger log = - new MibLogger(ConnectorBootstrap.class); + private static final ClassLogger log = + new ClassLogger(ConnectorBootstrap.class.getPackage().getName(), + "ConnectorBootstrap"); } diff --git a/src/share/classes/sun/management/jmxremote/LocalRMIServerSocketFactory.java b/src/share/classes/sun/management/jmxremote/LocalRMIServerSocketFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..ab34a74e1d82efa101b51933e840102b7eb2a1dc --- /dev/null +++ b/src/share/classes/sun/management/jmxremote/LocalRMIServerSocketFactory.java @@ -0,0 +1,135 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package sun.management.jmxremote; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.ServerSocket; +import java.net.Socket; +import java.net.SocketException; +import java.rmi.server.RMIServerSocketFactory; +import java.util.Enumeration; + +/** + * This RMI server socket factory creates server sockets that + * will only accept connection requests from clients running + * on the host where the RMI remote objects have been exported. + */ +public final class LocalRMIServerSocketFactory implements RMIServerSocketFactory { + /** + * Creates a server socket that only accepts connection requests from + * clients running on the host where the RMI remote objects have been + * exported. + */ + public ServerSocket createServerSocket(int port) throws IOException { + return new ServerSocket(port) { + @Override + public Socket accept() throws IOException { + final Socket socket = super.accept(); + final InetAddress remoteAddr = socket.getInetAddress(); + final String msg = "The server sockets created using the " + + "LocalRMIServerSocketFactory only accept connections " + + "from clients running on the host where the RMI " + + "remote objects have been exported."; + + if (remoteAddr == null) { + // Though unlikeky, the socket could be already + // closed... Send a more detailed message in + // this case. Also avoid throwing NullPointerExceptiion + // + String details = ""; + if (socket.isClosed()) { + details = " Socket is closed."; + } else if (!socket.isConnected()) { + details = " Socket is not connected"; + } + try { + socket.close(); + } catch (Exception ok) { + // ok - this is just cleanup before throwing detailed + // exception. + } + throw new IOException(msg + + " Couldn't determine client address." + + details); + } else if (remoteAddr.isLoopbackAddress()) { + // local address: accept the connection. + return socket; + } + // Retrieve all the network interfaces on this host. + Enumeration nis; + try { + nis = NetworkInterface.getNetworkInterfaces(); + } catch (SocketException e) { + try { + socket.close(); + } catch (IOException ioe) { + // Ignore... + } + throw new IOException(msg, e); + } + // Walk through the network interfaces to see + // if any of them matches the client's address. + // If true, then the client's address is local. + while (nis.hasMoreElements()) { + NetworkInterface ni = nis.nextElement(); + Enumeration addrs = ni.getInetAddresses(); + while (addrs.hasMoreElements()) { + InetAddress localAddr = addrs.nextElement(); + if (localAddr.equals(remoteAddr)) { + return socket; + } + } + } + // The client's address is remote so refuse the connection. + try { + socket.close(); + } catch (IOException ioe) { + // Ignore... + } + throw new IOException(msg); + } + }; + } + + /** + * Two LocalRMIServerSocketFactory objects + * are equal if they are of the same type. + */ + @Override + public boolean equals(Object obj) { + return (obj instanceof LocalRMIServerSocketFactory); + } + + /** + * Returns a hash code value for this LocalRMIServerSocketFactory. + */ + @Override + public int hashCode() { + return getClass().hashCode(); + } +} diff --git a/src/share/classes/sun/net/ProgressEvent.java b/src/share/classes/sun/net/ProgressEvent.java index cba1007e32e43dfa0ae9503f2c8482785cebd7fc..2f812dea535adba01ca78534c10de6ed82b2e1df 100644 --- a/src/share/classes/sun/net/ProgressEvent.java +++ b/src/share/classes/sun/net/ProgressEvent.java @@ -1,5 +1,5 @@ /* - * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2004-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/sun/net/httpserver/ExchangeImpl.java b/src/share/classes/sun/net/httpserver/ExchangeImpl.java index 2560d7fea754f240a9c8debd89a18d6052512067..f15a3d0d57390f3235f4ce9a2936eb968181bbaa 100644 --- a/src/share/classes/sun/net/httpserver/ExchangeImpl.java +++ b/src/share/classes/sun/net/httpserver/ExchangeImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -43,7 +43,7 @@ class ExchangeImpl { String method; URI uri; HttpConnection connection; - int reqContentLen; + long reqContentLen; long rspContentLen; /* raw streams which access the socket directly */ InputStream ris; @@ -79,7 +79,7 @@ class ExchangeImpl { ServerImpl server; ExchangeImpl ( - String m, URI u, Request req, int len, HttpConnection connection + String m, URI u, Request req, long len, HttpConnection connection ) throws IOException { this.req = req; this.reqHdrs = req.headers(); @@ -148,7 +148,7 @@ class ExchangeImpl { if (uis != null) { return uis; } - if (reqContentLen == -1) { + if (reqContentLen == -1L) { uis_orig = new ChunkedInputStream (this, ris); uis = uis_orig; } else { diff --git a/src/share/classes/sun/net/httpserver/FixedLengthInputStream.java b/src/share/classes/sun/net/httpserver/FixedLengthInputStream.java index 6d6c9587fba7d0f9308a4532ecd7030a5b8b5958..3b1fb34e5b20c3b32b4df09c3eb99452c40c78c3 100644 --- a/src/share/classes/sun/net/httpserver/FixedLengthInputStream.java +++ b/src/share/classes/sun/net/httpserver/FixedLengthInputStream.java @@ -1,5 +1,5 @@ /* - * Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,21 +37,21 @@ import com.sun.net.httpserver.spi.*; */ class FixedLengthInputStream extends LeftOverInputStream { - private int remaining; + private long remaining; - FixedLengthInputStream (ExchangeImpl t, InputStream src, int len) { + FixedLengthInputStream (ExchangeImpl t, InputStream src, long len) { super (t, src); this.remaining = len; } protected int readImpl (byte[]b, int off, int len) throws IOException { - eof = (remaining == 0); + eof = (remaining == 0L); if (eof) { return -1; } if (len > remaining) { - len = remaining; + len = (int)remaining; } int n = in.read(b, off, len); if (n > -1) { @@ -65,7 +65,7 @@ class FixedLengthInputStream extends LeftOverInputStream { return 0; } int n = in.available(); - return n < remaining? n: remaining; + return n < remaining? n: (int)remaining; } public boolean markSupported () {return false;} diff --git a/src/share/classes/sun/net/httpserver/Request.java b/src/share/classes/sun/net/httpserver/Request.java index bdafe663c1baff18590fed7ed48699bd0afc4a91..80bc31dc761796039d45e08a4b04f683c3034c1c 100644 --- a/src/share/classes/sun/net/httpserver/Request.java +++ b/src/share/classes/sun/net/httpserver/Request.java @@ -1,5 +1,5 @@ /* - * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -53,7 +53,7 @@ class Request { do { startLine = readLine(); /* skip blank lines */ - } while (startLine.equals ("")); + } while (startLine == null ? false : startLine.equals ("")); } diff --git a/src/share/classes/sun/net/httpserver/ServerImpl.java b/src/share/classes/sun/net/httpserver/ServerImpl.java index a6d4b07976309f2c092a65a41ecfc00bfdf203af..cfff8dd0f6aae03fbad77598dcdeb180bf9840df 100644 --- a/src/share/classes/sun/net/httpserver/ServerImpl.java +++ b/src/share/classes/sun/net/httpserver/ServerImpl.java @@ -470,13 +470,13 @@ class ServerImpl implements TimeSource { String version = requestLine.substring (start); Headers headers = req.headers(); String s = headers.getFirst ("Transfer-encoding"); - int clen = 0; + long clen = 0L; if (s !=null && s.equalsIgnoreCase ("chunked")) { - clen = -1; + clen = -1L; } else { s = headers.getFirst ("Content-Length"); if (s != null) { - clen = Integer.parseInt (s); + clen = Long.parseLong(s); } } ctx = contexts.findContext (protocol, uri.getPath()); diff --git a/src/share/classes/sun/net/www/http/ChunkedOutputStream.java b/src/share/classes/sun/net/www/http/ChunkedOutputStream.java index ed8d7b3f5ae256b5d64185152e02da9fd9848ca4..ac97667b912bde597c72972770248b062f431d68 100644 --- a/src/share/classes/sun/net/www/http/ChunkedOutputStream.java +++ b/src/share/classes/sun/net/www/http/ChunkedOutputStream.java @@ -29,32 +29,58 @@ import java.io.*; /** * OutputStream that sends the output to the underlying stream using chunked * encoding as specified in RFC 2068. - * - * @author Alan Bateman */ public class ChunkedOutputStream extends PrintStream { /* Default chunk size (including chunk header) if not specified */ static final int DEFAULT_CHUNK_SIZE = 4096; + private static final byte[] CRLF = {'\r', '\n'}; + private static final int CRLF_SIZE = CRLF.length; + private static final byte[] FOOTER = CRLF; + private static final int FOOTER_SIZE = CRLF_SIZE; + private static final byte[] EMPTY_CHUNK_HEADER = getHeader(0); + private static final int EMPTY_CHUNK_HEADER_SIZE = getHeaderSize(0); /* internal buffer */ private byte buf[]; + /* size of data (excluding footers and headers) already stored in buf */ + private int size; + /* current index in buf (i.e. buf[count] */ private int count; + /* number of bytes to be filled up to complete a data chunk + * currently being built */ + private int spaceInCurrentChunk; /* underlying stream */ private PrintStream out; /* the chunk size we use */ - private int preferredChunkSize; - - /* if the users write buffer is bigger than this size, we - * write direct from the users buffer instead of copying - */ - static final int MAX_BUF_SIZE = 10 * 1024; + private int preferredChunkDataSize; + private int preferedHeaderSize; + private int preferredChunkGrossSize; + /* header for a complete Chunk */ + private byte[] completeHeader; /* return the size of the header for a particular chunk size */ - private int headerSize(int size) { - return 2 + (Integer.toHexString(size)).length(); + private static int getHeaderSize(int size) { + return (Integer.toHexString(size)).length() + CRLF_SIZE; + } + + /* return a header for a particular chunk size */ + private static byte[] getHeader(int size){ + try { + String hexStr = Integer.toHexString(size); + byte[] hexBytes = hexStr.getBytes("US-ASCII"); + byte[] header = new byte[getHeaderSize(size)]; + for (int i=0; i 0) { - int adjusted_size = size - headerSize(size); - if (adjusted_size + headerSize(adjusted_size) < size) { + int adjusted_size = size - getHeaderSize(size) - FOOTER_SIZE; + if (getHeaderSize(adjusted_size+1) < getHeaderSize(size)){ adjusted_size++; } size = adjusted_size; } if (size > 0) { - preferredChunkSize = size; + preferredChunkDataSize = size; } else { - preferredChunkSize = DEFAULT_CHUNK_SIZE - headerSize(DEFAULT_CHUNK_SIZE); + preferredChunkDataSize = DEFAULT_CHUNK_SIZE - + getHeaderSize(DEFAULT_CHUNK_SIZE) - FOOTER_SIZE; } + preferedHeaderSize = getHeaderSize(preferredChunkDataSize); + preferredChunkGrossSize = preferedHeaderSize + preferredChunkDataSize + + FOOTER_SIZE; + completeHeader = getHeader(preferredChunkDataSize); + /* start with an initial buffer */ - buf = new byte[preferredChunkSize + 32]; + buf = new byte[preferredChunkDataSize + 32]; + reset(); } /* - * If flushAll is true, then all data is flushed in one chunk. - * - * If false and the size of the buffer data exceeds the preferred - * chunk size then chunks are flushed to the output stream. - * If there isn't enough data to make up a complete chunk, - * then the method returns. + * Flush a buffered, completed chunk to an underlying stream. If the data in + * the buffer is insufficient to build up a chunk of "preferredChunkSize" + * then the data do not get flushed unless flushAll is true. If flushAll is + * true then the remaining data builds up a last chunk which size is smaller + * than preferredChunkSize, and then the last chunk gets flushed to + * underlying stream. If flushAll is true and there is no data in a buffer + * at all then an empty chunk (containing a header only) gets flushed to + * underlying stream. */ - private void flush(byte[] buf, boolean flushAll) { - flush (buf, flushAll, 0); - } - - private void flush(byte[] buf, boolean flushAll, int offset) { - int chunkSize; - - do { - if (count < preferredChunkSize) { - if (!flushAll) { - break; - } - chunkSize = count; + private void flush(boolean flushAll) { + if (spaceInCurrentChunk == 0) { + /* flush a completed chunk to underlying stream */ + out.write(buf, 0, preferredChunkGrossSize); + out.flush(); + reset(); + } else if (flushAll){ + /* complete the last chunk and flush it to underlying stream */ + if (size > 0){ + /* adjust a header start index in case the header of the last + * chunk is shorter then preferedHeaderSize */ + + int adjustedHeaderStartIndex = preferedHeaderSize - + getHeaderSize(size); + + /* write header */ + System.arraycopy(getHeader(size), 0, buf, + adjustedHeaderStartIndex, getHeaderSize(size)); + + /* write footer */ + buf[count++] = FOOTER[0]; + buf[count++] = FOOTER[1]; + + //send the last chunk to underlying stream + out.write(buf, adjustedHeaderStartIndex, count - adjustedHeaderStartIndex); } else { - chunkSize = preferredChunkSize; - } - - byte[] bytes = null; - try { - bytes = (Integer.toHexString(chunkSize)).getBytes("US-ASCII"); - } catch (java.io.UnsupportedEncodingException e) { - //This should never happen. - throw new InternalError(e.getMessage()); + //send an empty chunk (containing just a header) to underlying stream + out.write(EMPTY_CHUNK_HEADER, 0, EMPTY_CHUNK_HEADER_SIZE); } - out.write(bytes, 0, bytes.length); - out.write((byte)'\r'); - out.write((byte)'\n'); - if (chunkSize > 0) { - out.write(buf, offset, chunkSize); - out.write((byte)'\r'); - out.write((byte)'\n'); - } out.flush(); - if (checkError()) { - break; - } - if (chunkSize > 0) { - count -= chunkSize; - offset += chunkSize; - } - } while (count > 0); - - if (!checkError() && count > 0) { - System.arraycopy(buf, offset, this.buf, 0, count); - } + reset(); + } } + @Override public boolean checkError() { return out.checkError(); } - /* - * Check if we have enough data for a chunk and if so flush to the - * underlying output stream. - */ - private void checkFlush() { - if (count >= preferredChunkSize) { - flush(buf, false); - } - } - /* Check that the output stream is still open */ private void ensureOpen() { if (out == null) setError(); } + /* + * Writes data from b[] to an internal buffer and stores the data as data + * chunks of a following format: {Data length in Hex}{CRLF}{data}{CRLF} + * The size of the data is preferredChunkSize. As soon as a completed chunk + * is read from b[] a process of reading from b[] suspends, the chunk gets + * flushed to the underlying stream and then the reading process from b[] + * continues. When there is no more sufficient data in b[] to build up a + * chunk of preferredChunkSize size the data get stored as an incomplete + * chunk of a following format: {space for data length}{CRLF}{data} + * The size of the data is of course smaller than preferredChunkSize. + */ + @Override public synchronized void write(byte b[], int off, int len) { ensureOpen(); if ((off < 0) || (off > b.length) || (len < 0) || @@ -177,81 +206,95 @@ public class ChunkedOutputStream extends PrintStream { return; } - int l = preferredChunkSize - count; + /* if b[] contains enough data then one loop cycle creates one complete + * data chunk with a header, body and a footer, and then flushes the + * chunk to the underlying stream. Otherwise, the last loop cycle + * creates incomplete data chunk with empty header and with no footer + * and stores this incomplete chunk in an internal buffer buf[] + */ + int bytesToWrite = len; + int inputIndex = off; /* the index of the byte[] currently being written */ - if ((len > MAX_BUF_SIZE) && (len > l)) { - /* current chunk is empty just write the data */ - if (count == 0) { - count = len; - flush (b, false, off); - return; + do { + /* enough data to complete a chunk */ + if (bytesToWrite >= spaceInCurrentChunk) { + + /* header */ + for (int i=0; i 0) { - System.arraycopy(b, off, buf, count, l); - count = preferredChunkSize; - flush(buf, false); - } + /* not enough data to build a chunk */ + else { + /* header */ + /* do not write header if not enough bytes to build a chunk yet */ - count = len - l; - /* Now write the rest of the data */ - flush (b, false, l+off); - } else { - int newcount = count + len; + /* data */ + System.arraycopy(b, inputIndex, buf, count, bytesToWrite); + count += bytesToWrite; + size += bytesToWrite; + spaceInCurrentChunk -= bytesToWrite; + bytesToWrite = 0; - if (newcount > buf.length) { - byte newbuf[] = new byte[Math.max(buf.length << 1, newcount)]; - System.arraycopy(buf, 0, newbuf, 0, count); - buf = newbuf; + /* footer */ + /* do not write header if not enough bytes to build a chunk yet */ } - System.arraycopy(b, off, buf, count, len); - count = newcount; - checkFlush(); - } + } while (bytesToWrite > 0); } - public synchronized void write(int b) { - ensureOpen(); - int newcount = count + 1; - if (newcount > buf.length) { - byte newbuf[] = new byte[Math.max(buf.length << 1, newcount)]; - System.arraycopy(buf, 0, newbuf, 0, count); - buf = newbuf; - } - buf[count] = (byte)b; - count = newcount; - checkFlush(); + @Override + public synchronized void write(int _b) { + byte b[] = {(byte)_b}; + write(b, 0, 1); } public synchronized void reset() { - count = 0; + count = preferedHeaderSize; + size = 0; + spaceInCurrentChunk = preferredChunkDataSize; } public int size() { - return count; + return size; } + @Override public synchronized void close() { ensureOpen(); /* if we have buffer a chunked send it */ - if (count > 0) { - flush(buf, true); + if (size > 0) { + flush(true); } /* send a zero length chunk */ - flush(buf, true); + flush(true); /* don't close the underlying stream */ out = null; } + @Override public synchronized void flush() { ensureOpen(); - if (count > 0) { - flush(buf, true); + if (size > 0) { + flush(true); } } - } diff --git a/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java b/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java index 5aec18973aa7fc5a0d34d9fcbd6ce8dfb5f6f02b..6f3250b30eb3fb755adf30fbfcdd875c447cd30a 100644 --- a/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java +++ b/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java @@ -435,8 +435,14 @@ public class HttpURLConnection extends java.net.HttpURLConnection { if (streaming()) { if (chunkLength != -1) { requests.set ("Transfer-Encoding", "chunked"); - } else { - requests.set ("Content-Length", String.valueOf(fixedContentLength)); + } else { /* fixed content length */ + if (fixedContentLengthLong != -1) { + requests.set ("Content-Length", + String.valueOf(fixedContentLengthLong)); + } else if (fixedContentLength != -1) { + requests.set ("Content-Length", + String.valueOf(fixedContentLength)); + } } } else if (poster != null) { /* add Content-Length & POST/PUT data */ @@ -871,11 +877,17 @@ public class HttpURLConnection extends java.net.HttpURLConnection { ps = (PrintStream)http.getOutputStream(); if (streaming()) { if (strOutputStream == null) { - if (fixedContentLength != -1) { - strOutputStream = new StreamingOutputStream (ps, fixedContentLength); - } else if (chunkLength != -1) { - strOutputStream = - new StreamingOutputStream (new ChunkedOutputStream (ps, chunkLength), -1); + if (chunkLength != -1) { /* chunked */ + strOutputStream = new StreamingOutputStream( + new ChunkedOutputStream(ps, chunkLength), -1L); + } else { /* must be fixed content length */ + long length = 0L; + if (fixedContentLengthLong != -1) { + length = fixedContentLengthLong; + } else if (fixedContentLength != -1) { + length = fixedContentLength; + } + strOutputStream = new StreamingOutputStream(ps, length); } } return strOutputStream; @@ -895,7 +907,8 @@ public class HttpURLConnection extends java.net.HttpURLConnection { } private boolean streaming () { - return (fixedContentLength != -1) || (chunkLength != -1); + return (fixedContentLength != -1) || (fixedContentLengthLong != -1) || + (chunkLength != -1); } /* @@ -2619,8 +2632,8 @@ public class HttpURLConnection extends java.net.HttpURLConnection { class StreamingOutputStream extends FilterOutputStream { - int expected; - int written; + long expected; + long written; boolean closed; boolean error; IOException errorExcp; @@ -2631,10 +2644,10 @@ public class HttpURLConnection extends java.net.HttpURLConnection { * In the 2nd case, we make sure the expected number of * of bytes are actually written */ - StreamingOutputStream (OutputStream os, int expectedLength) { + StreamingOutputStream (OutputStream os, long expectedLength) { super (os); expected = expectedLength; - written = 0; + written = 0L; closed = false; error = false; } @@ -2643,7 +2656,7 @@ public class HttpURLConnection extends java.net.HttpURLConnection { public void write (int b) throws IOException { checkError(); written ++; - if (expected != -1 && written > expected) { + if (expected != -1L && written > expected) { throw new IOException ("too many bytes written"); } out.write (b); @@ -2658,7 +2671,7 @@ public class HttpURLConnection extends java.net.HttpURLConnection { public void write (byte[] b, int off, int len) throws IOException { checkError(); written += len; - if (expected != -1 && written > expected) { + if (expected != -1L && written > expected) { out.close (); throw new IOException ("too many bytes written"); } @@ -2691,7 +2704,7 @@ public class HttpURLConnection extends java.net.HttpURLConnection { return; } closed = true; - if (expected != -1) { + if (expected != -1L) { /* not chunked */ if (written != expected) { error = true; diff --git a/src/share/classes/sun/net/www/protocol/https/HttpsURLConnectionImpl.java b/src/share/classes/sun/net/www/protocol/https/HttpsURLConnectionImpl.java index 55b1859ba15eb05ea17fdf537ca64b418e4c87ac..178538126bf29f8637ff289a1e1d4cd04c9c730d 100644 --- a/src/share/classes/sun/net/www/protocol/https/HttpsURLConnectionImpl.java +++ b/src/share/classes/sun/net/www/protocol/https/HttpsURLConnectionImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2001-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -527,6 +527,10 @@ public class HttpsURLConnectionImpl delegate.setFixedLengthStreamingMode(contentLength); } + public void setFixedLengthStreamingMode(long contentLength) { + delegate.setFixedLengthStreamingMode(contentLength); + } + public void setChunkedStreamingMode (int chunklen) { delegate.setChunkedStreamingMode(chunklen); } diff --git a/src/share/classes/sun/nio/ch/AbstractPollSelectorImpl.java b/src/share/classes/sun/nio/ch/AbstractPollSelectorImpl.java index 5016a03851bf6285cd4c5684fc0d944293331ff6..2eedbe1a70817402206a23cb151fdbef9d2ac408 100644 --- a/src/share/classes/sun/nio/ch/AbstractPollSelectorImpl.java +++ b/src/share/classes/sun/nio/ch/AbstractPollSelectorImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2001-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -58,6 +58,9 @@ abstract class AbstractPollSelectorImpl // True if this Selector has been closed private boolean closed = false; + // Lock for close and cleanup + private Object closeLock = new Object(); + AbstractPollSelectorImpl(SelectorProvider sp, int channels, int offset) { super(sp); this.totalChannels = channels; @@ -65,7 +68,11 @@ abstract class AbstractPollSelectorImpl } void putEventOps(SelectionKeyImpl sk, int ops) { - pollWrapper.putEventOps(sk.getIndex(), ops); + synchronized (closeLock) { + if (closed) + throw new ClosedSelectorException(); + pollWrapper.putEventOps(sk.getIndex(), ops); + } } public Selector wakeup() { @@ -76,7 +83,9 @@ abstract class AbstractPollSelectorImpl protected abstract int doSelect(long timeout) throws IOException; protected void implClose() throws IOException { - if (!closed) { + synchronized (closeLock) { + if (closed) + return; closed = true; // Deregister channels for(int i=channelOffset; i> 8]; + if (index == UNMAPPABLE_ENCODING) + return UNMAPPABLE_ENCODING; + return c2b[index + (ch & 0xff)]; + } + } + + // init the c2b and c2bIndex tables from b2c. + public static void initC2B(char[] b2c, char[] c2bNR, + char[] c2b, char[] c2bIndex) { + for (int i = 0; i < c2bIndex.length; i++) + c2bIndex[i] = UNMAPPABLE_ENCODING; + for (int i = 0; i < c2b.length; i++) + c2b[i] = UNMAPPABLE_ENCODING; + int off = 0; + for (int i = 0; i < b2c.length; i++) { + char c = b2c[i]; + if (c == UNMAPPABLE_DECODING) + continue; + int index = (c >> 8); + if (c2bIndex[index] == UNMAPPABLE_ENCODING) { + c2bIndex[index] = (char)off; + off += 0x100; + } + index = c2bIndex[index] + (c & 0xff); + c2b[index] = (char)((i>=0x80)?(i-0x80):(i+0x80)); + } + if (c2bNR != null) { + // c-->b nr entries + int i = 0; + while (i < c2bNR.length) { + char b = c2bNR[i++]; + char c = c2bNR[i++]; + int index = (c >> 8); + if (c2bIndex[index] == UNMAPPABLE_ENCODING) { + c2bIndex[index] = (char)off; + off += 0x100; + } + index = c2bIndex[index] + (c & 0xff); + c2b[index] = b; + } + } + } +} diff --git a/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java b/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java index 04434f1f56354c9524f707e89ca896c4983bdf93..bb6c16417a8bde9350436477f456ffc13dadc7b4 100644 --- a/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java +++ b/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java @@ -770,6 +770,7 @@ public class ExtendedCharsets new String[] { "cp834", "ibm834", + "834", "ibm-834" }); diff --git a/src/share/classes/sun/nio/cs/ext/IBM037.java b/src/share/classes/sun/nio/cs/ext/IBM037.java deleted file mode 100644 index 0de335fd40cb5d078cbc45cda82ecf294a22b1d9..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM037.java +++ /dev/null @@ -1,221 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM037 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM037() { - super("IBM037", ExtendedCharsets.aliasesFor("IBM037")); - } - - public String historicalName() { - return "Cp037"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM037); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - protected static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" + // 0x88 - 0x8F - "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u00A4" + // 0x98 - 0x9F - "\u00B5\u007E\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u00A1\u00BF\u00D0\u00DD\u00DE\u00AE" + // 0xA8 - 0xAF - "\u005E\u00A3\u00A5\u00B7\u00A9\u00A7\u00B6\u00BC" + // 0xB0 - 0xB7 - "\u00BD\u00BE\u005B\u005D\u00AF\u00A8\u00B4\u00D7" + // 0xB8 - 0xBF - "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\u00F4\u00F6\u00F2\u00F3\u00F5" + // 0xC8 - 0xCF - "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u00B9\u00FB\u00FC\u00F9\u00FA\u00FF" + // 0xD8 - 0xDF - "\\\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u00B2\u00D4\u00D6\u00D2\u00D3\u00D5" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u00E2\u00E4\u00E0\u00E1\u00E3\u00E5" + // 0x40 - 0x47 - "\u00E7\u00F1\u00A2\u002E\u003C\u0028\u002B\u007C" + // 0x48 - 0x4F - "\u0026\u00E9\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" + // 0x50 - 0x57 - "\u00EC\u00DF\u0021\u0024\u002A\u0029\u003B\u00AC" + // 0x58 - 0x5F - "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u00C5" + // 0x60 - 0x67 - "\u00C7\u00D1\u00A6\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" + // 0x70 - 0x77 - "\u00CC\u0060\u003A\u0023\u0040\'\u003D\""; // 0x78 - 0x7F - - } - - protected static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u005A\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u00BA\u00E0\u00BB\u00B0\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00A1\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u004A\u00B1\u009F\u00B2\u006A\u00B5" + - "\u00BD\u00B4\u009A\u008A\u005F\u00CA\u00AF\u00BC" + - "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" + - "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u0048" + - "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" + - "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1006.java b/src/share/classes/sun/nio/cs/ext/IBM1006.java deleted file mode 100644 index 4d30d6f4e7e58290fc0a76e5551bce14d3a9caf8..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1006.java +++ /dev/null @@ -1,336 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1006 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1006() { - super("x-IBM1006", ExtendedCharsets.aliasesFor("x-IBM1006")); - } - - public String historicalName() { - return "Cp1006"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1006); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + // 0x80 - 0x87 - "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" + // 0x88 - 0x8F - "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" + // 0x90 - 0x97 - "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" + // 0x98 - 0x9F - "\u00A0\u06F0\u06F1\u06F2\u06F3\u06F4\u06F5\u06F6" + // 0xA0 - 0xA7 - "\u06F7\u06F8\u06F9\u060C\u061B\u00AD\u061F\uFE81" + // 0xA8 - 0xAF - "\uFE8D\uFE8E\uF8FB\uFE8F\uFE91\uFB56\uFB58\uFE93" + // 0xB0 - 0xB7 - "\uFE95\uFE97\uFB66\uFB68\uFE99\uFE9B\uFE9D\uFE9F" + // 0xB8 - 0xBF - "\uFB7A\uFB7C\uFEA1\uFEA3\uFEA5\uFEA7\uFEA9\uFB88" + // 0xC0 - 0xC7 - "\uFEAB\uFEAD\uFB8C\uFEAF\uFB8A\uFEB1\uFEB3\uFEB5" + // 0xC8 - 0xCF - "\uFEB7\uFEB9\uFEBB\uFEBD\uFEBF\uFEC3\uFEC7\uFEC9" + // 0xD0 - 0xD7 - "\uFECA\uFECB\uFECC\uFECD\uFECE\uFECF\uFED0\uFED1" + // 0xD8 - 0xDF - "\uFED3\uFED5\uFED7\uFB8E\uFEDB\uFB92\uFB94\uFEDD" + // 0xE0 - 0xE7 - "\uFEDF\uFEE0\uFEE1\uFEE3\uFB9E\uFEE5\uFEE7\uFE85" + // 0xE8 - 0xEF - "\uFEED\uFBA6\uFBA8\uFBA9\uFBAA\uFE80\uFE89\uFE8A" + // 0xF0 - 0xF7 - "\uFE8B\uFBFC\uFBFD\uFBFE\uFBB0\uFBAE\uFE7C\uFE7D" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" + - "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" + - "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" + - "\u00A0\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00AD\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00AB\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00AC\u0000\u0000" + - "\u0000\u00AE\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00AA\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00B2" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00B5\u0000" + - "\u00B6\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00BA\u0000" + - "\u00BB\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00C0\u0000\u00C1\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00C7\u0000\u00CC\u0000\u00CA\u0000\u00E3\u0000" + - "\u0000\u0000\u00E5\u0000\u00E6\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00EC\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00F1\u0000" + - "\u00F2\u00F3\u00F4\u0000\u0000\u0000\u00FD\u0000" + - "\u00FC\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00F9\u00FA\u00FB\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00FE\u00FF\u0000\u0000\u00F5" + - "\u00AF\u0000\u0000\u0000\u00EF\u0000\u0000\u0000" + - "\u00F6\u00F7\u00F8\u0000\u00B0\u00B1\u00B3\u0000" + - "\u00B4\u0000\u00B7\u0000\u00B8\u0000\u00B9\u0000" + - "\u00BC\u0000\u00BD\u0000\u00BE\u0000\u00BF\u0000" + - "\u00C2\u0000\u00C3\u0000\u00C4\u0000\u00C5\u0000" + - "\u00C6\u0000\u00C8\u0000\u00C9\u0000\u00CB\u0000" + - "\u00CD\u0000\u00CE\u0000\u00CF\u0000\u00D0\u0000" + - "\u00D1\u0000\u00D2\u0000\u00D3\u0000\u00D4\u0000" + - "\u0000\u0000\u00D5\u0000\u0000\u0000\u00D6\u0000" + - "\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE" + - "\u00DF\u0000\u00E0\u0000\u00E1\u0000\u00E2\u0000" + - "\u0000\u0000\u00E4\u0000\u00E7\u0000\u00E8\u00E9" + - "\u00EA\u0000\u00EB\u0000\u00ED\u0000\u00EE\u0000" + - "\u0000\u0000\u0000\u0000\u00F0\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 174, 174, 174, 174, 174, 418, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 668, 174, 174, 920, 174, 174, 1175, 174, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1025.java b/src/share/classes/sun/nio/cs/ext/IBM1025.java deleted file mode 100644 index 546234607b41a285d9f235eeaf64757ab843c6f9..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1025.java +++ /dev/null @@ -1,272 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1025 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1025() { - super("x-IBM1025", ExtendedCharsets.aliasesFor("x-IBM1025")); - } - - public String historicalName() { - return "Cp1025"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1025); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u0446\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u0434\u0435\u0444\u0433\u0445\u0438" + // 0x88 - 0x8F - "\u0439\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u043A\u043B\u043C\u043D\u043E\u043F" + // 0x98 - 0x9F - "\u044F\u007E\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u0440\u0441\u0442\u0443\u0436\u0432" + // 0xA8 - 0xAF - "\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A" + // 0xB0 - 0xB7 - "\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413" + // 0xB8 - 0xBF - "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u0425\u0418\u0419\u041A\u041B\u041C" + // 0xC8 - 0xCF - "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u041D\u041E\u041F\u042F\u0420\u0421" + // 0xD8 - 0xDF - "\\\u00A7\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u0422\u0423\u0416\u0412\u042C\u042B" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u0417\u0428\u042D\u0429\u0427\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u0452\u0453\u0451\u0454\u0455\u0456" + // 0x40 - 0x47 - "\u0457\u0458\u005B\u002E\u003C\u0028\u002B\u0021" + // 0x48 - 0x4F - "\u0026\u0459\u045A\u045B\u045C\u045E\u045F\u042A" + // 0x50 - 0x57 - "\u2116\u0402\u005D\u0024\u002A\u0029\u003B\u005E" + // 0x58 - 0x5F - "\u002D\u002F\u0403\u0401\u0404\u0405\u0406\u0407" + // 0x60 - 0x67 - "\u0408\u0409\u007C\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u040A\u040B\u040C\u00AD\u040E\u040F\u044E\u0430" + // 0x70 - 0x77 - "\u0431\u0060\u003A\u0023\u0040\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u004A\u00E0\u005A\u005F\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00C0\u006A\u00D0\u00A1\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u0000\u0000\u0000\u0000\u0000\u0000\u00E1" + - "\u0000\u0000\u0000\u0000\u0000\u0073\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0063\u0059" + - "\u0062\u0064\u0065\u0066\u0067\u0068\u0069\u0070" + - "\u0071\u0072\u0000\u0074\u0075\u00B9\u00BA\u00ED" + - "\u00BF\u00BC\u00BD\u00EC\u00FA\u00CB\u00CC\u00CD" + - "\u00CE\u00CF\u00DA\u00DB\u00DC\u00DE\u00DF\u00EA" + - "\u00EB\u00BE\u00CA\u00BB\u00FE\u00FB\u00FD\u0057" + - "\u00EF\u00EE\u00FC\u00B8\u00DD\u0077\u0078\u00AF" + - "\u008D\u008A\u008B\u00AE\u00B2\u008F\u0090\u009A" + - "\u009B\u009C\u009D\u009E\u009F\u00AA\u00AB\u00AC" + - "\u00AD\u008C\u008E\u0080\u00B6\u00B3\u00B5\u00B7" + - "\u00B1\u00B0\u00B4\u0076\u00A0\u0000\u0044\u0042" + - "\u0043\u0045\u0046\u0047\u0048\u0049\u0051\u0052" + - "\u0053\u0054\u0000\u0055\u0056\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0058\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 174, 174, 174, 429, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 663, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1026.java b/src/share/classes/sun/nio/cs/ext/IBM1026.java deleted file mode 100644 index 9e51569437ec90d0b8eae17dd6d99eeda41a5ea7..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1026.java +++ /dev/null @@ -1,233 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1026 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1026() { - super("IBM1026", ExtendedCharsets.aliasesFor("IBM1026")); - } - - public String historicalName() { - return "Cp1026"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1026); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u00AB\u00BB\u007D\u0060\u00A6\u00B1" + // 0x88 - 0x8F - "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u00A4" + // 0x98 - 0x9F - "\u00B5\u00F6\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u00A1\u00BF\u005D\u0024\u0040\u00AE" + // 0xA8 - 0xAF - "\u00A2\u00A3\u00A5\u00B7\u00A9\u00A7\u00B6\u00BC" + // 0xB0 - 0xB7 - "\u00BD\u00BE\u00AC\u007C\u00AF\u00A8\u00B4\u00D7" + // 0xB8 - 0xBF - "\u00E7\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\u00F4\u007E\u00F2\u00F3\u00F5" + // 0xC8 - 0xCF - "\u011F\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u00B9\u00FB\\\u00F9\u00FA\u00FF" + // 0xD8 - 0xDF - "\u00FC\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u00B2\u00D4\u0023\u00D2\u00D3\u00D5" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u00B3\u00DB\"\u00D9\u00DA\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u00E2\u00E4\u00E0\u00E1\u00E3\u00E5" + // 0x40 - 0x47 - "\u007B\u00F1\u00C7\u002E\u003C\u0028\u002B\u0021" + // 0x48 - 0x4F - "\u0026\u00E9\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" + // 0x50 - 0x57 - "\u00EC\u00DF\u011E\u0130\u002A\u0029\u003B\u005E" + // 0x58 - 0x5F - "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u00C5" + // 0x60 - 0x67 - "\u005B\u00D1\u015F\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" + // 0x70 - 0x77 - "\u00CC\u0131\u003A\u00D6\u015E\'\u003D\u00DC"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u00FC\u00EC\u00AD\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u00AE\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u0068\u00DC\u00AC\u005F\u006D" + - "\u008D\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u0048\u00BB\u008C\u00CC\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u00B1\u009F\u00B2\u008E\u00B5" + - "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" + - "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u004A" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u0000\u0069\u00ED\u00EE\u00EB\u00EF\u007B\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u007F\u0000\u0000\u0059" + - "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u00C0" + - "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u0000\u0049\u00CD\u00CE\u00CB\u00CF\u00A1\u00E1" + - "\u0070\u00DD\u00DE\u00DB\u00E0\u0000\u0000\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u005A\u00D0" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u005B\u0079\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u007C\u006A" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1046.java b/src/share/classes/sun/nio/cs/ext/IBM1046.java deleted file mode 100644 index 60e39ea6e2807d72f2bbec6e842a0f6fb2fb6eef..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1046.java +++ /dev/null @@ -1,335 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1046 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1046() { - super("x-IBM1046", ExtendedCharsets.aliasesFor("x-IBM1046")); - } - - public String historicalName() { - return "Cp1046"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1046); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\uFE88\u00D7\u00F7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71" + // 0x80 - 0x87 - "\u0088\u25A0\u2502\u2500\u2510\u250C\u2514\u2518" + // 0x88 - 0x8F - "\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3" + // 0x90 - 0x97 - "\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC" + // 0x98 - 0x9F - "\u00A0\uF8FA\uF8F9\uF8F8\u00A4\uF8FB\uFE8B\uFE91" + // 0xA0 - 0xA7 - "\uFE97\uFE9B\uFE9F\uFEA3\u060C\u00AD\uFEA7\uFEB3" + // 0xA8 - 0xAF - "\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667" + // 0xB0 - 0xB7 - "\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F" + // 0xB8 - 0xBF - "\uFECB\uFE80\uFE81\uFE83\uFE85\uFE87\uFE89\uFE8D" + // 0xC0 - 0xC7 - "\uFE8F\uFE93\uFE95\uFE99\uFE9D\uFEA1\uFEA5\uFEA9" + // 0xC8 - 0xCF - "\uFEAB\uFEAD\uFEAF\uFEB1\uFEB5\uFEB9\uFEBD\uFEC3" + // 0xD0 - 0xD7 - "\uFEC7\uFEC9\uFECD\uFECC\uFE82\uFE84\uFE8E\uFED3" + // 0xD8 - 0xDF - "\u0640\uFED1\uFED5\uFED9\uFEDD\uFEE1\uFEE5\uFEEB" + // 0xE0 - 0xE7 - "\uFEED\uFEEF\uFEF1\uFE70\uFE72\uFE74\uFE76\uFE78" + // 0xE8 - 0xEF - "\uFE7A\uFE7C\uFE7E\uFED7\uFEDB\uFEDF\uF8FC\uFEF5" + // 0xF0 - 0xF7 - "\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0088\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00A0\u0000\u0000\u0000\u00A4\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00AD\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0081" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0082" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00AC\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BB" + - "\u0000\u0000\u0000\u00BF\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00E0\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00B0\u00B1\u00B2\u00B3" + - "\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u008B\u0000\u008A\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u008D\u0000\u0000\u0000\u008C\u0000\u0000\u0000" + - "\u008E\u0000\u0000\u0000\u008F\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0089\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0085\u0084\u0083\u0086\u00A3\u00A2\u00A1" + - "\u00A5\u00F6\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00EB\u0087\u00EC\u0000\u00ED\u0000" + - "\u00EE\u0094\u00EF\u0090\u00F0\u0091\u00F1\u0092" + - "\u00F2\u0093\u00C1\u00C2\u00DC\u00C3\u00DD\u00C4" + - "\u0000\u00C5\u0080\u00C6\u0095\u00A6\u0000\u00C7" + - "\u00DE\u00C8\u0000\u00A7\u0000\u00C9\u0000\u00CA" + - "\u0000\u00A8\u0000\u00CB\u0000\u00A9\u0000\u00CC" + - "\u0000\u00AA\u0000\u00CD\u0000\u00AB\u0000\u00CE" + - "\u0000\u00AE\u0000\u00CF\u0000\u00D0\u0000\u00D1" + - "\u0000\u00D2\u0000\u00D3\u0000\u00AF\u0000\u00D4" + - "\u0000\u00BA\u0000\u00D5\u0000\u00BC\u0000\u00D6" + - "\u0000\u00BD\u0000\u0000\u0000\u00D7\u0000\u0000" + - "\u0000\u00D8\u0000\u00D9\u00BE\u00C0\u00DB\u00DA" + - "\u0099\u009A\u009B\u00E1\u0000\u00DF\u0000\u00E2" + - "\u0000\u00F3\u0000\u00E3\u0000\u00F4\u0000\u00E4" + - "\u0000\u00F5\u0000\u00E5\u0000\u00FB\u0000\u00E6" + - "\u0000\u00FC\u0000\u00FE\u0000\u00E7\u00FD\u00E8" + - "\u0000\u00E9\u0096\u00EA\u0098\u0097\u0000\u00F7" + - "\u009C\u00F8\u009D\u00F9\u009E\u00FA\u009F\u0000" + - "\u0000\u0000"; - - private final static short index1[] = { - 0, 248, 248, 248, 248, 248, 492, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 748, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 909, 248, 248, 248, 248, 248, 1162, 248, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1047.java b/src/share/classes/sun/nio/cs/ext/IBM1047.java deleted file mode 100644 index 55eb9294b6bde5d81d6df69cb460998492b08aa2..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1047.java +++ /dev/null @@ -1,221 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1047 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1047() { - super("IBM1047", ExtendedCharsets.aliasesFor("IBM1047")); - } - - public String historicalName() { - return "Cp1047"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1047); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" + // 0x88 - 0x8F - "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u00A4" + // 0x98 - 0x9F - "\u00B5\u007E\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u00A1\u00BF\u00D0\u005B\u00DE\u00AE" + // 0xA8 - 0xAF - "\u00AC\u00A3\u00A5\u00B7\u00A9\u00A7\u00B6\u00BC" + // 0xB0 - 0xB7 - "\u00BD\u00BE\u00DD\u00A8\u00AF\u005D\u00B4\u00D7" + // 0xB8 - 0xBF - "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\u00F4\u00F6\u00F2\u00F3\u00F5" + // 0xC8 - 0xCF - "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u00B9\u00FB\u00FC\u00F9\u00FA\u00FF" + // 0xD8 - 0xDF - "\\\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u00B2\u00D4\u00D6\u00D2\u00D3\u00D5" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\u0085\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u00E2\u00E4\u00E0\u00E1\u00E3\u00E5" + // 0x40 - 0x47 - "\u00E7\u00F1\u00A2\u002E\u003C\u0028\u002B\u007C" + // 0x48 - 0x4F - "\u0026\u00E9\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" + // 0x50 - 0x57 - "\u00EC\u00DF\u0021\u0024\u002A\u0029\u003B\u005E" + // 0x58 - 0x5F - "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u00C5" + // 0x60 - 0x67 - "\u00C7\u00D1\u00A6\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" + // 0x70 - 0x77 - "\u00CC\u0060\u003A\u0023\u0040\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u005A\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u00AD\u00E0\u00BD\u005F\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00A1\u0007" + - "\u0020\u0021\"\u0023\u0024\u0025\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u004A\u00B1\u009F\u00B2\u006A\u00B5" + - "\u00BB\u00B4\u009A\u008A\u00B0\u00CA\u00AF\u00BC" + - "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u00FC\u00BA\u00AE\u0059" + - "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u0048" + - "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" + - "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1097.java b/src/share/classes/sun/nio/cs/ext/IBM1097.java deleted file mode 100644 index 7a04f1e171eb5341c1742d1b36cf185b716dcf3b..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1097.java +++ /dev/null @@ -1,342 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1097 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1097() { - super("x-IBM1097", ExtendedCharsets.aliasesFor("x-IBM1097")); - } - - public String historicalName() { - return "Cp1097"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1097); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\uFB8A\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u00AB\u00BB\uFEB1\uFEB3\uFEB5\uFEB7" + // 0x88 - 0x8F - "\uFEB9\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\uFEBB\uFEBD\uFEBF\uFEC1\uFEC3\uFEC5" + // 0x98 - 0x9F - "\uFEC7\u007E\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\uFEC9\uFECA\uFECB\uFECC\uFECD\uFECE" + // 0xA8 - 0xAF - "\uFECF\uFED0\uFED1\uFED3\uFED5\uFED7\uFB8E\uFEDB" + // 0xB0 - 0xB7 - "\uFB92\uFB94\u005B\u005D\uFEDD\uFEDF\uFEE1\u00D7" + // 0xB8 - 0xBF - "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\uFEE3\uFEE5\uFEE7\uFEED\uFEE9" + // 0xC8 - 0xCF - "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\uFEEB\uFEEC\uFBA4\uFBFC\uFBFD\uFBFE" + // 0xD8 - 0xDF - "\\\u061F\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u0640\u06F0\u06F1\u06F2\u06F3\u06F4" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u06F5\u06F6\u06F7\u06F8\u06F9\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\u0085\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u060C\u064B\uFE81\uFE82\uF8FA\uFE8D" + // 0x40 - 0x47 - "\uFE8E\uF8FB\u00A4\u002E\u003C\u0028\u002B\u007C" + // 0x48 - 0x4F - "\u0026\uFE80\uFE83\uFE84\uF8F9\uFE85\uFE8B\uFE8F" + // 0x50 - 0x57 - "\uFE91\uFB56\u0021\u0024\u002A\u0029\u003B\u00AC" + // 0x58 - 0x5F - "\u002D\u002F\uFB58\uFE95\uFE97\uFE99\uFE9B\uFE9D" + // 0x60 - 0x67 - "\uFE9F\uFB7A\u061B\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\uFB7C\uFEA1\uFEA3\uFEA5\uFEA7\uFEA9\uFEAB\uFEAD" + // 0x70 - 0x77 - "\uFEAF\u0060\u003A\u0023\u0040\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u005A\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u00BA\u00E0\u00BB\u0000\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00A1\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u0000\u0000\u0000\u004A\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u008A\u005F\u00CA\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u008B\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0042\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u006A" + - "\u0000\u0000\u0000\u00E1\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00EA\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0043" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00EB\u00EC\u00ED\u00EE" + - "\u00EF\u00FA\u00FB\u00FC\u00FD\u00FE\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0054" + - "\u0046\u0049\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0059\u0000\u0062\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0069\u0000\u0070\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0080\u0000\u0000\u0000" + - "\u00B6\u0000\u0000\u0000\u00B8\u0000\u00B9\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00DC\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00DD\u00DE" + - "\u00DF\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0051\u0044\u0045\u0052\u0053\u0055\u0000" + - "\u0000\u0000\u0000\u0000\u0056\u0000\u0047\u0048" + - "\u0057\u0000\u0058\u0000\u0000\u0000\u0063\u0000" + - "\u0064\u0000\u0065\u0000\u0066\u0000\u0067\u0000" + - "\u0068\u0000\u0071\u0000\u0072\u0000\u0073\u0000" + - "\u0074\u0000\u0075\u0000\u0076\u0000\u0077\u0000" + - "\u0078\u0000\u008C\u0000\u008D\u0000\u008E\u0000" + - "\u008F\u0000\u0090\u0000\u009A\u0000\u009B\u0000" + - "\u009C\u0000\u009D\u0000\u009E\u0000\u009F\u0000" + - "\u00A0\u0000\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" + - "\u00B0\u00B1\u00B2\u0000\u00B3\u0000\u00B4\u0000" + - "\u00B5\u0000\u0000\u0000\u00B7\u0000\u00BC\u0000" + - "\u00BD\u0000\u00BE\u0000\u00CB\u0000\u00CC\u0000" + - "\u00CD\u0000\u00CF\u0000\u00DA\u00DB\u00CE\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000"; - - private final static short index1[] = { - 0, 216, 216, 216, 216, 216, 460, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 710, 216, 216, 962, 216, 216, 1217, 216, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1098.java b/src/share/classes/sun/nio/cs/ext/IBM1098.java deleted file mode 100644 index e689023c146ab7eed47ba957c47423072e93f88d..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1098.java +++ /dev/null @@ -1,362 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1098 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1098() { - super("x-IBM1098", ExtendedCharsets.aliasesFor("x-IBM1098")); - } - - public String historicalName() { - return "Cp1098"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1098); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\uFFFD\uFFFD\u060C\u061B\u061F\u064B\uFE81\uFE82" + // 0x80 - 0x87 - "\uF8FA\uFE8D\uFE8E\uF8FB\uFE80\uFE83\uFE84\uF8F9" + // 0x88 - 0x8F - "\uFE85\uFE8B\uFE8F\uFE91\uFB56\uFB58\uFE95\uFE97" + // 0x90 - 0x97 - "\uFE99\uFE9B\uFE9D\uFE9F\uFB7A\uFB7C\u00D7\uFEA1" + // 0x98 - 0x9F - "\uFEA3\uFEA5\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFB8A" + // 0xA0 - 0xA7 - "\uFEB1\uFEB3\uFEB5\uFEB7\uFEB9\uFEBB\u00AB\u00BB" + // 0xA8 - 0xAF - "\u2591\u2592\u2593\u2502\u2524\uFEBD\uFEBF\uFEC1" + // 0xB0 - 0xB7 - "\uFEC3\u2563\u2551\u2557\u255D\u00A4\uFEC5\u2510" + // 0xB8 - 0xBF - "\u2514\u2534\u252C\u251C\u2500\u253C\uFEC7\uFEC9" + // 0xC0 - 0xC7 - "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\uFFFD" + // 0xC8 - 0xCF - "\uFECA\uFECB\uFECC\uFECD\uFECE\uFECF\uFED0\uFED1" + // 0xD0 - 0xD7 - "\uFED3\u2518\u250C\u2588\u2584\uFED5\uFED7\u2580" + // 0xD8 - 0xDF - "\uFB8E\uFEDB\uFB92\uFB94\uFEDD\uFEDF\uFEE1\uFEE3" + // 0xE0 - 0xE7 - "\uFEE5\uFEE7\uFEED\uFEE9\uFEEB\uFEEC\uFBA4\uFBFC" + // 0xE8 - 0xEF - "\u00AD\uFBFD\uFBFE\u0640\u06F0\u06F1\u06F2\u06F3" + // 0xF0 - 0xF7 - "\u06F4\u06F5\u06F6\u06F7\u06F8\u06F9\u25A0\u00A0" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00FF\u0000\u0000\u0000\u00BD\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00AE\u0000\u00F0\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00AF\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u009E" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0082\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0083" + - "\u0000\u0000\u0000\u0084\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00F3\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0085" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00C4\u0000\u00B3\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00DA\u0000\u0000\u0000\u00BF\u0000\u0000\u0000" + - "\u00C0\u0000\u0000\u0000\u00D9\u0000\u0000\u0000" + - "\u00C3\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00B4\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00C2\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00C5\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00CD\u00BA\u0000\u0000" + - "\u00C9\u0000\u0000\u00BB\u0000\u0000\u00C8\u0000" + - "\u0000\u00BC\u0000\u0000\u00CC\u0000\u0000\u00B9" + - "\u0000\u0000\u00CB\u0000\u0000\u00CA\u0000\u0000" + - "\u00CE\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00DF\u0000\u0000\u0000" + - "\u00DC\u0000\u0000\u0000\u00DB\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00B0\u00B1\u00B2" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00FE\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u008F\u0088" + - "\u008B\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0094" + - "\u0000\u0095\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u009C\u0000\u009D\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00A7\u0000\u0000\u0000\u00E0" + - "\u0000\u0000\u0000\u00E2\u0000\u00E3\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00EE\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00EF\u00F1\u00F2" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u008C\u0086\u0087\u008D\u008E\u0090\u0000\u0000" + - "\u0000\u0000\u0000\u0091\u0000\u0089\u008A\u0092" + - "\u0000\u0093\u0000\u0000\u0000\u0096\u0000\u0097" + - "\u0000\u0098\u0000\u0099\u0000\u009A\u0000\u009B" + - "\u0000\u009F\u0000\u00A0\u0000\u00A1\u0000\u00A2" + - "\u0000\u00A3\u0000\u00A4\u0000\u00A5\u0000\u00A6" + - "\u0000\u00A8\u0000\u00A9\u0000\u00AA\u0000\u00AB" + - "\u0000\u00AC\u0000\u00AD\u0000\u00B5\u0000\u00B6" + - "\u0000\u00B7\u0000\u00B8\u0000\u00BE\u0000\u00C6" + - "\u0000\u00C7\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5" + - "\u00D6\u00D7\u0000\u00D8\u0000\u00DD\u0000\u00DE" + - "\u0000\u0000\u0000\u00E1\u0000\u00E4\u0000\u00E5" + - "\u0000\u00E6\u0000\u00E7\u0000\u00E8\u0000\u00E9" + - "\u0000\u00EB\u0000\u00EC\u00ED\u00EA\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 216, 216, 216, 216, 216, 460, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 716, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 877, 216, 216, 1129, 216, 216, 1384, 216, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1112.java b/src/share/classes/sun/nio/cs/ext/IBM1112.java deleted file mode 100644 index 478f3fadb22de34578454fb142563dd9b7b6ca15..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1112.java +++ /dev/null @@ -1,266 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1112 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1112() { - super("x-IBM1112", ExtendedCharsets.aliasesFor("x-IBM1112")); - } - - public String historicalName() { - return "Cp1112"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1112); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u00AB\u00BB\u0101\u017C\u0144\u00B1" + // 0x88 - 0x8F - "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u0156\u0157\u00E6\u0137\u00C6\u00A4" + // 0x98 - 0x9F - "\u00B5\u007E\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u201D\u017A\u0100\u017B\u0143\u00AE" + // 0xA8 - 0xAF - "\u005E\u00A3\u012B\u00B7\u00A9\u00A7\u00B6\u00BC" + // 0xB0 - 0xB7 - "\u00BD\u00BE\u005B\u005D\u0179\u0136\u013C\u00D7" + // 0xB8 - 0xBF - "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\u014D\u00F6\u0146\u00F3\u00F5" + // 0xC8 - 0xCF - "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u00B9\u0107\u00FC\u0142\u015B\u2019" + // 0xD8 - 0xDF - "\\\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u00B2\u014C\u00D6\u0145\u00D3\u00D5" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u00B3\u0106\u00DC\u0141\u015A\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u0161\u00E4\u0105\u012F\u016B\u00E5" + // 0x40 - 0x47 - "\u0113\u017E\u00A2\u002E\u003C\u0028\u002B\u007C" + // 0x48 - 0x4F - "\u0026\u00E9\u0119\u0117\u010D\u0173\u201E\u201C" + // 0x50 - 0x57 - "\u0123\u00DF\u0021\u0024\u002A\u0029\u003B\u00AC" + // 0x58 - 0x5F - "\u002D\u002F\u0160\u00C4\u0104\u012E\u016A\u00C5" + // 0x60 - 0x67 - "\u0112\u017D\u00A6\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u00F8\u00C9\u0118\u0116\u010C\u0172\u012A\u013B" + // 0x70 - 0x77 - "\u0122\u0060\u003A\u0023\u0040\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u005A\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u00BA\u00E0\u00BB\u00B0\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00A1\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u0000\u004A\u00B1\u009F\u0000\u006A\u00B5" + - "\u0000\u00B4\u0000\u008A\u005F\u00CA\u00AF\u0000" + - "\u0090\u008F\u00EA\u00FA\u0000\u00A0\u00B6\u00B3" + - "\u0000\u00DA\u0000\u008B\u00B7\u00B8\u00B9\u0000" + - "\u0000\u0000\u0000\u0000\u0063\u0067\u009E\u0000" + - "\u0000\u0071\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00EE\u0000\u00EF\u00EC\u00BF" + - "\u0080\u0000\u0000\u0000\u00FC\u0000\u0000\u0059" + - "\u0000\u0000\u0000\u0000\u0043\u0047\u009C\u0000" + - "\u0000\u0051\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00CE\u0000\u00CF\u00CC\u00E1" + - "\u0070\u0000\u0000\u0000\u00DC\u0000\u0000\u0000" + - "\u00AC\u008C\u0000\u0000\u0064\u0044\u00FB\u00DB" + - "\u0000\u0000\u0000\u0000\u0074\u0054\u0000\u0000" + - "\u0000\u0000\u0068\u0048\u0000\u0000\u0073\u0053" + - "\u0072\u0052\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0078\u0058\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0076\u00B2\u0000\u0000\u0065\u0045" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00BD\u009D" + - "\u0000\u0000\u0000\u0077\u00BE\u0000\u0000\u0000" + - "\u0000\u00FD\u00DD\u00AE\u008E\u00ED\u00CD\u0000" + - "\u0000\u0000\u0000\u0000\u00EB\u00CB\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u009A\u009B" + - "\u0000\u0000\u00FE\u00DE\u0000\u0000\u0000\u0000" + - "\u0062\u0042\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0066\u0046\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0075\u0055\u0000\u0000\u0000\u0000" + - "\u0000\u00BC\u00AB\u00AD\u008D\u0069\u0049\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00DF" + - "\u0000\u0000\u0057\u00AA\u0056\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 614, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1122.java b/src/share/classes/sun/nio/cs/ext/IBM1122.java deleted file mode 100644 index ff9205b545b4007d9b28a937b837d662460d47c1..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1122.java +++ /dev/null @@ -1,262 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1122 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1122() { - super("x-IBM1122", ExtendedCharsets.aliasesFor("x-IBM1122")); - } - - public String historicalName() { - return "Cp1122"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1122); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u00AB\u00BB\u0161\u00FD\u017E\u00B1" + // 0x88 - 0x8F - "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u005D" + // 0x98 - 0x9F - "\u00B5\u00FC\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u00A1\u00BF\u0160\u00DD\u017D\u00AE" + // 0xA8 - 0xAF - "\u00A2\u00A3\u00A5\u00B7\u00A9\u005B\u00B6\u00BC" + // 0xB0 - 0xB7 - "\u00BD\u00BE\u00AC\u007C\u203E\u00A8\u00B4\u00D7" + // 0xB8 - 0xBF - "\u00E4\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\u00F4\u00A6\u00F2\u00F3\u00F5" + // 0xC8 - 0xCF - "\u00E5\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u00B9\u00FB\u007E\u00F9\u00FA\u00FF" + // 0xD8 - 0xDF - "\u00C9\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u00B2\u00D4\u0040\u00D2\u00D3\u00D5" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u00E2\u007B\u00E0\u00E1\u00E3\u007D" + // 0x40 - 0x47 - "\u00E7\u00F1\u00A7\u002E\u003C\u0028\u002B\u0021" + // 0x48 - 0x4F - "\u0026\u0060\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" + // 0x50 - 0x57 - "\u00EC\u00DF\u00A4\u00C5\u002A\u0029\u003B\u005E" + // 0x58 - 0x5F - "\u002D\u002F\u00C2\u0023\u00C0\u00C1\u00C3\u0024" + // 0x60 - 0x67 - "\u00C7\u00D1\u00F6\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u00F8\\\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" + // 0x70 - 0x77 - "\u00CC\u00E9\u003A\u00C4\u00D6\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u0063\u0067\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u00EC\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u00B5\u0071\u009F\u005F\u006D" + - "\u0051\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u0043\u00BB\u0047\u00DC\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u00B1\u005A\u00B2\u00CC\u004A" + - "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u0000" + - "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u007B\u005B\u009E\u0068" + - "\u0074\u00E0\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u0000\u0069\u00ED\u00EE\u00EB\u00EF\u007C\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u0000\u0059" + - "\u0044\u0045\u0042\u0046\u00C0\u00D0\u009C\u0048" + - "\u0054\u0079\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u0000\u0049\u00CD\u00CE\u00CB\u00CF\u006A\u00E1" + - "\u0070\u00DD\u00DE\u00DB\u00A1\u008D\u0000\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00AC\u008C\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00AE\u008E\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BC" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000"; - - private final static short index1[] = { - 0, 256, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 577, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1123.java b/src/share/classes/sun/nio/cs/ext/IBM1123.java deleted file mode 100644 index 595277d5c5410afadb306b3a9dff4ff240c0dbd6..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1123.java +++ /dev/null @@ -1,272 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1123 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1123() { - super("x-IBM1123", ExtendedCharsets.aliasesFor("x-IBM1123")); - } - - public String historicalName() { - return "Cp1123"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1123); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u0446\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u0434\u0435\u0444\u0433\u0445\u0438" + // 0x88 - 0x8F - "\u0439\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u043A\u043B\u043C\u043D\u043E\u043F" + // 0x98 - 0x9F - "\u044F\u007E\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u0440\u0441\u0442\u0443\u0436\u0432" + // 0xA8 - 0xAF - "\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A" + // 0xB0 - 0xB7 - "\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413" + // 0xB8 - 0xBF - "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u0425\u0418\u0419\u041A\u041B\u041C" + // 0xC8 - 0xCF - "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u041D\u041E\u041F\u042F\u0420\u0421" + // 0xD8 - 0xDF - "\\\u00A7\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u0422\u0423\u0416\u0412\u042C\u042B" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u0417\u0428\u042D\u0429\u0427\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u0452\u0491\u0451\u0454\u0455\u0456" + // 0x40 - 0x47 - "\u0457\u0458\u005B\u002E\u003C\u0028\u002B\u0021" + // 0x48 - 0x4F - "\u0026\u0459\u045A\u045B\u045C\u045E\u045F\u042A" + // 0x50 - 0x57 - "\u2116\u0402\u005D\u0024\u002A\u0029\u003B\u005E" + // 0x58 - 0x5F - "\u002D\u002F\u0490\u0401\u0404\u0405\u0406\u0407" + // 0x60 - 0x67 - "\u0408\u0409\u007C\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u040A\u040B\u040C\u00AD\u040E\u040F\u044E\u0430" + // 0x70 - 0x77 - "\u0431\u0060\u003A\u0023\u0040\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u004A\u00E0\u005A\u005F\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00C0\u006A\u00D0\u00A1\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u0000\u0000\u0000\u0000\u0000\u0000\u00E1" + - "\u0000\u0000\u0000\u0000\u0000\u0073\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0063\u0059" + - "\u0000\u0064\u0065\u0066\u0067\u0068\u0069\u0070" + - "\u0071\u0072\u0000\u0074\u0075\u00B9\u00BA\u00ED" + - "\u00BF\u00BC\u00BD\u00EC\u00FA\u00CB\u00CC\u00CD" + - "\u00CE\u00CF\u00DA\u00DB\u00DC\u00DE\u00DF\u00EA" + - "\u00EB\u00BE\u00CA\u00BB\u00FE\u00FB\u00FD\u0057" + - "\u00EF\u00EE\u00FC\u00B8\u00DD\u0077\u0078\u00AF" + - "\u008D\u008A\u008B\u00AE\u00B2\u008F\u0090\u009A" + - "\u009B\u009C\u009D\u009E\u009F\u00AA\u00AB\u00AC" + - "\u00AD\u008C\u008E\u0080\u00B6\u00B3\u00B5\u00B7" + - "\u00B1\u00B0\u00B4\u0076\u00A0\u0000\u0044\u0042" + - "\u0000\u0045\u0046\u0047\u0048\u0049\u0051\u0052" + - "\u0053\u0054\u0000\u0055\u0056\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0062\u0043\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0058\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 174, 174, 174, 429, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 663, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1124.java b/src/share/classes/sun/nio/cs/ext/IBM1124.java deleted file mode 100644 index 8f7a112f5b5a5b48ec79d9acfadeb9246a1b7d6a..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1124.java +++ /dev/null @@ -1,272 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1124 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1124() { - super("x-IBM1124", ExtendedCharsets.aliasesFor("x-IBM1124")); - } - - public String historicalName() { - return "Cp1124"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1124); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + // 0x80 - 0x87 - "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" + // 0x88 - 0x8F - "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" + // 0x90 - 0x97 - "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" + // 0x98 - 0x9F - "\u00A0\u0401\u0402\u0490\u0404\u0405\u0406\u0407" + // 0xA0 - 0xA7 - "\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F" + // 0xA8 - 0xAF - "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417" + // 0xB0 - 0xB7 - "\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F" + // 0xB8 - 0xBF - "\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427" + // 0xC0 - 0xC7 - "\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F" + // 0xC8 - 0xCF - "\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437" + // 0xD0 - 0xD7 - "\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F" + // 0xD8 - 0xDF - "\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447" + // 0xE0 - 0xE7 - "\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" + // 0xE8 - 0xEF - "\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457" + // 0xF0 - 0xF7 - "\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" + - "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" + - "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" + - "\u00A0\u0000\u0000\u0000\u0000\u0000\u0000\u00FD" + - "\u0000\u0000\u0000\u0000\u0000\u00AD\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00A1\u00A2" + - "\u0000\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA" + - "\u00AB\u00AC\u0000\u00AE\u00AF\u00B0\u00B1\u00B2" + - "\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA" + - "\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2" + - "\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA" + - "\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2" + - "\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA" + - "\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2" + - "\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA" + - "\u00EB\u00EC\u00ED\u00EE\u00EF\u0000\u00F1\u00F2" + - "\u0000\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA" + - "\u00FB\u00FC\u0000\u00FE\u00FF\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00A3\u00F3\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00F0\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 174, 174, 174, 429, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 663, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1140.java b/src/share/classes/sun/nio/cs/ext/IBM1140.java deleted file mode 100644 index 45509dafbe11e253ddd3c8803efb2ed78f6634ee..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1140.java +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1140 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1140() { - super("IBM01140", ExtendedCharsets.aliasesFor("IBM01140")); - } - - public String historicalName() { - return "Cp1140"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1140); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public short[] getEncoderIndex1() { - return Encoder.index1; - } - - public String getEncoderIndex2() { - return Encoder.index2; - } - - private static class Decoder extends IBM037.Decoder { - public Decoder(Charset cs) { - super(cs); - } - - public char decode(int byteIndex) { - return (byteIndex == (byte)0x9F) ? '\u20AC' : super.decode(byteIndex); - } - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u005A\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u00BA\u00E0\u00BB\u00B0\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00A1\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u004A\u00B1\u0000\u00B2\u006A\u00B5" + - "\u00BD\u00B4\u009A\u008A\u005F\u00CA\u00AF\u00BC" + - "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" + - "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u0048" + - "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" + - "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - }; - - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1141.java b/src/share/classes/sun/nio/cs/ext/IBM1141.java deleted file mode 100644 index 40050ed85d1d455115cd874ff52ee6acc62f131e..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1141.java +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1141 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1141() { - super("IBM01141", ExtendedCharsets.aliasesFor("IBM01141")); - } - - public String historicalName() { - return "Cp1141"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1141); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public short[] getEncoderIndex1() { - return Encoder.index1; - } - - public String getEncoderIndex2() { - return Encoder.index2; - } - private static class Decoder extends IBM273.Decoder { - public Decoder(Charset cs) { - super(cs); - } - - public char decode(int byteIndex) { - return (byteIndex == (byte)0x9F) ? '\u20AC' : super.decode(byteIndex); - } - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u00B5\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u0063\u00EC\u00FC\u005F\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u0043\u00BB\u00DC\u0059\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u00B1\u0000\u00B2\u00CC\u007C" + - "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" + - "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u004A\u0067\u009E\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00E0\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u005A\u00AD\u00AE\u00A1" + - "\u0044\u0045\u0042\u0046\u00C0\u0047\u009C\u0048" + - "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u006A\u00E1" + - "\u0070\u00DD\u00DE\u00DB\u00D0\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1142.java b/src/share/classes/sun/nio/cs/ext/IBM1142.java deleted file mode 100644 index e0682803948147270911335a8b032558b3cf7b94..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1142.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1142 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1142() { - super("IBM01142", ExtendedCharsets.aliasesFor("IBM01142")); - } - - public String historicalName() { - return "Cp1142"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1142); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public short[] getEncoderIndex1() { - return Encoder.index1; - } - - public String getEncoderIndex2() { - return Encoder.index2; - } - - private static class Decoder extends IBM277.Decoder { - public Decoder(Charset cs) { - super(cs); - } - - public char decode(int byteIndex) { - return (byteIndex == (byte)0x5A) ? '\u20AC' : super.decode(byteIndex); - } - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u004A\u0067\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u0080\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u009E\u00E0\u009F\u005F\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u009C\u00BB\u0047\u00DC\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u00B1\u0000\u00B2\u0070\u00B5" + - "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" + - "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u0063\u005B\u007B\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" + - "\u007C\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" + - "\u0044\u0045\u0042\u0046\u0043\u00D0\u00C0\u0048" + - "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" + - "\u006A\u00DD\u00DE\u00DB\u00A1\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u005A\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1143.java b/src/share/classes/sun/nio/cs/ext/IBM1143.java deleted file mode 100644 index af02e542b7ccb2fac27d368d0c398b8cc5aed43b..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1143.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1143 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1143() { - super("IBM01143", ExtendedCharsets.aliasesFor("IBM01143")); - } - - public String historicalName() { - return "Cp1143"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1143); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public short[] getEncoderIndex1() { - return Encoder.index1; - } - - public String getEncoderIndex2() { - return Encoder.index2; - } - - private static class Decoder extends IBM278.Decoder { - public Decoder(Charset cs) { - super(cs); - } - - public char decode(int byteIndex) { - return (byteIndex == (byte)0x5A) ? '\u20AC' : super.decode(byteIndex); - } - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u0063\u0067\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u00EC\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u00B5\u0071\u009F\u005F\u006D" + - "\u0051\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u0043\u00BB\u0047\u00DC\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u00B1\u0000\u00B2\u00CC\u004A" + - "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" + - "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u007B\u005B\u009E\u0068" + - "\u0074\u00E0\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u007C\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" + - "\u0044\u0045\u0042\u0046\u00C0\u00D0\u009C\u0048" + - "\u0054\u0079\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u006A\u00E1" + - "\u0070\u00DD\u00DE\u00DB\u00A1\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u005A\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1144.java b/src/share/classes/sun/nio/cs/ext/IBM1144.java deleted file mode 100644 index d0cc741ed04ff51b5a341034a25c38f81bb3cef8..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1144.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1144 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1144() { - super("IBM01144", ExtendedCharsets.aliasesFor("IBM01144")); - } - - public String historicalName() { - return "Cp1144"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1144); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public short[] getEncoderIndex1() { - return Encoder.index1; - } - - public String getEncoderIndex2() { - return Encoder.index2; - } - - private static class Decoder extends IBM280.Decoder { - public Decoder(Charset cs) { - super(cs); - } - - public char decode(int byteIndex) { - return (byteIndex == (byte)0x9F) ? '\u20AC' : super.decode(byteIndex); - } - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u00B1\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u00B5\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u0090\u0048\u0051\u005F\u006D" + - "\u00DD\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u0044\u00BB\u0054\u0058\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u007B\u0000\u00B2\u00CD\u007C" + - "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" + - "\u004A\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" + - "\u00C0\u0045\u0042\u0046\u0043\u0047\u009C\u00E0" + - "\u00D0\u005A\u0052\u0053\u00A1\u0055\u0056\u0057" + - "\u008C\u0049\u006A\u00CE\u00CB\u00CF\u00CC\u00E1" + - "\u0070\u0079\u00DE\u00DB\u00DC\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1145.java b/src/share/classes/sun/nio/cs/ext/IBM1145.java deleted file mode 100644 index dd89c0ea5cab18bc8deb17313885e2b4e4ce0e3d..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1145.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1145 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1145() { - super("IBM01145", ExtendedCharsets.aliasesFor("IBM01145")); - } - - public String historicalName() { - return "Cp1145"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1145); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public short[] getEncoderIndex1() { - return Encoder.index1; - } - - public String getEncoderIndex2() { - return Encoder.index2; - } - - private static class Decoder extends IBM284.Decoder { - public Decoder(Charset cs) { - super(cs); - } - - public char decode(int byteIndex) { - return (byteIndex == (byte)0x9F) ? '\u20AC' : super.decode(byteIndex); - } - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u00BB\u007F\u0069\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u004A\u00E0\u005A\u00BA\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00BD\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u00B1\u0000\u00B2\u0049\u00B5" + - "\u00A1\u00B4\u009A\u008A\u005F\u00CA\u00AF\u00BC" + - "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u007B\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" + - "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u0048" + - "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u008C\u006A\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" + - "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1146.java b/src/share/classes/sun/nio/cs/ext/IBM1146.java deleted file mode 100644 index 27919498364fb36e06e6cf94de72aecd05022993..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1146.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1146 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1146() { - super("IBM01146", ExtendedCharsets.aliasesFor("IBM01146")); - } - - public String historicalName() { - return "Cp1146"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1146); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public short[] getEncoderIndex1() { - return Encoder.index1; - } - - public String getEncoderIndex2() { - return Encoder.index2; - } - - private static class Decoder extends IBM285.Decoder { - public Decoder(Charset cs) { - super(cs); - } - - public char decode(int byteIndex) { - return (byteIndex == (byte)0x9F) ? '\u20AC' : super.decode(byteIndex); - } - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u005A\u007F\u007B\u004A\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u00B1\u00E0\u00BB\u00BA\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00BC\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u005B\u0000\u00B2\u006A\u00B5" + - "\u00BD\u00B4\u009A\u008A\u005F\u00CA\u00AF\u00A1" + - "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" + - "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u0048" + - "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" + - "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1147.java b/src/share/classes/sun/nio/cs/ext/IBM1147.java deleted file mode 100644 index 9f79f842cc3162ac1ba544335effbd6388f2af13..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1147.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1147 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1147() { - super("IBM01147", ExtendedCharsets.aliasesFor("IBM01147")); - } - - public String historicalName() { - return "Cp1147"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1147); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public short[] getEncoderIndex1() { - return Encoder.index1; - } - - public String getEncoderIndex2() { - return Encoder.index2; - } - - private static class Decoder extends IBM297.Decoder { - public Decoder(Charset cs) { - super(cs); - } - - public char decode(int byteIndex) { - return (byteIndex == (byte)0x9F) ? '\u20AC' : super.decode(byteIndex); - } - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u00B1\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u0044\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u0090\u0048\u00B5\u005F\u006D" + - "\u00A0\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u0051\u00BB\u0054\u00BD\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u007B\u0000\u00B2\u00DD\u005A" + - "\u00A1\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" + - "\u004A\u008F\u00EA\u00FA\u00BE\u0079\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" + - "\u007C\u0045\u0042\u0046\u0043\u0047\u009C\u00E0" + - "\u00D0\u00C0\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" + - "\u0070\u006A\u00DE\u00DB\u00DC\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1148.java b/src/share/classes/sun/nio/cs/ext/IBM1148.java deleted file mode 100644 index 8adb4a5a24c0a6b64881a36b7267d9618435a144..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1148.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1148 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1148() { - super("IBM01148", ExtendedCharsets.aliasesFor("IBM01148")); - } - - public String historicalName() { - return "Cp1148"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1148); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public short[] getEncoderIndex1() { - return Encoder.index1; - } - - public String getEncoderIndex2() { - return Encoder.index2; - } - - private static class Decoder extends IBM500.Decoder { - public Decoder(Charset cs) { - super(cs); - } - - public char decode(int byteIndex) { - return (byteIndex == (byte)0x9F) ? '\u20AC' : super.decode(byteIndex); - } - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u004A\u00E0\u005A\u005F\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00C0\u00BB\u00D0\u00A1\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u00B1\u0000\u00B2\u006A\u00B5" + - "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" + - "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" + - "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u0048" + - "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" + - "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM1149.java b/src/share/classes/sun/nio/cs/ext/IBM1149.java deleted file mode 100644 index 7359cea59e311252fa516a4002613a60bd66f888..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM1149.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM1149 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM1149() { - super("IBM01149", ExtendedCharsets.aliasesFor("IBM01149")); - } - - public String historicalName() { - return "Cp1149"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM1149); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public short[] getEncoderIndex1() { - return Encoder.index1; - } - - public String getEncoderIndex2() { - return Encoder.index2; - } - - private static class Decoder extends IBM871.Decoder { - public Decoder(Charset cs) { - super(cs); - } - - public char decode(int byteIndex) { - return (byteIndex == (byte)0x9F) ? '\u20AC' : super.decode(byteIndex); - } - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0025\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u00AC\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u00AE\u00BE\u009E\u00EC\u006D" + - "\u008C\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u008E\u00BB\u009C\u00CC\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u00B1\u0000\u00B2\u006A\u00B5" + - "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" + - "\u0090\u008F\u00EA\u00FA\u00E0\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u0063\u0067\u005A\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u007C\u0069\u00ED\u00EE\u00EB\u00EF\u005F\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u004A\u0059" + - "\u0044\u0045\u0042\u0046\u0043\u0047\u00D0\u0048" + - "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u0079\u0049\u00CD\u00CE\u00CB\u00CF\u00A1\u00E1" + - "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u00C0\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 340, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM273.java b/src/share/classes/sun/nio/cs/ext/IBM273.java deleted file mode 100644 index 74a857e1f4bd795b48a970219dc80c4ea81372dc..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM273.java +++ /dev/null @@ -1,221 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM273 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM273() { - super("IBM273", ExtendedCharsets.aliasesFor("IBM273")); - } - - public String historicalName() { - return "Cp273"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM273); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - protected static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" + // 0x88 - 0x8F - "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u00A4" + // 0x98 - 0x9F - "\u00B5\u00DF\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u00A1\u00BF\u00D0\u00DD\u00DE\u00AE" + // 0xA8 - 0xAF - "\u00A2\u00A3\u00A5\u00B7\u00A9\u0040\u00B6\u00BC" + // 0xB0 - 0xB7 - "\u00BD\u00BE\u00AC\u007C\u00AF\u00A8\u00B4\u00D7" + // 0xB8 - 0xBF - "\u00E4\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\u00F4\u00A6\u00F2\u00F3\u00F5" + // 0xC8 - 0xCF - "\u00FC\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u00B9\u00FB\u007D\u00F9\u00FA\u00FF" + // 0xD8 - 0xDF - "\u00D6\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u00B2\u00D4\\\u00D2\u00D3\u00D5" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u00B3\u00DB\u005D\u00D9\u00DA\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u00E2\u007B\u00E0\u00E1\u00E3\u00E5" + // 0x40 - 0x47 - "\u00E7\u00F1\u00C4\u002E\u003C\u0028\u002B\u0021" + // 0x48 - 0x4F - "\u0026\u00E9\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" + // 0x50 - 0x57 - "\u00EC\u007E\u00DC\u0024\u002A\u0029\u003B\u005E" + // 0x58 - 0x5F - "\u002D\u002F\u00C2\u005B\u00C0\u00C1\u00C3\u00C5" + // 0x60 - 0x67 - "\u00C7\u00D1\u00F6\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" + // 0x70 - 0x77 - "\u00CC\u0060\u003A\u0023\u00A7\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u00B5\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u0063\u00EC\u00FC\u005F\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u0043\u00BB\u00DC\u0059\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u00B1\u009F\u00B2\u00CC\u007C" + - "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" + - "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u004A\u0067\u009E\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00E0\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u005A\u00AD\u00AE\u00A1" + - "\u0044\u0045\u0042\u0046\u00C0\u0047\u009C\u0048" + - "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u006A\u00E1" + - "\u0070\u00DD\u00DE\u00DB\u00D0\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM277.java b/src/share/classes/sun/nio/cs/ext/IBM277.java deleted file mode 100644 index d4917a0d27206a8345361a4fd8e95003e297565d..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM277.java +++ /dev/null @@ -1,221 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM277 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM277() { - super("IBM277", ExtendedCharsets.aliasesFor("IBM277")); - } - - public String historicalName() { - return "Cp277"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM277); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - protected static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u0040\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" + // 0x88 - 0x8F - "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u00AA\u00BA\u007B\u00B8\u005B\u005D" + // 0x98 - 0x9F - "\u00B5\u00FC\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u00A1\u00BF\u00D0\u00DD\u00DE\u00AE" + // 0xA8 - 0xAF - "\u00A2\u00A3\u00A5\u00B7\u00A9\u00A7\u00B6\u00BC" + // 0xB0 - 0xB7 - "\u00BD\u00BE\u00AC\u007C\u00AF\u00A8\u00B4\u00D7" + // 0xB8 - 0xBF - "\u00E6\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\u00F4\u00F6\u00F2\u00F3\u00F5" + // 0xC8 - 0xCF - "\u00E5\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u00B9\u00FB\u007E\u00F9\u00FA\u00FF" + // 0xD8 - 0xDF - "\\\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u00B2\u00D4\u00D6\u00D2\u00D3\u00D5" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u00E2\u00E4\u00E0\u00E1\u00E3\u007D" + // 0x40 - 0x47 - "\u00E7\u00F1\u0023\u002E\u003C\u0028\u002B\u0021" + // 0x48 - 0x4F - "\u0026\u00E9\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" + // 0x50 - 0x57 - "\u00EC\u00DF\u00A4\u00C5\u002A\u0029\u003B\u005E" + // 0x58 - 0x5F - "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u0024" + // 0x60 - 0x67 - "\u00C7\u00D1\u00F8\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u00A6\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" + // 0x70 - 0x77 - "\u00CC\u0060\u003A\u00C6\u00D8\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u004A\u0067\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u0080\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u009E\u00E0\u009F\u005F\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u009C\u00BB\u0047\u00DC\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u00B1\u005A\u00B2\u0070\u00B5" + - "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" + - "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u0063\u005B\u007B\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" + - "\u007C\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" + - "\u0044\u0045\u0042\u0046\u0043\u00D0\u00C0\u0048" + - "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" + - "\u006A\u00DD\u00DE\u00DB\u00A1\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM278.java b/src/share/classes/sun/nio/cs/ext/IBM278.java deleted file mode 100644 index 58db790768f838f016eed717d16c533accd6b95d..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM278.java +++ /dev/null @@ -1,221 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM278 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM278() { - super("IBM278", ExtendedCharsets.aliasesFor("IBM278")); - } - - public String historicalName() { - return "Cp278"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM278); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - protected static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" + // 0x88 - 0x8F - "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u005D" + // 0x98 - 0x9F - "\u00B5\u00FC\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u00A1\u00BF\u00D0\u00DD\u00DE\u00AE" + // 0xA8 - 0xAF - "\u00A2\u00A3\u00A5\u00B7\u00A9\u005B\u00B6\u00BC" + // 0xB0 - 0xB7 - "\u00BD\u00BE\u00AC\u007C\u00AF\u00A8\u00B4\u00D7" + // 0xB8 - 0xBF - "\u00E4\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\u00F4\u00A6\u00F2\u00F3\u00F5" + // 0xC8 - 0xCF - "\u00E5\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u00B9\u00FB\u007E\u00F9\u00FA\u00FF" + // 0xD8 - 0xDF - "\u00C9\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u00B2\u00D4\u0040\u00D2\u00D3\u00D5" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u00E2\u007B\u00E0\u00E1\u00E3\u007D" + // 0x40 - 0x47 - "\u00E7\u00F1\u00A7\u002E\u003C\u0028\u002B\u0021" + // 0x48 - 0x4F - "\u0026\u0060\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" + // 0x50 - 0x57 - "\u00EC\u00DF\u00A4\u00C5\u002A\u0029\u003B\u005E" + // 0x58 - 0x5F - "\u002D\u002F\u00C2\u0023\u00C0\u00C1\u00C3\u0024" + // 0x60 - 0x67 - "\u00C7\u00D1\u00F6\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u00F8\\\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" + // 0x70 - 0x77 - "\u00CC\u00E9\u003A\u00C4\u00D6\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u0063\u0067\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u00EC\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u00B5\u0071\u009F\u005F\u006D" + - "\u0051\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u0043\u00BB\u0047\u00DC\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u00B1\u005A\u00B2\u00CC\u004A" + - "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" + - "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u007B\u005B\u009E\u0068" + - "\u0074\u00E0\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u007C\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" + - "\u0044\u0045\u0042\u0046\u00C0\u00D0\u009C\u0048" + - "\u0054\u0079\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u006A\u00E1" + - "\u0070\u00DD\u00DE\u00DB\u00A1\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM280.java b/src/share/classes/sun/nio/cs/ext/IBM280.java deleted file mode 100644 index 08d61d47fdf968eb8c5a31a085d5b4f3af8bbeb5..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM280.java +++ /dev/null @@ -1,221 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM280 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM280() { - super("IBM280", ExtendedCharsets.aliasesFor("IBM280")); - } - - public String historicalName() { - return "Cp280"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM280); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - protected static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" + // 0x88 - 0x8F - "\u005B\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u00A4" + // 0x98 - 0x9F - "\u00B5\u00EC\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u00A1\u00BF\u00D0\u00DD\u00DE\u00AE" + // 0xA8 - 0xAF - "\u00A2\u0023\u00A5\u00B7\u00A9\u0040\u00B6\u00BC" + // 0xB0 - 0xB7 - "\u00BD\u00BE\u00AC\u007C\u00AF\u00A8\u00B4\u00D7" + // 0xB8 - 0xBF - "\u00E0\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\u00F4\u00F6\u00A6\u00F3\u00F5" + // 0xC8 - 0xCF - "\u00E8\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u00B9\u00FB\u00FC\u0060\u00FA\u00FF" + // 0xD8 - 0xDF - "\u00E7\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u00B2\u00D4\u00D6\u00D2\u00D3\u00D5" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u00E2\u00E4\u007B\u00E1\u00E3\u00E5" + // 0x40 - 0x47 - "\\\u00F1\u00B0\u002E\u003C\u0028\u002B\u0021" + // 0x48 - 0x4F - "\u0026\u005D\u00EA\u00EB\u007D\u00ED\u00EE\u00EF" + // 0x50 - 0x57 - "\u007E\u00DF\u00E9\u0024\u002A\u0029\u003B\u005E" + // 0x58 - 0x5F - "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u00C5" + // 0x60 - 0x67 - "\u00C7\u00D1\u00F2\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" + // 0x70 - 0x77 - "\u00CC\u00F9\u003A\u00A3\u00A7\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u00B1\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u00B5\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u0090\u0048\u0051\u005F\u006D" + - "\u00DD\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u0044\u00BB\u0054\u0058\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u007B\u009F\u00B2\u00CD\u007C" + - "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" + - "\u004A\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" + - "\u00C0\u0045\u0042\u0046\u0043\u0047\u009C\u00E0" + - "\u00D0\u005A\u0052\u0053\u00A1\u0055\u0056\u0057" + - "\u008C\u0049\u006A\u00CE\u00CB\u00CF\u00CC\u00E1" + - "\u0070\u0079\u00DE\u00DB\u00DC\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM284.java b/src/share/classes/sun/nio/cs/ext/IBM284.java deleted file mode 100644 index ba61268688401d1bbf8a6ac372eff4613d33205a..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM284.java +++ /dev/null @@ -1,221 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM284 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM284() { - super("IBM284", ExtendedCharsets.aliasesFor("IBM284")); - } - - public String historicalName() { - return "Cp284"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM284); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - protected static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" + // 0x88 - 0x8F - "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u00A4" + // 0x98 - 0x9F - "\u00B5\u00A8\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u00A1\u00BF\u00D0\u00DD\u00DE\u00AE" + // 0xA8 - 0xAF - "\u00A2\u00A3\u00A5\u00B7\u00A9\u00A7\u00B6\u00BC" + // 0xB0 - 0xB7 - "\u00BD\u00BE\u005E\u0021\u00AF\u007E\u00B4\u00D7" + // 0xB8 - 0xBF - "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\u00F4\u00F6\u00F2\u00F3\u00F5" + // 0xC8 - 0xCF - "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u00B9\u00FB\u00FC\u00F9\u00FA\u00FF" + // 0xD8 - 0xDF - "\\\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u00B2\u00D4\u00D6\u00D2\u00D3\u00D5" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u00E2\u00E4\u00E0\u00E1\u00E3\u00E5" + // 0x40 - 0x47 - "\u00E7\u00A6\u005B\u002E\u003C\u0028\u002B\u007C" + // 0x48 - 0x4F - "\u0026\u00E9\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" + // 0x50 - 0x57 - "\u00EC\u00DF\u005D\u0024\u002A\u0029\u003B\u00AC" + // 0x58 - 0x5F - "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u00C5" + // 0x60 - 0x67 - "\u00C7\u0023\u00F1\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" + // 0x70 - 0x77 - "\u00CC\u0060\u003A\u00D1\u0040\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u00BB\u007F\u0069\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u004A\u00E0\u005A\u00BA\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00BD\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u00B1\u009F\u00B2\u0049\u00B5" + - "\u00A1\u00B4\u009A\u008A\u005F\u00CA\u00AF\u00BC" + - "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u007B\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" + - "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u0048" + - "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u008C\u006A\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" + - "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM285.java b/src/share/classes/sun/nio/cs/ext/IBM285.java deleted file mode 100644 index b7a44c45bef22faaf90567ef1974da9df95f9524..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM285.java +++ /dev/null @@ -1,221 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM285 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM285() { - super("IBM285", ExtendedCharsets.aliasesFor("IBM285")); - } - - public String historicalName() { - return "Cp285"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM285); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - protected static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" + // 0x88 - 0x8F - "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u00A4" + // 0x98 - 0x9F - "\u00B5\u00AF\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u00A1\u00BF\u00D0\u00DD\u00DE\u00AE" + // 0xA8 - 0xAF - "\u00A2\u005B\u00A5\u00B7\u00A9\u00A7\u00B6\u00BC" + // 0xB0 - 0xB7 - "\u00BD\u00BE\u005E\u005D\u007E\u00A8\u00B4\u00D7" + // 0xB8 - 0xBF - "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\u00F4\u00F6\u00F2\u00F3\u00F5" + // 0xC8 - 0xCF - "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u00B9\u00FB\u00FC\u00F9\u00FA\u00FF" + // 0xD8 - 0xDF - "\\\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u00B2\u00D4\u00D6\u00D2\u00D3\u00D5" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u00E2\u00E4\u00E0\u00E1\u00E3\u00E5" + // 0x40 - 0x47 - "\u00E7\u00F1\u0024\u002E\u003C\u0028\u002B\u007C" + // 0x48 - 0x4F - "\u0026\u00E9\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" + // 0x50 - 0x57 - "\u00EC\u00DF\u0021\u00A3\u002A\u0029\u003B\u00AC" + // 0x58 - 0x5F - "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u00C5" + // 0x60 - 0x67 - "\u00C7\u00D1\u00A6\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" + // 0x70 - 0x77 - "\u00CC\u0060\u003A\u0023\u0040\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u005A\u007F\u007B\u004A\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u00B1\u00E0\u00BB\u00BA\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00BC\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u005B\u009F\u00B2\u006A\u00B5" + - "\u00BD\u00B4\u009A\u008A\u005F\u00CA\u00AF\u00A1" + - "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" + - "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u0048" + - "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" + - "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM297.java b/src/share/classes/sun/nio/cs/ext/IBM297.java deleted file mode 100644 index 74aecce606d896e0a6bb5b8a711792ecfd174813..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM297.java +++ /dev/null @@ -1,221 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM297 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM297() { - super("IBM297", ExtendedCharsets.aliasesFor("IBM297")); - } - - public String historicalName() { - return "Cp297"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM297); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - protected static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" + // 0x88 - 0x8F - "\u005B\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u00A4" + // 0x98 - 0x9F - "\u0060\u00A8\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u00A1\u00BF\u00D0\u00DD\u00DE\u00AE" + // 0xA8 - 0xAF - "\u00A2\u0023\u00A5\u00B7\u00A9\u005D\u00B6\u00BC" + // 0xB0 - 0xB7 - "\u00BD\u00BE\u00AC\u007C\u00AF\u007E\u00B4\u00D7" + // 0xB8 - 0xBF - "\u00E9\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\u00F4\u00F6\u00F2\u00F3\u00F5" + // 0xC8 - 0xCF - "\u00E8\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u00B9\u00FB\u00FC\u00A6\u00FA\u00FF" + // 0xD8 - 0xDF - "\u00E7\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u00B2\u00D4\u00D6\u00D2\u00D3\u00D5" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u00E2\u00E4\u0040\u00E1\u00E3\u00E5" + // 0x40 - 0x47 - "\\\u00F1\u00B0\u002E\u003C\u0028\u002B\u0021" + // 0x48 - 0x4F - "\u0026\u007B\u00EA\u00EB\u007D\u00ED\u00EE\u00EF" + // 0x50 - 0x57 - "\u00EC\u00DF\u00A7\u0024\u002A\u0029\u003B\u005E" + // 0x58 - 0x5F - "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u00C5" + // 0x60 - 0x67 - "\u00C7\u00D1\u00F9\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" + // 0x70 - 0x77 - "\u00CC\u00B5\u003A\u00A3\u00E0\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u00B1\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u0044\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u0090\u0048\u00B5\u005F\u006D" + - "\u00A0\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u0051\u00BB\u0054\u00BD\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u007B\u009F\u00B2\u00DD\u005A" + - "\u00A1\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" + - "\u004A\u008F\u00EA\u00FA\u00BE\u0079\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" + - "\u007C\u0045\u0042\u0046\u0043\u0047\u009C\u00E0" + - "\u00D0\u00C0\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" + - "\u0070\u006A\u00DE\u00DB\u00DC\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM420.java b/src/share/classes/sun/nio/cs/ext/IBM420.java deleted file mode 100644 index f99c85ad7598e166ea9155ba0d687fe82b59ccea..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM420.java +++ /dev/null @@ -1,315 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM420 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM420() { - super("IBM420", ExtendedCharsets.aliasesFor("IBM420")); - } - - public String historicalName() { - return "Cp420"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM420); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\uF8F5\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\uFEB7\uF8F4\uFEBB\uF8F7\uFEBF\uFEC3" + // 0x88 - 0x8F - "\uFEC7\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\uFEC9\uFECA\uFECB\uFECC\uFECD\uFECE" + // 0x98 - 0x9F - "\uFECF\u00F7\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\uFED0\uFED1\uFED3\uFED5\uFED7\uFED9" + // 0xA8 - 0xAF - "\uFEDB\uFEDD\uFEF5\uFEF6\uFEF7\uFEF8\uFFFD\uFFFD" + // 0xB0 - 0xB7 - "\uFEFB\uFEFC\uFEDF\uFEE1\uFEE3\uFEE5\uFEE7\uFEE9" + // 0xB8 - 0xBF - "\u061B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\uFEEB\uFFFD\uFEEC\uFFFD\uFEED" + // 0xC8 - 0xCF - "\u061F\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\uFEEF\uFEF0\uFEF1\uFEF2\uFEF3\u0660" + // 0xD8 - 0xDF - "\u00D7\u2007\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u0661\u0662\uFFFD\u0663\u0664\u0665" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\uFFFD\u0666\u0667\u0668\u0669\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\uFE7C\uFE7D\u0640\uF8FC\uFE80\uFE81" + // 0x40 - 0x47 - "\uFE82\uFE83\u00A2\u002E\u003C\u0028\u002B\u007C" + // 0x48 - 0x4F - "\u0026\uFE84\uFE85\uFFFD\uFFFD\uFE8B\uFE8D\uFE8E" + // 0x50 - 0x57 - "\uFE8F\uFE91\u0021\u0024\u002A\u0029\u003B\u00AC" + // 0x58 - 0x5F - "\u002D\u002F\uFE93\uFE95\uFE97\uFE99\uFE9B\uFE9D" + // 0x60 - 0x67 - "\uFE9F\uFEA1\u00A6\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\uFEA3\uFEA5\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uF8F6" + // 0x70 - 0x77 - "\uFEB3\u060C\u003A\u0023\u0040\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u005A\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u0000\u0000\u0000\u0000\u006D" + - "\u0000\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u0000\u004F\u0000\u0000\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u0000\u004A\u0000\u0000\u0000\u006A\u0000" + - "\u0000\u0000\u0000\u0000\u005F\u00CA\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00E0" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00A1" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0079\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00C0" + - "\u0000\u0000\u0000\u00D0\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0044\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00DF\u00EA\u00EB\u00ED" + - "\u00EE\u00EF\u00FB\u00FC\u00FD\u00FE\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00E1\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u008B\u0080\u0077" + - "\u008D\u0000\u0000\u0000\u0000\u0045\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0042\u0043\u0000\u0000\u0046\u0047" + - "\u0048\u0049\u0051\u0052\u0000\u0000\u0000\u0000" + - "\u0000\u0055\u0000\u0056\u0057\u0058\u0000\u0059" + - "\u0000\u0062\u0000\u0063\u0000\u0064\u0000\u0065" + - "\u0000\u0066\u0000\u0067\u0000\u0068\u0000\u0069" + - "\u0000\u0070\u0000\u0071\u0000\u0072\u0000\u0073" + - "\u0000\u0074\u0000\u0075\u0000\u0076\u0000\u0000" + - "\u0000\u0078\u0000\u0000\u0000\u008A\u0000\u0000" + - "\u0000\u008C\u0000\u0000\u0000\u008E\u0000\u0000" + - "\u0000\u008F\u0000\u0000\u0000\u0090\u0000\u009A" + - "\u009B\u009C\u009D\u009E\u009F\u00A0\u00AA\u00AB" + - "\u0000\u00AC\u0000\u00AD\u0000\u00AE\u0000\u00AF" + - "\u0000\u00B0\u0000\u00B1\u0000\u00BA\u0000\u00BB" + - "\u0000\u00BC\u0000\u00BD\u0000\u00BE\u0000\u00BF" + - "\u0000\u00CB\u00CD\u00CF\u0000\u00DA\u00DB\u00DC" + - "\u00DD\u00DE\u0000\u00B2\u00B3\u00B4\u00B5\u0000" + - "\u0000\u00B8\u00B9\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 248, 248, 248, 248, 248, 492, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 741, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 753, 248, 248, 248, 248, 248, 1006, 248, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM424.java b/src/share/classes/sun/nio/cs/ext/IBM424.java deleted file mode 100644 index d4d2c6d459899ceea8c08d96c26f910ace742cd4..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM424.java +++ /dev/null @@ -1,256 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM424 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM424() { - super("IBM424", ExtendedCharsets.aliasesFor("IBM424")); - } - - public String historicalName() { - return "Cp424"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM424); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\uFFFD\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u00AB\u00BB\uFFFD\uFFFD\uFFFD\u00B1" + // 0x88 - 0x8F - "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\uFFFD\uFFFD\uFFFD\u00B8\uFFFD\u00A4" + // 0x98 - 0x9F - "\u00B5\u007E\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AE" + // 0xA8 - 0xAF - "\u005E\u00A3\u00A5\u2022\u00A9\u00A7\u00B6\u00BC" + // 0xB0 - 0xB7 - "\u00BD\u00BE\u005B\u005D\u203E\u00A8\u00B4\u00D7" + // 0xB8 - 0xBF - "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xC8 - 0xCF - "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u00B9\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xD8 - 0xDF - "\\\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u00B2\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u00B3\uFFFD\uFFFD\uFFFD\uFFFD\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6" + // 0x40 - 0x47 - "\u05D7\u05D8\u00A2\u002E\u003C\u0028\u002B\u007C" + // 0x48 - 0x4F - "\u0026\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF" + // 0x50 - 0x57 - "\u05E0\u05E1\u0021\u0024\u002A\u0029\u003B\u00AC" + // 0x58 - 0x5F - "\u002D\u002F\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7" + // 0x60 - 0x67 - "\u05E8\u05E9\u00A6\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\uFFFD\u05EA\uFFFD\uFFFD\u00A0\uFFFD\uFFFD\uFFFD" + // 0x70 - 0x77 - "\u2017\u0060\u003A\u0023\u0040\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u005A\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u00BA\u00E0\u00BB\u00B0\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00A1\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0074\u0000\u004A\u00B1\u009F\u00B2\u006A\u00B5" + - "\u00BD\u00B4\u0000\u008A\u005F\u00CA\u00AF\u0000" + - "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u0000" + - "\u009D\u00DA\u0000\u008B\u00B7\u00B8\u00B9\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00E1" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048" + - "\u0049\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u0071\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0078\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00B3\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00BC\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 248, 248, 248, 248, 296, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 531, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM500.java b/src/share/classes/sun/nio/cs/ext/IBM500.java deleted file mode 100644 index a6e08103bd0573bd51d677cae38fb3cdd7550277..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM500.java +++ /dev/null @@ -1,221 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM500 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM500() { - super("IBM500", ExtendedCharsets.aliasesFor("IBM500")); - } - - public String historicalName() { - return "Cp500"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM500); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - protected static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u00AB\u00BB\u00F0\u00FD\u00FE\u00B1" + // 0x88 - 0x8F - "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u00AA\u00BA\u00E6\u00B8\u00C6\u00A4" + // 0x98 - 0x9F - "\u00B5\u007E\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u00A1\u00BF\u00D0\u00DD\u00DE\u00AE" + // 0xA8 - 0xAF - "\u00A2\u00A3\u00A5\u00B7\u00A9\u00A7\u00B6\u00BC" + // 0xB0 - 0xB7 - "\u00BD\u00BE\u00AC\u007C\u00AF\u00A8\u00B4\u00D7" + // 0xB8 - 0xBF - "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\u00F4\u00F6\u00F2\u00F3\u00F5" + // 0xC8 - 0xCF - "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u00B9\u00FB\u00FC\u00F9\u00FA\u00FF" + // 0xD8 - 0xDF - "\\\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u00B2\u00D4\u00D6\u00D2\u00D3\u00D5" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u00E2\u00E4\u00E0\u00E1\u00E3\u00E5" + // 0x40 - 0x47 - "\u00E7\u00F1\u005B\u002E\u003C\u0028\u002B\u0021" + // 0x48 - 0x4F - "\u0026\u00E9\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" + // 0x50 - 0x57 - "\u00EC\u00DF\u005D\u0024\u002A\u0029\u003B\u005E" + // 0x58 - 0x5F - "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u00C5" + // 0x60 - 0x67 - "\u00C7\u00D1\u00A6\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" + // 0x70 - 0x77 - "\u00CC\u0060\u003A\u0023\u0040\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u004A\u00E0\u005A\u005F\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00C0\u00BB\u00D0\u00A1\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u00B1\u009F\u00B2\u006A\u00B5" + - "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" + - "\u0090\u008F\u00EA\u00FA\u00BE\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u0063\u0067\u009E\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u00AC\u0069\u00ED\u00EE\u00EB\u00EF\u00EC\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u00AE\u0059" + - "\u0044\u0045\u0042\u0046\u0043\u0047\u009C\u0048" + - "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u008C\u0049\u00CD\u00CE\u00CB\u00CF\u00CC\u00E1" + - "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u008E\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM838.java b/src/share/classes/sun/nio/cs/ext/IBM838.java deleted file mode 100644 index 4c2f9f67c2ed47e974275507bc73390572e6c32f..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM838.java +++ /dev/null @@ -1,243 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM838 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM838() { - super("IBM-Thai", ExtendedCharsets.aliasesFor("IBM-Thai")); - } - - public String historicalName() { - return "Cp838"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM838); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u0E4F\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22" + // 0x88 - 0x8F - "\u0E5A\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28" + // 0x98 - 0x9F - "\u0E5B\u007E\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E" + // 0xA8 - 0xAF - "\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57" + // 0xB0 - 0xB7 - "\u0E58\u0E59\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34" + // 0xB8 - 0xBF - "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u0E49\u0E35\u0E36\u0E37\u0E38\u0E39" + // 0xC8 - 0xCF - "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u0E3A\u0E40\u0E41\u0E42\u0E43\u0E44" + // 0xD8 - 0xDF - "\\\u0E4A\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u0E4B\u0E4C\u0E4D\u0E4B\u0E4C\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06" + // 0x40 - 0x47 - "\u0E07\u005B\u00A2\u002E\u003C\u0028\u002B\u007C" + // 0x48 - 0x4F - "\u0026\u0E48\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D" + // 0x50 - 0x57 - "\u0E0E\u005D\u0021\u0024\u002A\u0029\u003B\u00AC" + // 0x58 - 0x5F - "\u002D\u002F\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14" + // 0x60 - 0x67 - "\u0E15\u005E\u00A6\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u0E3F\u0E4E\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B" + // 0x70 - 0x77 - "\u0E1C\u0060\u003A\u0023\u0040\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u005A\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u0049\u00E0\u0059\u0069\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00C0\u004F\u00D0\u00A1\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u0000\u004A\u0000\u0000\u0000\u006A\u0000" + - "\u0000\u0000\u0000\u0000\u005F\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0042\u0043\u0044" + - "\u0045\u0046\u0047\u0048\u0052\u0053\u0054\u0055" + - "\u0056\u0057\u0058\u0062\u0063\u0064\u0065\u0066" + - "\u0067\u0068\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u008A\u008B\u008C\u008D\u008E\u008F\u009A" + - "\u009B\u009C\u009D\u009E\u009F\u00AA\u00AB\u00AC" + - "\u00AD\u00AE\u00AF\u00BA\u00BB\u00BC\u00BD\u00BE" + - "\u00BF\u00CB\u00CC\u00CD\u00CE\u00CF\u00DA\u0000" + - "\u0000\u0000\u0000\u0070\u00DB\u00DC\u00DD\u00DE" + - "\u00DF\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00FA" + - "\u00FB\u00FC\u0071\u0080\u00B0\u00B1\u00B2\u00B3" + - "\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u0090\u00A0" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 428, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM856.java b/src/share/classes/sun/nio/cs/ext/IBM856.java deleted file mode 100644 index 99280a4b22f05c734f1e3673de1517b3b56ebfa0..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM856.java +++ /dev/null @@ -1,288 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM856 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM856() { - super("x-IBM856", ExtendedCharsets.aliasesFor("x-IBM856")); - } - - public String historicalName() { - return "Cp856"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM856); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7" + // 0x80 - 0x87 - "\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF" + // 0x88 - 0x8F - "\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7" + // 0x90 - 0x97 - "\u05E8\u05E9\u05EA\uFFFD\u00A3\uFFFD\u00D7\uFFFD" + // 0x98 - 0x9F - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xA0 - 0xA7 - "\uFFFD\u00AE\u00AC\u00BD\u00BC\uFFFD\u00AB\u00BB" + // 0xA8 - 0xAF - "\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD" + // 0xB0 - 0xB7 - "\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510" + // 0xB8 - 0xBF - "\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD" + // 0xC0 - 0xC7 - "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4" + // 0xC8 - 0xCF - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xD0 - 0xD7 - "\uFFFD\u2518\u250C\u2588\u2584\u00A6\uFFFD\u2580" + // 0xD8 - 0xDF - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00B5\uFFFD" + // 0xE0 - 0xE7 - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u203E\u00B4" + // 0xE8 - 0xEF - "\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8" + // 0xF0 - 0xF7 - "\u00B0\u00A8\u2022\u00B9\u00B3\u00B2\u25A0\u00A0" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00FF\u0000\u00BD\u009C\u00CF\u00BE\u00DD\u00F5" + - "\u00F9\u00B8\u0000\u00AE\u00AA\u00F0\u00A9\u0000" + - "\u00F8\u00F1\u00FD\u00FC\u00EF\u00E6\u00F4\u0000" + - "\u00F7\u00FB\u0000\u00AF\u00AC\u00AB\u00F3\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u009E" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00F6" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" + - "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" + - "\u0098\u0099\u009A\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00F2\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00FA\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00EE\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00C4\u0000\u00B3\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00DA" + - "\u0000\u0000\u0000\u00BF\u0000\u0000\u0000\u00C0" + - "\u0000\u0000\u0000\u00D9\u0000\u0000\u0000\u00C3" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00B4" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00C2" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00C1" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00C5" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00CD\u00BA\u0000\u0000\u00C9" + - "\u0000\u0000\u00BB\u0000\u0000\u00C8\u0000\u0000" + - "\u00BC\u0000\u0000\u00CC\u0000\u0000\u00B9\u0000" + - "\u0000\u00CB\u0000\u0000\u00CA\u0000\u0000\u00CE" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00DF\u0000\u0000\u0000\u00DC" + - "\u0000\u0000\u0000\u00DB\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00B0\u00B1\u00B2\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00FE\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 248, 248, 248, 248, 296, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 531, 248, 248, 248, 248, 787, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM860.java b/src/share/classes/sun/nio/cs/ext/IBM860.java deleted file mode 100644 index 0aaa06c6d1ba3ad70147925e9ce6aadd184ee492..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM860.java +++ /dev/null @@ -1,348 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM860 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM860() { - super("IBM860", ExtendedCharsets.aliasesFor("IBM860")); - } - - public String historicalName() { - return "Cp860"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM860); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00C7\u00FC\u00E9\u00E2\u00E3\u00E0\u00C1\u00E7" + // 0x80 - 0x87 - "\u00EA\u00CA\u00E8\u00CD\u00D4\u00EC\u00C3\u00C2" + // 0x88 - 0x8F - "\u00C9\u00C0\u00C8\u00F4\u00F5\u00F2\u00DA\u00F9" + // 0x90 - 0x97 - "\u00CC\u00D5\u00DC\u00A2\u00A3\u00D9\u20A7\u00D3" + // 0x98 - 0x9F - "\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA" + // 0xA0 - 0xA7 - "\u00BF\u00D2\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB" + // 0xA8 - 0xAF - "\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556" + // 0xB0 - 0xB7 - "\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510" + // 0xB8 - 0xBF - "\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F" + // 0xC0 - 0xC7 - "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567" + // 0xC8 - 0xCF - "\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B" + // 0xD0 - 0xD7 - "\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580" + // 0xD8 - 0xDF - "\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4" + // 0xE0 - 0xE7 - "\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229" + // 0xE8 - 0xEF - "\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248" + // 0xF0 - 0xF7 - "\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00FF\u00AD\u009B\u009C\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00A6\u00AE\u00AA\u0000\u0000\u0000" + - "\u00F8\u00F1\u00FD\u0000\u0000\u00E6\u0000\u00FA" + - "\u0000\u0000\u00A7\u00AF\u00AC\u00AB\u0000\u00A8" + - "\u0091\u0086\u008F\u008E\u0000\u0000\u0000\u0080" + - "\u0092\u0090\u0089\u0000\u0098\u008B\u0000\u0000" + - "\u0000\u00A5\u00A9\u009F\u008C\u0099\u0000\u0000" + - "\u0000\u009D\u0096\u0000\u009A\u0000\u0000\u00E1" + - "\u0085\u00A0\u0083\u0084\u0000\u0000\u0000\u0087" + - "\u008A\u0082\u0088\u0000\u008D\u00A1\u0000\u0000" + - "\u0000\u00A4\u0095\u00A2\u0093\u0094\u0000\u00F6" + - "\u0000\u0097\u00A3\u0000\u0081\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00E2\u0000\u0000" + - "\u0000\u0000\u00E9\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00E4\u0000\u0000" + - "\u00E8\u0000\u0000\u00EA\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00E0\u0000\u0000\u00EB\u00EE" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00E3\u0000\u0000\u00E5\u00E7\u0000" + - "\u00ED\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00FC\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u009E\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00F9\u00FB\u0000\u0000\u0000\u00EC\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00EF\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00F7\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00F0\u0000\u0000\u00F3\u00F2\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00F4\u00F5\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00C4\u0000\u00B3\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00DA\u0000\u0000\u0000" + - "\u00BF\u0000\u0000\u0000\u00C0\u0000\u0000\u0000" + - "\u00D9\u0000\u0000\u0000\u00C3\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00B4\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00C2\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00C1\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00C5\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00CD\u00BA\u00D5\u00D6\u00C9\u00B8\u00B7\u00BB" + - "\u00D4\u00D3\u00C8\u00BE\u00BD\u00BC\u00C6\u00C7" + - "\u00CC\u00B5\u00B6\u00B9\u00D1\u00D2\u00CB\u00CF" + - "\u00D0\u00CA\u00D8\u00D7\u00CE\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00DF\u0000\u0000\u0000\u00DC\u0000\u0000\u0000" + - "\u00DB\u0000\u0000\u0000\u00DD\u0000\u0000\u0000" + - "\u00DE\u00B0\u00B1\u00B2\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00FE\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 253, 253, 362, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 561, 253, 792, 1016, 253, 1272, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM861.java b/src/share/classes/sun/nio/cs/ext/IBM861.java deleted file mode 100644 index 018d2e4252b2b407e5c49578ea0c8ad74521a549..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM861.java +++ /dev/null @@ -1,369 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM861 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM861() { - super("IBM861", ExtendedCharsets.aliasesFor("IBM861")); - } - - public String historicalName() { - return "Cp861"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM861); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7" + // 0x80 - 0x87 - "\u00EA\u00EB\u00E8\u00D0\u00F0\u00DE\u00C4\u00C5" + // 0x88 - 0x8F - "\u00C9\u00E6\u00C6\u00F4\u00F6\u00FE\u00FB\u00DD" + // 0x90 - 0x97 - "\u00FD\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192" + // 0x98 - 0x9F - "\u00E1\u00ED\u00F3\u00FA\u00C1\u00CD\u00D3\u00DA" + // 0xA0 - 0xA7 - "\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB" + // 0xA8 - 0xAF - "\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556" + // 0xB0 - 0xB7 - "\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510" + // 0xB8 - 0xBF - "\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F" + // 0xC0 - 0xC7 - "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567" + // 0xC8 - 0xCF - "\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B" + // 0xD0 - 0xD7 - "\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580" + // 0xD8 - 0xDF - "\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4" + // 0xE0 - 0xE7 - "\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229" + // 0xE8 - 0xEF - "\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248" + // 0xF0 - 0xF7 - "\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00FF\u00AD\u0000\u009C\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00AE\u00AA\u0000\u0000\u0000" + - "\u00F8\u00F1\u00FD\u0000\u0000\u00E6\u0000\u00FA" + - "\u0000\u0000\u0000\u00AF\u00AC\u00AB\u0000\u00A8" + - "\u0000\u00A4\u0000\u0000\u008E\u008F\u0092\u0080" + - "\u0000\u0090\u0000\u0000\u0000\u00A5\u0000\u0000" + - "\u008B\u0000\u0000\u00A6\u0000\u0000\u0099\u0000" + - "\u009D\u0000\u00A7\u0000\u009A\u0097\u008D\u00E1" + - "\u0085\u00A0\u0083\u0000\u0084\u0086\u0091\u0087" + - "\u008A\u0082\u0088\u0089\u0000\u00A1\u0000\u0000" + - "\u008C\u0000\u0000\u00A2\u0093\u0000\u0094\u00F6" + - "\u009B\u0000\u00A3\u0096\u0081\u0098\u0095\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u009F\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00E2\u0000\u0000\u0000\u0000\u00E9" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00E4\u0000\u0000\u00E8\u0000\u0000" + - "\u00EA\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00E0\u0000\u0000\u00EB\u00EE\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00E3" + - "\u0000\u0000\u00E5\u00E7\u0000\u00ED\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00FC\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u009E\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00F9\u00FB" + - "\u0000\u0000\u0000\u00EC\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00EF\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00F7\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00F0\u0000" + - "\u0000\u00F3\u00F2\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00A9\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00F4\u00F5\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00C4\u0000\u00B3" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00DA\u0000\u0000\u0000\u00BF\u0000\u0000" + - "\u0000\u00C0\u0000\u0000\u0000\u00D9\u0000\u0000" + - "\u0000\u00C3\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00B4\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00C2\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00C1\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00C5\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00CD\u00BA\u00D5" + - "\u00D6\u00C9\u00B8\u00B7\u00BB\u00D4\u00D3\u00C8" + - "\u00BE\u00BD\u00BC\u00C6\u00C7\u00CC\u00B5\u00B6" + - "\u00B9\u00D1\u00D2\u00CB\u00CF\u00D0\u00CA\u00D8" + - "\u00D7\u00CE\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00DF\u0000\u0000" + - "\u0000\u00DC\u0000\u0000\u0000\u00DB\u0000\u0000" + - "\u0000\u00DD\u0000\u0000\u0000\u00DE\u00B0\u00B1" + - "\u00B2\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00FE\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 255, 402, 511, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 710, 402, 941, 1181, 402, 1437, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM863.java b/src/share/classes/sun/nio/cs/ext/IBM863.java deleted file mode 100644 index 32c9d1b298ec404224b40b709f6c3ed55bfb207c..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM863.java +++ /dev/null @@ -1,373 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM863 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM863() { - super("IBM863", ExtendedCharsets.aliasesFor("IBM863")); - } - - public String historicalName() { - return "Cp863"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM863); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00C7\u00FC\u00E9\u00E2\u00C2\u00E0\u00B6\u00E7" + // 0x80 - 0x87 - "\u00EA\u00EB\u00E8\u00EF\u00EE\u2017\u00C0\u00A7" + // 0x88 - 0x8F - "\u00C9\u00C8\u00CA\u00F4\u00CB\u00CF\u00FB\u00F9" + // 0x90 - 0x97 - "\u00A4\u00D4\u00DC\u00A2\u00A3\u00D9\u00DB\u0192" + // 0x98 - 0x9F - "\u00A6\u00B4\u00F3\u00FA\u00A8\u00B8\u00B3\u00AF" + // 0xA0 - 0xA7 - "\u00CE\u2310\u00AC\u00BD\u00BC\u00BE\u00AB\u00BB" + // 0xA8 - 0xAF - "\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556" + // 0xB0 - 0xB7 - "\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510" + // 0xB8 - 0xBF - "\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F" + // 0xC0 - 0xC7 - "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567" + // 0xC8 - 0xCF - "\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B" + // 0xD0 - 0xD7 - "\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580" + // 0xD8 - 0xDF - "\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4" + // 0xE0 - 0xE7 - "\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229" + // 0xE8 - 0xEF - "\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248" + // 0xF0 - 0xF7 - "\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00FF\u0000\u009B\u009C\u0098\u0000\u00A0\u008F" + - "\u00A4\u0000\u0000\u00AE\u00AA\u0000\u0000\u00A7" + - "\u00F8\u00F1\u00FD\u00A6\u00A1\u00E6\u0086\u00FA" + - "\u00A5\u0000\u0000\u00AF\u00AC\u00AB\u00AD\u0000" + - "\u008E\u0000\u0084\u0000\u0000\u0000\u0000\u0080" + - "\u0091\u0090\u0092\u0094\u0000\u0000\u00A8\u0095" + - "\u0000\u0000\u0000\u0000\u0099\u0000\u0000\u0000" + - "\u0000\u009D\u0000\u009E\u009A\u0000\u0000\u00E1" + - "\u0085\u0000\u0083\u0000\u0000\u0000\u0000\u0087" + - "\u008A\u0082\u0088\u0089\u0000\u0000\u008C\u008B" + - "\u0000\u0000\u0000\u00A2\u0093\u0000\u0000\u00F6" + - "\u0000\u0097\u00A3\u0096\u0081\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u009F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00E2\u0000\u0000\u0000\u0000\u00E9\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00E4\u0000\u0000\u00E8\u0000\u0000\u00EA\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00E0\u0000" + - "\u0000\u00EB\u00EE\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00E3\u0000\u0000" + - "\u00E5\u00E7\u0000\u00ED\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u008D\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00FC\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00F9\u00FB" + - "\u0000\u0000\u0000\u00EC\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00EF\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00F7\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00F0\u0000" + - "\u0000\u00F3\u00F2\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00A9\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00F4\u00F5\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00C4\u0000\u00B3" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00DA\u0000\u0000\u0000\u00BF\u0000\u0000" + - "\u0000\u00C0\u0000\u0000\u0000\u00D9\u0000\u0000" + - "\u0000\u00C3\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00B4\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00C2\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00C1\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00C5\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00CD\u00BA\u00D5" + - "\u00D6\u00C9\u00B8\u00B7\u00BB\u00D4\u00D3\u00C8" + - "\u00BE\u00BD\u00BC\u00C6\u00C7\u00CC\u00B5\u00B6" + - "\u00B9\u00D1\u00D2\u00CB\u00CF\u00D0\u00CA\u00D8" + - "\u00D7\u00CE\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00DF\u0000\u0000" + - "\u0000\u00DC\u0000\u0000\u0000\u00DB\u0000\u0000" + - "\u0000\u00DD\u0000\u0000\u0000\u00DE\u00B0\u00B1" + - "\u00B2\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00FE\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 253, 400, 509, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 742, 400, 973, 1213, 400, 1469, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM864.java b/src/share/classes/sun/nio/cs/ext/IBM864.java deleted file mode 100644 index acfa0670ea75767149d21bae74d42e6df2a41adc..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM864.java +++ /dev/null @@ -1,342 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM864 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM864() { - super("IBM864", ExtendedCharsets.aliasesFor("IBM864")); - } - - public String historicalName() { - return "Cp864"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM864); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00B0\u00B7\u2219\u221A\u2592\u2500\u2502\u253C" + // 0x80 - 0x87 - "\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518" + // 0x88 - 0x8F - "\u03B2\u221E\u03C6\u00B1\u00BD\u00BC\u2248\u00AB" + // 0x90 - 0x97 - "\u00BB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD" + // 0x98 - 0x9F - "\u00A0\u00AD\uFE82\u00A3\u00A4\uFE84\uFFFD\uFFFD" + // 0xA0 - 0xA7 - "\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5" + // 0xA8 - 0xAF - "\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667" + // 0xB0 - 0xB7 - "\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F" + // 0xB8 - 0xBF - "\u00A2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D" + // 0xC0 - 0xC7 - "\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9" + // 0xC8 - 0xCF - "\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1" + // 0xD0 - 0xD7 - "\uFEC5\uFECB\uFECF\u00A6\u00AC\u00F7\u00D7\uFEC9" + // 0xD8 - 0xDF - "\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB" + // 0xE0 - 0xE7 - "\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1" + // 0xE8 - 0xEF - "\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0" + // 0xF0 - 0xF7 - "\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u066A\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0000\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00A0\u0000\u00C0\u00A3\u00A4\u0000\u00DB\u0000" + - "\u0000\u0000\u0000\u0097\u00DC\u00A1\u0000\u0000" + - "\u0080\u0093\u0000\u0000\u0000\u0000\u0000\u0081" + - "\u0000\u0000\u0000\u0098\u0095\u0094\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00DE" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00DD" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0090\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0092\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00AC\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00BB\u0000\u0000" + - "\u0000\u00BF\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00E0\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00F1\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5" + - "\u00B6\u00B7\u00B8\u00B9\u0025\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0082\u0083\u0000\u0000\u0000\u0091" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0096\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0085\u0000\u0086\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u008D\u0000\u0000" + - "\u0000\u008C\u0000\u0000\u0000\u008E\u0000\u0000" + - "\u0000\u008F\u0000\u0000\u0000\u008A\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0088\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0089\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u008B\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0087\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0084\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00FE\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00F0" + - "\u0000\u0000\u00C1\u00C2\u00A2\u00C3\u00A5\u00C4" + - "\u0000\u0000\u0000\u0000\u0000\u00C6\u0000\u00C7" + - "\u00A8\u00A9\u0000\u00C8\u0000\u00C9\u0000\u00AA" + - "\u0000\u00CA\u0000\u00AB\u0000\u00CB\u0000\u00AD" + - "\u0000\u00CC\u0000\u00AE\u0000\u00CD\u0000\u00AF" + - "\u0000\u00CE\u0000\u00CF\u0000\u00D0\u0000\u00D1" + - "\u0000\u00D2\u0000\u00BC\u0000\u00D3\u0000\u00BD" + - "\u0000\u00D4\u0000\u00BE\u0000\u00D5\u0000\u00EB" + - "\u0000\u00D6\u0000\u00D7\u0000\u0000\u0000\u00D8" + - "\u0000\u0000\u0000\u00DF\u00C5\u00D9\u00EC\u00EE" + - "\u00ED\u00DA\u00F7\u00BA\u0000\u00E1\u0000\u00F8" + - "\u0000\u00E2\u0000\u00FC\u0000\u00E3\u0000\u00FB" + - "\u0000\u00E4\u0000\u00EF\u0000\u00E5\u0000\u00F2" + - "\u0000\u00E6\u0000\u00F3\u0000\u00E7\u00F4\u00E8" + - "\u0000\u00E9\u00F5\u00FD\u00F6\u00EA\u0000\u00F9" + - "\u00FA\u0099\u009A\u0000\u0000\u009D\u009E\u0000" + - "\u0000\u0000"; - - private final static short index1[] = { - 0, 248, 248, 326, 248, 248, 570, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 801, 248, 248, 1057, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 1218, 248, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM865.java b/src/share/classes/sun/nio/cs/ext/IBM865.java deleted file mode 100644 index 01a45a89a5c88a118d6833d9c69de5548d268df5..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM865.java +++ /dev/null @@ -1,369 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM865 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM865() { - super("IBM865", ExtendedCharsets.aliasesFor("IBM865")); - } - - public String historicalName() { - return "Cp865"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM865); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7" + // 0x80 - 0x87 - "\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5" + // 0x88 - 0x8F - "\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9" + // 0x90 - 0x97 - "\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192" + // 0x98 - 0x9F - "\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA" + // 0xA0 - 0xA7 - "\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00A4" + // 0xA8 - 0xAF - "\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556" + // 0xB0 - 0xB7 - "\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510" + // 0xB8 - 0xBF - "\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F" + // 0xC0 - 0xC7 - "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567" + // 0xC8 - 0xCF - "\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B" + // 0xD0 - 0xD7 - "\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580" + // 0xD8 - 0xDF - "\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4" + // 0xE0 - 0xE7 - "\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229" + // 0xE8 - 0xEF - "\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248" + // 0xF0 - 0xF7 - "\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00FF\u00AD\u0000\u009C\u00AF\u0000\u0000\u0000" + - "\u0000\u0000\u00A6\u00AE\u00AA\u0000\u0000\u0000" + - "\u00F8\u00F1\u00FD\u0000\u0000\u00E6\u0000\u00FA" + - "\u0000\u0000\u00A7\u0000\u00AC\u00AB\u0000\u00A8" + - "\u0000\u0000\u0000\u0000\u008E\u008F\u0092\u0080" + - "\u0000\u0090\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00A5\u0000\u0000\u0000\u0000\u0099\u0000" + - "\u009D\u0000\u0000\u0000\u009A\u0000\u0000\u00E1" + - "\u0085\u00A0\u0083\u0000\u0084\u0086\u0091\u0087" + - "\u008A\u0082\u0088\u0089\u008D\u00A1\u008C\u008B" + - "\u0000\u00A4\u0095\u00A2\u0093\u0000\u0094\u00F6" + - "\u009B\u0097\u00A3\u0096\u0081\u0000\u0000\u0098" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u009F\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00E2\u0000\u0000\u0000\u0000" + - "\u00E9\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00E4\u0000\u0000\u00E8\u0000" + - "\u0000\u00EA\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00E0\u0000\u0000\u00EB\u00EE\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00E3\u0000\u0000\u00E5\u00E7\u0000\u00ED\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00FC\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u009E\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00F9" + - "\u00FB\u0000\u0000\u0000\u00EC\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00EF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00F7\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00F0" + - "\u0000\u0000\u00F3\u00F2\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00A9\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00F4\u00F5" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00C4\u0000" + - "\u00B3\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00DA\u0000\u0000\u0000\u00BF\u0000" + - "\u0000\u0000\u00C0\u0000\u0000\u0000\u00D9\u0000" + - "\u0000\u0000\u00C3\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00B4\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00C2\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00C1\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00C5\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00CD\u00BA" + - "\u00D5\u00D6\u00C9\u00B8\u00B7\u00BB\u00D4\u00D3" + - "\u00C8\u00BE\u00BD\u00BC\u00C6\u00C7\u00CC\u00B5" + - "\u00B6\u00B9\u00D1\u00D2\u00CB\u00CF\u00D0\u00CA" + - "\u00D8\u00D7\u00CE\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00DF\u0000" + - "\u0000\u0000\u00DC\u0000\u0000\u0000\u00DB\u0000" + - "\u0000\u0000\u00DD\u0000\u0000\u0000\u00DE\u00B0" + - "\u00B1\u00B2\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00FE\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 403, 512, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 711, 403, 942, 1182, 403, 1438, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM868.java b/src/share/classes/sun/nio/cs/ext/IBM868.java deleted file mode 100644 index c3e0a32b9337aacb36b85054747c4a8d728d8d62..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM868.java +++ /dev/null @@ -1,359 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM868 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM868() { - super("IBM868", ExtendedCharsets.aliasesFor("IBM868")); - } - - public String historicalName() { - return "Cp868"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM868); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u06F0\u06F1\u06F2\u06F3\u06F4\u06F5\u06F6\u06F7" + // 0x80 - 0x87 - "\u06F8\u06F9\u060C\u061B\u061F\uFE81\uFE8D\uFE8E" + // 0x88 - 0x8F - "\uF8FB\uFE8F\uFE91\uFB56\uFB58\uFE93\uFE95\uFE97" + // 0x90 - 0x97 - "\uFB66\uFB68\uFE99\uFE9B\uFE9D\uFE9F\uFB7A\uFB7C" + // 0x98 - 0x9F - "\uFEA1\uFEA3\uFEA5\uFEA7\uFEA9\uFB88\uFEAB\uFEAD" + // 0xA0 - 0xA7 - "\uFB8C\uFEAF\uFB8A\uFEB1\uFEB3\uFEB5\u00AB\u00BB" + // 0xA8 - 0xAF - "\u2591\u2592\u2593\u2502\u2524\uFEB7\uFEB9\uFEBB" + // 0xB0 - 0xB7 - "\uFEBD\u2563\u2551\u2557\u255D\uFEBF\uFEC3\u2510" + // 0xB8 - 0xBF - "\u2514\u2534\u252C\u251C\u2500\u253C\uFEC7\uFEC9" + // 0xC0 - 0xC7 - "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\uFECA" + // 0xC8 - 0xCF - "\uFECB\uFECC\uFECD\uFECE\uFECF\uFED0\uFED1\uFED3" + // 0xD0 - 0xD7 - "\uFED5\u2518\u250C\u2588\u2584\uFED7\uFB8E\u2580" + // 0xD8 - 0xDF - "\uFEDB\uFB92\uFB94\uFEDD\uFEDF\uFEE0\uFEE1\uFEE3" + // 0xE0 - 0xE7 - "\uFB9E\uFEE5\uFEE7\uFE85\uFEED\uFBA6\uFBA8\uFBA9" + // 0xE8 - 0xEF - "\u00AD\uFBAA\uFE80\uFE89\uFE8A\uFE8B\uFBFC\uFBFD" + // 0xF0 - 0xF7 - "\uFBFE\uFBB0\uFBAE\uFE7C\uFE7D\uFFFD\u25A0\u00A0" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00FF\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00AE\u0000\u00F0\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00AF\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u008A\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u008B\u0000\u0000\u0000\u008C" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00C4\u0000\u00B3\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00DA\u0000\u0000\u0000" + - "\u00BF\u0000\u0000\u0000\u00C0\u0000\u0000\u0000" + - "\u00D9\u0000\u0000\u0000\u00C3\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00B4\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00C2\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00C1\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00C5\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00CD\u00BA\u0000\u0000\u00C9\u0000\u0000\u00BB" + - "\u0000\u0000\u00C8\u0000\u0000\u00BC\u0000\u0000" + - "\u00CC\u0000\u0000\u00B9\u0000\u0000\u00CB\u0000" + - "\u0000\u00CA\u0000\u0000\u00CE\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00DF\u0000\u0000\u0000\u00DC\u0000\u0000\u0000" + - "\u00DB\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00B0\u00B1\u00B2\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00FE\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0090\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0093\u0000\u0094\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0098\u0000\u0099\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u009E" + - "\u0000\u009F\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00A5\u0000\u00AA" + - "\u0000\u00A8\u0000\u00DE\u0000\u0000\u0000\u00E1" + - "\u0000\u00E2\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00E8\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00ED\u0000\u00EE\u00EF\u00F1" + - "\u0000\u0000\u0000\u00FA\u0000\u00F9\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00F6\u00F7\u00F8\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00FB\u00FC\u0000\u0000\u00F2\u008D\u0000\u0000" + - "\u0000\u00EB\u0000\u0000\u0000\u00F3\u00F4\u00F5" + - "\u0000\u008E\u008F\u0091\u0000\u0092\u0000\u0095" + - "\u0000\u0096\u0000\u0097\u0000\u009A\u0000\u009B" + - "\u0000\u009C\u0000\u009D\u0000\u00A0\u0000\u00A1" + - "\u0000\u00A2\u0000\u00A3\u0000\u00A4\u0000\u00A6" + - "\u0000\u00A7\u0000\u00A9\u0000\u00AB\u0000\u00AC" + - "\u0000\u00AD\u0000\u00B5\u0000\u00B6\u0000\u00B7" + - "\u0000\u00B8\u0000\u00BD\u0000\u0000\u0000\u00BE" + - "\u0000\u0000\u0000\u00C6\u0000\u00C7\u00CF\u00D0" + - "\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u0000\u00D7" + - "\u0000\u00D8\u0000\u00DD\u0000\u0000\u0000\u00E0" + - "\u0000\u00E3\u0000\u00E4\u00E5\u00E6\u0000\u00E7" + - "\u0000\u00E9\u0000\u00EA\u0000\u0000\u0000\u0000" + - "\u0000\u00EC\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 188, 188, 188, 188, 188, 432, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 688, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 849, 188, 188, 1101, 188, 188, 1356, 188, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM869.java b/src/share/classes/sun/nio/cs/ext/IBM869.java deleted file mode 100644 index d9375265f107750910bf5d08c9531b747b9388e2..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM869.java +++ /dev/null @@ -1,290 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM869 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM869() { - super("IBM869", ExtendedCharsets.aliasesFor("IBM869")); - } - - public String historicalName() { - return "Cp869"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM869); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD" + // 0x80 - 0x87 - "\u00B7\u00AC\u00A6\u2018\u2019\u0388\u2015\u0389" + // 0x88 - 0x8F - "\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\u00A9" + // 0x90 - 0x97 - "\u038F\u00B2\u00B3\u03AC\u00A3\u03AD\u03AE\u03AF" + // 0x98 - 0x9F - "\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394" + // 0xA0 - 0xA7 - "\u0395\u0396\u0397\u00BD\u0398\u0399\u00AB\u00BB" + // 0xA8 - 0xAF - "\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C" + // 0xB0 - 0xB7 - "\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510" + // 0xB8 - 0xBF - "\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1" + // 0xC0 - 0xC7 - "\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3" + // 0xC8 - 0xCF - "\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2" + // 0xD0 - 0xD7 - "\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580" + // 0xD8 - 0xDF - "\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD" + // 0xE0 - 0xE7 - "\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384" + // 0xE8 - 0xEF - "\u00AD\u00B1\u03C5\u03C6\u03C7\u00A7\u03C8\u0385" + // 0xF0 - 0xF7 - "\u00B0\u00A8\u03C9\u03CB\u03B0\u03CE\u25A0\u00A0" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00FF\u0000\u0000\u009C\u0000\u0000\u008A\u00F5" + - "\u00F9\u0097\u0000\u00AE\u0089\u00F0\u0000\u0000" + - "\u00F8\u00F1\u0099\u009A\u0000\u0000\u0000\u0088" + - "\u0000\u0000\u0000\u00AF\u0000\u00AB\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00EF\u00F7" + - "\u0086\u0000\u008D\u008F\u0090\u0000\u0092\u0000" + - "\u0095\u0098\u00A1\u00A4\u00A5\u00A6\u00A7\u00A8" + - "\u00A9\u00AA\u00AC\u00AD\u00B5\u00B6\u00B7\u00B8" + - "\u00BD\u00BE\u00C6\u00C7\u0000\u00CF\u00D0\u00D1" + - "\u00D2\u00D3\u00D4\u00D5\u0091\u0096\u009B\u009D" + - "\u009E\u009F\u00FC\u00D6\u00D7\u00D8\u00DD\u00DE" + - "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" + - "\u00E8\u00E9\u00EA\u00EB\u00ED\u00EC\u00EE\u00F2" + - "\u00F3\u00F4\u00F6\u00FA\u00A0\u00FB\u00A2\u00A3" + - "\u00FD\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u008E\u0000\u0000\u008B\u008C\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00C4\u0000\u00B3" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00DA\u0000\u0000\u0000\u00BF\u0000\u0000" + - "\u0000\u00C0\u0000\u0000\u0000\u00D9\u0000\u0000" + - "\u0000\u00C3\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00B4\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00C2\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00C1\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00C5\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00CD\u00BA\u0000" + - "\u0000\u00C9\u0000\u0000\u00BB\u0000\u0000\u00C8" + - "\u0000\u0000\u00BC\u0000\u0000\u00CC\u0000\u0000" + - "\u00B9\u0000\u0000\u00CB\u0000\u0000\u00CA\u0000" + - "\u0000\u00CE\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00DF\u0000\u0000" + - "\u0000\u00DC\u0000\u0000\u0000\u00DB\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00B0\u00B1" + - "\u00B2\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00FE\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 190, 190, 314, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 549, 190, 190, 190, 190, 805, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM870.java b/src/share/classes/sun/nio/cs/ext/IBM870.java deleted file mode 100644 index f756a764ceeb491df64989bc67e9a0c198c9db6f..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM870.java +++ /dev/null @@ -1,244 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM870 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM870() { - super("IBM870", ExtendedCharsets.aliasesFor("IBM870")); - } - - public String historicalName() { - return "Cp870"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM870); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u02D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u015B\u0148\u0111\u00FD\u0159\u015F" + // 0x88 - 0x8F - "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u0142\u0144\u0161\u00B8\u02DB\u00A4" + // 0x98 - 0x9F - "\u0105\u007E\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u015A\u0147\u0110\u00DD\u0158\u015E" + // 0xA8 - 0xAF - "\u02D9\u0104\u017C\u0162\u017B\u00A7\u017E\u017A" + // 0xB0 - 0xB7 - "\u017D\u0179\u0141\u0143\u0160\u00A8\u00B4\u00D7" + // 0xB8 - 0xBF - "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\u00F4\u00F6\u0155\u00F3\u0151" + // 0xC8 - 0xCF - "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u011A\u0171\u00FC\u0165\u00FA\u011B" + // 0xD8 - 0xDF - "\\\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u010F\u00D4\u00D6\u0154\u00D3\u0150" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u010E\u0170\u00DC\u0164\u00DA\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u00E2\u00E4\u0163\u00E1\u0103\u010D" + // 0x40 - 0x47 - "\u00E7\u0107\u005B\u002E\u003C\u0028\u002B\u0021" + // 0x48 - 0x4F - "\u0026\u00E9\u0119\u00EB\u016F\u00ED\u00EE\u013E" + // 0x50 - 0x57 - "\u013A\u00DF\u005D\u0024\u002A\u0029\u003B\u005E" + // 0x58 - 0x5F - "\u002D\u002F\u00C2\u00C4\u02DD\u00C1\u0102\u010C" + // 0x60 - 0x67 - "\u00C7\u0106\u007C\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u02C7\u00C9\u0118\u00CB\u016E\u00CD\u00CE\u013D" + // 0x70 - 0x77 - "\u0139\u0060\u003A\u0023\u0040\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u004A\u00E0\u005A\u005F\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00C0\u006A\u00D0\u00A1\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u0000\u0000\u0000\u009F\u0000\u0000\u00B5" + - "\u00BD\u0000\u0000\u0000\u0000\u00CA\u0000\u0000" + - "\u0090\u0000\u0000\u0000\u00BE\u0000\u0000\u0000" + - "\u009D\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0065\u0062\u0000\u0063\u0000\u0000\u0068" + - "\u0000\u0071\u0000\u0073\u0000\u0075\u0076\u0000" + - "\u0000\u0000\u0000\u00EE\u00EB\u0000\u00EC\u00BF" + - "\u0000\u0000\u00FE\u0000\u00FC\u00AD\u0000\u0059" + - "\u0000\u0045\u0042\u0000\u0043\u0000\u0000\u0048" + - "\u0000\u0051\u0000\u0053\u0000\u0055\u0056\u0000" + - "\u0000\u0000\u0000\u00CE\u00CB\u0000\u00CC\u00E1" + - "\u0000\u0000\u00DE\u0000\u00DC\u008D\u0000\u0000" + - "\u0066\u0046\u00B1\u00A0\u0069\u0049\u0000\u0000" + - "\u0000\u0000\u0067\u0047\u00FA\u00EA\u00AC\u008C" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0072\u0052" + - "\u00DA\u00DF\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0078" + - "\u0058\u0000\u0000\u0077\u0057\u0000\u0000\u00BA" + - "\u009A\u00BB\u009B\u0000\u0000\u00AB\u008B\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00EF\u00CF" + - "\u0000\u0000\u00ED\u00CD\u0000\u0000\u00AE\u008E" + - "\u00AA\u008A\u0000\u0000\u00AF\u008F\u00BC\u009C" + - "\u00B3\u0044\u00FD\u00DD\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0074\u0054\u00FB\u00DB" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00B9" + - "\u00B7\u00B4\u00B2\u00B8\u00B6\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0070\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0080\u00B0" + - "\u0000\u009E\u0000\u0064\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 254, 438, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM871.java b/src/share/classes/sun/nio/cs/ext/IBM871.java deleted file mode 100644 index c2c3b96a2977e0574fdec47b0eb398b44c9da2f9..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM871.java +++ /dev/null @@ -1,221 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM871 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM871() { - super("IBM871", ExtendedCharsets.aliasesFor("IBM871")); - } - - public String historicalName() { - return "Cp871"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM871); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - protected static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00D8\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u00AB\u00BB\u0060\u00FD\u007B\u00B1" + // 0x88 - 0x8F - "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u00AA\u00BA\u007D\u00B8\u005D\u00A4" + // 0x98 - 0x9F - "\u00B5\u00F6\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u00A1\u00BF\u0040\u00DD\u005B\u00AE" + // 0xA8 - 0xAF - "\u00A2\u00A3\u00A5\u00B7\u00A9\u00A7\u00B6\u00BC" + // 0xB0 - 0xB7 - "\u00BD\u00BE\u00AC\u007C\u00AF\u00A8\\\u00D7" + // 0xB8 - 0xBF - "\u00FE\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\u00F4\u007E\u00F2\u00F3\u00F5" + // 0xC8 - 0xCF - "\u00E6\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u00B9\u00FB\u00FC\u00F9\u00FA\u00FF" + // 0xD8 - 0xDF - "\u00B4\u00F7\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u00B2\u00D4\u005E\u00D2\u00D3\u00D5" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u00B3\u00DB\u00DC\u00D9\u00DA\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u00E2\u00E4\u00E0\u00E1\u00E3\u00E5" + // 0x40 - 0x47 - "\u00E7\u00F1\u00DE\u002E\u003C\u0028\u002B\u0021" + // 0x48 - 0x4F - "\u0026\u00E9\u00EA\u00EB\u00E8\u00ED\u00EE\u00EF" + // 0x50 - 0x57 - "\u00EC\u00DF\u00C6\u0024\u002A\u0029\u003B\u00D6" + // 0x58 - 0x5F - "\u002D\u002F\u00C2\u00C4\u00C0\u00C1\u00C3\u00C5" + // 0x60 - 0x67 - "\u00C7\u00D1\u00A6\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u00F8\u00C9\u00CA\u00CB\u00C8\u00CD\u00CE\u00CF" + // 0x70 - 0x77 - "\u00CC\u00F0\u003A\u0023\u00D0\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u00AC\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u00AE\u00BE\u009E\u00EC\u006D" + - "\u008C\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u008E\u00BB\u009C\u00CC\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u00AA\u00B0\u00B1\u009F\u00B2\u006A\u00B5" + - "\u00BD\u00B4\u009A\u008A\u00BA\u00CA\u00AF\u00BC" + - "\u0090\u008F\u00EA\u00FA\u00E0\u00A0\u00B6\u00B3" + - "\u009D\u00DA\u009B\u008B\u00B7\u00B8\u00B9\u00AB" + - "\u0064\u0065\u0062\u0066\u0063\u0067\u005A\u0068" + - "\u0074\u0071\u0072\u0073\u0078\u0075\u0076\u0077" + - "\u007C\u0069\u00ED\u00EE\u00EB\u00EF\u005F\u00BF" + - "\u0080\u00FD\u00FE\u00FB\u00FC\u00AD\u004A\u0059" + - "\u0044\u0045\u0042\u0046\u0043\u0047\u00D0\u0048" + - "\u0054\u0051\u0052\u0053\u0058\u0055\u0056\u0057" + - "\u0079\u0049\u00CD\u00CE\u00CB\u00CF\u00A1\u00E1" + - "\u0070\u00DD\u00DE\u00DB\u00DC\u008D\u00C0\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM875.java b/src/share/classes/sun/nio/cs/ext/IBM875.java deleted file mode 100644 index c3453081c817abeb3c5490be7c7629775a136d55..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM875.java +++ /dev/null @@ -1,258 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM875 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM875() { - super("x-IBM875", ExtendedCharsets.aliasesFor("x-IBM875")); - } - - public String historicalName() { - return "Cp875"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM875); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u0385\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6" + // 0x88 - 0x8F - "\u00B0\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC" + // 0x98 - 0x9F - "\u00B4\u007E\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3" + // 0xA8 - 0xAF - "\u00A3\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD" + // 0xB0 - 0xB7 - "\u03CB\u03CE\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8" + // 0xB8 - 0xBF - "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\u03C9\u0390\u03B0\u2018\u2015" + // 0xC8 - 0xCF - "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\u00B1\u00BD\uFFFD\u0387\u2019\u00A6" + // 0xD8 - 0xDF - "\\\uFFFD\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\u00B2\u00A7\uFFFD\uFFFD\u00AB\u00AC" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\u00B3\u00A9\uFFFD\uFFFD\u00BB\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u0391\u0392\u0393\u0394\u0395\u0396\u0397" + // 0x40 - 0x47 - "\u0398\u0399\u005B\u002E\u003C\u0028\u002B\u0021" + // 0x48 - 0x4F - "\u0026\u039A\u039B\u039C\u039D\u039E\u039F\u03A0" + // 0x50 - 0x57 - "\u03A1\u03A3\u005D\u0024\u002A\u0029\u003B\u005E" + // 0x58 - 0x5F - "\u002D\u002F\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9" + // 0x60 - 0x67 - "\u03AA\u03AB\u007C\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u00A8\u0386\u0388\u0389\u00A0\u038A\u038C\u038E" + // 0x70 - 0x77 - "\u038F\u0060\u003A\u0023\u0040\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u004A\u00E0\u005A\u005F\u006D" + - "\u0079\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00C0\u006A\u00D0\u00A1\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0074\u0000\u0000\u00B0\u0000\u0000\u00DF\u00EB" + - "\u0070\u00FB\u0000\u00EE\u00EF\u00CA\u0000\u0000" + - "\u0090\u00DA\u00EA\u00FA\u00A0\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00FE\u0000\u00DB\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0080\u0071" + - "\u00DD\u0072\u0073\u0075\u0000\u0076\u0000\u0077" + - "\u0078\u00CC\u0041\u0042\u0043\u0044\u0045\u0046" + - "\u0047\u0048\u0049\u0051\u0052\u0053\u0054\u0055" + - "\u0056\u0057\u0058\u0000\u0059\u0062\u0063\u0064" + - "\u0065\u0066\u0067\u0068\u0069\u00B1\u00B2\u00B3" + - "\u00B5\u00CD\u008A\u008B\u008C\u008D\u008E\u008F" + - "\u009A\u009B\u009C\u009D\u009E\u009F\u00AA\u00AB" + - "\u00AC\u00AD\u00AE\u00BA\u00AF\u00BB\u00BC\u00BD" + - "\u00BE\u00BF\u00CB\u00B4\u00B8\u00B6\u00B7\u00B9" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00CF\u0000\u0000\u00CE\u00DE\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 190, 190, 313, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 548, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM918.java b/src/share/classes/sun/nio/cs/ext/IBM918.java deleted file mode 100644 index 62a2e8dcca9998b170ce88b46265b865af0db0d1..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM918.java +++ /dev/null @@ -1,336 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM918 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM918() { - super("IBM918", ExtendedCharsets.aliasesFor("IBM918")); - } - - public String historicalName() { - return "Cp918"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM918); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\uFEA7\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x80 - 0x87 - "\u0068\u0069\uFEA9\uFB88\uFEAB\uFEAD\uFB8C\uFEAF" + // 0x88 - 0x8F - "\uFB8A\u006A\u006B\u006C\u006D\u006E\u006F\u0070" + // 0x90 - 0x97 - "\u0071\u0072\uFEB1\uFEB3\uFEB5\uFEB7\uFEB9\uFEBB" + // 0x98 - 0x9F - "\uFEBD\u007E\u0073\u0074\u0075\u0076\u0077\u0078" + // 0xA0 - 0xA7 - "\u0079\u007A\uFEBF\uFEC3\uFEC7\uFEC9\uFECA\uFECB" + // 0xA8 - 0xAF - "\uFECC\uFECD\uFECE\uFECF\uFED0\uFED1\uFED3\uFED5" + // 0xB0 - 0xB7 - "\uFED7\uFB8E\uFEDB\u007C\uFB92\uFB94\uFEDD\uFEDF" + // 0xB8 - 0xBF - "\u007B\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0xC0 - 0xC7 - "\u0048\u0049\u00AD\uFEE0\uFEE1\uFEE3\uFB9E\uFEE5" + // 0xC8 - 0xCF - "\u007D\u004A\u004B\u004C\u004D\u004E\u004F\u0050" + // 0xD0 - 0xD7 - "\u0051\u0052\uFEE7\uFE85\uFEED\uFBA6\uFBA8\uFBA9" + // 0xD8 - 0xDF - "\\\uFBAA\u0053\u0054\u0055\u0056\u0057\u0058" + // 0xE0 - 0xE7 - "\u0059\u005A\uFE80\uFE89\uFE8A\uFE8B\uFBFC\uFBFD" + // 0xE8 - 0xEF - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0xF0 - 0xF7 - "\u0038\u0039\uFBFE\uFBB0\uFBAE\uFE7C\uFE7D\u009F" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u009C\t\u0086\u007F" + // 0x00 - 0x07 - "\u0097\u008D\u008E\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u009D\n\b\u0087" + // 0x10 - 0x17 - "\u0018\u0019\u0092\u008F\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0080\u0081\u0082\u0083\u0084\n\u0017\u001B" + // 0x20 - 0x27 - "\u0088\u0089\u008A\u008B\u008C\u0005\u0006\u0007" + // 0x28 - 0x2F - "\u0090\u0091\u0016\u0093\u0094\u0095\u0096\u0004" + // 0x30 - 0x37 - "\u0098\u0099\u009A\u009B\u0014\u0015\u009E\u001A" + // 0x38 - 0x3F - "\u0020\u00A0\u060C\u061B\u061F\uFE81\uFE8D\uFE8E" + // 0x40 - 0x47 - "\uF8FB\uFE8F\u005B\u002E\u003C\u0028\u002B\u0021" + // 0x48 - 0x4F - "\u0026\uFE91\uFB56\uFB58\uFE93\uFE95\uFE97\uFB66" + // 0x50 - 0x57 - "\uFB68\uFE99\u005D\u0024\u002A\u0029\u003B\u005E" + // 0x58 - 0x5F - "\u002D\u002F\uFE9B\uFE9D\uFE9F\uFB7A\uFB7C\uFEA1" + // 0x60 - 0x67 - "\uFEA3\uFEA5\u0060\u002C\u0025\u005F\u003E\u003F" + // 0x68 - 0x6F - "\u06F0\u06F1\u06F2\u06F3\u06F4\u06F5\u06F6\u06F7" + // 0x70 - 0x77 - "\u06F8\u06F9\u003A\u0023\u0040\'\u003D\""; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0037\u002D\u002E\u002F" + - "\u0016\u0005\u0015\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u003C\u003D\u0032\u0026" + - "\u0018\u0019\u003F\'\u001C\u001D\u001E\u001F" + - "\u0040\u004F\u007F\u007B\u005B\u006C\u0050\u007D" + - "\u004D\u005D\\\u004E\u006B\u0060\u004B\u0061" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u007A\u005E\u004C\u007E\u006E\u006F" + - "\u007C\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u004A\u00E0\u005A\u005F\u006D" + - "\u006A\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u0091\u0092\u0093\u0094\u0095\u0096" + - "\u0097\u0098\u0099\u00A2\u00A3\u00A4\u00A5\u00A6" + - "\u00A7\u00A8\u00A9\u00C0\u00BB\u00D0\u00A1\u0007" + - "\u0020\u0021\"\u0023\u0024\u0015\u0006\u0017" + - "\u0028\u0029\u002A\u002B\u002C\t\n\u001B" + - "\u0030\u0031\u001A\u0033\u0034\u0035\u0036\b" + - "\u0038\u0039\u003A\u003B\u0004\u0014\u003E\u00FF" + - "\u0041\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00CA\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0042\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0043\u0000\u0000" + - "\u0000\u0044\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0070\u0071\u0072\u0073\u0074\u0075" + - "\u0076\u0077\u0078\u0079\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0048" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0052\u0000" + - "\u0053\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0057\u0000" + - "\u0058\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0065\u0000\u0066\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u008B\u0000\u0090\u0000\u008E\u0000\u00B9\u0000" + - "\u0000\u0000\u00BC\u0000\u00BD\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00CE\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00DD\u0000" + - "\u00DE\u00DF\u00E1\u0000\u0000\u0000\u00FC\u0000" + - "\u00FB\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00EE\u00EF\u00FA\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00FD\u00FE\u0000\u0000\u00EA" + - "\u0045\u0000\u0000\u0000\u00DB\u0000\u0000\u0000" + - "\u00EB\u00EC\u00ED\u0000\u0046\u0047\u0049\u0000" + - "\u0051\u0000\u0054\u0000\u0055\u0000\u0056\u0000" + - "\u0059\u0000\u0062\u0000\u0063\u0000\u0064\u0000" + - "\u0067\u0000\u0068\u0000\u0069\u0000\u0080\u0000" + - "\u008A\u0000\u008C\u0000\u008D\u0000\u008F\u0000" + - "\u009A\u0000\u009B\u0000\u009C\u0000\u009D\u0000" + - "\u009E\u0000\u009F\u0000\u00A0\u0000\u00AA\u0000" + - "\u0000\u0000\u00AB\u0000\u0000\u0000\u00AC\u0000" + - "\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4" + - "\u00B5\u0000\u00B6\u0000\u00B7\u0000\u00B8\u0000" + - "\u0000\u0000\u00BA\u0000\u00BE\u0000\u00BF\u00CB" + - "\u00CC\u0000\u00CD\u0000\u00CF\u0000\u00DA\u0000" + - "\u0000\u0000\u0000\u0000\u00DC\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 174, 174, 174, 174, 174, 418, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 668, 174, 174, 920, 174, 174, 1175, 174, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM921.java b/src/share/classes/sun/nio/cs/ext/IBM921.java deleted file mode 100644 index 763a97e02db02e07be7c5397885c805524e49006..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM921.java +++ /dev/null @@ -1,266 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM921 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM921() { - super("x-IBM921", ExtendedCharsets.aliasesFor("x-IBM921")); - } - - public String historicalName() { - return "Cp921"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM921); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + // 0x80 - 0x87 - "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" + // 0x88 - 0x8F - "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" + // 0x90 - 0x97 - "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" + // 0x98 - 0x9F - "\u00A0\u201D\u00A2\u00A3\u00A4\u201E\u00A6\u00A7" + // 0xA0 - 0xA7 - "\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6" + // 0xA8 - 0xAF - "\u00B0\u00B1\u00B2\u00B3\u201C\u00B5\u00B6\u00B7" + // 0xB0 - 0xB7 - "\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6" + // 0xB8 - 0xBF - "\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112" + // 0xC0 - 0xC7 - "\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B" + // 0xC8 - 0xCF - "\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7" + // 0xD0 - 0xD7 - "\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF" + // 0xD8 - 0xDF - "\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113" + // 0xE0 - 0xE7 - "\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C" + // 0xE8 - 0xEF - "\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7" + // 0xF0 - 0xF7 - "\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u2019" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" + - "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" + - "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" + - "\u00A0\u0000\u00A2\u00A3\u00A4\u0000\u00A6\u00A7" + - "\u0000\u00A9\u0000\u00AB\u00AC\u00AD\u00AE\u0000" + - "\u00B0\u00B1\u00B2\u00B3\u0000\u00B5\u00B6\u00B7" + - "\u0000\u00B9\u0000\u00BB\u00BC\u00BD\u00BE\u0000" + - "\u0000\u0000\u0000\u0000\u00C4\u00C5\u00AF\u0000" + - "\u0000\u00C9\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00D3\u0000\u00D5\u00D6\u00D7" + - "\u00A8\u0000\u0000\u0000\u00DC\u0000\u0000\u00DF" + - "\u0000\u0000\u0000\u0000\u00E4\u00E5\u00BF\u0000" + - "\u0000\u00E9\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00F3\u0000\u00F5\u00F6\u00F7" + - "\u00B8\u0000\u0000\u0000\u00FC\u0000\u0000\u0000" + - "\u00C2\u00E2\u0000\u0000\u00C0\u00E0\u00C3\u00E3" + - "\u0000\u0000\u0000\u0000\u00C8\u00E8\u0000\u0000" + - "\u0000\u0000\u00C7\u00E7\u0000\u0000\u00CB\u00EB" + - "\u00C6\u00E6\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00CC\u00EC\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00CE\u00EE\u0000\u0000\u00C1\u00E1" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00CD\u00ED" + - "\u0000\u0000\u0000\u00CF\u00EF\u0000\u0000\u0000" + - "\u0000\u00D9\u00F9\u00D1\u00F1\u00D2\u00F2\u0000" + - "\u0000\u0000\u0000\u0000\u00D4\u00F4\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00AA\u00BA" + - "\u0000\u0000\u00DA\u00FA\u0000\u0000\u0000\u0000" + - "\u00D0\u00F0\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00DB\u00FB\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00D8\u00F8\u0000\u0000\u0000\u0000" + - "\u0000\u00CA\u00EA\u00DD\u00FD\u00DE\u00FE\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00FF" + - "\u0000\u0000\u00B4\u00A1\u00A5\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 614, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/IBM922.java b/src/share/classes/sun/nio/cs/ext/IBM922.java deleted file mode 100644 index 05280c935771f7e6da41d049839733aeaf1bea91..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/IBM922.java +++ /dev/null @@ -1,262 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class IBM922 - extends Charset - implements HistoricallyNamedCharset -{ - - public IBM922() { - super("x-IBM922", ExtendedCharsets.aliasesFor("x-IBM922")); - } - - public String historicalName() { - return "Cp922"; - } - - public boolean contains(Charset cs) { - return (cs instanceof IBM922); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + // 0x80 - 0x87 - "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" + // 0x88 - 0x8F - "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" + // 0x90 - 0x97 - "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" + // 0x98 - 0x9F - "\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" + // 0xA0 - 0xA7 - "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u203E" + // 0xA8 - 0xAF - "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" + // 0xB0 - 0xB7 - "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" + // 0xB8 - 0xBF - "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + // 0xC0 - 0xC7 - "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" + // 0xC8 - 0xCF - "\u0160\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7" + // 0xD0 - 0xD7 - "\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u017D\u00DF" + // 0xD8 - 0xDF - "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" + // 0xE0 - 0xE7 - "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" + // 0xE8 - 0xEF - "\u0161\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + // 0xF0 - 0xF7 - "\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u017E\u00FF" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" + - "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" + - "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" + - "\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" + - "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u0000" + - "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" + - "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" + - "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" + - "\u0000\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7" + - "\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u0000\u00DF" + - "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" + - "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" + - "\u0000\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u0000\u00FF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00D0\u00F0\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00DE\u00FE\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00AF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000"; - - private final static short index1[] = { - 0, 256, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 577, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/ISO_8859_11.java b/src/share/classes/sun/nio/cs/ext/ISO_8859_11.java deleted file mode 100644 index 8e49b22c5ec98345539a083ad6e2378fb914cee2..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/ISO_8859_11.java +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -/* - * - * NIO charset Support for Latin/Thai x-ISO-8859-11 charset - * (Currently not IANA registered) - */ - -package sun.nio.cs.ext; - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.SingleByteDecoder; - -public class ISO_8859_11 extends Charset -{ - - public ISO_8859_11() { - super("x-iso-8859-11", ExtendedCharsets.aliasesFor("x-iso-8859-11")); - } - - public boolean contains(Charset cs) { - return ((cs.name().equals("US-ASCII")) - || (cs instanceof ISO_8859_11)); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - protected static class Decoder extends SingleByteDecoder { - - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + // 0x80 - 0x87 - "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" + // 0x88 - 0x8F - "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" + // 0x90 - 0x97 - "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" + // 0x98 - 0x9F - "\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07" + // 0xA0 - 0xA7 - "\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F" + // 0xA8 - 0xAF - "\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17" + // 0xB0 - 0xB7 - "\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F" + // 0xB8 - 0xBF - "\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27" + // 0xC0 - 0xC7 - "\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F" + // 0xC8 - 0xCF - "\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37" + // 0xD0 - 0xD7 - "\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F" + // 0xD8 - 0xDF - "\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47" + // 0xE0 - 0xE7 - "\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F" + // 0xE8 - 0xEF - "\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57" + // 0xF0 - 0xF7 - "\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - protected static class Encoder extends SingleByteEncoder { - - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" + - "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" + - "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" + - "\u00A0\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" + - "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" + - "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" + - "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" + - "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" + - "\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7" + - "\u00D8\u00D9\u00DA\u0000\u0000\u0000\u0000\u00DF" + - "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" + - "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u00FA\u00FB\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 416, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/ISO_8859_3.java b/src/share/classes/sun/nio/cs/ext/ISO_8859_3.java deleted file mode 100644 index 6554891055c3d778169a3457f4c67eef25dae392..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/ISO_8859_3.java +++ /dev/null @@ -1,243 +0,0 @@ - -/* - * Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - -import java.nio.ByteBuffer; -import java.nio.CharBuffer; -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import java.nio.charset.CharacterCodingException; -import java.nio.charset.MalformedInputException; -import java.nio.charset.UnmappableCharacterException; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class ISO_8859_3 - extends Charset - implements HistoricallyNamedCharset -{ - - public ISO_8859_3() { - super("ISO-8859-3", ExtendedCharsets.aliasesFor("ISO-8859-3")); - } - - public String historicalName() { - return "ISO8859_3"; - } - - public boolean contains(Charset cs) { - return ((cs.name().equals("US-ASCII")) - || (cs instanceof ISO_8859_3)); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + // 0x80 - 0x87 - "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" + // 0x88 - 0x8F - "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" + // 0x90 - 0x97 - "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" + // 0x98 - 0x9F - "\u00A0\u0126\u02D8\u00A3\u00A4\uFFFD\u0124\u00A7" + // 0xA0 - 0xA7 - "\u00A8\u0130\u015E\u011E\u0134\u00AD\uFFFD\u017B" + // 0xA8 - 0xAF - "\u00B0\u0127\u00B2\u00B3\u00B4\u00B5\u0125\u00B7" + // 0xB0 - 0xB7 - "\u00B8\u0131\u015F\u011F\u0135\u00BD\uFFFD\u017C" + // 0xB8 - 0xBF - "\u00C0\u00C1\u00C2\uFFFD\u00C4\u010A\u0108\u00C7" + // 0xC0 - 0xC7 - "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" + // 0xC8 - 0xCF - "\uFFFD\u00D1\u00D2\u00D3\u00D4\u0120\u00D6\u00D7" + // 0xD0 - 0xD7 - "\u011C\u00D9\u00DA\u00DB\u00DC\u016C\u015C\u00DF" + // 0xD8 - 0xDF - "\u00E0\u00E1\u00E2\uFFFD\u00E4\u010B\u0109\u00E7" + // 0xE0 - 0xE7 - "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" + // 0xE8 - 0xEF - "\uFFFD\u00F1\u00F2\u00F3\u00F4\u0121\u00F6\u00F7" + // 0xF0 - 0xF7 - "\u011D\u00F9\u00FA\u00FB\u00FC\u016D\u015D\u02D9" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" + - "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" + - "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" + - "\u00A0\u0000\u0000\u00A3\u00A4\u0000\u0000\u00A7" + - "\u00A8\u0000\u0000\u0000\u0000\u00AD\u0000\u0000" + - "\u00B0\u0000\u00B2\u00B3\u00B4\u00B5\u0000\u00B7" + - "\u00B8\u0000\u0000\u0000\u0000\u00BD\u0000\u0000" + - "\u00C0\u00C1\u00C2\u0000\u00C4\u0000\u0000\u00C7" + - "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" + - "\u0000\u00D1\u00D2\u00D3\u00D4\u0000\u00D6\u00D7" + - "\u0000\u00D9\u00DA\u00DB\u00DC\u0000\u0000\u00DF" + - "\u00E0\u00E1\u00E2\u0000\u00E4\u0000\u0000\u00E7" + - "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" + - "\u0000\u00F1\u00F2\u00F3\u00F4\u0000\u00F6\u00F7" + - "\u0000\u00F9\u00FA\u00FB\u00FC\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00C6\u00E6\u00C5" + - "\u00E5\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00D8\u00F8\u00AB\u00BB\u00D5\u00F5\u0000" + - "\u0000\u00A6\u00B6\u00A1\u00B1\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00A9\u00B9\u0000" + - "\u0000\u00AC\u00BC\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00DE\u00FE\u00AA\u00BA\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00DD\u00FD\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00AF\u00BF\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00A2\u00FF\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000"; - - private final static short index1[] = { - 0, 253, 418, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/ISO_8859_6.java b/src/share/classes/sun/nio/cs/ext/ISO_8859_6.java deleted file mode 100644 index 56b7cf4308871c476b8e900e6bb13718c0d2b8fc..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/ISO_8859_6.java +++ /dev/null @@ -1,246 +0,0 @@ - -/* - * Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - -import java.nio.ByteBuffer; -import java.nio.CharBuffer; -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import java.nio.charset.CharacterCodingException; -import java.nio.charset.MalformedInputException; -import java.nio.charset.UnmappableCharacterException; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class ISO_8859_6 - extends Charset - implements HistoricallyNamedCharset -{ - - public ISO_8859_6() { - super("ISO-8859-6", ExtendedCharsets.aliasesFor("ISO-8859-6")); - } - - public String historicalName() { - return "ISO8859_6"; - } - - public boolean contains(Charset cs) { - return ((cs.name().equals("US-ASCII")) - || (cs instanceof ISO_8859_6)); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + // 0x80 - 0x87 - "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" + // 0x88 - 0x8F - "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" + // 0x90 - 0x97 - "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" + // 0x98 - 0x9F - "\u00A0\uFFFD\uFFFD\uFFFD\u00A4\uFFFD\uFFFD\uFFFD" + // 0xA0 - 0xA7 - "\uFFFD\uFFFD\uFFFD\uFFFD\u060C\u00AD\uFFFD\uFFFD" + // 0xA8 - 0xAF - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xB0 - 0xB7 - "\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F" + // 0xB8 - 0xBF - "\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627" + // 0xC0 - 0xC7 - "\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F" + // 0xC8 - 0xCF - "\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637" + // 0xD0 - 0xD7 - "\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xD8 - 0xDF - "\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647" + // 0xE0 - 0xE7 - "\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F" + // 0xE8 - 0xEF - "\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xF0 - 0xF7 - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" + - "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" + - "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" + - "\u00A0\u0000\u0000\u0000\u00A4\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00AD\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00AC\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00BB\u0000\u0000" + - "\u0000\u00BF\u0000\u00C1\u00C2\u00C3\u00C4\u00C5" + - "\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD" + - "\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5" + - "\u00D6\u00D7\u00D8\u00D9\u00DA\u0000\u0000\u0000" + - "\u0000\u0000\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5" + - "\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED" + - "\u00EE\u00EF\u00F0\u00F1\u00F2\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000"; - - private final static short index1[] = { - 0, 174, 174, 174, 174, 174, 418, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/ISO_8859_8.java b/src/share/classes/sun/nio/cs/ext/ISO_8859_8.java deleted file mode 100644 index fca3a86f11602ceac3caa53c37de2c31625918cc..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/ISO_8859_8.java +++ /dev/null @@ -1,259 +0,0 @@ - -/* - * Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - -import java.nio.ByteBuffer; -import java.nio.CharBuffer; -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import java.nio.charset.CharacterCodingException; -import java.nio.charset.MalformedInputException; -import java.nio.charset.UnmappableCharacterException; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - - -public class ISO_8859_8 - extends Charset - implements HistoricallyNamedCharset -{ - - public ISO_8859_8() { - super("ISO-8859-8", ExtendedCharsets.aliasesFor("ISO-8859-8")); - } - - public String historicalName() { - return "ISO8859_8"; - } - - public boolean contains(Charset cs) { - return ((cs.name().equals("US-ASCII")) - || (cs instanceof ISO_8859_8)); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + // 0x80 - 0x87 - "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" + // 0x88 - 0x8F - "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" + // 0x90 - 0x97 - "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" + // 0x98 - 0x9F - "\u00A0\uFFFD\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" + // 0xA0 - 0xA7 - "\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF" + // 0xA8 - 0xAF - "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" + // 0xB0 - 0xB7 - "\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\uFFFD" + // 0xB8 - 0xBF - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xC0 - 0xC7 - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xC8 - 0xCF - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xD0 - 0xD7 - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017" + // 0xD8 - 0xDF - "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7" + // 0xE0 - 0xE7 - "\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF" + // 0xE8 - 0xEF - "\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7" + // 0xF0 - 0xF7 - "\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087" + - "\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F" + - "\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097" + - "\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F" + - "\u00A0\u0000\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" + - "\u00A8\u00A9\u0000\u00AB\u00AC\u00AD\u00AE\u00AF" + - "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" + - "\u00B8\u00B9\u0000\u00BB\u00BC\u00BD\u00BE\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00AA" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BA" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" + - "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u00FA\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00FD\u00FE\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00DF\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000"; - private final static short index1[] = { - 0, 248, 248, 248, 248, 296, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 538, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/MS1255.java b/src/share/classes/sun/nio/cs/ext/MS1255.java deleted file mode 100644 index d249f1d9503bed6dd17bcef0c8c93fc00bc9d505..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/MS1255.java +++ /dev/null @@ -1,333 +0,0 @@ - -/* - * Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - -import java.nio.ByteBuffer; -import java.nio.CharBuffer; -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import java.nio.charset.CharacterCodingException; -import java.nio.charset.MalformedInputException; -import java.nio.charset.UnmappableCharacterException; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - - -public class MS1255 - extends Charset - implements HistoricallyNamedCharset -{ - - public String historicalName() { - return "Cp1255"; - } - - public MS1255() { - super("windows-1255", ExtendedCharsets.aliasesFor("windows-1255")); - } - - public boolean contains(Charset cs) { - return ((cs.name().equals("US-ASCII")) - || (cs instanceof MS1255)); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return MS1255.Decoder.byteToCharTable; - } - - public short[] getEncoderIndex1() { - return MS1255.Encoder.index1; - } - - public String getEncoderIndex2() { - return MS1255.Encoder.index2; - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021" + // 0x80 - 0x87 - "\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x88 - 0x8F - "\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014" + // 0x90 - 0x97 - "\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x98 - 0x9F - "\u00A0\u00A1\u00A2\u00A3\u20AA\u00A5\u00A6\u00A7" + // 0xA0 - 0xA7 - "\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF" + // 0xA8 - 0xAF - "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" + // 0xB0 - 0xB7 - "\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\u00BF" + // 0xB8 - 0xBF - "\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7" + // 0xC0 - 0xC7 - "\u05B8\u05B9\uFFFD\u05BB\u05BC\u05BD\u05BE\u05BF" + // 0xC8 - 0xCF - "\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3" + // 0xD0 - 0xD7 - "\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xD8 - 0xDF - "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7" + // 0xE0 - 0xE7 - "\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF" + // 0xE8 - 0xEF - "\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7" + // 0xF0 - 0xF7 - "\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00A0\u00A1\u00A2\u00A3\u0000\u00A5\u00A6\u00A7" + - "\u00A8\u00A9\u0000\u00AB\u00AC\u00AD\u00AE\u00AF" + - "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" + - "\u00B8\u00B9\u0000\u00BB\u00BC\u00BD\u00BE\u00BF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00AA" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BA" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0083\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0088\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0098\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5" + - "\u00C6\u00C7\u00C8\u00C9\u0000\u00CB\u00CC\u00CD" + - "\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5" + - "\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED" + - "\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5" + - "\u00F6\u00F7\u00F8\u00F9\u00FA\u0000\u0000\u0000" + - "\u0000\u0000\u00D4\u00D5\u00D6\u00D7\u00D8\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00FD\u00FE\u0000" + - "\u0000\u0000\u0096\u0097\u0000\u0000\u0000\u0091" + - "\u0092\u0082\u0000\u0093\u0094\u0084\u0000\u0086" + - "\u0087\u0095\u0000\u0000\u0000\u0085\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0089" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u008B\u009B\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00A4\u0000\u0080\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0099" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 248, 453, 395, 395, 674, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 919, 1141, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/MS1256.java b/src/share/classes/sun/nio/cs/ext/MS1256.java deleted file mode 100644 index 3f6522580a981b9c54cae0568f9d937e2bf60067..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/MS1256.java +++ /dev/null @@ -1,334 +0,0 @@ - -/* - * Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - -import java.nio.ByteBuffer; -import java.nio.CharBuffer; -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import java.nio.charset.CharacterCodingException; -import java.nio.charset.MalformedInputException; -import java.nio.charset.UnmappableCharacterException; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class MS1256 - extends Charset - implements HistoricallyNamedCharset -{ - - public String historicalName() { - return "Cp1256"; - } - - public MS1256() { - super("windows-1256", ExtendedCharsets.aliasesFor("windows-1256")); - } - - public boolean contains(Charset cs) { - return ((cs.name().equals("US-ASCII")) - || (cs instanceof MS1256)); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return MS1256.Decoder.byteToCharTable; - } - - public short[] getEncoderIndex1() { - return MS1256.Encoder.index1; - } - - public String getEncoderIndex2() { - return MS1256.Encoder.index2; - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021" + // 0x80 - 0x87 - "\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688" + // 0x88 - 0x8F - "\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014" + // 0x90 - 0x97 - "\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA" + // 0x98 - 0x9F - "\u00A0\u060C\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" + // 0xA0 - 0xA7 - "\u00A8\u00A9\u06BE\u00AB\u00AC\u00AD\u00AE\u00AF" + // 0xA8 - 0xAF - "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" + // 0xB0 - 0xB7 - "\u00B8\u00B9\u061B\u00BB\u00BC\u00BD\u00BE\u061F" + // 0xB8 - 0xBF - "\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627" + // 0xC0 - 0xC7 - "\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F" + // 0xC8 - 0xCF - "\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u00D7" + // 0xD0 - 0xD7 - "\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643" + // 0xD8 - 0xDF - "\u00E0\u0644\u00E2\u0645\u0646\u0647\u0648\u00E7" + // 0xE0 - 0xE7 - "\u00E8\u00E9\u00EA\u00EB\u0649\u064A\u00EE\u00EF" + // 0xE8 - 0xEF - "\u064B\u064C\u064D\u064E\u00F4\u064F\u0650\u00F7" + // 0xF0 - 0xF7 - "\u0651\u00F9\u0652\u00FB\u00FC\u200E\u200F\u06D2" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00A0\u0000\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" + - "\u00A8\u00A9\u0000\u00AB\u00AC\u00AD\u00AE\u00AF" + - "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" + - "\u00B8\u00B9\u0000\u00BB\u00BC\u00BD\u00BE\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00D7" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00E0\u0000\u00E2\u0000\u0000\u0000\u0000\u00E7" + - "\u00E8\u00E9\u00EA\u00EB\u0000\u0000\u00EE\u00EF" + - "\u0000\u0000\u0000\u0000\u00F4\u0000\u0000\u00F7" + - "\u0000\u00F9\u0000\u00FB\u00FC\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u008C" + - "\u009C\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0083" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0088\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00A1\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00BA\u0000\u0000\u0000\u00BF\u0000\u00C1" + - "\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9" + - "\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1" + - "\u00D2\u00D3\u00D4\u00D5\u00D6\u00D8\u00D9\u00DA" + - "\u00DB\u0000\u0000\u0000\u0000\u0000\u00DC\u00DD" + - "\u00DE\u00DF\u00E1\u00E3\u00E4\u00E5\u00E6\u00EC" + - "\u00ED\u00F0\u00F1\u00F2\u00F3\u00F5\u00F6\u00F8" + - "\u00FA\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u008A" + - "\u0000\u0000\u0000\u0000\u0081\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u008D\u0000\u008F\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u009A" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u008E\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0098" + - "\u0000\u0000\u0000\u0000\u0000\u0090\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u009F\u0000\u0000\u0000\u00AA\u0000\u0000\u00C0" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00FF\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u009D\u009E" + - "\u00FD\u00FE\u0000\u0000\u0000\u0096\u0097\u0000" + - "\u0000\u0000\u0091\u0092\u0082\u0000\u0093\u0094" + - "\u0084\u0000\u0086\u0087\u0095\u0000\u0000\u0000" + - "\u0085\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0089\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u008B\u009B\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0080\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0099\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 253, 458, 400, 400, 400, 702, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 946, 1168, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/MS1258.java b/src/share/classes/sun/nio/cs/ext/MS1258.java deleted file mode 100644 index 6e8d6cca393007e30856f9abe5a23430f293e310..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/MS1258.java +++ /dev/null @@ -1,340 +0,0 @@ - -/* - * Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - -import java.nio.ByteBuffer; -import java.nio.CharBuffer; -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import java.nio.charset.CharacterCodingException; -import java.nio.charset.MalformedInputException; -import java.nio.charset.UnmappableCharacterException; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class MS1258 - extends Charset - implements HistoricallyNamedCharset -{ - - public String historicalName() { - return "Cp1258"; - } - - public MS1258() { - super("windows-1258", ExtendedCharsets.aliasesFor("windows-1258")); - } - - public boolean contains(Charset cs) { - return ((cs.name().equals("US-ASCII")) - || (cs instanceof MS1258)); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return MS1258.Decoder.byteToCharTable; - } - - public short[] getEncoderIndex1() { - return MS1258.Encoder.index1; - } - - public String getEncoderIndex2() { - return MS1258.Encoder.index2; - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021" + // 0x80 - 0x87 - "\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD" + // 0x88 - 0x8F - "\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014" + // 0x90 - 0x97 - "\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178" + // 0x98 - 0x9F - "\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" + // 0xA0 - 0xA7 - "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" + // 0xA8 - 0xAF - "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" + // 0xB0 - 0xB7 - "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" + // 0xB8 - 0xBF - "\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7" + // 0xC0 - 0xC7 - "\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF" + // 0xC8 - 0xCF - "\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7" + // 0xD0 - 0xD7 - "\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF" + // 0xD8 - 0xDF - "\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7" + // 0xE0 - 0xE7 - "\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF" + // 0xE8 - 0xEF - "\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7" + // 0xF0 - 0xF7 - "\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" + - "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" + - "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" + - "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" + - "\u00C0\u00C1\u00C2\u0000\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00CA\u00CB\u0000\u00CD\u00CE\u00CF" + - "\u0000\u00D1\u0000\u00D3\u00D4\u0000\u00D6\u00D7" + - "\u00D8\u00D9\u00DA\u00DB\u00DC\u0000\u0000\u00DF" + - "\u00E0\u00E1\u00E2\u0000\u00E4\u00E5\u00E6\u00E7" + - "\u00E8\u00E9\u00EA\u00EB\u0000\u00ED\u00EE\u00EF" + - "\u0000\u00F1\u0000\u00F3\u00F4\u0000\u00F6\u00F7" + - "\u00F8\u00F9\u00FA\u00FB\u00FC\u0000\u0000\u00FF" + - "\u0000\u0000\u00C3\u00E3\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00D0\u00F0\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u008C\u009C\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u009F\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0083\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00D5\u00F5\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00DD" + - "\u00FD\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0088\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0098" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00CC\u00EC\u0000\u00DE\u0000" + - "\u0000\u0000\u0000\u0000\u00D2\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00F2\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0096\u0097\u0000\u0000\u0000" + - "\u0091\u0092\u0082\u0000\u0093\u0094\u0084\u0000" + - "\u0086\u0087\u0095\u0000\u0000\u0000\u0085\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0089\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u008B\u009B\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00FE\u0080\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0099\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 491, 747, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 984, 1206, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/MS874.java b/src/share/classes/sun/nio/cs/ext/MS874.java deleted file mode 100644 index 70940698ee8321eed007c55a8d1971f2588d0c74..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/MS874.java +++ /dev/null @@ -1,267 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -/* - */ - -package sun.nio.cs.ext; - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class MS874 extends Charset implements HistoricallyNamedCharset -{ - public MS874() { - super("x-windows-874", ExtendedCharsets.aliasesFor("x-windows-874")); - } - - public String historicalName() { - return "MS874"; - } - - public boolean contains(Charset cs) { - return ((cs.name().equals("US-ASCII")) - || (cs instanceof MS874)); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - protected static class Decoder extends SingleByteDecoder { - - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - "\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD" + // 0x80 - 0x87 - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x88 - 0x8F - "\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014" + // 0x90 - 0x97 - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x98 - 0x9F - "\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07" + // 0xA0 - 0xA7 - "\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F" + // 0xA8 - 0xAF - "\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17" + // 0xB0 - 0xB7 - "\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F" + // 0xB8 - 0xBF - "\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27" + // 0xC0 - 0xC7 - "\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F" + // 0xC8 - 0xCF - "\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37" + // 0xD0 - 0xD7 - "\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F" + // 0xD8 - 0xDF - "\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47" + // 0xE0 - 0xE7 - "\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F" + // 0xE8 - 0xEF - "\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57" + // 0xF0 - 0xF7 - "\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - } - - protected static class Encoder extends SingleByteEncoder { - - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00A0\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" + - "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" + - "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" + - "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" + - "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" + - "\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7" + - "\u00D8\u00D9\u00DA\u0000\u0000\u0000\u0000\u00DF" + - "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" + - "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u00FA\u00FB\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0096\u0097\u0000\u0000\u0000\u0091\u0092\u0000" + - "\u0000\u0093\u0094\u0000\u0000\u0000\u0000\u0095" + - "\u0000\u0000\u0000\u0085\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0080\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 416, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 653, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/MacArabic.java b/src/share/classes/sun/nio/cs/ext/MacArabic.java deleted file mode 100644 index 7d4d4b7d4713bf5c2b148c2164d32197dcf14bfd..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/MacArabic.java +++ /dev/null @@ -1,279 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class MacArabic - extends Charset - implements HistoricallyNamedCharset -{ - - public MacArabic() { - super("x-MacArabic", ExtendedCharsets.aliasesFor("x-MacArabic")); - } - - public String historicalName() { - return "MacArabic"; - } - - public boolean contains(Charset cs) { - return (cs instanceof MacArabic); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00C4\u00A0\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1" + // 0x80 - 0x87 - "\u00E0\u00E2\u00E4\u06BA\u00AB\u00E7\u00E9\u00E8" + // 0x88 - 0x8F - "\u00EA\u00EB\u00ED\u2026\u00EE\u00EF\u00F1\u00F3" + // 0x90 - 0x97 - "\u00BB\u00F4\u00F6\u00F7\u00FA\u00F9\u00FB\u00FC" + // 0x98 - 0x9F - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u066A\uFFFD\uFFFD" + // 0xA0 - 0xA7 - "\uFFFD\uFFFD\uFFFD\uFFFD\u060C\uFFFD\uFFFD\uFFFD" + // 0xA8 - 0xAF - "\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667" + // 0xB0 - 0xB7 - "\u0668\u0669\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F" + // 0xB8 - 0xBF - "\u066D\u0621\u0622\u0623\u0624\u0625\u0626\u0627" + // 0xC0 - 0xC7 - "\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F" + // 0xC8 - 0xCF - "\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637" + // 0xD0 - 0xD7 - "\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xD8 - 0xDF - "\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647" + // 0xE0 - 0xE7 - "\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F" + // 0xE8 - 0xEF - "\u0650\u0651\u0652\u067E\u0679\u0686\u06D5\u06A4" + // 0xF0 - 0xF7 - "\u06AF\u0688\u0691\uFFFD\uFFFD\uFFFD\u0698\u06D2" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0081\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u008C\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0098\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0080\u0000\u0000\u0082" + - "\u0000\u0083\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0084\u0000\u0000\u0000\u0000\u0085\u0000" + - "\u0000\u0000\u0000\u0000\u0086\u0000\u0000\u0000" + - "\u0088\u0087\u0089\u0000\u008A\u0000\u0000\u008D" + - "\u008F\u008E\u0090\u0091\u0000\u0092\u0094\u0095" + - "\u0000\u0096\u0000\u0097\u0099\u0000\u009A\u009B" + - "\u0000\u009D\u009C\u009E\u009F\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00AC\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00BB\u0000\u0000\u0000" + - "\u00BF\u0000\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6" + - "\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE" + - "\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6" + - "\u00D7\u00D8\u00D9\u00DA\u0000\u0000\u0000\u0000" + - "\u0000\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6" + - "\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE" + - "\u00EF\u00F0\u00F1\u00F2\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6" + - "\u00B7\u00B8\u00B9\u00A5\u0000\u0000\u00C0\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00F4\u0000\u0000\u0000\u0000\u00F3" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00F5" + - "\u0000\u00F9\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00FA\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00FE\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00F7\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00F8\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u008B\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00FF\u0000\u0000\u00F6\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0093\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 253, 253, 253, 253, 253, 497, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 715, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/MacCentralEurope.java b/src/share/classes/sun/nio/cs/ext/MacCentralEurope.java deleted file mode 100644 index f3c1510d794b2f2060d08ef4f03253e596f9d49d..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/MacCentralEurope.java +++ /dev/null @@ -1,346 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class MacCentralEurope - extends Charset - implements HistoricallyNamedCharset -{ - - public MacCentralEurope() { - super("x-MacCentralEurope", ExtendedCharsets.aliasesFor("x-MacCentralEurope")); - } - - public String historicalName() { - return "MacCentralEurope"; - } - - public boolean contains(Charset cs) { - return (cs instanceof MacCentralEurope); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00C4\u0100\u0101\u00C9\u0104\u00D6\u00DC\u00E1" + // 0x80 - 0x87 - "\u0105\u010C\u00E4\u010D\u0106\u0107\u00E9\u0179" + // 0x88 - 0x8F - "\u017A\u010E\u00ED\u010F\u0112\u0113\u0116\u00F3" + // 0x90 - 0x97 - "\u0117\u00F4\u00F6\u00F5\u00FA\u011A\u011B\u00FC" + // 0x98 - 0x9F - "\u2020\u00B0\u0118\u00A3\u00A7\u2022\u00B6\u00DF" + // 0xA0 - 0xA7 - "\u00AE\u00A9\u2122\u0119\u00A8\u2260\u0123\u012E" + // 0xA8 - 0xAF - "\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211" + // 0xB0 - 0xB7 - "\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145" + // 0xB8 - 0xBF - "\u0146\u0143\u00AC\u221A\u0144\u0147\u2206\u00AB" + // 0xC0 - 0xC7 - "\u00BB\u2026\u00A0\u0148\u0150\u00D5\u0151\u014C" + // 0xC8 - 0xCF - "\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA" + // 0xD0 - 0xD7 - "\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156" + // 0xD8 - 0xDF - "\u0157\u0160\u201A\u201E\u0161\u015A\u015B\u00C1" + // 0xE0 - 0xE7 - "\u0164\u0165\u00CD\u017D\u017E\u016A\u00D3\u00D4" + // 0xE8 - 0xEF - "\u016B\u016E\u00DA\u016F\u0170\u0171\u0172\u0173" + // 0xF0 - 0xF7 - "\u00DD\u00FD\u0137\u017B\u0141\u017C\u0122\u02C7" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00CA\u0000\u0000\u00A3\u0000\u0000\u0000\u00A4" + - "\u00AC\u00A9\u0000\u00C7\u00C2\u0000\u00A8\u0000" + - "\u00A1\u0000\u0000\u0000\u0000\u0000\u00A6\u0000" + - "\u0000\u0000\u0000\u00C8\u0000\u0000\u0000\u0000" + - "\u0000\u00E7\u0000\u0000\u0080\u0000\u0000\u0000" + - "\u0000\u0083\u0000\u0000\u0000\u00EA\u0000\u0000" + - "\u0000\u0000\u0000\u00EE\u00EF\u00CD\u0085\u0000" + - "\u0000\u0000\u00F2\u0000\u0086\u00F8\u0000\u00A7" + - "\u0000\u0087\u0000\u0000\u008A\u0000\u0000\u0000" + - "\u0000\u008E\u0000\u0000\u0000\u0092\u0000\u0000" + - "\u0000\u0000\u0000\u0097\u0099\u009B\u009A\u00D6" + - "\u0000\u0000\u009C\u0000\u009F\u00F9\u0000\u0000" + - "\u0081\u0082\u0000\u0000\u0084\u0088\u008C\u008D" + - "\u0000\u0000\u0000\u0000\u0089\u008B\u0091\u0093" + - "\u0000\u0000\u0094\u0095\u0000\u0000\u0096\u0098" + - "\u00A2\u00AB\u009D\u009E\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00FE\u00AE\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00B1\u00B4\u0000\u0000\u00AF\u00B0" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00B5\u00FA" + - "\u0000\u00BD\u00BE\u00B9\u00BA\u00BB\u00BC\u0000" + - "\u0000\u00FC\u00B8\u00C1\u00C4\u00BF\u00C0\u00C5" + - "\u00CB\u0000\u0000\u0000\u00CF\u00D8\u0000\u0000" + - "\u00CC\u00CE\u0000\u0000\u00D9\u00DA\u00DF\u00E0" + - "\u00DB\u00DE\u00E5\u00E6\u0000\u0000\u0000\u0000" + - "\u00E1\u00E4\u0000\u0000\u00E8\u00E9\u0000\u0000" + - "\u0000\u0000\u00ED\u00F0\u0000\u0000\u00F1\u00F3" + - "\u00F4\u00F5\u00F6\u00F7\u0000\u0000\u0000\u0000" + - "\u0000\u008F\u0090\u00FB\u00FD\u00EB\u00EC\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00FF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00D0\u00D1\u0000\u0000\u0000\u00D4\u00D5\u00E2" + - "\u0000\u00D2\u00D3\u00E3\u0000\u00A0\u0000\u00A5" + - "\u0000\u0000\u0000\u00C9\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00DC\u00DD" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00AA\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00B6\u0000\u0000\u0000\u00C6" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00B7\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00C3\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00AD\u0000\u0000\u0000\u00B2\u00B3\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00D7\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 440, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 677, 899, 1153, 383, 383, 1255, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/MacCroatian.java b/src/share/classes/sun/nio/cs/ext/MacCroatian.java deleted file mode 100644 index f3bd5a5bfc0e8ac40e9730e60bd92481a5fafbf8..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/MacCroatian.java +++ /dev/null @@ -1,402 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class MacCroatian - extends Charset - implements HistoricallyNamedCharset -{ - - public MacCroatian() { - super("x-MacCroatian", ExtendedCharsets.aliasesFor("x-MacCroatian")); - } - - public String historicalName() { - return "MacCroatian"; - } - - public boolean contains(Charset cs) { - return (cs instanceof MacCroatian); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1" + // 0x80 - 0x87 - "\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8" + // 0x88 - 0x8F - "\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3" + // 0x90 - 0x97 - "\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC" + // 0x98 - 0x9F - "\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF" + // 0xA0 - 0xA7 - "\u00AE\u0160\u2122\u00B4\u00A8\u2260\u017D\u00D8" + // 0xA8 - 0xAF - "\u221E\u00B1\u2264\u2265\u2206\u00B5\u2202\u2211" + // 0xB0 - 0xB7 - "\u220F\u0161\u222B\u00AA\u00BA\u2126\u017E\u00F8" + // 0xB8 - 0xBF - "\u00BF\u00A1\u00AC\u221A\u0192\u2248\u0106\u00AB" + // 0xC0 - 0xC7 - "\u010C\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153" + // 0xC8 - 0xCF - "\u0110\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA" + // 0xD0 - 0xD7 - "\uF8FF\u00A9\u2044\u00A4\u2039\u203A\u00C6\u00BB" + // 0xD8 - 0xDF - "\u2013\u00B7\u201A\u201E\u2030\u00C2\u0107\u00C1" + // 0xE0 - 0xE7 - "\u010D\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4" + // 0xE8 - 0xEF - "\u0111\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC" + // 0xF0 - 0xF7 - "\u00AF\u03C0\u00CB\u02DA\u00B8\u00CA\u00E6\u02C7" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00CA\u00C1\u00A2\u00A3\u00DB\u0000\u0000\u00A4" + - "\u00AC\u00D9\u00BB\u00C7\u00C2\u0000\u00A8\u00F8" + - "\u00A1\u00B1\u0000\u0000\u00AB\u00B5\u00A6\u00E1" + - "\u00FC\u0000\u00BC\u00DF\u0000\u0000\u0000\u00C0" + - "\u00CB\u00E7\u00E5\u00CC\u0080\u0081\u00DE\u0082" + - "\u00E9\u0083\u00FD\u00FA\u00ED\u00EA\u00EB\u00EC" + - "\u0000\u0084\u00F1\u00EE\u00EF\u00CD\u0085\u0000" + - "\u00AF\u00F4\u00F2\u00F3\u0086\u0000\u0000\u00A7" + - "\u0088\u0087\u0089\u008B\u008A\u008C\u00FE\u008D" + - "\u008F\u008E\u0090\u0091\u0093\u0092\u0094\u0095" + - "\u0000\u0096\u0098\u0097\u0099\u009B\u009A\u00D6" + - "\u00BF\u009D\u009C\u009E\u009F\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00C6\u00E6\u0000\u0000\u0000" + - "\u0000\u00C8\u00E8\u0000\u0000\u00D0\u00F0\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00F5\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00CE" + - "\u00CF\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00A9\u00B9\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00AE\u00BE\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00C4" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00F6\u00FF\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00FB\u0000\u00F7\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00F9" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00E0" + - "\u00D1\u0000\u0000\u0000\u00D4\u00D5\u00E2\u0000" + - "\u00D2\u00D3\u00E3\u0000\u00A0\u0000\u00A5\u0000" + - "\u0000\u0000\u00C9\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00E4\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00DC\u00DD\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00DA\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00AA\u0000\u0000\u0000" + - "\u00BD\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00B6\u0000\u0000\u0000\u00B4\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00B8" + - "\u0000\u00B7\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00C3\u0000\u0000\u0000\u00B0\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00BA\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00C5\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00AD\u0000\u0000\u0000\u00B2\u00B3\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00D7\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00D8"; - - private final static short index1[] = { - 0, 253, 458, 679, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 916, 1138, 1392, 400, 400, 1494, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 1697, 400, 400, 400, 400, 400, 400, 400, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/MacCyrillic.java b/src/share/classes/sun/nio/cs/ext/MacCyrillic.java deleted file mode 100644 index 87a5148f598de4c03675ec39ee7c2e26a62a5c9a..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/MacCyrillic.java +++ /dev/null @@ -1,361 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class MacCyrillic - extends Charset - implements HistoricallyNamedCharset -{ - - public MacCyrillic() { - super("x-MacCyrillic", ExtendedCharsets.aliasesFor("x-MacCyrillic")); - } - - public String historicalName() { - return "MacCyrillic"; - } - - public boolean contains(Charset cs) { - return (cs instanceof MacCyrillic); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417" + // 0x80 - 0x87 - "\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F" + // 0x88 - 0x8F - "\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427" + // 0x90 - 0x97 - "\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F" + // 0x98 - 0x9F - "\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u0406" + // 0xA0 - 0xA7 - "\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453" + // 0xA8 - 0xAF - "\u221E\u00B1\u2264\u2265\u0456\u00B5\u2202\u0408" + // 0xB0 - 0xB7 - "\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A" + // 0xB8 - 0xBF - "\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB" + // 0xC0 - 0xC7 - "\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455" + // 0xC8 - 0xCF - "\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E" + // 0xD0 - 0xD7 - "\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F" + // 0xD8 - 0xDF - "\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437" + // 0xE0 - 0xE7 - "\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F" + // 0xE8 - 0xEF - "\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447" + // 0xF0 - 0xF7 - "\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00CA\u0000\u00A2\u00A3\u00FF\u0000\u0000\u00A4" + - "\u0000\u00A9\u0000\u00C7\u00C2\u0000\u00A8\u0000" + - "\u00A1\u00B1\u0000\u0000\u0000\u00B5\u00A6\u0000" + - "\u0000\u0000\u0000\u00C8\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00D6" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00C4\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00DD\u00AB\u00AE\u00B8\u00C1" + - "\u00A7\u00BA\u00B7\u00BC\u00BE\u00CB\u00CD\u0000" + - "\u00D8\u00DA\u0080\u0081\u0082\u0083\u0084\u0085" + - "\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D" + - "\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095" + - "\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D" + - "\u009E\u009F\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5" + - "\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED" + - "\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5" + - "\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD" + - "\u00FE\u00DF\u0000\u00DE\u00AC\u00AF\u00B9\u00CF" + - "\u00B4\u00BB\u00C0\u00BD\u00BF\u00CC\u00CE\u0000" + - "\u00D9\u00DB\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00D0\u00D1\u0000\u0000\u0000\u00D4" + - "\u00D5\u0000\u0000\u00D2\u00D3\u00D7\u0000\u00A0" + - "\u0000\u00A5\u0000\u0000\u0000\u00C9\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00DC" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00AA\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00B6\u0000\u0000\u0000\u00C6\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00C3\u0000\u0000\u0000\u00B0\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00C5" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00AD" + - "\u0000\u0000\u0000\u00B2\u00B3\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 248, 395, 395, 650, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 887, 1121, 1375, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/MacDingbat.java b/src/share/classes/sun/nio/cs/ext/MacDingbat.java deleted file mode 100644 index f608424254b5576a1722906d67708ea17259bbed..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/MacDingbat.java +++ /dev/null @@ -1,316 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class MacDingbat - extends Charset - implements HistoricallyNamedCharset -{ - - public MacDingbat() { - super("x-MacDingbat", ExtendedCharsets.aliasesFor("x-MacDingbat")); - } - - public String historicalName() { - return "MacDingbat"; - } - - public boolean contains(Charset cs) { - return (cs instanceof MacDingbat); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x80 - 0x87 - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x88 - 0x8F - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x90 - 0x97 - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x98 - 0x9F - "\uFFFD\u2761\u2762\u2763\u2764\u2765\u2766\u2767" + // 0xA0 - 0xA7 - "\u2663\u2666\u2665\u2660\u2460\u2461\u2462\u2463" + // 0xA8 - 0xAF - "\u2464\u2465\u2466\u2467\u2468\u2469\u2776\u2777" + // 0xB0 - 0xB7 - "\u2778\u2779\u277A\u277B\u277C\u277D\u277E\u277F" + // 0xB8 - 0xBF - "\u2780\u2781\u2782\u2783\u2784\u2785\u2786\u2787" + // 0xC0 - 0xC7 - "\u2788\u2789\u278A\u278B\u278C\u278D\u278E\u278F" + // 0xC8 - 0xCF - "\u2790\u2791\u2792\u2793\u2794\u2192\u2194\u2195" + // 0xD0 - 0xD7 - "\u2798\u2799\u279A\u279B\u279C\u279D\u279E\u279F" + // 0xD8 - 0xDF - "\u27A0\u27A1\u27A2\u27A3\u27A4\u27A5\u27A6\u27A7" + // 0xE0 - 0xE7 - "\u27A8\u27A9\u27AA\u27AB\u27AC\u27AD\u27AE\u27AF" + // 0xE8 - 0xEF - "\uFFFD\u27B1\u27B2\u27B3\u27B4\u27B5\u27B6\u27B7" + // 0xF0 - 0xF7 - "\u27B8\u27B9\u27BA\u27BB\u27BC\u27BD\u27BE\uFFFD" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u2701\u2702\u2703\u2704\u260E\u2706\u2707" + // 0x20 - 0x27 - "\u2708\u2709\u261B\u261E\u270C\u270D\u270E\u270F" + // 0x28 - 0x2F - "\u2710\u2711\u2712\u2713\u2714\u2715\u2716\u2717" + // 0x30 - 0x37 - "\u2718\u2719\u271A\u271B\u271C\u271D\u271E\u271F" + // 0x38 - 0x3F - "\u2720\u2721\u2722\u2723\u2724\u2725\u2726\u2727" + // 0x40 - 0x47 - "\u2605\u2729\u272A\u272B\u272C\u272D\u272E\u272F" + // 0x48 - 0x4F - "\u2730\u2731\u2732\u2733\u2734\u2735\u2736\u2737" + // 0x50 - 0x57 - "\u2738\u2739\u273A\u273B\u273C\u273D\u273E\u273F" + // 0x58 - 0x5F - "\u2740\u2741\u2742\u2743\u2744\u2745\u2746\u2747" + // 0x60 - 0x67 - "\u2748\u2749\u274A\u274B\u25CF\u274D\u25A0\u274F" + // 0x68 - 0x6F - "\u2750\u2751\u2752\u25B2\u25BC\u25C6\u2756\u25D7" + // 0x70 - 0x77 - "\u2758\u2759\u275A\u275B\u275C\u275D\u275E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00D5\u0000\u00D6\u00D7\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00AC\u00AD" + - "\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u006E\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0073\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0074\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0075\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u006C" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0077" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0048\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0025\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u002A\u0000" + - "\u0000\u002B\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00AB\u0000\u0000\u00A8\u0000" + - "\u00AA\u00A9\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0021\"\u0023\u0024\u0000" + - "\u0026\'\u0028\u0029\u0000\u0000\u002C\u002D" + - "\u002E\u002F\u0030\u0031\u0032\u0033\u0034\u0035" + - "\u0036\u0037\u0038\u0039\u003A\u003B\u003C\u003D" + - "\u003E\u003F\u0040\u0041\u0042\u0043\u0044\u0045" + - "\u0046\u0047\u0000\u0049\u004A\u004B\u004C\u004D" + - "\u004E\u004F\u0050\u0051\u0052\u0053\u0054\u0055" + - "\u0056\u0057\u0058\u0059\u005A\u005B\\\u005D" + - "\u005E\u005F\u0060\u0061\u0062\u0063\u0064\u0065" + - "\u0066\u0067\u0068\u0069\u006A\u006B\u0000\u006D" + - "\u0000\u006F\u0070\u0071\u0072\u0000\u0000\u0000" + - "\u0076\u0000\u0078\u0079\u007A\u007B\u007C\u007D" + - "\u007E\u0000\u0000\u00A1\u00A2\u00A3\u00A4\u00A5" + - "\u00A6\u00A7\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD" + - "\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5" + - "\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD" + - "\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u0000" + - "\u0000\u0000\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD" + - "\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5" + - "\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED" + - "\u00EE\u00EF\u0000\u00F1\u00F2\u00F3\u00F4\u00F5" + - "\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD" + - "\u00FE\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000"; - - private final static short index1[] = { - 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 238, 128, 128, 398, 504, 755, 1010, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/MacGreek.java b/src/share/classes/sun/nio/cs/ext/MacGreek.java deleted file mode 100644 index ebf93a6387b2e7007c6850ac4035e757f407ee56..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/MacGreek.java +++ /dev/null @@ -1,327 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class MacGreek - extends Charset - implements HistoricallyNamedCharset -{ - - public MacGreek() { - super("x-MacGreek", ExtendedCharsets.aliasesFor("x-MacGreek")); - } - - public String historicalName() { - return "MacGreek"; - } - - public boolean contains(Charset cs) { - return (cs instanceof MacGreek); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00C4\u00B9\u00B2\u00C9\u00B3\u00D6\u00DC\u0385" + // 0x80 - 0x87 - "\u00E0\u00E2\u00E4\u0384\u00A8\u00E7\u00E9\u00E8" + // 0x88 - 0x8F - "\u00EA\u00EB\u00A3\u2122\u00EE\u00EF\u2022\u00BD" + // 0x90 - 0x97 - "\u2030\u00F4\u00F6\u00A6\u00AD\u00F9\u00FB\u00FC" + // 0x98 - 0x9F - "\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\u00DF" + // 0xA0 - 0xA7 - "\u00AE\u00A9\u03A3\u03AA\u00A7\u2260\u00B0\u0387" + // 0xA8 - 0xAF - "\u0391\u00B1\u2264\u2265\u00A5\u0392\u0395\u0396" + // 0xB0 - 0xB7 - "\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9" + // 0xB8 - 0xBF - "\u03AC\u039D\u00AC\u039F\u03A1\u2248\u03A4\u00AB" + // 0xC0 - 0xC7 - "\u00BB\u2026\u00A0\u03A5\u03A7\u0386\u0388\u0153" + // 0xC8 - 0xCF - "\u2013\u2015\u201C\u201D\u2018\u2019\u00F7\u0389" + // 0xD0 - 0xD7 - "\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F" + // 0xD8 - 0xDF - "\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3" + // 0xE0 - 0xE7 - "\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF" + // 0xE8 - 0xEF - "\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2" + // 0xF0 - 0xF7 - "\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00CA\u0000\u0000\u0092\u0000\u00B4\u009B\u00AC" + - "\u008C\u00A9\u0000\u00C7\u00C2\u009C\u00A8\u0000" + - "\u00AE\u00B1\u0082\u0084\u0000\u0000\u0000\u0000" + - "\u0000\u0081\u0000\u00C8\u0000\u0097\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0080\u0000\u0000\u0000" + - "\u0000\u0083\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0085\u0000" + - "\u0000\u0000\u0000\u0000\u0086\u0000\u0000\u00A7" + - "\u0088\u0000\u0089\u0000\u008A\u0000\u0000\u008D" + - "\u008F\u008E\u0090\u0091\u0000\u0000\u0094\u0095" + - "\u0000\u0000\u0000\u0000\u0099\u0000\u009A\u00D6" + - "\u0000\u009D\u0000\u009E\u009F\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00CF\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u008B\u0087\u00CD\u00AF\u00CE\u00D7\u00D8" + - "\u0000\u00D9\u0000\u00DA\u00DF\u00FD\u00B0\u00B5" + - "\u00A1\u00A2\u00B6\u00B7\u00B8\u00A3\u00B9\u00BA" + - "\u00A4\u00BB\u00C1\u00A5\u00C3\u00A6\u00C4\u0000" + - "\u00AA\u00C6\u00CB\u00BC\u00CC\u00BE\u00BF\u00AB" + - "\u00BD\u00C0\u00DB\u00DC\u00DD\u00FE\u00E1\u00E2" + - "\u00E7\u00E4\u00E5\u00FA\u00E8\u00F5\u00E9\u00EB" + - "\u00EC\u00ED\u00EE\u00EA\u00EF\u00F0\u00F2\u00F7" + - "\u00F3\u00F4\u00F9\u00E6\u00F8\u00E3\u00F6\u00FB" + - "\u00FC\u00DE\u00E0\u00F1\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00D0\u0000\u00D1" + - "\u0000\u0000\u00D4\u00D5\u0000\u0000\u00D2\u00D3" + - "\u0000\u0000\u00A0\u0000\u0096\u0000\u0000\u0000" + - "\u00C9\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0098\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0093\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00C5\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00AD\u0000\u0000\u0000\u00B2\u00B3\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 253, 337, 461, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - 698, 920, 1104, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/MacHebrew.java b/src/share/classes/sun/nio/cs/ext/MacHebrew.java deleted file mode 100644 index 6765157aafb08c3b4dd3706c5f279b78af7debca..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/MacHebrew.java +++ /dev/null @@ -1,289 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class MacHebrew - extends Charset - implements HistoricallyNamedCharset -{ - - public MacHebrew() { - super("x-MacHebrew", ExtendedCharsets.aliasesFor("x-MacHebrew")); - } - - public String historicalName() { - return "MacHebrew"; - } - - public boolean contains(Charset cs) { - return (cs instanceof MacHebrew); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00C4\uFB1F\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1" + // 0x80 - 0x87 - "\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8" + // 0x88 - 0x8F - "\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3" + // 0x90 - 0x97 - "\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC" + // 0x98 - 0x9F - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u20AA\uFFFD" + // 0xA0 - 0xA7 - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xA8 - 0xAF - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xB0 - 0xB7 - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xB8 - 0xBF - "\uFFFD\u201E\uFFFD\uFFFD\uFFFD\uFFFD\u05BC\uFB4B" + // 0xC0 - 0xC7 - "\uFB35\u2026\u00A0\u05B8\u05B7\u05B5\u05B6\u05B4" + // 0xC8 - 0xCF - "\u2013\u2014\u201C\u201D\u2018\u2019\uFB2A\uFB2B" + // 0xD0 - 0xD7 - "\u05BF\u05B0\u05B2\u05B1\u05BB\u05B9\uFFFD\u05B3" + // 0xD8 - 0xDF - "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7" + // 0xE0 - 0xE7 - "\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF" + // 0xE8 - 0xEF - "\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7" + // 0xF0 - 0xF7 - "\u05E8\u05E9\u05EA\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00CA\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0080\u0000\u0000\u0082" + - "\u0000\u0083\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0084\u0000\u0000\u0000\u0000\u0085\u0000" + - "\u0000\u0000\u0000\u0000\u0086\u0000\u0000\u0000" + - "\u0088\u0087\u0089\u008B\u008A\u008C\u0000\u008D" + - "\u008F\u008E\u0090\u0091\u0093\u0092\u0094\u0095" + - "\u0000\u0096\u0098\u0097\u0099\u009B\u009A\u0000" + - "\u0000\u009D\u009C\u009E\u009F\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00D9\u00DB\u00DA" + - "\u00DF\u00CF\u00CD\u00CE\u00CC\u00CB\u00DD\u0000" + - "\u00DC\u00C6\u0000\u0000\u00D8\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00E0\u00E1\u00E2" + - "\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA" + - "\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2" + - "\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00D0\u00D1\u0000" + - "\u0000\u0000\u00D4\u00D5\u0000\u0000\u00D2\u00D3" + - "\u00C1\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00C9\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00A6\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0081\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00D6\u00D7\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00C8\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00C7\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 253, 253, 253, 253, 333, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 570, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 795, 253, 253, 253, 253, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/MacIceland.java b/src/share/classes/sun/nio/cs/ext/MacIceland.java deleted file mode 100644 index 988a3f098334ae9860409e4401083a296b860f8a..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/MacIceland.java +++ /dev/null @@ -1,402 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class MacIceland - extends Charset - implements HistoricallyNamedCharset -{ - - public MacIceland() { - super("x-MacIceland", ExtendedCharsets.aliasesFor("x-MacIceland")); - } - - public String historicalName() { - return "MacIceland"; - } - - public boolean contains(Charset cs) { - return (cs instanceof MacIceland); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1" + // 0x80 - 0x87 - "\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8" + // 0x88 - 0x8F - "\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3" + // 0x90 - 0x97 - "\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC" + // 0x98 - 0x9F - "\u00DD\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF" + // 0xA0 - 0xA7 - "\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8" + // 0xA8 - 0xAF - "\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211" + // 0xB0 - 0xB7 - "\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8" + // 0xB8 - 0xBF - "\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB" + // 0xC0 - 0xC7 - "\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153" + // 0xC8 - 0xCF - "\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA" + // 0xD0 - 0xD7 - "\u00FF\u0178\u2044\u00A4\u00D0\u00F0\u00DE\u00FE" + // 0xD8 - 0xDF - "\u00FD\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1" + // 0xE0 - 0xE7 - "\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4" + // 0xE8 - 0xEF - "\uF8FF\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC" + // 0xF0 - 0xF7 - "\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00CA\u00C1\u00A2\u00A3\u00DB\u00B4\u0000\u00A4" + - "\u00AC\u00A9\u00BB\u00C7\u00C2\u0000\u00A8\u00F8" + - "\u00A1\u00B1\u0000\u0000\u00AB\u00B5\u00A6\u00E1" + - "\u00FC\u0000\u00BC\u00C8\u0000\u0000\u0000\u00C0" + - "\u00CB\u00E7\u00E5\u00CC\u0080\u0081\u00AE\u0082" + - "\u00E9\u0083\u00E6\u00E8\u00ED\u00EA\u00EB\u00EC" + - "\u00DC\u0084\u00F1\u00EE\u00EF\u00CD\u0085\u0000" + - "\u00AF\u00F4\u00F2\u00F3\u0086\u00A0\u00DE\u00A7" + - "\u0088\u0087\u0089\u008B\u008A\u008C\u00BE\u008D" + - "\u008F\u008E\u0090\u0091\u0093\u0092\u0094\u0095" + - "\u00DD\u0096\u0098\u0097\u0099\u009B\u009A\u00D6" + - "\u00BF\u009D\u009C\u009E\u009F\u00E0\u00DF\u00D8" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00F5\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00CE\u00CF\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00C4\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00F6\u00FF\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00F9\u00FA\u00FB" + - "\u00FE\u00F7\u00FD\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00B9\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00D0\u00D1\u0000\u0000\u0000" + - "\u00D4\u00D5\u00E2\u0000\u00D2\u00D3\u00E3\u0000" + - "\u0000\u0000\u00A5\u0000\u0000\u0000\u00C9\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00DA\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00AA\u0000\u0000\u0000\u00BD\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00B6\u0000" + - "\u0000\u0000\u00C6\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00B8\u0000\u00B7\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00C3\u0000" + - "\u0000\u0000\u00B0\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BA" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00C5\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00AD\u0000\u0000\u0000" + - "\u00B2\u00B3\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00D7\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00F0"; - - private final static short index1[] = { - 0, 256, 461, 683, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 920, 1142, 1396, 403, 403, 1498, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 1701, 403, 403, 403, 403, 403, 403, 403, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/MacRoman.java b/src/share/classes/sun/nio/cs/ext/MacRoman.java deleted file mode 100644 index 8fd75a96b5ec3539063b33dbd01391d95424216f..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/MacRoman.java +++ /dev/null @@ -1,434 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class MacRoman - extends Charset - implements HistoricallyNamedCharset -{ - - public MacRoman() { - super("x-MacRoman", ExtendedCharsets.aliasesFor("x-MacRoman")); - } - - public String historicalName() { - return "MacRoman"; - } - - public boolean contains(Charset cs) { - return (cs instanceof MacRoman); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1" + // 0x80 - 0x87 - "\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8" + // 0x88 - 0x8F - "\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3" + // 0x90 - 0x97 - "\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC" + // 0x98 - 0x9F - "\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF" + // 0xA0 - 0xA7 - "\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8" + // 0xA8 - 0xAF - "\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211" + // 0xB0 - 0xB7 - "\u220F\u03C0\u222B\u00AA\u00BA\u03A9\u00E6\u00F8" + // 0xB8 - 0xBF - "\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB" + // 0xC0 - 0xC7 - "\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153" + // 0xC8 - 0xCF - "\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA" + // 0xD0 - 0xD7 - "\u00FF\u0178\u2044\u20AC\u2039\u203A\uFB01\uFB02" + // 0xD8 - 0xDF - "\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1" + // 0xE0 - 0xE7 - "\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4" + // 0xE8 - 0xEF - "\uF8FF\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC" + // 0xF0 - 0xF7 - "\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00CA\u00C1\u00A2\u00A3\u0000\u00B4\u0000\u00A4" + - "\u00AC\u00A9\u00BB\u00C7\u00C2\u0000\u00A8\u00F8" + - "\u00A1\u00B1\u0000\u0000\u00AB\u00B5\u00A6\u00E1" + - "\u00FC\u0000\u00BC\u00C8\u0000\u0000\u0000\u00C0" + - "\u00CB\u00E7\u00E5\u00CC\u0080\u0081\u00AE\u0082" + - "\u00E9\u0083\u00E6\u00E8\u00ED\u00EA\u00EB\u00EC" + - "\u0000\u0084\u00F1\u00EE\u00EF\u00CD\u0085\u0000" + - "\u00AF\u00F4\u00F2\u00F3\u0086\u0000\u0000\u00A7" + - "\u0088\u0087\u0089\u008B\u008A\u008C\u00BE\u008D" + - "\u008F\u008E\u0090\u0091\u0093\u0092\u0094\u0095" + - "\u0000\u0096\u0098\u0097\u0099\u009B\u009A\u00D6" + - "\u00BF\u009D\u009C\u009E\u009F\u0000\u0000\u00D8" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00F5\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00CE\u00CF\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00C4\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00F6\u00FF\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00F9\u00FA\u00FB" + - "\u00FE\u00F7\u00FD\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00BD\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00B9\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00D0\u00D1\u0000\u0000\u0000" + - "\u00D4\u00D5\u00E2\u0000\u00D2\u00D3\u00E3\u0000" + - "\u00A0\u00E0\u00A5\u0000\u0000\u0000\u00C9\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00DC\u00DD\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00DA\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00DB\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00AA\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00B6\u0000" + - "\u0000\u0000\u00C6\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00B8\u0000\u00B7\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00C3\u0000" + - "\u0000\u0000\u00B0\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BA" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00C5\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00AD\u0000\u0000\u0000" + - "\u00B2\u00B3\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00D7\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00F0\u0000\u00DE\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 256, 461, 683, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 920, 1142, 1396, 403, 403, 1498, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 1701, 403, 403, 1957, 403, 403, 403, 403, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/MacRomania.java b/src/share/classes/sun/nio/cs/ext/MacRomania.java deleted file mode 100644 index f5e48d8cb7e0dcd4a14e7513bad8d4adb5162e52..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/MacRomania.java +++ /dev/null @@ -1,402 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class MacRomania - extends Charset - implements HistoricallyNamedCharset -{ - - public MacRomania() { - super("x-MacRomania", ExtendedCharsets.aliasesFor("x-MacRomania")); - } - - public String historicalName() { - return "MacRomania"; - } - - public boolean contains(Charset cs) { - return (cs instanceof MacRomania); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1" + // 0x80 - 0x87 - "\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8" + // 0x88 - 0x8F - "\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3" + // 0x90 - 0x97 - "\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC" + // 0x98 - 0x9F - "\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF" + // 0xA0 - 0xA7 - "\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u0102\u015E" + // 0xA8 - 0xAF - "\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211" + // 0xB0 - 0xB7 - "\u220F\u03C0\u222B\u00AA\u00BA\u2126\u0103\u015F" + // 0xB8 - 0xBF - "\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB" + // 0xC0 - 0xC7 - "\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153" + // 0xC8 - 0xCF - "\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA" + // 0xD0 - 0xD7 - "\u00FF\u0178\u2044\u00A4\u2039\u203A\u0162\u0163" + // 0xD8 - 0xDF - "\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1" + // 0xE0 - 0xE7 - "\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4" + // 0xE8 - 0xEF - "\uF8FF\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC" + // 0xF0 - 0xF7 - "\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00CA\u00C1\u00A2\u00A3\u00DB\u00B4\u0000\u00A4" + - "\u00AC\u00A9\u00BB\u00C7\u00C2\u0000\u00A8\u00F8" + - "\u00A1\u00B1\u0000\u0000\u00AB\u00B5\u00A6\u00E1" + - "\u00FC\u0000\u00BC\u00C8\u0000\u0000\u0000\u00C0" + - "\u00CB\u00E7\u00E5\u00CC\u0080\u0081\u0000\u0082" + - "\u00E9\u0083\u00E6\u00E8\u00ED\u00EA\u00EB\u00EC" + - "\u0000\u0084\u00F1\u00EE\u00EF\u00CD\u0085\u0000" + - "\u0000\u00F4\u00F2\u00F3\u0086\u0000\u0000\u00A7" + - "\u0088\u0087\u0089\u008B\u008A\u008C\u0000\u008D" + - "\u008F\u008E\u0090\u0091\u0093\u0092\u0094\u0095" + - "\u0000\u0096\u0098\u0097\u0099\u009B\u009A\u00D6" + - "\u0000\u009D\u009C\u009E\u009F\u0000\u0000\u00D8" + - "\u0000\u0000\u00AE\u00BE\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00F5\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00CE\u00CF\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00AF\u00BF" + - "\u0000\u0000\u00DE\u00DF\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00C4\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00F6\u00FF\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00F9\u00FA\u00FB" + - "\u00FE\u00F7\u00FD\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00B9\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00D0\u00D1\u0000\u0000\u0000" + - "\u00D4\u00D5\u00E2\u0000\u00D2\u00D3\u00E3\u0000" + - "\u00A0\u00E0\u00A5\u0000\u0000\u0000\u00C9\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00DC\u00DD\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00DA\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00AA\u0000\u0000\u0000\u00BD\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00B6\u0000" + - "\u0000\u0000\u00C6\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00B8\u0000\u00B7\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00C3\u0000" + - "\u0000\u0000\u00B0\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BA" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00C5\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00AD\u0000\u0000\u0000" + - "\u00B2\u00B3\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00D7\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00F0"; - - private final static short index1[] = { - 0, 256, 461, 683, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 920, 1142, 1396, 403, 403, 1498, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 1701, 403, 403, 403, 403, 403, 403, 403, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/MacSymbol.java b/src/share/classes/sun/nio/cs/ext/MacSymbol.java deleted file mode 100644 index 580a53557b03379b21a2ec7bd8a0acbdc33823d5..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/MacSymbol.java +++ /dev/null @@ -1,425 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class MacSymbol - extends Charset - implements HistoricallyNamedCharset -{ - - public MacSymbol() { - super("x-MacSymbol", ExtendedCharsets.aliasesFor("x-MacSymbol")); - } - - public String historicalName() { - return "MacSymbol"; - } - - public boolean contains(Charset cs) { - return (cs instanceof MacSymbol); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x80 - 0x87 - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x88 - 0x8F - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x90 - 0x97 - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x98 - 0x9F - "\u20AC\u03D2\u2032\u2264\u2044\u221E\u0192\u2663" + // 0xA0 - 0xA7 - "\u2666\u2665\u2660\u2194\u2190\u2191\u2192\u2193" + // 0xA8 - 0xAF - "\u00B0\u00B1\u2033\u2265\u00D7\u221D\u2202\u2022" + // 0xB0 - 0xB7 - "\u00F7\u2260\u2261\u2248\u2026\uF8E6\uF8E7\u21B5" + // 0xB8 - 0xBF - "\u2135\u2111\u211C\u2118\u2297\u2295\u2205\u2229" + // 0xC0 - 0xC7 - "\u222A\u2283\u2287\u2284\u2282\u2286\u2208\u2209" + // 0xC8 - 0xCF - "\u2220\u2207\u00AE\u00A9\u2122\u220F\u221A\u22C5" + // 0xD0 - 0xD7 - "\u00AC\u2227\u2228\u21D4\u21D0\u21D1\u21D2\u21D3" + // 0xD8 - 0xDF - "\u22C4\u3008\uFFFD\uFFFD\uFFFD\u2211\uFFFD\uFFFD" + // 0xE0 - 0xE7 - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uF8F4" + // 0xE8 - 0xEF - "\uF8FF\u3009\u222B\u2320\uFFFD\u2321\uFFFD\uFFFD" + // 0xF0 - 0xF7 - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\u2200\u0023\u2203\u0025\u0026\u220D" + // 0x20 - 0x27 - "\u0028\u0029\u2217\u002B\u002C\u2212\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u2245\u0391\u0392\u03A7\u0394\u0395\u03A6\u0393" + // 0x40 - 0x47 - "\u0397\u0399\u03D1\u039A\u039B\u039C\u039D\u039F" + // 0x48 - 0x4F - "\u03A0\u0398\u03A1\u03A3\u03A4\u03A5\u03C2\u03A9" + // 0x50 - 0x57 - "\u039E\u03A8\u0396\u005B\u2234\u005D\u22A5\u005F" + // 0x58 - 0x5F - "\uF8E5\u03B1\u03B2\u03C7\u03B4\u03B5\u03C6\u03B3" + // 0x60 - 0x67 - "\u03B7\u03B9\u03D5\u03BA\u03BB\u03BC\u03BD\u03BF" + // 0x68 - 0x6F - "\u03C0\u03B8\u03C1\u03C3\u03C4\u03C5\u03D6\u03C9" + // 0x70 - 0x77 - "\u03BE\u03C8\u03B6\u007B\u007C\u007D\u223C\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\u0000\u0023\u0000\u0025\u0026\u0000" + - "\u0028\u0029\u0000\u002B\u002C\u0000\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u005B\u0000\u005D\u0000\u005F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u007B\u007C\u007D\u0000\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00D3\u0000\u0000\u00D8\u0000\u00D2\u0000" + - "\u00B0\u00B1\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00B4" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00B8" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00A6\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0041\u0042\u0047\u0044\u0045" + - "\u005A\u0048\u0051\u0049\u004B\u004C\u004D\u004E" + - "\u0058\u004F\u0050\u0052\u0000\u0053\u0054\u0055" + - "\u0046\u0043\u0059\u0057\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0061\u0062\u0067\u0064\u0065" + - "\u007A\u0068\u0071\u0069\u006B\u006C\u006D\u006E" + - "\u0078\u006F\u0070\u0072\u0056\u0073\u0074\u0075" + - "\u0066\u0063\u0079\u0077\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u004A\u00A1\u0000\u0000\u006A" + - "\u0076\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00B7\u0000\u0000\u0000\u00BC\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00A2\u00B2\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00A4\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00A0\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00C1\u0000\u0000\u0000\u0000\u0000\u0000\u00C3" + - "\u0000\u0000\u0000\u00C2\u0000\u0000\u0000\u0000" + - "\u0000\u00D4\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00C0\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00AC" + - "\u00AD\u00AE\u00AF\u00AB\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00BF\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00DC" + - "\u00DD\u00DE\u00DF\u00DB\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\"" + - "\u0000\u00B6\u0024\u0000\u00C6\u0000\u00D1\u00CE" + - "\u00CF\u0000\u0000\u0000\'\u0000\u00D5\u0000" + - "\u00E5\u002D\u0000\u0000\u0000\u0000\u002A\u0000" + - "\u0000\u00D6\u0000\u0000\u00B5\u00A5\u0000\u00D0" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00D9\u00DA" + - "\u00C7\u00C8\u00F2\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\\\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u007E\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0040\u0000\u0000\u00BB" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00B9" + - "\u00BA\u0000\u0000\u00A3\u00B3\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00CC\u00C9\u00CB\u0000\u00CD\u00CA\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00C5\u0000\u00C4\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u005E\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00E0\u00D7\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00F3" + - "\u00F5\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00AA" + - "\u0000\u0000\u00A7\u0000\u00A9\u00A8\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00E1" + - "\u00F1\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0060" + - "\u00BD\u00BE\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00EF\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00F0"; - - private final static short index1[] = { - 0, 248, 395, 506, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 728, 967, 1223, 1447, 395, 395, 1607, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 1855, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 1882, 395, 395, 395, 395, 395, 395, 395, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/MacThai.java b/src/share/classes/sun/nio/cs/ext/MacThai.java deleted file mode 100644 index 0c82884aab07ab126273bc8a80de39551eea7d11..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/MacThai.java +++ /dev/null @@ -1,338 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class MacThai - extends Charset - implements HistoricallyNamedCharset -{ - - public MacThai() { - super("x-MacThai", ExtendedCharsets.aliasesFor("x-MacThai")); - } - - public String historicalName() { - return "MacThai"; - } - - public boolean contains(Charset cs) { - return (cs instanceof MacThai); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00AB\u00BB\u2026\uF88C\uF88F\uF892\uF895\uF898" + // 0x80 - 0x87 - "\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899" + // 0x88 - 0x8F - "\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888" + // 0x90 - 0x97 - "\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD" + // 0x98 - 0x9F - "\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07" + // 0xA0 - 0xA7 - "\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F" + // 0xA8 - 0xAF - "\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17" + // 0xB0 - 0xB7 - "\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F" + // 0xB8 - 0xBF - "\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27" + // 0xC0 - 0xC7 - "\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F" + // 0xC8 - 0xCF - "\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37" + // 0xD0 - 0xD7 - "\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F" + // 0xD8 - 0xDF - "\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47" + // 0xE0 - 0xE7 - "\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F" + // 0xE8 - 0xEF - "\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57" + // 0xF0 - 0xF7 - "\u0E58\u0E59\u00AE\u00A9\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00A0\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00FB\u0000\u0080\u0000\u0000\u00FA\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0081\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00A1\u00A2\u00A3\u00A4" + - "\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC" + - "\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4" + - "\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC" + - "\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4" + - "\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC" + - "\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4" + - "\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u0000\u0000" + - "\u0000\u0000\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4" + - "\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC" + - "\u00ED\u0000\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4" + - "\u00F5\u00F6\u00F7\u00F8\u00F9\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00DC\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00DD\u00DE\u0000\u0000\u0000" + - "\u009D\u009E\u0000\u0000\u008D\u008E\u0000\u0000" + - "\u0000\u0000\u0091\u0000\u0000\u0000\u0082\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00EE\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0092\u0094" + - "\u0095\u0096\u0097\u0093\u0098\u0088\u0083\u0099" + - "\u0089\u0084\u009A\u008A\u0085\u009B\u008B\u0086" + - "\u009C\u008C\u0087\u008F\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00DB"; - - private final static short index1[] = { - 0, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 443, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 688, 910, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 1034, 188, 188, 188, 188, 188, 1188, 188, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/MacTurkish.java b/src/share/classes/sun/nio/cs/ext/MacTurkish.java deleted file mode 100644 index 23fe73bc6d0ab5b35a5e3ef6375b2b5ae0885dfe..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/MacTurkish.java +++ /dev/null @@ -1,402 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class MacTurkish - extends Charset - implements HistoricallyNamedCharset -{ - - public MacTurkish() { - super("x-MacTurkish", ExtendedCharsets.aliasesFor("x-MacTurkish")); - } - - public String historicalName() { - return "MacTurkish"; - } - - public boolean contains(Charset cs) { - return (cs instanceof MacTurkish); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1" + // 0x80 - 0x87 - "\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8" + // 0x88 - 0x8F - "\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3" + // 0x90 - 0x97 - "\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC" + // 0x98 - 0x9F - "\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF" + // 0xA0 - 0xA7 - "\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8" + // 0xA8 - 0xAF - "\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211" + // 0xB0 - 0xB7 - "\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8" + // 0xB8 - 0xBF - "\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB" + // 0xC0 - 0xC7 - "\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153" + // 0xC8 - 0xCF - "\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA" + // 0xD0 - 0xD7 - "\u00FF\u0178\u011E\u011F\u0130\u0131\u015E\u015F" + // 0xD8 - 0xDF - "\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1" + // 0xE0 - 0xE7 - "\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4" + // 0xE8 - 0xEF - "\uF8FF\u00D2\u00DA\u00DB\u00D9\uFFFD\u02C6\u02DC" + // 0xF0 - 0xF7 - "\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00CA\u00C1\u00A2\u00A3\u0000\u00B4\u0000\u00A4" + - "\u00AC\u00A9\u00BB\u00C7\u00C2\u0000\u00A8\u00F8" + - "\u00A1\u00B1\u0000\u0000\u00AB\u00B5\u00A6\u00E1" + - "\u00FC\u0000\u00BC\u00C8\u0000\u0000\u0000\u00C0" + - "\u00CB\u00E7\u00E5\u00CC\u0080\u0081\u00AE\u0082" + - "\u00E9\u0083\u00E6\u00E8\u00ED\u00EA\u00EB\u00EC" + - "\u0000\u0084\u00F1\u00EE\u00EF\u00CD\u0085\u0000" + - "\u00AF\u00F4\u00F2\u00F3\u0086\u0000\u0000\u00A7" + - "\u0088\u0087\u0089\u008B\u008A\u008C\u00BE\u008D" + - "\u008F\u008E\u0090\u0091\u0093\u0092\u0094\u0095" + - "\u0000\u0096\u0098\u0097\u0099\u009B\u009A\u00D6" + - "\u00BF\u009D\u009C\u009E\u009F\u0000\u0000\u00D8" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00DA\u00DB" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00DC\u00DD\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00CE\u00CF\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00DE\u00DF" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00D9\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00C4\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00F6\u00FF\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00F9\u00FA\u00FB" + - "\u00FE\u00F7\u00FD\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00B9\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00D0\u00D1\u0000\u0000\u0000" + - "\u00D4\u00D5\u00E2\u0000\u00D2\u00D3\u00E3\u0000" + - "\u00A0\u00E0\u00A5\u0000\u0000\u0000\u00C9\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00E4\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00AA\u0000\u0000\u0000\u00BD\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00B6\u0000" + - "\u0000\u0000\u00C6\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00B8\u0000\u00B7\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u00C3\u0000" + - "\u0000\u0000\u00B0\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00BA" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00C5\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00AD\u0000\u0000\u0000" + - "\u00B2\u00B3\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00D7\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u00F0"; - - private final static short index1[] = { - 0, 256, 461, 683, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 920, 1142, 1396, 403, 403, 1498, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 1701, 403, 403, 403, 403, 403, 403, 403, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/MacUkraine.java b/src/share/classes/sun/nio/cs/ext/MacUkraine.java deleted file mode 100644 index 678c62f380fc809cdaeb799c8b52f4b52421c7b0..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/MacUkraine.java +++ /dev/null @@ -1,361 +0,0 @@ - -/* - * Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class MacUkraine - extends Charset - implements HistoricallyNamedCharset -{ - - public MacUkraine() { - super("x-MacUkraine", ExtendedCharsets.aliasesFor("x-MacUkraine")); - } - - public String historicalName() { - return "MacUkraine"; - } - - public boolean contains(Charset cs) { - return (cs instanceof MacUkraine); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417" + // 0x80 - 0x87 - "\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F" + // 0x88 - 0x8F - "\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427" + // 0x90 - 0x97 - "\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F" + // 0x98 - 0x9F - "\u2020\u00B0\u0490\u00A3\u00A7\u2022\u00B6\u0406" + // 0xA0 - 0xA7 - "\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453" + // 0xA8 - 0xAF - "\u221E\u00B1\u2264\u2265\u0456\u00B5\u0491\u0408" + // 0xB0 - 0xB7 - "\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A" + // 0xB8 - 0xBF - "\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB" + // 0xC0 - 0xC7 - "\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455" + // 0xC8 - 0xCF - "\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E" + // 0xD0 - 0xD7 - "\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F" + // 0xD8 - 0xDF - "\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437" + // 0xE0 - 0xE7 - "\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F" + // 0xE8 - 0xEF - "\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447" + // 0xF0 - 0xF7 - "\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00CA\u0000\u0000\u00A3\u00FF\u0000\u0000\u00A4" + - "\u0000\u00A9\u0000\u00C7\u00C2\u0000\u00A8\u0000" + - "\u00A1\u00B1\u0000\u0000\u0000\u00B5\u00A6\u0000" + - "\u0000\u0000\u0000\u00C8\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00D6" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00C4\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00DD\u00AB\u00AE\u00B8\u00C1" + - "\u00A7\u00BA\u00B7\u00BC\u00BE\u00CB\u00CD\u0000" + - "\u00D8\u00DA\u0080\u0081\u0082\u0083\u0084\u0085" + - "\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D" + - "\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095" + - "\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D" + - "\u009E\u009F\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5" + - "\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED" + - "\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5" + - "\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD" + - "\u00FE\u00DF\u0000\u00DE\u00AC\u00AF\u00B9\u00CF" + - "\u00B4\u00BB\u00C0\u00BD\u00BF\u00CC\u00CE\u0000" + - "\u00D9\u00DB\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00A2\u00B6\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u00D0\u00D1\u0000\u0000\u0000\u00D4" + - "\u00D5\u0000\u0000\u00D2\u00D3\u00D7\u0000\u00A0" + - "\u0000\u00A5\u0000\u0000\u0000\u00C9\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00DC" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00AA\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00C6\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u00C3\u0000\u0000" + - "\u0000\u00B0\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00C5\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u00AD\u0000\u0000\u0000\u00B2" + - "\u00B3\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 248, 395, 395, 650, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 887, 1121, 1371, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - - }; - } -} diff --git a/src/share/classes/sun/nio/cs/ext/TIS_620.java b/src/share/classes/sun/nio/cs/ext/TIS_620.java deleted file mode 100644 index 973135a98b34456a56984887eefb9cd6523969c0..0000000000000000000000000000000000000000 --- a/src/share/classes/sun/nio/cs/ext/TIS_620.java +++ /dev/null @@ -1,244 +0,0 @@ - -/* - * Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. - */ - -package sun.nio.cs.ext; - - -import java.nio.ByteBuffer; -import java.nio.CharBuffer; -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import java.nio.charset.CharacterCodingException; -import java.nio.charset.MalformedInputException; -import java.nio.charset.UnmappableCharacterException; -import sun.nio.cs.StandardCharsets; -import sun.nio.cs.SingleByteDecoder; -import sun.nio.cs.SingleByteEncoder; -import sun.nio.cs.HistoricallyNamedCharset; - -public class TIS_620 - extends Charset - implements HistoricallyNamedCharset -{ - - public TIS_620() { - super("TIS-620", ExtendedCharsets.aliasesFor("TIS-620")); - } - - public String historicalName() { - return "TIS620"; - } - - public boolean contains(Charset cs) { - return ((cs.name().equals("US-ASCII")) - || (cs instanceof TIS_620)); - } - - public CharsetDecoder newDecoder() { - return new Decoder(this); - } - - public CharsetEncoder newEncoder() { - return new Encoder(this); - } - - - /** - * These accessors are temporarily supplied while sun.io - * converters co-exist with the sun.nio.cs.{ext} charset coders - * These facilitate sharing of conversion tables between the - * two co-existing implementations. When sun.io converters - * are made extinct these will be unncessary and should be removed - */ - - public String getDecoderSingleByteMappings() { - return Decoder.byteToCharTable; - - } - - public short[] getEncoderIndex1() { - return Encoder.index1; - - } - public String getEncoderIndex2() { - return Encoder.index2; - - } - - private static class Decoder extends SingleByteDecoder { - public Decoder(Charset cs) { - super(cs, byteToCharTable); - } - - private final static String byteToCharTable = - - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x80 - 0x87 - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x88 - 0x8F - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x90 - 0x97 - "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + // 0x98 - 0x9F - "\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07" + // 0xA0 - 0xA7 - "\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F" + // 0xA8 - 0xAF - "\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17" + // 0xB0 - 0xB7 - "\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F" + // 0xB8 - 0xBF - "\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27" + // 0xC0 - 0xC7 - "\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F" + // 0xC8 - 0xCF - "\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37" + // 0xD0 - 0xD7 - "\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F" + // 0xD8 - 0xDF - "\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47" + // 0xE0 - 0xE7 - "\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F" + // 0xE8 - 0xEF - "\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57" + // 0xF0 - 0xF7 - "\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + // 0xF8 - 0xFF - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + // 0x00 - 0x07 - "\b\t\n\u000B\f\r\u000E\u000F" + // 0x08 - 0x0F - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + // 0x10 - 0x17 - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + // 0x18 - 0x1F - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + // 0x20 - 0x27 - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + // 0x28 - 0x2F - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + // 0x30 - 0x37 - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + // 0x38 - 0x3F - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + // 0x40 - 0x47 - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + // 0x48 - 0x4F - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + // 0x50 - 0x57 - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + // 0x58 - 0x5F - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + // 0x60 - 0x67 - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + // 0x68 - 0x6F - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + // 0x70 - 0x77 - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F"; // 0x78 - 0x7F - } - - private static class Encoder extends SingleByteEncoder { - public Encoder(Charset cs) { - super(cs, index1, index2, 0xFF00, 0x00FF, 8); - } - - private final static String index2 = - - "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" + - "\b\t\n\u000B\f\r\u000E\u000F" + - "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" + - "\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F" + - "\u0020\u0021\"\u0023\u0024\u0025\u0026\'" + - "\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F" + - "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" + - "\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + - "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" + - "\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F" + - "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" + - "\u0058\u0059\u005A\u005B\\\u005D\u005E\u005F" + - "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" + - "\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F" + - "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" + - "\u0078\u0079\u007A\u007B\u007C\u007D\u007E\u007F" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u00A0\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7" + - "\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF" + - "\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7" + - "\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF" + - "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7" + - "\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF" + - "\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7" + - "\u00D8\u00D9\u00DA\u0000\u0000\u0000\u0000\u00DF" + - "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7" + - "\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF" + - "\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7" + - "\u00F8\u00F9\u00FA\u00FB\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000" + - "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"; - - private final static short index1[] = { - 0, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 416, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - }; - } -} diff --git a/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java b/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java index 05361fca4448212df01153b16026c8efd9cd7d3d..3b5d8f74d27011e3467297eac0d378e60e4e5a8c 100644 --- a/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java +++ b/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java @@ -272,14 +272,14 @@ class AnnotationInvocationHandler implements InvocationHandler, Serializable { */ private Method[] getMemberMethods() { if (memberMethods == null) { - final Method[] mm = type.getDeclaredMethods(); - AccessController.doPrivileged(new PrivilegedAction() { - public Void run() { - AccessibleObject.setAccessible(mm, true); - return null; - } - }); - memberMethods = mm; + memberMethods = AccessController.doPrivileged( + new PrivilegedAction() { + public Method[] run() { + final Method[] mm = type.getDeclaredMethods(); + AccessibleObject.setAccessible(mm, true); + return mm; + } + }); } return memberMethods; } diff --git a/src/share/classes/sun/security/jgss/GSSContextImpl.java b/src/share/classes/sun/security/jgss/GSSContextImpl.java index a506394703bd9996ebc2cc0f5a1d8353a28bc527..046f6478277b108d1405ff7025a1602e8804dac2 100644 --- a/src/share/classes/sun/security/jgss/GSSContextImpl.java +++ b/src/share/classes/sun/security/jgss/GSSContextImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -284,7 +284,8 @@ class GSSContextImpl implements GSSContext { ByteArrayOutputStream bos = new ByteArrayOutputStream(100); acceptSecContext(new ByteArrayInputStream(inTok, offset, len), bos); - return bos.toByteArray(); + byte[] out = bos.toByteArray(); + return (out.length == 0) ? null : out; } public void acceptSecContext(InputStream inStream, diff --git a/src/share/classes/sun/security/jgss/spnego/SpNegoContext.java b/src/share/classes/sun/security/jgss/spnego/SpNegoContext.java index 5ea5cd36aeae95c48984a93edc464002738d363e..7185b0e08a720a7ce66fd045111a1094f50e5d66 100644 --- a/src/share/classes/sun/security/jgss/spnego/SpNegoContext.java +++ b/src/share/classes/sun/security/jgss/spnego/SpNegoContext.java @@ -1,5 +1,5 @@ /* - * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -413,13 +413,14 @@ public class SpNegoContext implements GSSContextSpi { // pull out the mechanism token byte[] accept_token = targToken.getResponseToken(); if (accept_token == null) { - // return wth failure - throw new GSSException(errorCode, -1, - "mechansim token from server is null"); + if (!isMechContextEstablished()) { + // return with failure + throw new GSSException(errorCode, -1, + "mechanism token from server is null"); + } + } else { + mechToken = GSS_initSecContext(accept_token); } - - mechToken = GSS_initSecContext(accept_token); - // verify MIC if (!GSSUtil.useMSInterop()) { byte[] micToken = targToken.getMechListMIC(); @@ -428,7 +429,6 @@ public class SpNegoContext implements GSSContextSpi { "verification of MIC on MechList Failed!"); } } - if (isMechContextEstablished()) { state = STATE_DONE; retVal = mechToken; @@ -556,9 +556,6 @@ public class SpNegoContext implements GSSContextSpi { // get the token for mechanism byte[] accept_token = GSS_acceptSecContext(mechToken); - if (accept_token == null) { - valid = false; - } // verify MIC if (!GSSUtil.useMSInterop() && valid) { diff --git a/src/share/classes/sun/security/provider/certpath/BasicChecker.java b/src/share/classes/sun/security/provider/certpath/BasicChecker.java index 491dd4711da25041e4212321971ad32e68a6e6fe..d19d5d193e4de4e2ecc414702f99691809a88e12 100644 --- a/src/share/classes/sun/security/provider/certpath/BasicChecker.java +++ b/src/share/classes/sun/security/provider/certpath/BasicChecker.java @@ -162,7 +162,7 @@ class BasicChecker extends PKIXCertPathChecker { throw new CertPathValidatorException (msg + " check failed", e, null, -1, BasicReason.INVALID_SIGNATURE); - } catch (GeneralSecurityException e) { + } catch (Exception e) { throw new CertPathValidatorException(msg + " check failed", e); } diff --git a/src/share/classes/sun/security/provider/certpath/OCSPResponse.java b/src/share/classes/sun/security/provider/certpath/OCSPResponse.java index 24d88374c1c6c0573a7ff91c8da361c9bbe45fa2..20bac34f2ccfaa6b098730c466b92703f21961a1 100644 --- a/src/share/classes/sun/security/provider/certpath/OCSPResponse.java +++ b/src/share/classes/sun/security/provider/certpath/OCSPResponse.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -151,6 +151,10 @@ class OCSPResponse { private SingleResponse singleResponse; + // Maximum clock skew in milliseconds (10 minutes) allowed when checking + // validity of OCSP responses + private static final long MAX_CLOCK_SKEW = 600000; + // an array of all of the CRLReasons (used in SingleResponse) private static CRLReason[] values = CRLReason.values(); @@ -583,7 +587,9 @@ class OCSPResponse { } } - Date now = new Date(); + long now = System.currentTimeMillis(); + Date nowPlusSkew = new Date(now + MAX_CLOCK_SKEW); + Date nowMinusSkew = new Date(now - MAX_CLOCK_SKEW); if (DEBUG != null) { String until = ""; if (nextUpdate != null) { @@ -593,8 +599,8 @@ class OCSPResponse { thisUpdate + until); } // Check that the test date is within the validity interval - if ((thisUpdate != null && now.before(thisUpdate)) || - (nextUpdate != null && now.after(nextUpdate))) { + if ((thisUpdate != null && nowPlusSkew.before(thisUpdate)) || + (nextUpdate != null && nowMinusSkew.after(nextUpdate))) { if (DEBUG != null) { DEBUG.println("Response is unreliable: its validity " + diff --git a/src/share/classes/sun/security/ssl/BaseSSLSocketImpl.java b/src/share/classes/sun/security/ssl/BaseSSLSocketImpl.java index 8ca8e76ac68260ac2ee99e57aa67fffcb07485c6..a918b1479984963e27ee7538175687d05cd21c18 100644 --- a/src/share/classes/sun/security/ssl/BaseSSLSocketImpl.java +++ b/src/share/classes/sun/security/ssl/BaseSSLSocketImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -256,10 +256,12 @@ abstract class BaseSSLSocketImpl extends SSLSocket { // ignore } } finally { - // we call close on the underlying socket anyway, but be - // doubly sure all resources get released. - // note that we don't need to worry about self, the GC - // will finalize that separately + // We called close on the underlying socket above to + // make doubly sure all resources got released. We + // don't finalize self in the case of overlain sockets, + // that's a different object which the GC will finalize + // separately. + super.finalize(); } } diff --git a/src/share/classes/sun/security/ssl/CipherBox.java b/src/share/classes/sun/security/ssl/CipherBox.java index bcc84c17aa7b92bc2971d10a8d64622126103b30..988e780af724995a5b23e2e65e5224e73e44343f 100644 --- a/src/share/classes/sun/security/ssl/CipherBox.java +++ b/src/share/classes/sun/security/ssl/CipherBox.java @@ -1,5 +1,5 @@ /* - * Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -486,4 +486,21 @@ final class CipherBox { return newlen; } + + /* + * Dispose of any intermediate state in the underlying cipher. + * For PKCS11 ciphers, this will release any attached sessions, and + * thus make finalization faster. + */ + void dispose() { + try { + if (cipher != null) { + // ignore return value. + cipher.doFinal(); + } + } catch (GeneralSecurityException e) { + // swallow for now. + } + } + } diff --git a/src/share/classes/sun/security/ssl/HelloExtensions.java b/src/share/classes/sun/security/ssl/HelloExtensions.java index 51080b59e47b22b019370893e2a1cf918c7782e3..2a21489b2a6837e628138690e9f79ec5f68741d5 100644 --- a/src/share/classes/sun/security/ssl/HelloExtensions.java +++ b/src/share/classes/sun/security/ssl/HelloExtensions.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2006-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -218,7 +218,10 @@ final class UnknownExtension extends HelloExtension { throws IOException { super(type); data = new byte[len]; - s.read(data); + // s.read() does not handle 0-length arrays. + if (len != 0) { + s.read(data); + } } int length() { diff --git a/src/share/classes/sun/security/ssl/SSLEngineImpl.java b/src/share/classes/sun/security/ssl/SSLEngineImpl.java index 4e94c08dce212c6405536fe4c596fb244dee6a3b..72291d54bd85adff48bfe9b8a6e48fe0b4b20b65 100644 --- a/src/share/classes/sun/security/ssl/SSLEngineImpl.java +++ b/src/share/classes/sun/security/ssl/SSLEngineImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -547,6 +547,8 @@ final public class SSLEngineImpl extends SSLEngine { // ... create decompressor + CipherBox oldCipher = readCipher; + try { readCipher = handshaker.newReadCipher(); readMAC = handshaker.newReadMAC(); @@ -555,6 +557,16 @@ final public class SSLEngineImpl extends SSLEngine { throw (SSLException)new SSLException ("Algorithm missing: ").initCause(e); } + + /* + * Dispose of any intermediate state in the underlying cipher. + * For PKCS11 ciphers, this will release any attached sessions, + * and thus make finalization faster. + * + * Since MAC's doFinal() is called for every SSL/TLS packet, it's + * not necessary to do the same with MAC's. + */ + oldCipher.dispose(); } /* @@ -572,6 +584,8 @@ final public class SSLEngineImpl extends SSLEngine { // ... create compressor + CipherBox oldCipher = writeCipher; + try { writeCipher = handshaker.newWriteCipher(); writeMAC = handshaker.newWriteMAC(); @@ -580,6 +594,9 @@ final public class SSLEngineImpl extends SSLEngine { throw (SSLException)new SSLException ("Algorithm missing: ").initCause(e); } + + // See comment above. + oldCipher.dispose(); } /* @@ -1231,6 +1248,9 @@ final public class SSLEngineImpl extends SSLEngine { break; } + // See comment in changeReadCiphers() + writeCipher.dispose(); + connectionState = cs_CLOSED; } @@ -1271,6 +1291,10 @@ final public class SSLEngineImpl extends SSLEngine { closeOutboundInternal(); inboundDone = true; + + // See comment in changeReadCiphers() + readCipher.dispose(); + connectionState = cs_CLOSED; } @@ -1457,6 +1481,10 @@ final public class SSLEngineImpl extends SSLEngine { connectionState = cs_CLOSED; + // See comment in changeReadCiphers() + readCipher.dispose(); + writeCipher.dispose(); + if (cause instanceof RuntimeException) { throw (RuntimeException)cause; } else { diff --git a/src/share/classes/sun/security/ssl/SSLServerSocketImpl.java b/src/share/classes/sun/security/ssl/SSLServerSocketImpl.java index 88bab016175d6dcbfcdf063eec91f10c33d3145f..68037ca5d7347ecfada1f4f56261ee44048d593f 100644 --- a/src/share/classes/sun/security/ssl/SSLServerSocketImpl.java +++ b/src/share/classes/sun/security/ssl/SSLServerSocketImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -304,14 +304,18 @@ class SSLServerSocketImpl extends SSLServerSocket enabledCipherSuites, doClientAuth, enableSessionCreation, enabledProtocols); - ServerHandshaker handshaker = tmp.getServerHandshaker(); + try { + ServerHandshaker handshaker = tmp.getServerHandshaker(); - for (Iterator t = enabledCipherSuites.iterator(); t.hasNext(); ) { - CipherSuite suite = (CipherSuite)t.next(); - if (handshaker.trySetCipherSuite(suite)) { - checkedEnabled = true; - return; + for (Iterator t = enabledCipherSuites.iterator(); t.hasNext(); ) { + CipherSuite suite = (CipherSuite)t.next(); + if (handshaker.trySetCipherSuite(suite)) { + checkedEnabled = true; + return; + } } + } finally { + tmp.closeSocket(); } // diff --git a/src/share/classes/sun/security/ssl/SSLSocketImpl.java b/src/share/classes/sun/security/ssl/SSLSocketImpl.java index 66b6e6d112c0b7cf5856457bb37d17a951cbcc37..7974f1b13b4d2ab383f2295cfc9f04c8e61e9e56 100644 --- a/src/share/classes/sun/security/ssl/SSLSocketImpl.java +++ b/src/share/classes/sun/security/ssl/SSLSocketImpl.java @@ -1012,6 +1012,22 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl { */ ServerHandshaker getServerHandshaker() throws SSLException { initHandshaker(); + + // The connection state would have been set to cs_HANDSHAKE during the + // handshaking initializing, however the caller may not have the + // the low level connection's established, which is not consistent with + // the HANDSHAKE state. As if it is unconnected, we need to reset the + // connection state to cs_START. + if (!isConnected()) { + connectionState = cs_START; + } + + // Make sure that we get a ServerHandshaker. + // This should never happen. + if (!(handshaker instanceof ServerHandshaker)) { + throw new SSLProtocolException("unexpected handshaker instance"); + } + return (ServerHandshaker)handshaker; } @@ -1273,7 +1289,8 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl { } } - private void closeSocket() throws IOException { + protected void closeSocket() throws IOException { + if ((debug != null) && Debug.isOn("ssl")) { System.out.println(threadName() + ", called closeSocket()"); } @@ -1410,6 +1427,10 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl { waitForClose(false); } + // See comment in changeReadCiphers() + readCipher.dispose(); + writeCipher.dispose(); + // state will be set to cs_CLOSED in the finally block below break; @@ -1616,6 +1637,11 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl { * Clean up our side. */ closeSocket(); + + // See comment in changeReadCiphers() + readCipher.dispose(); + writeCipher.dispose(); + connectionState = (oldState == cs_APP_CLOSED) ? cs_APP_CLOSED : cs_CLOSED; throw closeReason; @@ -1746,6 +1772,8 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl { // ... create decompressor + CipherBox oldCipher = readCipher; + try { readCipher = handshaker.newReadCipher(); readMAC = handshaker.newReadMAC(); @@ -1754,6 +1782,16 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl { throw (SSLException)new SSLException ("Algorithm missing: ").initCause(e); } + + /* + * Dispose of any intermediate state in the underlying cipher. + * For PKCS11 ciphers, this will release any attached sessions, + * and thus make finalization faster. + * + * Since MAC's doFinal() is called for every SSL/TLS packet, it's + * not necessary to do the same with MAC's. + */ + oldCipher.dispose(); } // used by Handshaker @@ -1766,6 +1804,8 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl { // ... create compressor + CipherBox oldCipher = writeCipher; + try { writeCipher = handshaker.newWriteCipher(); writeMAC = handshaker.newWriteMAC(); @@ -1774,6 +1814,9 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl { throw (SSLException)new SSLException ("Algorithm missing: ").initCause(e); } + + // See comment above. + oldCipher.dispose(); } /* diff --git a/src/share/classes/sun/swing/AccessibleMethod.java b/src/share/classes/sun/swing/AccessibleMethod.java index 97b02ea7a714be92b171d941c2b7ec1f1944cbb7..228808652b686b6dbb7b28bdaaafd398084e5de2 100644 --- a/src/share/classes/sun/swing/AccessibleMethod.java +++ b/src/share/classes/sun/swing/AccessibleMethod.java @@ -1,5 +1,5 @@ /* - * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/sun/swing/SwingLazyValue.java b/src/share/classes/sun/swing/SwingLazyValue.java index f3b6b9e884f838d4ee8be5ede25deda8538a22aa..f5587282abb89cf1aca3a7f412dcbef56cc18e92 100644 --- a/src/share/classes/sun/swing/SwingLazyValue.java +++ b/src/share/classes/sun/swing/SwingLazyValue.java @@ -1,5 +1,5 @@ /* - * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/sun/swing/SwingUtilities2.java b/src/share/classes/sun/swing/SwingUtilities2.java index b22060bb81532b8422f6d0b8312e638e17ef096d..3a4bc2141c3aec82f7aa78dd07103327964d229d 100644 --- a/src/share/classes/sun/swing/SwingUtilities2.java +++ b/src/share/classes/sun/swing/SwingUtilities2.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/sun/swing/plaf/synth/DefaultSynthStyle.java b/src/share/classes/sun/swing/plaf/synth/DefaultSynthStyle.java index f66692e57781423ce0e06f2288f529697523d858..05a3c57ee3404bfc322d76a3c226dc3b345ed493 100644 --- a/src/share/classes/sun/swing/plaf/synth/DefaultSynthStyle.java +++ b/src/share/classes/sun/swing/plaf/synth/DefaultSynthStyle.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java b/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java index 2721764d1d7a58f040b7b59297e9917e92475183..95fac33386af1cb50711326686452681a9827adf 100644 --- a/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java +++ b/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/sun/tools/jar/Main.java b/src/share/classes/sun/tools/jar/Main.java index 5f06a538158f9d604c79d95508116a457ebb0567..693866e1866ed51c9bad80e962d1acf088924fa8 100644 --- a/src/share/classes/sun/tools/jar/Main.java +++ b/src/share/classes/sun/tools/jar/Main.java @@ -46,9 +46,18 @@ class Main { String zname = ""; String[] files; String rootjar = null; - Hashtable filesTable = new Hashtable(); - Vector paths = new Vector(); - Vector v; + + // An entryName(path)->File map generated during "expand", it helps to + // decide whether or not an existing entry in a jar file needs to be + // replaced, during the "update" operation. + Map entryMap = new HashMap(); + + // All files need to be added/updated. + Set entries = new LinkedHashSet(); + + // Directories specified by "-C" operation. + List paths = new ArrayList(); + CRC32 crc32 = new CRC32(); /* * cflag: create @@ -175,7 +184,8 @@ class Main { vflag = false; } } - create(new BufferedOutputStream(out), expand(files), manifest); + expand(null, files, false); + create(new BufferedOutputStream(out, 4096), manifest); if (in != null) { in.close(); } @@ -198,8 +208,8 @@ class Main { } InputStream manifest = (!Mflag && (mname != null)) ? (new FileInputStream(mname)) : null; - expand(files); - boolean updateOk = update(in, new BufferedOutputStream(out), manifest); + expand(null, files, true); + boolean updateOk = update(in, new BufferedOutputStream(out), manifest, null); if (ok) { ok = updateOk; } @@ -354,7 +364,7 @@ class Main { while (dir.indexOf("//") > -1) { dir = dir.replace("//", "/"); } - paths.addElement(dir.replace(File.separatorChar, '/')); + paths.add(dir.replace(File.separatorChar, '/')); nameBuf[k++] = dir + args[++i]; } else { nameBuf[k++] = args[i]; @@ -387,17 +397,7 @@ class Main { * Expands list of files to process into full list of all files that * can be found by recursively descending directories. */ - String[] expand(String[] files) { - v = new Vector(); - expand(null, files, v, filesTable); - files = new String[v.size()]; - for (int i = 0; i < files.length; i++) { - files[i] = ((File)v.elementAt(i)).getPath(); - } - return files; - } - - void expand(File dir, String[] files, Vector v, Hashtable t) { + void expand(File dir, String[] files, boolean isUpdate) { if (files == null) { return; } @@ -409,17 +409,20 @@ class Main { f = new File(dir, files[i]); } if (f.isFile()) { - if (!t.contains(f)) { - t.put(entryName(f.getPath()), f); - v.addElement(f); + if (entries.add(f)) { + if (isUpdate) + entryMap.put(entryName(f.getPath()), f); } } else if (f.isDirectory()) { - String dirPath = f.getPath(); - dirPath = (dirPath.endsWith(File.separator)) ? dirPath : - (dirPath + File.separator); - t.put(entryName(dirPath), f); - v.addElement(f); - expand(f, f.list(), v, t); + if (entries.add(f)) { + if (isUpdate) { + String dirPath = f.getPath(); + dirPath = (dirPath.endsWith(File.separator)) ? dirPath : + (dirPath + File.separator); + entryMap.put(entryName(dirPath), f); + } + expand(f, f.list(), isUpdate); + } } else { error(formatMsg("error.nosuch.fileordir", String.valueOf(f))); ok = false; @@ -430,7 +433,7 @@ class Main { /* * Creates a new JAR file. */ - void create(OutputStream out, String[] files, Manifest manifest) + void create(OutputStream out, Manifest manifest) throws IOException { ZipOutputStream zos = new JarOutputStream(out); @@ -455,8 +458,8 @@ class Main { manifest.write(zos); zos.closeEntry(); } - for (int i = 0; i < files.length; i++) { - addFile(zos, new File(files[i])); + for (File file: entries) { + addFile(zos, file); } zos.close(); } @@ -465,10 +468,9 @@ class Main { * update an existing jar file. */ boolean update(InputStream in, OutputStream out, - InputStream newManifest) throws IOException + InputStream newManifest, + JarIndex jarIndex) throws IOException { - Hashtable t = filesTable; - Vector v = this.v; ZipInputStream zis = new ZipInputStream(in); ZipOutputStream zos = new JarOutputStream(out); ZipEntry e = null; @@ -477,8 +479,8 @@ class Main { int n = 0; boolean updateOk = true; - if (t.containsKey(INDEX)) { - addIndex((JarIndex)t.get(INDEX), zos); + if (jarIndex != null) { + addIndex(jarIndex, zos); } // put the old entries first, replace if necessary @@ -488,9 +490,8 @@ class Main { boolean isManifestEntry = name.toUpperCase( java.util.Locale.ENGLISH). equals(MANIFEST); - if ((name.toUpperCase().equals(INDEX) - && t.containsKey(INDEX)) - || (Mflag && isManifestEntry)) { + if ((name.toUpperCase().equals(INDEX) && jarIndex != null) + || (Mflag && isManifestEntry)) { continue; } else if (isManifestEntry && ((newManifest != null) || (ename != null))) { @@ -514,8 +515,7 @@ class Main { } updateManifest(old, zos); } else { - if (!t.containsKey(name)) { // copy the old stuff - + if (!entryMap.containsKey(name)) { // copy the old stuff // do our own compression ZipEntry e2 = new ZipEntry(name); e2.setMethod(e.getMethod()); @@ -531,21 +531,17 @@ class Main { zos.write(buf, 0, n); } } else { // replace with the new files - addFile(zos, (File)(t.get(name))); - t.remove(name); + File f = entryMap.get(name); + addFile(zos, f); + entryMap.remove(name); + entries.remove(f); } } } - t.remove(INDEX); // add the remaining new files - if (!t.isEmpty()) { - for (int i = 0; i < v.size(); i++) { - File f = (File)v.elementAt(i); - if (t.containsValue(f)) { - addFile(zos, f); - } - } + for (File f: entries) { + addFile(zos, f); } if (!foundManifest) { if (newManifest != null) { @@ -611,8 +607,7 @@ class Main { private String entryName(String name) { name = name.replace(File.separatorChar, '/'); String matchPath = ""; - for (int i = 0; i < paths.size(); i++) { - String path = (String)paths.elementAt(i); + for (String path : paths) { if (name.startsWith(path) && (path.length() > matchPath.length())) { matchPath = path; } @@ -669,7 +664,6 @@ class Main { void addFile(ZipOutputStream zos, File file) throws IOException { String name = file.getPath(); boolean isDir = file.isDirectory(); - if (isDir) { name = name.endsWith(File.separator) ? name : (name + File.separator); @@ -704,7 +698,7 @@ class Main { } zos.putNextEntry(e); if (!isDir) { - byte[] buf = new byte[1024]; + byte[] buf = new byte[8192]; int len; InputStream is = new BufferedInputStream(new FileInputStream(file)); while ((len = is.read(buf, 0, buf.length)) != -1) { @@ -749,7 +743,7 @@ class Main { */ private void crc32File(ZipEntry e, File f) throws IOException { InputStream is = new BufferedInputStream(new FileInputStream(f)); - byte[] buf = new byte[1024]; + byte[] buf = new byte[8192]; crc32.reset(); int r = 0; int nread = 0; @@ -772,7 +766,7 @@ class Main { void extract(InputStream in, String files[]) throws IOException { ZipInputStream zis = new ZipInputStream(in); ZipEntry e; - // Set of all directory entries specified in archive. Dissallows + // Set of all directory entries specified in archive. Disallows // null entries. Disallows all entries if using pre-6.0 behavior. Set dirs = new HashSet() { public boolean add(ZipEntry e) { @@ -897,17 +891,16 @@ class Main { } } - /** * Output the class index table to the INDEX.LIST file of the * root jar file. */ void dumpIndex(String rootjar, JarIndex index) throws IOException { - filesTable.put(INDEX, index); File scratchFile = File.createTempFile("scratch", null, new File(".")); File jarFile = new File(rootjar); boolean updateOk = update(new FileInputStream(jarFile), - new FileOutputStream(scratchFile), null); + new FileOutputStream(scratchFile), + null, index); jarFile.delete(); if (!scratchFile.renameTo(jarFile)) { scratchFile.delete(); diff --git a/src/share/classes/sun/util/calendar/ZoneInfo.java b/src/share/classes/sun/util/calendar/ZoneInfo.java index cde5959e481ab167e6fad2b5b1a79b8676ea988e..01a3a0317a978f9580a3cf2eb7b4875372b9c4ed 100644 --- a/src/share/classes/sun/util/calendar/ZoneInfo.java +++ b/src/share/classes/sun/util/calendar/ZoneInfo.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/sun/util/resources/TimeZoneNames.java b/src/share/classes/sun/util/resources/TimeZoneNames.java index 6925ba12d5b3630679a50032cb2fe84ba2a638fe..aae4dd35ea2fc979df9b21ef553a22b07c1fc63d 100644 --- a/src/share/classes/sun/util/resources/TimeZoneNames.java +++ b/src/share/classes/sun/util/resources/TimeZoneNames.java @@ -1,5 +1,5 @@ /* - * Portions Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved. + * Portions Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/sun/util/resources/TimeZoneNames_de.java b/src/share/classes/sun/util/resources/TimeZoneNames_de.java index eed4bbfb37d4326b7dff435fe6573fe347c95fd1..cdcb454601a92517a24d12987ec8bfc6605689d9 100644 --- a/src/share/classes/sun/util/resources/TimeZoneNames_de.java +++ b/src/share/classes/sun/util/resources/TimeZoneNames_de.java @@ -1,5 +1,5 @@ /* - * Portions Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Portions Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/sun/util/resources/TimeZoneNames_es.java b/src/share/classes/sun/util/resources/TimeZoneNames_es.java index 27bf65331434f1a420736053869d44ea7363d3e4..557ea90c8d04a5e9df436dac514d9f35eb62d432 100644 --- a/src/share/classes/sun/util/resources/TimeZoneNames_es.java +++ b/src/share/classes/sun/util/resources/TimeZoneNames_es.java @@ -1,5 +1,5 @@ /* - * Portions Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved. + * Portions Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/sun/util/resources/TimeZoneNames_fr.java b/src/share/classes/sun/util/resources/TimeZoneNames_fr.java index e9a3811d1b78b55ce90ed65f8aaa5de7f292bf4e..ec537df46717dbb6c0aac6776d3b18e822b78047 100644 --- a/src/share/classes/sun/util/resources/TimeZoneNames_fr.java +++ b/src/share/classes/sun/util/resources/TimeZoneNames_fr.java @@ -1,5 +1,5 @@ /* - * Portions Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Portions Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/sun/util/resources/TimeZoneNames_it.java b/src/share/classes/sun/util/resources/TimeZoneNames_it.java index 8012c36f7e685756a5c4201328af6189a6480871..4c7d79a8a7cd0e02130d185d48c7f98da826fea5 100644 --- a/src/share/classes/sun/util/resources/TimeZoneNames_it.java +++ b/src/share/classes/sun/util/resources/TimeZoneNames_it.java @@ -1,5 +1,5 @@ /* - * Portions Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Portions Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/sun/util/resources/TimeZoneNames_ja.java b/src/share/classes/sun/util/resources/TimeZoneNames_ja.java index 33a1913bd521e004b25441fb4018a47e8709ee7e..2eb8063cbc7d1e45080ee25c32ec76796feeac2e 100644 --- a/src/share/classes/sun/util/resources/TimeZoneNames_ja.java +++ b/src/share/classes/sun/util/resources/TimeZoneNames_ja.java @@ -1,5 +1,5 @@ /* - * Portions Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Portions Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/sun/util/resources/TimeZoneNames_ko.java b/src/share/classes/sun/util/resources/TimeZoneNames_ko.java index 8068237976fd99ab056771e32d2fdf72ba75c224..81a23dd01e21a37801c6abe325ad54a8db5f8405 100644 --- a/src/share/classes/sun/util/resources/TimeZoneNames_ko.java +++ b/src/share/classes/sun/util/resources/TimeZoneNames_ko.java @@ -1,5 +1,5 @@ /* - * Portions Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Portions Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/sun/util/resources/TimeZoneNames_sv.java b/src/share/classes/sun/util/resources/TimeZoneNames_sv.java index cc872089fe1ee75a1974a982bea8920e03e4a346..e56a8dbff30c4e15c8a4ce20632276dbea97f284 100644 --- a/src/share/classes/sun/util/resources/TimeZoneNames_sv.java +++ b/src/share/classes/sun/util/resources/TimeZoneNames_sv.java @@ -1,5 +1,5 @@ /* - * Portions Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Portions Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java b/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java index 62304e98586ec6684600c681cdc58223ed82d99b..41fec630ecd4cde2afadda3201216a708e50db53 100644 --- a/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java +++ b/src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java @@ -1,5 +1,5 @@ /* - * Portions Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Portions Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java b/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java index 77f539fe990237d13cefb82bc27e04753af518b7..1bd6bf739d9128761f98ed7df87d18c5b7eca3aa 100644 --- a/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java +++ b/src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java @@ -1,5 +1,5 @@ /* - * Portions Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved. + * Portions Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/share/lib/management/management.properties b/src/share/lib/management/management.properties index ab7cff92cde8113fe773f044a5d7ff55b6c2c40b..db08b780ebd4498aef6329f4bf785dab85af8fad 100644 --- a/src/share/lib/management/management.properties +++ b/src/share/lib/management/management.properties @@ -82,7 +82,7 @@ # # com.sun.management.snmp.interface= # Specifies the local interface on which the SNMP agent will bind. -# This is usefull when running on machines which have several +# This is useful when running on machines which have several # interfaces defined. It makes it possible to listen to a specific # subnet accessible through that interface. # Default for this property is "localhost". @@ -143,6 +143,26 @@ # running MBean server, the connector, or the registry. # +# +# ########## RMI connector settings for local management ########## +# +# com.sun.management.jmxremote.local.only=true|false +# Default for this property is true. (Case for true/false ignored) +# If this property is specified as true then the local JMX RMI connector +# server will only accept connection requests from clients running on +# the host where the out-of-the-box JMX management agent is running. +# In order to ensure backwards compatibility this property could be +# set to false. However, deploying the local management agent in this +# way is discouraged because the local JMX RMI connector server will +# accept connection requests from any client either local or remote. +# For remote management the remote JMX RMI connector server should +# be used instead with authentication and SSL/TLS encryption enabled. +# + +# For allowing the local management agent accept local +# and remote connection requests use the following line +# com.sun.management.jmxremote.local.only=false + # # ###################### RMI SSL ############################# # diff --git a/src/share/native/java/io/io_util.c b/src/share/native/java/io/io_util.c index 52450307a1671d23622fae918f8b154bd00a561d..144287bb7581ff292c22c37629283e512b886f16 100644 --- a/src/share/native/java/io/io_util.c +++ b/src/share/native/java/io/io_util.c @@ -25,6 +25,7 @@ #include #include +#include #include "jni.h" #include "jni_util.h" @@ -34,9 +35,9 @@ /* IO helper functions */ -int +jint readSingle(JNIEnv *env, jobject this, jfieldID fid) { - int nread; + jint nread; char ret; FD fd = GET_FD(this, fid); if (fd == -1) { @@ -49,7 +50,7 @@ readSingle(JNIEnv *env, jobject this, jfieldID fid) { } else if (nread == JVM_IO_ERR) { /* error */ JNU_ThrowIOExceptionWithLastError(env, "Read error"); } else if (nread == JVM_IO_INTR) { - JNU_ThrowByName(env, "java/io/InterruptedIOException", 0); + JNU_ThrowByName(env, "java/io/InterruptedIOException", NULL); } return ret & 0xFF; } @@ -58,25 +59,35 @@ readSingle(JNIEnv *env, jobject this, jfieldID fid) { */ #define BUF_SIZE 8192 +/* + * Returns true if the array slice defined by the given offset and length + * is out of bounds. + */ +static int +outOfBounds(JNIEnv *env, jint off, jint len, jbyteArray array) { + return ((off < 0) || + (len < 0) || + // We are very careful to avoid signed integer overflow, + // the result of which is undefined in C. + ((*env)->GetArrayLength(env, array) - off < len)); +} -int +jint readBytes(JNIEnv *env, jobject this, jbyteArray bytes, jint off, jint len, jfieldID fid) { - int nread, datalen; + jint nread; char stackBuf[BUF_SIZE]; - char *buf = 0; + char *buf = NULL; FD fd; if (IS_NULL(bytes)) { - JNU_ThrowNullPointerException(env, 0); + JNU_ThrowNullPointerException(env, NULL); return -1; } - datalen = (*env)->GetArrayLength(env, bytes); - if ((off < 0) || (off > datalen) || - (len < 0) || ((off + len) > datalen) || ((off + len) < 0)) { - JNU_ThrowByName(env, "java/lang/IndexOutOfBoundsException", 0); + if (outOfBounds(env, off, len, bytes)) { + JNU_ThrowByName(env, "java/lang/IndexOutOfBoundsException", NULL); return -1; } @@ -84,8 +95,8 @@ readBytes(JNIEnv *env, jobject this, jbyteArray bytes, return 0; } else if (len > BUF_SIZE) { buf = malloc(len); - if (buf == 0) { - JNU_ThrowOutOfMemoryError(env, 0); + if (buf == NULL) { + JNU_ThrowOutOfMemoryError(env, NULL); return 0; } } else { @@ -95,18 +106,18 @@ readBytes(JNIEnv *env, jobject this, jbyteArray bytes, fd = GET_FD(this, fid); if (fd == -1) { JNU_ThrowIOException(env, "Stream Closed"); - return -1; - } - - nread = IO_Read(fd, buf, len); - if (nread > 0) { - (*env)->SetByteArrayRegion(env, bytes, off, nread, (jbyte *)buf); - } else if (nread == JVM_IO_ERR) { - JNU_ThrowIOExceptionWithLastError(env, "Read error"); - } else if (nread == JVM_IO_INTR) { /* EOF */ - JNU_ThrowByName(env, "java/io/InterruptedIOException", 0); - } else { /* EOF */ nread = -1; + } else { + nread = IO_Read(fd, buf, len); + if (nread > 0) { + (*env)->SetByteArrayRegion(env, bytes, off, nread, (jbyte *)buf); + } else if (nread == JVM_IO_ERR) { + JNU_ThrowIOExceptionWithLastError(env, "Read error"); + } else if (nread == JVM_IO_INTR) { + JNU_ThrowByName(env, "java/io/InterruptedIOException", NULL); + } else { /* EOF */ + nread = -1; + } } if (buf != stackBuf) { @@ -117,8 +128,9 @@ readBytes(JNIEnv *env, jobject this, jbyteArray bytes, void writeSingle(JNIEnv *env, jobject this, jint byte, jfieldID fid) { - char c = byte; - int n; + // Discard the 24 high-order bits of byte. See OutputStream#write(int) + char c = (char) byte; + jint n; FD fd = GET_FD(this, fid); if (fd == -1) { JNU_ThrowIOException(env, "Stream Closed"); @@ -128,28 +140,26 @@ writeSingle(JNIEnv *env, jobject this, jint byte, jfieldID fid) { if (n == JVM_IO_ERR) { JNU_ThrowIOExceptionWithLastError(env, "Write error"); } else if (n == JVM_IO_INTR) { - JNU_ThrowByName(env, "java/io/InterruptedIOException", 0); + JNU_ThrowByName(env, "java/io/InterruptedIOException", NULL); } } void writeBytes(JNIEnv *env, jobject this, jbyteArray bytes, - jint off, jint len, jfieldID fid) + jint off, jint len, jfieldID fid) { - int n, datalen; + jint n; char stackBuf[BUF_SIZE]; - char *buf = 0; + char *buf = NULL; FD fd; if (IS_NULL(bytes)) { - JNU_ThrowNullPointerException(env, 0); + JNU_ThrowNullPointerException(env, NULL); return; } - datalen = (*env)->GetArrayLength(env, bytes); - if ((off < 0) || (off > datalen) || - (len < 0) || ((off + len) > datalen) || ((off + len) < 0)) { - JNU_ThrowByName(env, "java/lang/IndexOutOfBoundsException", 0); + if (outOfBounds(env, off, len, bytes)) { + JNU_ThrowByName(env, "java/lang/IndexOutOfBoundsException", NULL); return; } @@ -157,8 +167,8 @@ writeBytes(JNIEnv *env, jobject this, jbyteArray bytes, return; } else if (len > BUF_SIZE) { buf = malloc(len); - if (buf == 0) { - JNU_ThrowOutOfMemoryError(env, 0); + if (buf == NULL) { + JNU_ThrowOutOfMemoryError(env, NULL); return; } } else { @@ -180,7 +190,7 @@ writeBytes(JNIEnv *env, jobject this, jbyteArray bytes, JNU_ThrowIOExceptionWithLastError(env, "Write error"); break; } else if (n == JVM_IO_INTR) { - JNU_ThrowByName(env, "java/io/InterruptedIOException", 0); + JNU_ThrowByName(env, "java/io/InterruptedIOException", NULL); break; } off += n; @@ -196,19 +206,19 @@ void throwFileNotFoundException(JNIEnv *env, jstring path) { char buf[256]; - int n; + jint n; jobject x; jstring why = NULL; n = JVM_GetLastErrorString(buf, sizeof(buf)); if (n > 0) { - why = JNU_NewStringPlatform(env, buf); + why = JNU_NewStringPlatform(env, buf); } x = JNU_NewObjectByName(env, - "java/io/FileNotFoundException", - "(Ljava/lang/String;Ljava/lang/String;)V", - path, why); + "java/io/FileNotFoundException", + "(Ljava/lang/String;Ljava/lang/String;)V", + path, why); if (x != NULL) { - (*env)->Throw(env, x); + (*env)->Throw(env, x); } } diff --git a/src/share/native/java/io/io_util.h b/src/share/native/java/io/io_util.h index 5b2d487058ad16771a150d1288cf05bd820c8782..9a7e7b13f853cdd1c0a2d13853e799976db975f9 100644 --- a/src/share/native/java/io/io_util.h +++ b/src/share/native/java/io/io_util.h @@ -38,9 +38,9 @@ extern jfieldID IO_handle_fdID; * IO helper functions */ -int readSingle(JNIEnv *env, jobject this, jfieldID fid); -int readBytes(JNIEnv *env, jobject this, jbyteArray bytes, jint off, - jint len, jfieldID fid); +jint readSingle(JNIEnv *env, jobject this, jfieldID fid); +jint readBytes(JNIEnv *env, jobject this, jbyteArray bytes, jint off, + jint len, jfieldID fid); void writeSingle(JNIEnv *env, jobject this, jint byte, jfieldID fid); void writeBytes(JNIEnv *env, jobject this, jbyteArray bytes, jint off, jint len, jfieldID fid); diff --git a/src/share/native/java/util/zip/zip_util.c b/src/share/native/java/util/zip/zip_util.c index 5d518cf4ced4f75620e790df2da6f72216ae86fb..3b00b9500ac65bc202c87353fb9df0a15ef6efeb 100644 --- a/src/share/native/java/util/zip/zip_util.c +++ b/src/share/native/java/util/zip/zip_util.c @@ -273,8 +273,8 @@ static const jlong END_MAXLEN = 0xFFFF + ENDHDR; /* * Searches for end of central directory (END) header. The contents of * the END header will be read and placed in endbuf. Returns the file - * position of the END header, otherwise returns 0 if the END header - * was not found or -1 if an error occurred. + * position of the END header, otherwise returns -1 if the END header + * was not found or an error occurred. */ static jlong findEND(jzfile *zip, void *endbuf) @@ -314,7 +314,7 @@ findEND(jzfile *zip, void *endbuf) } } } - return 0; /* END header not found */ + return -1; /* END header not found */ } /* @@ -460,9 +460,8 @@ if (1) { zip->msg = message; goto Catch; } else ((void)0) /* * Reads zip file central directory. Returns the file position of first - * CEN header, otherwise returns 0 if central directory not found or -1 - * if an error occurred. If zip->msg != NULL then the error was a zip - * format error and zip->msg has the error text. + * CEN header, otherwise returns -1 if an error occured. If zip->msg != NULL + * then the error was a zip format error and zip->msg has the error text. * Always pass in -1 for knownTotal; it's used for a recursive call. */ static jlong @@ -488,9 +487,9 @@ readCEN(jzfile *zip, jint knownTotal) /* Get position of END header */ if ((endpos = findEND(zip, endbuf)) == -1) - return -1; /* system error */ + return -1; /* no END header or system error */ - if (endpos == 0) return 0; /* END header not found */ + if (endpos == 0) return 0; /* only END header present */ freeCEN(zip); diff --git a/src/share/native/sun/font/bidi/ubidi.c b/src/share/native/sun/font/bidi/ubidi.c index 41be82c38705f183d6182368a6770add77023ff0..cd4e3fec1434b88e2bcdb49513040f3ad670eb9e 100644 --- a/src/share/native/sun/font/bidi/ubidi.c +++ b/src/share/native/sun/font/bidi/ubidi.c @@ -1,5 +1,5 @@ /* - * Portions Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved. + * Portions Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/solaris/classes/sun/net/www/protocol/http/NTLMAuthentication.java b/src/solaris/classes/sun/net/www/protocol/http/NTLMAuthentication.java index 4c5c6c847952e4f7f806a31cc807717003c9f270..5abd79ed9ef4b8501ca98f2628798c8b0c0a278d 100644 --- a/src/solaris/classes/sun/net/www/protocol/http/NTLMAuthentication.java +++ b/src/solaris/classes/sun/net/www/protocol/http/NTLMAuthentication.java @@ -1,5 +1,5 @@ /* - * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/src/solaris/classes/sun/nio/ch/DevPollSelectorImpl.java b/src/solaris/classes/sun/nio/ch/DevPollSelectorImpl.java index 532b02c23c9461c1dcc0c3c0b3f65b1b925e64db..cdf19cda20760840a79104c0782d4f1f6616472a 100644 --- a/src/solaris/classes/sun/nio/ch/DevPollSelectorImpl.java +++ b/src/solaris/classes/sun/nio/ch/DevPollSelectorImpl.java @@ -46,15 +46,15 @@ class DevPollSelectorImpl // The poll object DevPollArrayWrapper pollWrapper; - // The number of valid channels in this Selector's poll array - private int totalChannels; - // Maps from file descriptors to keys private Map fdToKey; // True if this Selector has been closed private boolean closed = false; + // Lock for close/cleanup + private Object closeLock = new Object(); + // Lock for interrupt triggering and clearing private Object interruptLock = new Object(); private boolean interruptTriggered = false; @@ -72,7 +72,6 @@ class DevPollSelectorImpl pollWrapper = new DevPollArrayWrapper(); pollWrapper.initInterrupt(fd0, fd1); fdToKey = new HashMap(); - totalChannels = 1; } protected int doSelect(long timeout) @@ -131,45 +130,39 @@ class DevPollSelectorImpl } protected void implClose() throws IOException { - if (!closed) { - closed = true; - - // prevent further wakeup - synchronized (interruptLock) { - interruptTriggered = true; - } + if (closed) + return; + closed = true; - FileDispatcher.closeIntFD(fd0); - FileDispatcher.closeIntFD(fd1); - if (pollWrapper != null) { - - pollWrapper.release(fd0); - pollWrapper.closeDevPollFD(); - pollWrapper = null; - selectedKeys = null; - - // Deregister channels - Iterator i = keys.iterator(); - while (i.hasNext()) { - SelectionKeyImpl ski = (SelectionKeyImpl)i.next(); - deregister(ski); - SelectableChannel selch = ski.channel(); - if (!selch.isOpen() && !selch.isRegistered()) - ((SelChImpl)selch).kill(); - i.remove(); - } - totalChannels = 0; + // prevent further wakeup + synchronized (interruptLock) { + interruptTriggered = true; + } - } - fd0 = -1; - fd1 = -1; + FileDispatcher.closeIntFD(fd0); + FileDispatcher.closeIntFD(fd1); + + pollWrapper.release(fd0); + pollWrapper.closeDevPollFD(); + selectedKeys = null; + + // Deregister channels + Iterator i = keys.iterator(); + while (i.hasNext()) { + SelectionKeyImpl ski = (SelectionKeyImpl)i.next(); + deregister(ski); + SelectableChannel selch = ski.channel(); + if (!selch.isOpen() && !selch.isRegistered()) + ((SelChImpl)selch).kill(); + i.remove(); } + fd0 = -1; + fd1 = -1; } protected void implRegister(SelectionKeyImpl ski) { int fd = IOUtil.fdVal(ski.channel.getFD()); fdToKey.put(Integer.valueOf(fd), ski); - totalChannels++; keys.add(ski); } @@ -179,7 +172,6 @@ class DevPollSelectorImpl int fd = ski.channel.getFDVal(); fdToKey.remove(Integer.valueOf(fd)); pollWrapper.release(fd); - totalChannels--; ski.setIndex(-1); keys.remove(ski); selectedKeys.remove(ski); @@ -190,6 +182,8 @@ class DevPollSelectorImpl } void putEventOps(SelectionKeyImpl sk, int ops) { + if (closed) + throw new ClosedSelectorException(); int fd = IOUtil.fdVal(sk.channel.getFD()); pollWrapper.setInterest(fd, ops); } diff --git a/src/solaris/classes/sun/nio/ch/EPollSelectorImpl.java b/src/solaris/classes/sun/nio/ch/EPollSelectorImpl.java index b9193435c79495159eb37fc68985bb44a6f3d6be..5dc17bb014ca1d1717e79959f135b7cd4f36421a 100644 --- a/src/solaris/classes/sun/nio/ch/EPollSelectorImpl.java +++ b/src/solaris/classes/sun/nio/ch/EPollSelectorImpl.java @@ -31,7 +31,6 @@ import java.nio.channels.spi.*; import java.util.*; import sun.misc.*; - /** * An implementation of Selector for Linux 2.6+ kernels that uses * the epoll event notification facility. @@ -51,7 +50,7 @@ class EPollSelectorImpl private Map fdToKey; // True if this Selector has been closed - private boolean closed = false; + private volatile boolean closed = false; // Lock for interrupt triggering and clearing private Object interruptLock = new Object(); @@ -128,40 +127,41 @@ class EPollSelectorImpl } protected void implClose() throws IOException { - if (!closed) { - closed = true; + if (closed) + return; + closed = true; - // prevent further wakeup - synchronized (interruptLock) { - interruptTriggered = true; - } + // prevent further wakeup + synchronized (interruptLock) { + interruptTriggered = true; + } - FileDispatcher.closeIntFD(fd0); - FileDispatcher.closeIntFD(fd1); - if (pollWrapper != null) { - - pollWrapper.release(fd0); - pollWrapper.closeEPollFD(); - pollWrapper = null; - selectedKeys = null; - - // Deregister channels - Iterator i = keys.iterator(); - while (i.hasNext()) { - SelectionKeyImpl ski = (SelectionKeyImpl)i.next(); - deregister(ski); - SelectableChannel selch = ski.channel(); - if (!selch.isOpen() && !selch.isRegistered()) - ((SelChImpl)selch).kill(); - i.remove(); - } - } - fd0 = -1; - fd1 = -1; + FileDispatcher.closeIntFD(fd0); + FileDispatcher.closeIntFD(fd1); + + pollWrapper.release(fd0); + pollWrapper.closeEPollFD(); + // it is possible + selectedKeys = null; + + // Deregister channels + Iterator i = keys.iterator(); + while (i.hasNext()) { + SelectionKeyImpl ski = (SelectionKeyImpl)i.next(); + deregister(ski); + SelectableChannel selch = ski.channel(); + if (!selch.isOpen() && !selch.isRegistered()) + ((SelChImpl)selch).kill(); + i.remove(); } + + fd0 = -1; + fd1 = -1; } protected void implRegister(SelectionKeyImpl ski) { + if (closed) + throw new ClosedSelectorException(); int fd = IOUtil.fdVal(ski.channel.getFD()); fdToKey.put(Integer.valueOf(fd), ski); pollWrapper.add(fd); @@ -183,6 +183,8 @@ class EPollSelectorImpl } void putEventOps(SelectionKeyImpl sk, int ops) { + if (closed) + throw new ClosedSelectorException(); int fd = IOUtil.fdVal(sk.channel.getFD()); pollWrapper.setInterest(fd, ops); } diff --git a/src/windows/bin/java_md.c b/src/windows/bin/java_md.c index 98ea77b3ed4d8d6adce722c8d81bc9700fbbdfaa..c468258b72b5802876e9ba9d5e9cac55356429b8 100644 --- a/src/windows/bin/java_md.c +++ b/src/windows/bin/java_md.c @@ -41,7 +41,6 @@ #define JVM_DLL "jvm.dll" #define JAVA_DLL "java.dll" -#define CRT_DLL "msvcr71.dll" /* * Prototypes. @@ -206,7 +205,15 @@ LoadJavaVM(const char *jvmpath, InvocationFunctions *ifn) * assumed to be present in the "JRE path" directory. If it is not found * there (or "JRE path" fails to resolve), skip the explicit load and let * nature take its course, which is likely to be a failure to execute. + * + * (NOTE: the above statement is only true for Visual Studio 2003 and + * msvcr71.dll.) */ +#ifdef _MSC_VER +#if _MSC_VER < 1400 +#define CRT_DLL "msvcr71.dll" +#endif +#ifdef CRT_DLL if (GetJREPath(crtpath, MAXPATHLEN)) { (void)JLI_StrCat(crtpath, "\\bin\\" CRT_DLL); /* Add crt dll */ JLI_TraceLauncher("CRT path is %s\n", crtpath); @@ -217,6 +224,8 @@ LoadJavaVM(const char *jvmpath, InvocationFunctions *ifn) } } } +#endif /* CRT_DLL */ +#endif /* _MSC_VER */ /* Load the Java VM DLL */ if ((handle = LoadLibrary(jvmpath)) == 0) { diff --git a/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java b/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java index ac25ac0803ae4b9a72f529da238edf47050c2b84..5457a2cfb2cf673a8389ef396e7fee1753270c98 100644 --- a/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java +++ b/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java @@ -80,6 +80,9 @@ final class WindowsSelectorImpl extends SelectorImpl { // File descriptors corresponding to source and sink private final int wakeupSourceFd, wakeupSinkFd; + // Lock for close cleanup + private Object closeLock = new Object(); + // Maps file descriptors to their indices in pollArray private final static class FdMap extends HashMap { static final long serialVersionUID = 0L; @@ -473,42 +476,48 @@ final class WindowsSelectorImpl extends SelectorImpl { } protected void implClose() throws IOException { - if (channelArray != null) { - if (pollWrapper != null) { - // prevent further wakeup - synchronized (interruptLock) { - interruptTriggered = true; - } - wakeupPipe.sink().close(); - wakeupPipe.source().close(); - for(int i = 1; i < totalChannels; i++) { // Deregister channels - if (i % MAX_SELECTABLE_FDS != 0) { // skip wakeupEvent - deregister(channelArray[i]); - SelectableChannel selch = channelArray[i].channel(); - if (!selch.isOpen() && !selch.isRegistered()) - ((SelChImpl)selch).kill(); + synchronized (closeLock) { + if (channelArray != null) { + if (pollWrapper != null) { + // prevent further wakeup + synchronized (interruptLock) { + interruptTriggered = true; } - } - pollWrapper.free(); - pollWrapper = null; - selectedKeys = null; - channelArray = null; - threads.clear(); - // Call startThreads. All remaining helper threads now exit, - // since threads.size() = 0; - startLock.startThreads(); + wakeupPipe.sink().close(); + wakeupPipe.source().close(); + for(int i = 1; i < totalChannels; i++) { // Deregister channels + if (i % MAX_SELECTABLE_FDS != 0) { // skip wakeupEvent + deregister(channelArray[i]); + SelectableChannel selch = channelArray[i].channel(); + if (!selch.isOpen() && !selch.isRegistered()) + ((SelChImpl)selch).kill(); + } + } + pollWrapper.free(); + pollWrapper = null; + selectedKeys = null; + channelArray = null; + threads.clear(); + // Call startThreads. All remaining helper threads now exit, + // since threads.size() = 0; + startLock.startThreads(); + } } } } protected void implRegister(SelectionKeyImpl ski) { - growIfNeeded(); - channelArray[totalChannels] = ski; - ski.setIndex(totalChannels); - fdMap.put(ski); - keys.add(ski); - pollWrapper.addEntry(totalChannels, ski); - totalChannels++; + synchronized (closeLock) { + if (pollWrapper == null) + throw new ClosedSelectorException(); + growIfNeeded(); + channelArray[totalChannels] = ski; + ski.setIndex(totalChannels); + fdMap.put(ski); + keys.add(ski); + pollWrapper.addEntry(totalChannels, ski); + totalChannels++; + } } private void growIfNeeded() { @@ -554,7 +563,11 @@ final class WindowsSelectorImpl extends SelectorImpl { } void putEventOps(SelectionKeyImpl sk, int ops) { - pollWrapper.putEventOps(sk.getIndex(), ops); + synchronized (closeLock) { + if (pollWrapper == null) + throw new ClosedSelectorException(); + pollWrapper.putEventOps(sk.getIndex(), ops); + } } public Selector wakeup() { diff --git a/src/windows/native/java/lang/java_props_md.c b/src/windows/native/java/lang/java_props_md.c index 3069580da9ca9d24a9a6926ffebc03596fe8d4d4..f75721f9f71c9b91c32fab9ef9a6d38c7634c0b7 100644 --- a/src/windows/native/java/lang/java_props_md.c +++ b/src/windows/native/java/lang/java_props_md.c @@ -38,6 +38,12 @@ #define VER_PLATFORM_WIN32_WINDOWS 1 #endif +#ifndef PROCESSOR_ARCHITECTURE_AMD64 +#define PROCESSOR_ARCHITECTURE_AMD64 9 +#endif + +typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO); + #define SHELL_KEY "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders" /* Encodings for Windows language groups. According to @@ -674,9 +680,22 @@ GetJavaProperties(JNIEnv* env) { char buf[100]; OSVERSIONINFOEX ver; + SYSTEM_INFO si; + PGNSI pGNSI; + ver.dwOSVersionInfoSize = sizeof(ver); GetVersionEx((OSVERSIONINFO *) &ver); + ZeroMemory(&si, sizeof(SYSTEM_INFO)); + // Call GetNativeSystemInfo if supported or GetSystemInfo otherwise. + pGNSI = (PGNSI) GetProcAddress( + GetModuleHandle(TEXT("kernel32.dll")), + "GetNativeSystemInfo"); + if(NULL != pGNSI) + pGNSI(&si); + else + GetSystemInfo(&si); + /* * From msdn page on OSVERSIONINFOEX, current as of this * writing, decoding of dwMajorVersion and dwMinorVersion. @@ -690,9 +709,14 @@ GetJavaProperties(JNIEnv* env) * Windows 3.51 3 51 * Windows NT 4.0 4 0 * Windows 2000 5 0 - * Windows XP 5 1 + * Windows XP 32 bit 5 1 * Windows Server 2003 family 5 2 + * Windows XP 64 bit 5 2 + * where ((&ver.wServicePackMinor) + 2) = 1 + * and si.wProcessorArchitecture = 9 * Windows Vista family 6 0 + * Windows 2008 6 0 + * where ((&ver.wServicePackMinor) + 2) = 1 * * This mapping will presumably be augmented as new Windows * versions are released. @@ -720,7 +744,25 @@ GetJavaProperties(JNIEnv* env) switch (ver.dwMinorVersion) { case 0: sprops.os_name = "Windows 2000"; break; case 1: sprops.os_name = "Windows XP"; break; - case 2: sprops.os_name = "Windows 2003"; break; + case 2: + /* + * From MSDN OSVERSIONINFOEX and SYSTEM_INFO documentation: + * + * "Because the version numbers for Windows Server 2003 + * and Windows XP 6u4 bit are identical, you must also test + * whether the wProductType member is VER_NT_WORKSTATION. + * and si.wProcessorArchitecture is + * PROCESSOR_ARCHITECTURE_AMD64 (which is 9) + * If it is, the operating system is Windows XP 64 bit; + * otherwise, it is Windows Server 2003." + */ + if(ver.wProductType == VER_NT_WORKSTATION && + si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) { + sprops.os_name = "Windows XP"; /* 64 bit */ + } else { + sprops.os_name = "Windows 2003"; + } + break; default: sprops.os_name = "Windows NT (unknown)"; break; } } else if (ver.dwMajorVersion == 6) { diff --git a/src/windows/native/sun/tools/attach/WindowsVirtualMachine.c b/src/windows/native/sun/tools/attach/WindowsVirtualMachine.c index 94c0e830b8c252dbc48496c36579b29b55ade44e..bbf5699f0786216f8c2f8e819b8a38c096c5c602 100644 --- a/src/windows/native/sun/tools/attach/WindowsVirtualMachine.c +++ b/src/windows/native/sun/tools/attach/WindowsVirtualMachine.c @@ -345,7 +345,6 @@ JNIEXPORT void JNICALL Java_sun_tools_attach_WindowsVirtualMachine_enqueue DataBlock data; DataBlock* pData; DWORD* pCode; - DWORD numBytes; DWORD stubLen; HANDLE hProcess, hThread; jint argsLen, i; @@ -400,7 +399,7 @@ JNIEXPORT void JNICALL Java_sun_tools_attach_WindowsVirtualMachine_enqueue JNU_ThrowIOExceptionWithLastError(env, "VirtualAllocEx failed"); return; } - WriteProcessMemory( hProcess, (LPVOID)pData, (LPVOID)&data, (DWORD)sizeof(DataBlock), &numBytes ); + WriteProcessMemory( hProcess, (LPVOID)pData, (LPCVOID)&data, (SIZE_T)sizeof(DataBlock), NULL ); stubLen = (DWORD)(*env)->GetArrayLength(env, stub); @@ -412,7 +411,7 @@ JNIEXPORT void JNICALL Java_sun_tools_attach_WindowsVirtualMachine_enqueue VirtualFreeEx(hProcess, pData, 0, MEM_RELEASE); return; } - WriteProcessMemory( hProcess, (LPVOID)pCode, (LPVOID)stubCode, (DWORD)stubLen, &numBytes ); + WriteProcessMemory( hProcess, (LPVOID)pCode, (LPCVOID)stubCode, (SIZE_T)stubLen, NULL ); if (isCopy) { (*env)->ReleaseByteArrayElements(env, stub, stubCode, JNI_ABORT); } diff --git a/test/com/sun/net/httpserver/bugs/FixedLengthInputStream.java b/test/com/sun/net/httpserver/bugs/FixedLengthInputStream.java new file mode 100644 index 0000000000000000000000000000000000000000..d5cdfdf253315ad28b8ec790009ecfa55256b5ad --- /dev/null +++ b/test/com/sun/net/httpserver/bugs/FixedLengthInputStream.java @@ -0,0 +1,148 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/** + * @test + * @bug 6756771 6755625 + * @summary com.sun.net.httpserver.HttpServer should handle POSTs larger than 2Gig + */ + +import java.io.InputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintStream; +import java.net.InetSocketAddress; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.Socket; +import java.util.logging.*; +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; +import com.sun.net.httpserver.HttpServer; + +public class FixedLengthInputStream +{ + static final long POST_SIZE = 4L * 1024L * 1024L * 1024L; // 4Gig + + void test(String[] args) throws IOException { + HttpServer httpServer = startHttpServer(); + int port = httpServer.getAddress().getPort(); + try { + URL url = new URL("http://localhost:" + port + "/flis/"); + HttpURLConnection uc = (HttpURLConnection)url.openConnection(); + uc.setDoOutput(true); + uc.setRequestMethod("POST"); + uc.setFixedLengthStreamingMode(POST_SIZE); + OutputStream os = uc.getOutputStream(); + + /* create a 32K byte array with data to POST */ + int thirtyTwoK = 32 * 1024; + byte[] ba = new byte[thirtyTwoK]; + for (int i =0; i k = new Object(){}.getClass().getEnclosingClass(); + try {k.getMethod("instanceMain",String[].class) + .invoke( k.newInstance(), (Object) args);} + catch (Throwable e) {throw e.getCause();}} + public void instanceMain(String[] args) throws Throwable { + try {test(args);} catch (Throwable t) {unexpected(t);} + System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed); + if (failed > 0) throw new AssertionError("Some tests failed");} + +} diff --git a/test/java/io/readBytes/MemoryLeak.java b/test/java/io/readBytes/MemoryLeak.java new file mode 100644 index 0000000000000000000000000000000000000000..6fa0c0313a975009ebb770d027242d64e325cb83 --- /dev/null +++ b/test/java/io/readBytes/MemoryLeak.java @@ -0,0 +1,51 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6791458 + * @summary Reading from closed input files leaks native memory + */ + +import java.io.*; + +public class MemoryLeak { + public static void main(String[] args) throws Throwable { + byte[] bytes = new byte[1 << 20]; + String dir = System.getProperty("test.src", "."); + File testFile = new File(dir, "input.txt"); + FileInputStream s = new FileInputStream(testFile); + s.close(); + for (int i = 0; i < 10000; i++) { + try { + s.read(bytes); + throw new Error("expected IOException"); + } catch (IOException _) { + /* OK */ + } catch (OutOfMemoryError oome) { + System.out.printf("Got OutOfMemoryError, i=%d%n", i); + throw oome; + } + } + } +} diff --git a/test/java/io/readBytes/ReadBytesBounds.java b/test/java/io/readBytes/ReadBytesBounds.java index 75b0a31199875bc71920b8255788aa9ba7b42176..d0671585631600ed8861384d6cfc5f9de58bc74a 100644 --- a/test/java/io/readBytes/ReadBytesBounds.java +++ b/test/java/io/readBytes/ReadBytesBounds.java @@ -22,107 +22,76 @@ */ /* - @test - @bug 4017728 4079849 - @summary Check for correct Array Bounds check in read of FileInputStream and - RandomAccessFile - */ + * @test + * @bug 4017728 4079849 6788196 + * @summary Check for correct Array Bounds check in read of FileInputStream and + * RandomAccessFile + */ import java.io.*; - /* - * The test calls the read(byte buf[] , int off , int len) of FileInputStream with - * different values of off and len to see if the ArrayOutOfBoundsException is - * thrown according to the JLS1.0 specification. The read(...) method calls - * readBytes(...) in native code(io_util.c). The read(...) method in RandomAccessFile - * also calls the same native method. So one should see similar results. + * The test calls the read(byte buf[] , int off , int len) of + * FileInputStream with different values of off and len to see if the + * IndexOutOfBoundsException is thrown. The read(...) method calls + * readBytes(...) in native code(io_util.c). The read(...) method in + * RandomAccessFile also calls the same native method. So one should + * see similar results. */ - public class ReadBytesBounds { - public static void main(String argv[]) throws Exception{ - - int num_test_cases = 12; - int off[] = {-1 , -1 , 0 , 0 , 33 , 33 , 0 , 32 , 32 , 4 , 1 , 0}; - int len[] = {-1 , 0 , -1 , 33 , 0 , 4 , 32 , 0 , 4 , 16 , 31 , 0}; - boolean results[] = { false , false , false , false , false , false , - true , true , false , true , true , true}; - + static final FileInputStream fis; + static final RandomAccessFile raf; + static final byte[] b = new byte[32]; + + static { + try { + String dir = System.getProperty("test.src", "."); + File testFile = new File(dir, "input.txt"); + fis = new FileInputStream(testFile); + raf = new RandomAccessFile(testFile , "r"); + } catch (Throwable t) { + throw new Error(t); + } + } - FileInputStream fis = null; - RandomAccessFile raf = null; + public static void main(String argv[]) throws Throwable { byte b[] = new byte[32]; + testRead(-1, -1, false); + testRead(-1, 0, false); + testRead( 0, -1, false); + testRead( 0, 33, false); + testRead(33, 0, false); + testRead(33, 4, false); + testRead( 0, 32, true); + testRead(32, 0, true); + testRead(32, 4, false); + testRead( 4, 16, true); + testRead( 1, 31, true); + testRead( 0, 0, true); + testRead(31, Integer.MAX_VALUE, false); + testRead( 0, Integer.MAX_VALUE, false); + testRead(-1, Integer.MAX_VALUE, false); + testRead(-4, Integer.MIN_VALUE, false); + testRead( 0, Integer.MIN_VALUE, false); + } - int num_good = 0; - int num_bad = 0; - - String dir = System.getProperty("test.src", "."); - File testFile = new File(dir, "input.txt"); - fis = new FileInputStream(testFile); - for(int i = 0; i < num_test_cases; i++) { - - try { - int bytes_read = fis.read(b , off[i] , len[i]); - } catch(IndexOutOfBoundsException aiobe) { - if (results[i]) { - throw new RuntimeException("Unexpected result"); - } - else { - num_good++; - } - continue; - } - - if (results[i]) { - num_good++; - } - else { - throw new RuntimeException("Unexpected result"); - } - + static void testRead(int off, int len, boolean expected) throws Throwable { + System.err.printf("off=%d len=%d expected=%b%n", off, len, expected); + boolean result; + try { + fis.read(b, off, len); + raf.read(b, off, len); + result = true; + } catch (IndexOutOfBoundsException e) { + result = false; } - System.out.println("Results for FileInputStream.read"); - System.out.println("\nTotal number of test cases = " + num_test_cases + - "\nNumber succeded = " + num_good + - "\nNumber failed = " + num_bad); - - - - num_good = 0; - num_bad = 0; - - raf = new RandomAccessFile(testFile , "r"); - for(int i = 0; i < num_test_cases; i++) { - - try { - int bytes_read = raf.read(b , off[i] , len[i]); - } catch(IndexOutOfBoundsException aiobe) { - if (results[i]) { - throw new RuntimeException("Unexpected result"); - } - else { - num_good++; - } - continue; - } - - if (results[i]) { - num_good++; - } - else { - throw new RuntimeException("Unexpected result"); - } + if (result != expected) { + throw new RuntimeException + (String.format("Unexpected result off=%d len=%d expected=%b", + off, len, expected)); } - - System.out.println("Results for RandomAccessFile.read"); - System.out.println("\nTotal number of test cases = " + num_test_cases + - "\nNumber succeded = " + num_good + - "\nNumber failed = " + num_bad); - - } - } diff --git a/test/java/lang/annotation/ParameterAnnotations.java b/test/java/lang/annotation/ParameterAnnotations.java new file mode 100644 index 0000000000000000000000000000000000000000..fa02e53dfa6cd4ac0c3c19ef6d36a5464a96123d --- /dev/null +++ b/test/java/lang/annotation/ParameterAnnotations.java @@ -0,0 +1,118 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6761678 + * @summary Check properties of Annotations returned from + * getParameterAnnotations, including freedom from security + * exceptions. + * @author Martin Buchholz + */ + +import java.lang.annotation.Annotation; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import java.lang.reflect.Method; +import java.security.Permission; +import java.security.Policy; +import java.security.ProtectionDomain; + +@Retention(RetentionPolicy.RUNTIME) +@Target({ ElementType.FIELD, ElementType.PARAMETER }) +@interface Named { + String value(); +} + +public class ParameterAnnotations { + + // A security policy that differs from the default only in that it + // allows a security manager to be uninstalled. + static class MyPolicy extends Policy { + final Policy defaultPolicy; + MyPolicy(Policy defaultPolicy) { + this.defaultPolicy = defaultPolicy; + } + public boolean implies(ProtectionDomain pd, Permission p) { + return p.getName().equals("setSecurityManager") || + defaultPolicy.implies(pd, p); + } + } + + public void nop(@Named("foo") Object foo, + @Named("bar") Object bar) { + } + + void test(String[] args) throws Throwable { + // Test without a security manager + test1(); + + // Test with a security manager + Policy defaultPolicy = Policy.getPolicy(); + Policy.setPolicy(new MyPolicy(defaultPolicy)); + System.setSecurityManager(new SecurityManager()); + try { + test1(); + } finally { + System.setSecurityManager(null); + Policy.setPolicy(defaultPolicy); + } + } + + void test1() throws Throwable { + for (Method m : thisClass.getMethods()) { + if (m.getName().equals("nop")) { + Annotation[][] ann = m.getParameterAnnotations(); + equal(ann.length, 2); + Annotation foo = ann[0][0]; + Annotation bar = ann[1][0]; + equal(foo.toString(), "@Named(value=foo)"); + equal(bar.toString(), "@Named(value=bar)"); + check(foo.equals(foo)); + check(! foo.equals(bar)); + } + } + } + + //--------------------- Infrastructure --------------------------- + volatile int passed = 0, failed = 0; + void pass() {passed++;} + void fail() {failed++; Thread.dumpStack();} + void fail(String msg) {System.err.println(msg); fail();} + void unexpected(Throwable t) {failed++; t.printStackTrace();} + void check(boolean cond) {if (cond) pass(); else fail();} + void equal(Object x, Object y) { + if (x == null ? y == null : x.equals(y)) pass(); + else fail(x + " not equal to " + y);} + static Class thisClass = new Object(){}.getClass().getEnclosingClass(); + public static void main(String[] args) throws Throwable { + try {thisClass.getMethod("instanceMain",String[].class) + .invoke(thisClass.newInstance(), (Object) args);} + catch (Throwable e) {throw e.getCause();}} + public void instanceMain(String[] args) throws Throwable { + try {test(args);} catch (Throwable t) {unexpected(t);} + System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed); + if (failed > 0) throw new AssertionError("Some tests failed");} +} diff --git a/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh b/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh index 550ba436967e873de98e31f90f2131cd064bc304..ba8b7cb5184d304b437b1323a711fb01b81d3a65 100644 --- a/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh +++ b/test/java/net/DatagramSocket/SetDatagramSocketImplFactory/ADatagramSocket.sh @@ -1,7 +1,7 @@ #! /bin/sh # -# Copyright 1999-2002 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it diff --git a/test/java/nio/Buffer/Basic-X.java b/test/java/nio/Buffer/Basic-X.java index a28793ce20834a6b95da8a5dce4277241462fb91..d4e1a2762f11d1a7c79ea418f2a88282cbec2d2d 100644 --- a/test/java/nio/Buffer/Basic-X.java +++ b/test/java/nio/Buffer/Basic-X.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,6 +31,7 @@ #warn This file is preprocessed before being compiled import java.nio.*; +import java.lang.reflect.Method; public class Basic$Type$ @@ -184,32 +185,57 @@ public class Basic$Type$ b.position(p); } + private static void compact(Buffer b) { + try { + Class cl = b.getClass(); + Method m = cl.getDeclaredMethod("compact"); + m.setAccessible(true); + m.invoke(b); + } catch (Exception e) { + fail(e.getMessage(), b); + } + } + + private static void checkInvalidMarkException(final Buffer b) { + tryCatch(b, InvalidMarkException.class, new Runnable() { + public void run() { + b.mark(); + compact(b); + b.reset(); + }}); + } + private static void testViews(int level, ByteBuffer b, boolean direct) { ShortBuffer sb = b.asShortBuffer(); BasicShort.test(level, sb, direct); checkBytes(b, new byte[] { 0, (byte)ic(0) }); + checkInvalidMarkException(sb); CharBuffer cb = b.asCharBuffer(); BasicChar.test(level, cb, direct); checkBytes(b, new byte[] { 0, (byte)ic(0) }); + checkInvalidMarkException(cb); IntBuffer ib = b.asIntBuffer(); BasicInt.test(level, ib, direct); checkBytes(b, new byte[] { 0, 0, 0, (byte)ic(0) }); + checkInvalidMarkException(ib); LongBuffer lb = b.asLongBuffer(); BasicLong.test(level, lb, direct); checkBytes(b, new byte[] { 0, 0, 0, 0, 0, 0, 0, (byte)ic(0) }); + checkInvalidMarkException(lb); FloatBuffer fb = b.asFloatBuffer(); BasicFloat.test(level, fb, direct); checkBytes(b, new byte[] { 0x42, (byte)0xc2, 0, 0 }); + checkInvalidMarkException(fb); DoubleBuffer db = b.asDoubleBuffer(); BasicDouble.test(level, db, direct); checkBytes(b, new byte[] { 0x40, 0x58, 0x40, 0, 0, 0, 0, 0 }); - + checkInvalidMarkException(db); } private static void testHet(int level, ByteBuffer b) { @@ -288,8 +314,11 @@ public class Basic$Type$ try { thunk.run(); } catch (Throwable x) { - if (ex.isAssignableFrom(x.getClass())) + if (ex.isAssignableFrom(x.getClass())) { caught = true; + } else { + fail(x.getMessage() + " not expected"); + } } if (!caught) fail(ex.getName() + " not thrown", b); @@ -356,7 +385,6 @@ public class Basic$Type$ // Exceptions - boolean caught = false; relPut(b); b.limit(b.capacity() / 2); b.position(b.limit()); @@ -386,6 +414,14 @@ public class Basic$Type$ b.put(b.limit(), ($type$)42); }}); + tryCatch(b, InvalidMarkException.class, new Runnable() { + public void run() { + b.position(0); + b.mark(); + b.compact(); + b.reset(); + }}); + // Values b.clear(); diff --git a/test/java/nio/Buffer/Basic.java b/test/java/nio/Buffer/Basic.java index 0716a5b82296d583d4de63b9e45c9d3bafb85d56..c0c420f84958ff4fcfd1d4bed623ad4c053fe2ef 100644 --- a/test/java/nio/Buffer/Basic.java +++ b/test/java/nio/Buffer/Basic.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,7 +25,7 @@ * @summary Unit test for buffers * @bug 4413135 4414911 4416536 4416562 4418782 4471053 4472779 4490253 4523725 * 4526177 4463011 4660660 4661219 4663521 4782970 4804304 4938424 6231529 - * 6221101 6234263 6535542 6591971 + * 6221101 6234263 6535542 6591971 6593946 * @author Mark Reinhold */ diff --git a/test/java/nio/Buffer/BasicByte.java b/test/java/nio/Buffer/BasicByte.java index 539af2c62d0b3e03087d94ea004a4d2a25513fa3..0f5ac6f6e0a75936596f5cfd2ff4d520c39870db 100644 --- a/test/java/nio/Buffer/BasicByte.java +++ b/test/java/nio/Buffer/BasicByte.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,6 +31,7 @@ // -- This file was mechanically generated: Do not edit! -- // import java.nio.*; +import java.lang.reflect.Method; public class BasicByte @@ -184,32 +185,57 @@ public class BasicByte b.position(p); } + private static void compact(Buffer b) { + try { + Class cl = b.getClass(); + Method m = cl.getDeclaredMethod("compact"); + m.setAccessible(true); + m.invoke(b); + } catch (Exception e) { + fail(e.getMessage(), b); + } + } + + private static void checkInvalidMarkException(final Buffer b) { + tryCatch(b, InvalidMarkException.class, new Runnable() { + public void run() { + b.mark(); + compact(b); + b.reset(); + }}); + } + private static void testViews(int level, ByteBuffer b, boolean direct) { ShortBuffer sb = b.asShortBuffer(); BasicShort.test(level, sb, direct); checkBytes(b, new byte[] { 0, (byte)ic(0) }); + checkInvalidMarkException(sb); CharBuffer cb = b.asCharBuffer(); BasicChar.test(level, cb, direct); checkBytes(b, new byte[] { 0, (byte)ic(0) }); + checkInvalidMarkException(cb); IntBuffer ib = b.asIntBuffer(); BasicInt.test(level, ib, direct); checkBytes(b, new byte[] { 0, 0, 0, (byte)ic(0) }); + checkInvalidMarkException(ib); LongBuffer lb = b.asLongBuffer(); BasicLong.test(level, lb, direct); checkBytes(b, new byte[] { 0, 0, 0, 0, 0, 0, 0, (byte)ic(0) }); + checkInvalidMarkException(lb); FloatBuffer fb = b.asFloatBuffer(); BasicFloat.test(level, fb, direct); checkBytes(b, new byte[] { 0x42, (byte)0xc2, 0, 0 }); + checkInvalidMarkException(fb); DoubleBuffer db = b.asDoubleBuffer(); BasicDouble.test(level, db, direct); checkBytes(b, new byte[] { 0x40, 0x58, 0x40, 0, 0, 0, 0, 0 }); - + checkInvalidMarkException(db); } private static void testHet(int level, ByteBuffer b) { @@ -288,8 +314,11 @@ public class BasicByte try { thunk.run(); } catch (Throwable x) { - if (ex.isAssignableFrom(x.getClass())) + if (ex.isAssignableFrom(x.getClass())) { caught = true; + } else { + fail(x.getMessage() + " not expected"); + } } if (!caught) fail(ex.getName() + " not thrown", b); @@ -356,7 +385,6 @@ public class BasicByte // Exceptions - boolean caught = false; relPut(b); b.limit(b.capacity() / 2); b.position(b.limit()); @@ -386,6 +414,14 @@ public class BasicByte b.put(b.limit(), (byte)42); }}); + tryCatch(b, InvalidMarkException.class, new Runnable() { + public void run() { + b.position(0); + b.mark(); + b.compact(); + b.reset(); + }}); + // Values b.clear(); diff --git a/test/java/nio/Buffer/BasicChar.java b/test/java/nio/Buffer/BasicChar.java index 10111cc71a3beb961b5dba1ca42bc1340ac308fa..28eb49fb560c5c573b0abc843f28f24e442087c1 100644 --- a/test/java/nio/Buffer/BasicChar.java +++ b/test/java/nio/Buffer/BasicChar.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,6 +31,7 @@ // -- This file was mechanically generated: Do not edit! -- // import java.nio.*; +import java.lang.reflect.Method; public class BasicChar @@ -262,6 +263,31 @@ public class BasicChar + + + + + + + + + + + + + + + + + + + + + + + + + @@ -288,8 +314,11 @@ public class BasicChar try { thunk.run(); } catch (Throwable x) { - if (ex.isAssignableFrom(x.getClass())) + if (ex.isAssignableFrom(x.getClass())) { caught = true; + } else { + fail(x.getMessage() + " not expected"); + } } if (!caught) fail(ex.getName() + " not thrown", b); @@ -356,7 +385,6 @@ public class BasicChar // Exceptions - boolean caught = false; relPut(b); b.limit(b.capacity() / 2); b.position(b.limit()); @@ -386,6 +414,14 @@ public class BasicChar b.put(b.limit(), (char)42); }}); + tryCatch(b, InvalidMarkException.class, new Runnable() { + public void run() { + b.position(0); + b.mark(); + b.compact(); + b.reset(); + }}); + // Values b.clear(); diff --git a/test/java/nio/Buffer/BasicDouble.java b/test/java/nio/Buffer/BasicDouble.java index 3da239652fd675565239b62cded1de11868fa5ac..b2a1be65ad7d62aaf5a3a2a525b2a36c871d07af 100644 --- a/test/java/nio/Buffer/BasicDouble.java +++ b/test/java/nio/Buffer/BasicDouble.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,6 +31,7 @@ // -- This file was mechanically generated: Do not edit! -- // import java.nio.*; +import java.lang.reflect.Method; public class BasicDouble @@ -262,6 +263,31 @@ public class BasicDouble + + + + + + + + + + + + + + + + + + + + + + + + + @@ -288,8 +314,11 @@ public class BasicDouble try { thunk.run(); } catch (Throwable x) { - if (ex.isAssignableFrom(x.getClass())) + if (ex.isAssignableFrom(x.getClass())) { caught = true; + } else { + fail(x.getMessage() + " not expected"); + } } if (!caught) fail(ex.getName() + " not thrown", b); @@ -356,7 +385,6 @@ public class BasicDouble // Exceptions - boolean caught = false; relPut(b); b.limit(b.capacity() / 2); b.position(b.limit()); @@ -386,6 +414,14 @@ public class BasicDouble b.put(b.limit(), (double)42); }}); + tryCatch(b, InvalidMarkException.class, new Runnable() { + public void run() { + b.position(0); + b.mark(); + b.compact(); + b.reset(); + }}); + // Values b.clear(); diff --git a/test/java/nio/Buffer/BasicFloat.java b/test/java/nio/Buffer/BasicFloat.java index 9bd702bc1bf11ac3db90bf001cce4ea88a2d1dcf..b6b5ea0dbdf528484af1952a0a50cb1e2182a0f9 100644 --- a/test/java/nio/Buffer/BasicFloat.java +++ b/test/java/nio/Buffer/BasicFloat.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,6 +31,7 @@ // -- This file was mechanically generated: Do not edit! -- // import java.nio.*; +import java.lang.reflect.Method; public class BasicFloat @@ -262,6 +263,31 @@ public class BasicFloat + + + + + + + + + + + + + + + + + + + + + + + + + @@ -288,8 +314,11 @@ public class BasicFloat try { thunk.run(); } catch (Throwable x) { - if (ex.isAssignableFrom(x.getClass())) + if (ex.isAssignableFrom(x.getClass())) { caught = true; + } else { + fail(x.getMessage() + " not expected"); + } } if (!caught) fail(ex.getName() + " not thrown", b); @@ -356,7 +385,6 @@ public class BasicFloat // Exceptions - boolean caught = false; relPut(b); b.limit(b.capacity() / 2); b.position(b.limit()); @@ -386,6 +414,14 @@ public class BasicFloat b.put(b.limit(), (float)42); }}); + tryCatch(b, InvalidMarkException.class, new Runnable() { + public void run() { + b.position(0); + b.mark(); + b.compact(); + b.reset(); + }}); + // Values b.clear(); diff --git a/test/java/nio/Buffer/BasicInt.java b/test/java/nio/Buffer/BasicInt.java index 4a5887131b28591ceaf9e5a1278bd4adab0091b9..938ada2957168833a17cb77cae1ce57510775316 100644 --- a/test/java/nio/Buffer/BasicInt.java +++ b/test/java/nio/Buffer/BasicInt.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,6 +31,7 @@ // -- This file was mechanically generated: Do not edit! -- // import java.nio.*; +import java.lang.reflect.Method; public class BasicInt @@ -262,6 +263,31 @@ public class BasicInt + + + + + + + + + + + + + + + + + + + + + + + + + @@ -288,8 +314,11 @@ public class BasicInt try { thunk.run(); } catch (Throwable x) { - if (ex.isAssignableFrom(x.getClass())) + if (ex.isAssignableFrom(x.getClass())) { caught = true; + } else { + fail(x.getMessage() + " not expected"); + } } if (!caught) fail(ex.getName() + " not thrown", b); @@ -356,7 +385,6 @@ public class BasicInt // Exceptions - boolean caught = false; relPut(b); b.limit(b.capacity() / 2); b.position(b.limit()); @@ -386,6 +414,14 @@ public class BasicInt b.put(b.limit(), (int)42); }}); + tryCatch(b, InvalidMarkException.class, new Runnable() { + public void run() { + b.position(0); + b.mark(); + b.compact(); + b.reset(); + }}); + // Values b.clear(); diff --git a/test/java/nio/Buffer/BasicLong.java b/test/java/nio/Buffer/BasicLong.java index 0ef145c8f409f1947c009274ec53107fc8317bc4..17537a71ffce2ce7db4c41da8082ef96418ec6da 100644 --- a/test/java/nio/Buffer/BasicLong.java +++ b/test/java/nio/Buffer/BasicLong.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,6 +31,7 @@ // -- This file was mechanically generated: Do not edit! -- // import java.nio.*; +import java.lang.reflect.Method; public class BasicLong @@ -262,6 +263,31 @@ public class BasicLong + + + + + + + + + + + + + + + + + + + + + + + + + @@ -288,8 +314,11 @@ public class BasicLong try { thunk.run(); } catch (Throwable x) { - if (ex.isAssignableFrom(x.getClass())) + if (ex.isAssignableFrom(x.getClass())) { caught = true; + } else { + fail(x.getMessage() + " not expected"); + } } if (!caught) fail(ex.getName() + " not thrown", b); @@ -356,7 +385,6 @@ public class BasicLong // Exceptions - boolean caught = false; relPut(b); b.limit(b.capacity() / 2); b.position(b.limit()); @@ -386,6 +414,14 @@ public class BasicLong b.put(b.limit(), (long)42); }}); + tryCatch(b, InvalidMarkException.class, new Runnable() { + public void run() { + b.position(0); + b.mark(); + b.compact(); + b.reset(); + }}); + // Values b.clear(); diff --git a/test/java/nio/Buffer/BasicShort.java b/test/java/nio/Buffer/BasicShort.java index 42fe98b8673e1a5f8fe42876de2e8e83bf7e5729..dc9c7db38039f45b99c7ad5d6a4f79ada9c01ab0 100644 --- a/test/java/nio/Buffer/BasicShort.java +++ b/test/java/nio/Buffer/BasicShort.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,6 +31,7 @@ // -- This file was mechanically generated: Do not edit! -- // import java.nio.*; +import java.lang.reflect.Method; public class BasicShort @@ -262,6 +263,31 @@ public class BasicShort + + + + + + + + + + + + + + + + + + + + + + + + + @@ -288,8 +314,11 @@ public class BasicShort try { thunk.run(); } catch (Throwable x) { - if (ex.isAssignableFrom(x.getClass())) + if (ex.isAssignableFrom(x.getClass())) { caught = true; + } else { + fail(x.getMessage() + " not expected"); + } } if (!caught) fail(ex.getName() + " not thrown", b); @@ -356,7 +385,6 @@ public class BasicShort // Exceptions - boolean caught = false; relPut(b); b.limit(b.capacity() / 2); b.position(b.limit()); @@ -386,6 +414,14 @@ public class BasicShort b.put(b.limit(), (short)42); }}); + tryCatch(b, InvalidMarkException.class, new Runnable() { + public void run() { + b.position(0); + b.mark(); + b.compact(); + b.reset(); + }}); + // Values b.clear(); diff --git a/test/java/nio/Buffer/genBasic.sh b/test/java/nio/Buffer/genBasic.sh index b0455670597012ea6d8f5bafecdc625c5272bba5..84448d90d7e04e77b3764bbe7c5f2ef87a14e9d6 100644 --- a/test/java/nio/Buffer/genBasic.sh +++ b/test/java/nio/Buffer/genBasic.sh @@ -1,7 +1,7 @@ #! /bin/sh # -# Copyright 2000-2007 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -23,10 +23,10 @@ # have any questions. # -SPP='sh ../../../../make/java/nio/spp.sh' +javac -d . ../../../../make/tools/src/build/tools/spp/Spp.java gen() { - $SPP -K$1 -Dtype=$1 -DType=$2 -DFulltype=$3 Basic$2.java + java build.tools.spp.Spp -K$1 -Dtype=$1 -DType=$2 -DFulltype=$3 Basic$2.java } gen byte Byte Byte @@ -36,3 +36,5 @@ gen int Int Integer gen long Long Long gen float Float Float gen double Double Double + +rm -rf build diff --git a/test/java/nio/Buffer/genCopyDirectMemory.sh b/test/java/nio/Buffer/genCopyDirectMemory.sh index 588a1790c8b6e97334151d2bffb923dc51cca7ac..504470f758636729294f7e8b6bf9a7877863babd 100644 --- a/test/java/nio/Buffer/genCopyDirectMemory.sh +++ b/test/java/nio/Buffer/genCopyDirectMemory.sh @@ -1,7 +1,7 @@ #! /bin/sh # -# Copyright 2002-2007 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -23,10 +23,10 @@ # have any questions. # -SPP='sh ../../../../make/java/nio/spp.sh' +javac -d . ../../../../make/tools/src/build/tools/spp/Spp.java > Spp.java gen() { - $SPP -K$1 -Dtype=$1 -DType=$2 -DFulltype=$3CopyDirect$2Memory.java + java build.tools.spp.Spp -K$1 -Dtype=$1 -DType=$2 -DFulltype=$3CopyDirect$2Memory.java } gen byte Byte Byte @@ -37,3 +37,4 @@ gen long Long Long gen float Float Float gen double Double Double +rm -rf build diff --git a/test/java/nio/channels/Channels/Basic.java b/test/java/nio/channels/Channels/Basic.java index 9d1a5dcd0707132d22ccb0b9ff237c5b5988be34..3a931a3f4c5e61d8cc17531aa219f3e4bc89ce1f 100644 --- a/test/java/nio/channels/Channels/Basic.java +++ b/test/java/nio/channels/Channels/Basic.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2001-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,12 +22,13 @@ */ /* @test - * @bug 4417152 4481572 6248930 + * @bug 4417152 4481572 6248930 6725399 * @summary Test Channels basic functionality */ import java.io.*; import java.nio.*; +import java.nio.charset.*; import java.nio.channels.*; @@ -50,22 +51,106 @@ public class Basic { test(); } + static void failNpeExpected() { + throw new RuntimeException("Did not get the expected NullPointerException."); + } + private static void test() throws Exception { + //Test if methods of Channels throw NPE with null argument(s) try { - ReadableByteChannel channel = Channels.newChannel((InputStream)null); + Channels.newInputStream((ReadableByteChannel)null); + failNpeExpected(); + } catch (NullPointerException npe) {} - throw new RuntimeException("Did not get the expected NullPointerException."); - } catch (NullPointerException ne) { - // OK. As expected. - } + try { + Channels.newOutputStream((WritableByteChannel)null); + failNpeExpected(); + } catch (NullPointerException npe) {} + + try { + ReadableByteChannel channel = Channels.newChannel((InputStream)null); + failNpeExpected(); + } catch (NullPointerException ne) {} // OK. As expected. try { WritableByteChannel channel = Channels.newChannel((OutputStream)null); + failNpeExpected(); + } catch (NullPointerException ne) {} // OK. As expected. + + WritableByteChannel wbc = new WritableByteChannel() { + public int write(ByteBuffer src) { return 0; } + public void close() throws IOException { } + public boolean isOpen() { return true; } + }; + + ReadableByteChannel rbc = new ReadableByteChannel() { + public int read(ByteBuffer dst) { return 0; } + public void close() {} + public boolean isOpen() { return true; } + }; + + try { + Channels.newReader((ReadableByteChannel)null, + Charset.defaultCharset().newDecoder(), + -1); + failNpeExpected(); + } catch (NullPointerException npe) {} + + try { + Channels.newReader(rbc, (CharsetDecoder)null, -1); + failNpeExpected(); + } catch (NullPointerException npe) {} + + try { + Channels.newReader((ReadableByteChannel)null, + Charset.defaultCharset().name()); + failNpeExpected(); + } catch (NullPointerException npe) {} + + try { + Channels.newReader(rbc, null); + failNpeExpected(); + } catch (NullPointerException npe) {} + + + try { + Channels.newReader(null, null); + failNpeExpected(); + } catch (NullPointerException npe) {} + + try { + Channels.newWriter((WritableByteChannel)null, + Charset.defaultCharset().newEncoder(), + -1); + failNpeExpected(); + } catch (NullPointerException npe) {} + + try { + Channels.newWriter(null, null, -1); + failNpeExpected(); + } catch (NullPointerException npe) {} + + try { + Channels.newWriter(wbc, null, -1); + failNpeExpected(); + } catch (NullPointerException npe) {} + + try { + Channels.newWriter((WritableByteChannel)null, + Charset.defaultCharset().name()); + failNpeExpected(); + } catch (NullPointerException npe) {} + + try { + Channels.newWriter(wbc, null); + failNpeExpected(); + } catch (NullPointerException npe) {} + + try { + Channels.newWriter(null, null); + failNpeExpected(); + } catch (NullPointerException npe) {} - throw new RuntimeException("Did not get the expected NullPointerException."); - } catch (NullPointerException ne) { - // OK. As expected. - } try { blah = File.createTempFile("blah", null); diff --git a/test/java/nio/channels/Selector/CloseThenRegister.java b/test/java/nio/channels/Selector/CloseThenRegister.java new file mode 100644 index 0000000000000000000000000000000000000000..0fbb7b9d3a1fd4e0b0fb490e37de81461f53a63e --- /dev/null +++ b/test/java/nio/channels/Selector/CloseThenRegister.java @@ -0,0 +1,48 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* @test + * @bug 5025260 + * @summary ClosedSelectorException is expected when register after close + */ + +import java.net.*; +import java.nio.channels.*; + +public class CloseThenRegister { + + public static void main (String [] args) throws Exception { + try { + Selector s = Selector.open(); + s.close(); + ServerSocketChannel c = ServerSocketChannel.open(); + c.socket().bind(new InetSocketAddress(40000)); + c.configureBlocking(false); + c.register(s, SelectionKey.OP_ACCEPT); + } catch (ClosedSelectorException cse) { + return; + } + throw new RuntimeException("register after close does not cause CSE!"); + } + +} diff --git a/test/java/security/cert/CertPathValidatorException/GetMessage.java b/test/java/security/cert/CertPathValidatorException/GetMessage.java new file mode 100644 index 0000000000000000000000000000000000000000..dd51af7e42cddfdfdaa0348298e3b5c9ef4e8570 --- /dev/null +++ b/test/java/security/cert/CertPathValidatorException/GetMessage.java @@ -0,0 +1,63 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6765046 + * @summary check that getMessage(cause) returns cause.toString if cause != null + */ + +import java.security.cert.CertPathValidatorException; + +public class GetMessage { + private static volatile boolean failed = false; + public static void main(String[] args) throws Exception { + + Throwable[] causes = { + new Throwable(), + new Throwable("message"), + new Throwable("message", new Throwable()) }; + + for (Throwable cause: causes) { + CertPathValidatorException cpve = + new CertPathValidatorException(cause); + + // from CertPathValidatorException(Throwable cause) spec: + // The detail message is set to (cause==null ? null : cause.toString() ) + // (which typically contains the class and detail message of cause). + String expMsg = (cause == null ? null : cause.toString()); + String actualMsg = cpve.getMessage(); + + boolean msgsEqual = + (expMsg == null ? actualMsg == null : expMsg.equals(actualMsg)); + if (!msgsEqual) { + System.out.println("expected message:" + expMsg); + System.out.println("getMessage():" + actualMsg); + failed = true; + } + } + if (failed) { + throw new Exception("Some tests FAILED"); + } + } +} diff --git a/test/java/util/TimeZone/OldIDMappingTest.sh b/test/java/util/TimeZone/OldIDMappingTest.sh index 156d4f60ab533ad43d26f4c05436284793741b53..7b53286dd86d831b32b3a7a720c93e93cea9dfe6 100644 --- a/test/java/util/TimeZone/OldIDMappingTest.sh +++ b/test/java/util/TimeZone/OldIDMappingTest.sh @@ -1,4 +1,4 @@ -# Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it diff --git a/test/java/util/zip/TestEmptyZip.java b/test/java/util/zip/TestEmptyZip.java index d19dee4d4469d4c233a36a066570fd4ce6b95319..f4ad29b60f2f9630415a0e8c090bb2012e589b04 100644 --- a/test/java/util/zip/TestEmptyZip.java +++ b/test/java/util/zip/TestEmptyZip.java @@ -39,35 +39,24 @@ public class TestEmptyZip { throw new Exception("failed to delete " + zipName); } - // Verify 0-length file cannot be read f.createNewFile(); - ZipFile zf = null; try { - zf = new ZipFile(f); - fail(); - } catch (Exception ex) { - check(ex.getMessage().contains("zip file is empty")); - } finally { - if (zf != null) { - zf.close(); + // Verify 0-length file cannot be read + checkCannotRead(f); + + // Verify non-zip file cannot be read + OutputStream out = new FileOutputStream(f); + try { + out.write("class Foo { }".getBytes()); + } finally { + out.close(); } - } + checkCannotRead(f); - ZipInputStream zis = null; - try { - zis = new ZipInputStream(new FileInputStream(f)); - ZipEntry ze = zis.getNextEntry(); - check(ze == null); - } catch (Exception ex) { - unexpected(ex); } finally { - if (zis != null) { - zis.close(); - } + f.delete(); } - f.delete(); - // Verify 0-entries file can be written write(f); @@ -78,6 +67,29 @@ public class TestEmptyZip { f.delete(); } + static void checkCannotRead(File f) throws IOException { + try { + new ZipFile(f).close(); + fail(); + } catch (ZipException ze) { + if (f.length() == 0) { + check(ze.getMessage().contains("zip file is empty")); + } else { + pass(); + } + } + ZipInputStream zis = null; + try { + zis = new ZipInputStream(new FileInputStream(f)); + ZipEntry ze = zis.getNextEntry(); + check(ze == null); + } catch (IOException ex) { + unexpected(ex); + } finally { + if (zis != null) zis.close(); + } + } + static void write(File f) throws Exception { ZipOutputStream zos = null; try { diff --git a/test/javax/management/Introspector/AnnotatedNotificationInfoTest.java b/test/javax/management/Introspector/AnnotatedNotificationInfoTest.java index 3db55b7447160182a8350f56a77e189f55a8f357..aa9b34b3cdb38f16c5046af90b06d0c5a7663d1f 100644 --- a/test/javax/management/Introspector/AnnotatedNotificationInfoTest.java +++ b/test/javax/management/Introspector/AnnotatedNotificationInfoTest.java @@ -22,8 +22,8 @@ */ /* - * @test %M% %I% - * @bug 6323980 + * @test + * @bug 6323980 6772779 * @summary Test @NotificationInfo annotation * @author Eamonn McManus * @run main/othervm -ea AnnotatedNotificationInfoTest @@ -32,24 +32,40 @@ import java.io.Serializable; import java.lang.management.ManagementFactory; import java.lang.reflect.Field; +import java.util.Arrays; import javax.annotation.Resource; import javax.management.AttributeChangeNotification; import javax.management.Description; import javax.management.Descriptor; import javax.management.ImmutableDescriptor; +import javax.management.ListenerNotFoundException; import javax.management.MBean; import javax.management.MBeanInfo; import javax.management.MBeanNotificationInfo; import javax.management.MBeanServer; import javax.management.MXBean; +import javax.management.Notification; +import javax.management.NotificationBroadcaster; import javax.management.NotificationBroadcasterSupport; +import javax.management.NotificationFilter; import javax.management.NotificationInfo; import javax.management.NotificationInfos; +import javax.management.NotificationListener; import javax.management.ObjectName; import javax.management.SendNotification; public class AnnotatedNotificationInfoTest { - // Data for the first test. This tests that MBeanNotificationInfo + + static final Descriptor expectedDescriptor = new ImmutableDescriptor( + "foo=bar", "descriptionResourceBundleBaseName=bundle", + "descriptionResourceKey=key"); + static final MBeanNotificationInfo expected = new MBeanNotificationInfo( + new String[] {"foo", "bar"}, + AttributeChangeNotification.class.getName(), + "description", + expectedDescriptor); + + // Data for the first kind of test. This tests that MBeanNotificationInfo // is correctly derived from @NotificationInfo. // Every static field called mbean* is expected to be an MBean // with a single MBeanNotificationInfo that has the same value @@ -134,6 +150,23 @@ public class AnnotatedNotificationInfoTest { private static Object mbeanIntf5 = new Intf5Impl(); + @NotificationInfo( + types = {"foo", "bar"}, + notificationClass = AttributeChangeNotification.class, + description = @Description( + value = "description", + bundleBaseName = "bundle", + key = "key"), + descriptorFields = {"foo=bar"}) + public static interface Intf6MBean {} + + public static class Intf6 implements Intf6MBean { + @Resource + private volatile SendNotification send; + } + + private static Object mbeanIntf6 = new Intf6(); + public static interface Impl1MBean {} @NotificationInfo( @@ -202,22 +235,21 @@ public class AnnotatedNotificationInfoTest { private static Object mbeanMBean2 = new MBean2(); - // Following disabled until we support it -// @MBean -// @NotificationInfo( -// types = {"foo", "bar"}, -// notificationClass = AttributeChangeNotification.class, -// description = @Description( -// value = "description", -// bundleBaseName = "bundle", -// key = "key"), -// descriptorFields = {"foo=bar"}) -// public static class MBean3 { -// @Resource -// private volatile SendNotification send; -// } -// -// private static Object mbeanMBean3 = new MBean3(); + @MBean + @NotificationInfo( + types = {"foo", "bar"}, + notificationClass = AttributeChangeNotification.class, + description = @Description( + value = "description", + bundleBaseName = "bundle", + key = "key"), + descriptorFields = {"foo=bar"}) + public static class MBean3 { + @Resource + private volatile SendNotification send; + } + + private static Object mbeanMBean3 = new MBean3(); @MXBean @NotificationInfo( @@ -237,6 +269,127 @@ public class AnnotatedNotificationInfoTest { private static Object mbeanMXBean2 = new MXBean2(); + // Test that @NotificationInfo and @NotificationInfos are ignored if + // the MBean returns a non-empty MBeanNotificationInfo[] from its + // NotificationBroadcaster.getNotifications() implementation. + + @NotificationInfo(types={"blim", "blam"}) + public static interface Explicit1MBean {} + + public static class Explicit1 + extends NotificationBroadcasterSupport implements Explicit1MBean { + public Explicit1() { + super(expected); + } + } + + private static Object mbeanExplicit1 = new Explicit1(); + + @NotificationInfos( + { + @NotificationInfo(types="blim"), @NotificationInfo(types="blam") + } + ) + public static interface Explicit2MXBean {} + + public static class Explicit2 + implements NotificationBroadcaster, Explicit2MXBean { + public void addNotificationListener(NotificationListener listener, + NotificationFilter filter, Object handback) {} + + public void removeNotificationListener(NotificationListener listener) + throws ListenerNotFoundException {} + + public MBeanNotificationInfo[] getNotificationInfo() { + return new MBeanNotificationInfo[] {expected}; + } + } + + // Data for the second kind of test. This tests that @NotificationInfo is + // ignored if the MBean is not a notification source. Every static + // field called ignoredMBean* is expected to be an MBean on which + // isInstanceOf(NotificationBroadcaster.class.getName() is false, + // addNotificationListener produces an exception, and the + // MBeanNotificationInfo array is empty. + @NotificationInfo(types={"com.example.notifs.create", + "com.example.notifs.destroy"}) + public static interface CacheMBean { + public int getCachedNum(); + } + + public static class Cache implements CacheMBean { + public int getCachedNum() { + return 0; + } + } + + private static Object ignoredMBean1 = new Cache(); + + @NotificationInfos( + @NotificationInfo(types={"foo", "bar"}) + ) + public static interface Cache2MBean { + public int getCachedNum(); + } + + public static class Cache2 implements Cache2MBean { + public int getCachedNum() { + return 0; + } + } + + private static Object ignoredMBean2 = new Cache2(); + + private static final NotificationListener nullListener = + new NotificationListener() { + public void handleNotification( + Notification notification, Object handback) {} + }; + + // Test that inheriting inconsistent @NotificationInfo annotations is + // an error, but not if they are overridden by a non-empty getNotifications() + + @NotificationInfo(types={"blim"}) + public static interface Inconsistent1 {} + + @NotificationInfo(types={"blam"}) + public static interface Inconsistent2 {} + + public static interface InconsistentMBean extends Inconsistent1, Inconsistent2 {} + + public static class Inconsistent + extends NotificationBroadcasterSupport implements InconsistentMBean {} + + public static class Consistent + extends Inconsistent implements NotificationBroadcaster { + public void addNotificationListener(NotificationListener listener, + NotificationFilter filter, Object handback) {} + + public void removeNotificationListener(NotificationListener listener) + throws ListenerNotFoundException {} + + public MBeanNotificationInfo[] getNotificationInfo() { + return new MBeanNotificationInfo[] {expected}; + } + } + + private static Object mbeanConsistent = new Consistent(); + + @NotificationInfo( + types = {"foo", "bar"}, + notificationClass = AttributeChangeNotification.class, + description = @Description( + value = "description", + bundleBaseName = "bundle", + key = "key"), + descriptorFields = {"foo=bar"}) + public static interface Consistent2MBean extends Inconsistent1, Inconsistent2 {} + + public static class Consistent2 + extends NotificationBroadcasterSupport implements Consistent2MBean {} + + private static Object mbeanConsistent2 = new Consistent2(); + public static void main(String[] args) throws Exception { if (!AnnotatedNotificationInfoTest.class.desiredAssertionStatus()) throw new Exception("Test must be run with -ea"); @@ -244,28 +397,46 @@ public class AnnotatedNotificationInfoTest { MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); ObjectName on = new ObjectName("a:b=c"); - Descriptor expectedDescriptor = new ImmutableDescriptor( - "foo=bar", "descriptionResourceBundleBaseName=bundle", - "descriptionResourceKey=key"); - MBeanNotificationInfo expected = new MBeanNotificationInfo( - new String[] {"foo", "bar"}, - AttributeChangeNotification.class.getName(), - "description", - expectedDescriptor); - System.out.println("Testing MBeans..."); for (Field mbeanField : AnnotatedNotificationInfoTest.class.getDeclaredFields()) { - if (!mbeanField.getName().startsWith("mbean")) + boolean notifier; + if (mbeanField.getName().startsWith("mbean")) + notifier = true; + else if (mbeanField.getName().startsWith("ignoredMBean")) + notifier = false; + else continue; System.out.println("..." + mbeanField.getName()); Object mbean = mbeanField.get(null); mbs.registerMBean(mbean, on); MBeanInfo mbi = mbs.getMBeanInfo(on); MBeanNotificationInfo[] mbnis = mbi.getNotifications(); - assert mbnis.length == 1 : mbnis.length; - assert mbnis[0].equals(expected) : mbnis[0]; + if (notifier) { + assert mbnis.length == 1 : mbnis.length; + assert mbnis[0].equals(expected) : mbnis[0]; + } else { + assert mbnis.length == 0 : mbnis.length; + assert !mbs.isInstanceOf(on, NotificationBroadcaster.class.getName()); + try { + mbs.addNotificationListener(on, nullListener, null, null); + assert false : "addNotificationListener works"; + } catch (Exception e) { + // OK: addNL correctly refused + } + } mbs.unregisterMBean(on); } + + // Test that inconsistent @NotificationInfo annotations produce an + // error. + try { + mbs.registerMBean(new Inconsistent(), on); + System.out.println(mbs.getMBeanInfo(on)); + assert false : "Inconsistent @NotificationInfo not detected"; + } catch (Exception e) { + System.out.println( + "Inconsistent @NotificationInfo correctly produced " + e); + } } } diff --git a/test/javax/management/Introspector/AnnotationTest.java b/test/javax/management/Introspector/AnnotationTest.java index e6d3c10b0427955beacd21661c2ac09cab12c9ac..8bd9804a3a21a181f650ddf9ac96a786e9b5a994 100644 --- a/test/javax/management/Introspector/AnnotationTest.java +++ b/test/javax/management/Introspector/AnnotationTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -39,7 +39,8 @@ import javax.management.*; /* This test checks that annotations produce Descriptor entries as - specified in javax.management.DescriptorKey. It does two things: + specified in javax.management.DescriptorKey and javax.management.DescriptorField. + It does the following: - An annotation consisting of an int and a String, each with an appropriate @DescriptorKey annotation, is placed on every program @@ -61,6 +62,10 @@ import javax.management.*; The test checks that in each case the corresponding Descriptor appears in the appropriate place inside the MBean's MBeanInfo. + - A @DescriptorFields annotation defining two fields is placed in the + same places and again the test checks that the two fields appear + in the corresponding MBean*Info objects. + - An annotation consisting of enough other types to ensure coverage is placed on a getter. The test checks that the generated MBeanAttributeInfo contains the corresponding Descriptor. The tested @@ -78,12 +83,6 @@ import javax.management.*; public class AnnotationTest { private static String failed = null; -// @Retention(RetentionPolicy.RUNTIME) @Inherited -// @Target(ElementType.METHOD) -// public static @interface DescriptorKey { -// String value(); -// } - @Retention(RetentionPolicy.RUNTIME) public static @interface Pair { @DescriptorKey("x") @@ -112,11 +111,12 @@ public class AnnotationTest { boolean[] booleanArrayValue(); } - /* We use the annotation @Pair(x = 3, y = "foo") everywhere, and this is - the Descriptor that it should produce: */ + /* We use the annotations @Pair(x = 3, y = "foo") + and @DescriptorFields({"foo=bar", "baz="}) everywhere, and this is + the Descriptor that they should produce: */ private static Descriptor expectedDescriptor = - new ImmutableDescriptor(new String[] {"x", "y"}, - new Object[] {3, "foo"}); + new ImmutableDescriptor(new String[] {"x", "y", "foo", "baz"}, + new Object[] {3, "foo", "bar", ""}); private static Descriptor expectedFullDescriptor = new ImmutableDescriptor(new String[] { @@ -136,8 +136,10 @@ public class AnnotationTest { }); @Pair(x = 3, y = "foo") + @DescriptorFields({"foo=bar", "baz="}) public static interface ThingMBean { @Pair(x = 3, y = "foo") + @DescriptorFields({"foo=bar", "baz="}) @Full(classValue=Full.class, enumValue=RetentionPolicy.RUNTIME, booleanValue=false, @@ -149,32 +151,47 @@ public class AnnotationTest { int getReadOnly(); @Pair(x = 3, y = "foo") + @DescriptorFields({"foo=bar", "baz="}) void setWriteOnly(int x); @Pair(x = 3, y = "foo") + @DescriptorFields({"foo=bar", "baz="}) int getReadWrite1(); void setReadWrite1(int x); @Pair(x = 3, y = "foo") + @DescriptorFields({"foo=bar", "baz="}) int getReadWrite2(); @Pair(x = 3, y = "foo") + @DescriptorFields({"foo=bar", "baz="}) void setReadWrite2(int x); int getReadWrite3(); @Pair(x = 3, y = "foo") + @DescriptorFields({"foo=bar", "baz="}) void setReadWrite3(int x); @Pair(x = 3, y = "foo") - int operation(@Pair(x = 3, y = "foo") int p1, - @Pair(x = 3, y = "foo") int p2); + @DescriptorFields({"foo=bar", "baz="}) + int operation(@Pair(x = 3, y = "foo") + @DescriptorFields({"foo=bar", "baz="}) + int p1, + @Pair(x = 3, y = "foo") + @DescriptorFields({"foo=bar", "baz="}) + int p2); } public static class Thing implements ThingMBean { @Pair(x = 3, y = "foo") + @DescriptorFields({"foo=bar", "baz="}) public Thing() {} @Pair(x = 3, y = "foo") - public Thing(@Pair(x = 3, y = "foo") int p1) {} + @DescriptorFields({"foo=bar", "baz="}) + public Thing( + @Pair(x = 3, y = "foo") + @DescriptorFields({"foo=bar", "baz="}) + int p1) {} public int getReadOnly() {return 0;} @@ -193,14 +210,20 @@ public class AnnotationTest { } @Pair(x = 3, y = "foo") + @DescriptorFields({"foo=bar", "baz="}) public static interface ThingMXBean extends ThingMBean {} public static class ThingImpl implements ThingMXBean { @Pair(x = 3, y = "foo") + @DescriptorFields({"foo=bar", "baz="}) public ThingImpl() {} @Pair(x = 3, y = "foo") - public ThingImpl(@Pair(x = 3, y = "foo") int p1) {} + @DescriptorFields({"foo=bar", "baz="}) + public ThingImpl( + @Pair(x = 3, y = "foo") + @DescriptorFields({"foo=bar", "baz="}) + int p1) {} public int getReadOnly() {return 0;} @@ -218,6 +241,79 @@ public class AnnotationTest { public int operation(int p1, int p2) {return 0;} } + @Retention(RetentionPolicy.RUNTIME) + public static @interface DefaultTest { + @DescriptorKey(value = "string1", omitIfDefault = true) + String string1() default ""; + @DescriptorKey(value = "string2", omitIfDefault = true) + String string2() default "tiddly pom"; + @DescriptorKey(value = "int", omitIfDefault = true) + int intx() default 23; + @DescriptorKey(value = "intarray1", omitIfDefault = true) + int[] intArray1() default {}; + @DescriptorKey(value = "intarray2", omitIfDefault = true) + int[] intArray2() default {1, 2}; + @DescriptorKey(value = "stringarray1", omitIfDefault = true) + String[] stringArray1() default {}; + @DescriptorKey(value = "stringarray2", omitIfDefault = true) + String[] stringArray2() default {"foo", "bar"}; + } + + @Retention(RetentionPolicy.RUNTIME) + public static @interface Expect { + String[] value() default {}; + } + + public static interface DefaultMBean { + @DefaultTest + @Expect() + public void a(); + + @DefaultTest(string1="") + @Expect() + public void b(); + + @DefaultTest(string1="nondefault") + @Expect("string1=nondefault") + public void c(); + + @DefaultTest(string2="tiddly pom") + @Expect() + public void d(); + + @DefaultTest(intx=23) + @Expect() + public void e(); + + @DefaultTest(intx=34) + @Expect("int=34") + public void f(); + + @DefaultTest(intArray1={}) + @Expect() + public void g(); + + @DefaultTest(intArray1={2,3}) + @Expect("intarray1=[2, 3]") + public void h(); + + @DefaultTest(intArray2={}) + @Expect("intarray2=[]") + public void i(); + + @DefaultTest(stringArray1={}) + @Expect() + public void j(); + + @DefaultTest(stringArray1={"foo"}) + @Expect("stringarray1=[foo]") + public void k(); + + @DefaultTest(stringArray2={}) + @Expect("stringarray2=[]") + public void l(); + } + public static void main(String[] args) throws Exception { System.out.println("Testing that annotations are correctly " + "reflected in Descriptor entries"); @@ -225,20 +321,62 @@ public class AnnotationTest { MBeanServer mbs = java.lang.management.ManagementFactory.getPlatformMBeanServer(); ObjectName on = new ObjectName("a:b=c"); + Thing thing = new Thing(); mbs.registerMBean(thing, on); check(mbs, on); mbs.unregisterMBean(on); + ThingImpl thingImpl = new ThingImpl(); mbs.registerMBean(thingImpl, on); + Descriptor d = mbs.getMBeanInfo(on).getDescriptor(); + if (!d.getFieldValue("mxbean").equals("true")) { + System.out.println("NOT OK: expected MXBean"); + failed = "Expected MXBean"; + } check(mbs, on); + System.out.println(); + System.out.println("Testing that omitIfDefault works"); + DefaultMBean defaultImpl = (DefaultMBean) Proxy.newProxyInstance( + DefaultMBean.class.getClassLoader(), + new Class[] {DefaultMBean.class}, + new InvocationHandler(){ + public Object invoke(Object proxy, Method method, Object[] args) { + return null; + } + }); + DynamicMBean mbean = new StandardMBean(defaultImpl, DefaultMBean.class); + MBeanOperationInfo[] ops = mbean.getMBeanInfo().getOperations(); + for (MBeanOperationInfo op : ops) { + String name = op.getName(); + Expect expect = + DefaultMBean.class.getMethod(name).getAnnotation(Expect.class); + Descriptor opd = op.getDescriptor(); + List fields = new ArrayList(); + for (String fieldName : opd.getFieldNames()) { + Object value = opd.getFieldValue(fieldName); + String s = Arrays.deepToString(new Object[] {value}); + s = s.substring(1, s.length() - 1); + fields.add(fieldName + "=" + s); + } + Descriptor opds = new ImmutableDescriptor(fields.toArray(new String[0])); + Descriptor expd = new ImmutableDescriptor(expect.value()); + if (opds.equals(expd)) + System.out.println("OK: op " + name + ": " + opds); + else { + String failure = "Bad descriptor for op " + name + ": " + + "expected " + expd + ", got " + opds; + System.out.println("NOT OK: " + failure); + failed = failure; + } + } + System.out.println(); + if (failed == null) System.out.println("Test passed"); - else if (true) - throw new Exception("TEST FAILED: " + failed); else - System.out.println("Test disabled until 6221321 implemented"); + throw new Exception("TEST FAILED: " + failed); } private static void check(MBeanServer mbs, ObjectName on) throws Exception { @@ -295,151 +433,4 @@ public class AnnotationTest { for (DescriptorRead x : xx) check(x); } - - public static class AnnotatedMBean extends StandardMBean { - AnnotatedMBean(T resource, Class interfaceClass, boolean mx) { - super(resource, interfaceClass, mx); - } - - private static final String[] attrPrefixes = {"get", "set", "is"}; - - protected void cacheMBeanInfo(MBeanInfo info) { - MBeanAttributeInfo[] attrs = info.getAttributes(); - MBeanOperationInfo[] ops = info.getOperations(); - - for (int i = 0; i < attrs.length; i++) { - MBeanAttributeInfo attr = attrs[i]; - String name = attr.getName(); - Descriptor d = attr.getDescriptor(); - Method m; - if ((m = getMethod("get" + name)) != null) - d = ImmutableDescriptor.union(d, descriptorFor(m)); - if (attr.getType().equals("boolean") && - (m = getMethod("is" + name)) != null) - d = ImmutableDescriptor.union(d, descriptorFor(m)); - if ((m = getMethod("set" + name, attr)) != null) - d = ImmutableDescriptor.union(d, descriptorFor(m)); - if (!d.equals(attr.getDescriptor())) { - attrs[i] = - new MBeanAttributeInfo(name, attr.getType(), - attr.getDescription(), attr.isReadable(), - attr.isWritable(), attr.isIs(), d); - } - } - - for (int i = 0; i < ops.length; i++) { - MBeanOperationInfo op = ops[i]; - String name = op.getName(); - Descriptor d = op.getDescriptor(); - MBeanParameterInfo[] params = op.getSignature(); - Method m = getMethod(name, params); - if (m != null) { - d = ImmutableDescriptor.union(d, descriptorFor(m)); - Annotation[][] annots = m.getParameterAnnotations(); - for (int pi = 0; pi < params.length; pi++) { - MBeanParameterInfo param = params[pi]; - Descriptor pd = - ImmutableDescriptor.union(param.getDescriptor(), - descriptorFor(annots[pi])); - params[pi] = new MBeanParameterInfo(param.getName(), - param.getType(), param.getDescription(), pd); - } - op = new MBeanOperationInfo(op.getName(), - op.getDescription(), params, op.getReturnType(), - op.getImpact(), d); - if (!ops[i].equals(op)) - ops[i] = op; - } - } - - Descriptor id = descriptorFor(getMBeanInterface()); - info = new MBeanInfo(info.getClassName(), info.getDescription(), - attrs, info.getConstructors(), ops, info.getNotifications(), - ImmutableDescriptor.union(id, info.getDescriptor())); - super.cacheMBeanInfo(info); - } - - private Descriptor descriptorFor(AnnotatedElement x) { - Annotation[] annots = x.getAnnotations(); - return descriptorFor(annots); - } - - private Descriptor descriptorFor(Annotation[] annots) { - if (annots.length == 0) - return ImmutableDescriptor.EMPTY_DESCRIPTOR; - Map descriptorMap = new HashMap(); - for (Annotation a : annots) { - Class c = a.annotationType(); - Method[] elements = c.getMethods(); - for (Method element : elements) { - DescriptorKey key = - element.getAnnotation(DescriptorKey.class); - if (key != null) { - String name = key.value(); - Object value; - try { - value = element.invoke(a); - } catch (Exception e) { - // we don't expect this - throw new RuntimeException(e); - } - Object oldValue = descriptorMap.put(name, value); - if (oldValue != null && !oldValue.equals(value)) { - final String msg = - "Inconsistent values for descriptor field " + - name + " from annotations: " + value + " :: " + - oldValue; - throw new IllegalArgumentException(msg); - } - } - } - } - if (descriptorMap.isEmpty()) - return ImmutableDescriptor.EMPTY_DESCRIPTOR; - else - return new ImmutableDescriptor(descriptorMap); - } - - private Method getMethod(String name, MBeanFeatureInfo... params) { - Class intf = getMBeanInterface(); - ClassLoader loader = intf.getClassLoader(); - Class[] classes = new Class[params.length]; - for (int i = 0; i < params.length; i++) { - MBeanFeatureInfo param = params[i]; - Descriptor d = param.getDescriptor(); - String type = (String) d.getFieldValue("originalType"); - if (type == null) { - if (param instanceof MBeanAttributeInfo) - type = ((MBeanAttributeInfo) param).getType(); - else - type = ((MBeanParameterInfo) param).getType(); - } - Class c = primitives.get(type); - if (c == null) { - try { - c = Class.forName(type, false, loader); - } catch (ClassNotFoundException e) { - return null; - } - } - classes[i] = c; - } - try { - return intf.getMethod(name, classes); - } catch (Exception e) { - return null; - } - } - - private static final Map> primitives = - new HashMap>(); - static { - for (Class c : - new Class[] {boolean.class, byte.class, short.class, - int.class, long.class, float.class, - double.class, char.class, void.class}) { - primitives.put(c.getName(), c); - } - } - } } diff --git a/test/javax/management/Introspector/ExceptionsDescriptorTest.java b/test/javax/management/Introspector/ExceptionsDescriptorTest.java new file mode 100644 index 0000000000000000000000000000000000000000..5b931ba7294a0db519d0cfc3673ef11c72bcdd4a --- /dev/null +++ b/test/javax/management/Introspector/ExceptionsDescriptorTest.java @@ -0,0 +1,245 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test %M% %I% + * @bug 6250014 + * @summary Test that Exceptions are added to the MbeanInfo + * @author Jean-Francois Denise + * @run main/othervm ExceptionsDescriptorTest + */ +import java.lang.management.ManagementFactory; +import java.util.HashSet; +import java.util.Set; +import javax.management.Descriptor; +import javax.management.JMX; +import javax.management.MBeanAttributeInfo; +import javax.management.MBeanConstructorInfo; +import javax.management.MBeanInfo; +import javax.management.MBeanOperationInfo; +import javax.management.ObjectName; + +public class ExceptionsDescriptorTest { + + private static final ObjectName OBJECT_NAME = ObjectName.valueOf(":type=Foo"); + final static String EXCEPTION_NAME = Exception.class.getName(); + final static String ILLEGAL_ARGUMENT_EXCEPTION_NAME = + IllegalArgumentException.class.getName(); + final static Set ONE_EXCEPTION = new HashSet(); + final static Set TWO_EXCEPTION = new HashSet(); + static { + ONE_EXCEPTION.add(EXCEPTION_NAME); + TWO_EXCEPTION.add(EXCEPTION_NAME); + TWO_EXCEPTION.add(ILLEGAL_ARGUMENT_EXCEPTION_NAME); + } + public interface TestMBean { + + public void doIt(); + + public void doIt(String str) throws Exception; + + public void doIt(String str, boolean b) throws Exception, + IllegalArgumentException; + + public String getThat(); + + public void setThat(String that); + + public String getThe() throws Exception; + + public void setThe(String the); + + public String getThese(); + + public void setThese(String the) throws Exception; + + public String getIt() throws Exception; + + public void setIt(String str) throws Exception; + + public String getThis() throws Exception, IllegalArgumentException; + + public void setThose(String str) throws Exception, + IllegalArgumentException; + } + + public static class Test implements TestMBean { + + public Test() { + } + + public Test(int i) throws Exception { + } + + public Test(int i, int j) throws Exception, IllegalArgumentException { + } + + public void doIt() { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void doIt(String str) throws Exception { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void doIt(String str, boolean b) throws Exception, IllegalArgumentException { + throw new UnsupportedOperationException("Not supported yet."); + } + + public String getThat() { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void setThat(String that) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public String getThe() throws Exception { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void setThe(String the) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public String getThese() { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void setThese(String the) throws Exception { + throw new UnsupportedOperationException("Not supported yet."); + } + + public String getIt() throws Exception { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void setIt(String str) throws Exception { + throw new UnsupportedOperationException("Not supported yet."); + } + + public String getThis() throws Exception, IllegalArgumentException { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void setThose(String str) throws Exception, IllegalArgumentException { + throw new UnsupportedOperationException("Not supported yet."); + } + } + + private static void check(Descriptor d, + Set exceptionsExpectedValue, + boolean exceptionsExpected, + Set setExceptionsExpectedValue, + boolean setExceptionsExpected) throws Exception { + String[] exceptionsValues = (String[]) d.getFieldValue(JMX.EXCEPTIONS_FIELD); + String[] setExceptionsValues = (String[]) d.getFieldValue(JMX.SET_EXCEPTIONS_FIELD); + + if (exceptionsExpected && exceptionsValues == null) { + throw new Exception("exceptions is expected but null value"); + } + if (!exceptionsExpected && exceptionsValues != null) { + throw new Exception("exceptions is not expected but non null value"); + } + if (setExceptionsExpected && setExceptionsValues == null) { + throw new Exception("setExceptions is expected but null value"); + } + if (!setExceptionsExpected && setExceptionsValues != null) { + throw new Exception("setExceptions is not expected but non null value"); + } + + if (exceptionsExpected) { + checkValues(exceptionsExpectedValue, exceptionsValues); + } + if (setExceptionsExpected) { + checkValues(setExceptionsExpectedValue, setExceptionsValues); + } + } + + private static void checkValues(Set expectedValuesSet, + String[] realValues) throws Exception { + + Set realValuesSet = new HashSet(); + for (String ex : realValues) { + realValuesSet.add(ex); + } + if (!realValuesSet.equals(expectedValuesSet)) { + throw new Exception("Invalid content for exceptions. Was expecting " + + expectedValuesSet + ". Found " + realValuesSet); + } + } + + public static void main(String[] args) throws Exception { + Test t = new Test(); + ManagementFactory.getPlatformMBeanServer().registerMBean(t, OBJECT_NAME); + MBeanInfo info = ManagementFactory.getPlatformMBeanServer(). + getMBeanInfo(OBJECT_NAME); + //Constructors + for (MBeanConstructorInfo ctr : info.getConstructors()) { + if (ctr.getSignature().length == 0) { + check(ctr.getDescriptor(), null, false, null, false); + } + if (ctr.getSignature().length == 1) { + check(ctr.getDescriptor(), ONE_EXCEPTION, true, null, false); + } + if (ctr.getSignature().length == 2) { + check(ctr.getDescriptor(),TWO_EXCEPTION,true, null, false); + } + } + //Attributes + for (MBeanAttributeInfo attr : info.getAttributes()) { + if (attr.getName().equals("That")) { + check(attr.getDescriptor(), null, false, null, false); + } + if (attr.getName().equals("The")) { + check(attr.getDescriptor(), ONE_EXCEPTION,true,null, false); + } + if (attr.getName().equals("These")) { + check(attr.getDescriptor(), null, false, ONE_EXCEPTION,true); + } + if (attr.getName().equals("It")) { + check(attr.getDescriptor(), ONE_EXCEPTION,true,ONE_EXCEPTION, + true); + } + if (attr.getName().equals("This")) { + check(attr.getDescriptor(), TWO_EXCEPTION,true,null,false); + } + if (attr.getName().equals("Those")) { + check(attr.getDescriptor(), null,false,TWO_EXCEPTION,true); + } + } + //Operations + for (MBeanOperationInfo oper : info.getOperations()) { + if (oper.getSignature().length == 0) { + check(oper.getDescriptor(), null, false, null, false); + } + if (oper.getSignature().length == 1) { + check(oper.getDescriptor(), ONE_EXCEPTION, true, null, false); + } + if (oper.getSignature().length == 2) { + check(oper.getDescriptor(), TWO_EXCEPTION,true, null, false); + } + } + System.out.println("Test passed"); + } +} diff --git a/test/javax/management/Introspector/ObjectNameTemplateTest.java b/test/javax/management/Introspector/ObjectNameTemplateTest.java new file mode 100644 index 0000000000000000000000000000000000000000..2abcaf0858581f3666de0df75d03e708bd3ec01f --- /dev/null +++ b/test/javax/management/Introspector/ObjectNameTemplateTest.java @@ -0,0 +1,343 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test %M% %I% + * @bug 6675526 + * @summary Test MBeans named with @ObjectNameTemplate + * @author Jean-Francois Denise + * @run main/othervm ObjectNameTemplateTest + */ +import java.lang.management.ManagementFactory; +import java.lang.reflect.Constructor; +import java.util.ArrayList; +import java.util.List; +import javax.management.Attribute; +import javax.management.AttributeList; +import javax.management.AttributeNotFoundException; +import javax.management.DynamicMBean; +import javax.management.ImmutableDescriptor; +import javax.management.InvalidAttributeValueException; +import javax.management.JMX; +import javax.management.MBeanException; +import javax.management.MBeanInfo; +import javax.management.MBeanServer; +import javax.management.MXBean; +import javax.management.MBean; +import javax.management.ManagedAttribute; +import javax.management.NotCompliantMBeanException; +import javax.management.ObjectName; +import javax.management.ObjectNameTemplate; +import javax.management.ReflectionException; +import javax.management.StandardMBean; + +public class ObjectNameTemplateTest { + + private static MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); + private static final String NAME_TEMPLATE_MULTI = + "com.example:type=MultiStdCache,name={Name}"; + private static final String NAME_TEMPLATE_MONO = + "com.example:{Type}={TypeValue}"; + private static final String NAME_TEMPLATE_QUOTED = + "com.example:type=Quotted,name=\"{Name}\""; + private static final String NAME_TEMPLATE_WRAPPED = + "com.example:type=MgtInterface,id={Id}"; + private static final String NAME_TEMPLATE_FULL = + "{Naming}"; + private static final String FULL_NAME = "com.example:type=NotAdvised"; + private static final String NAME1 = "toto1"; + private static final String NAME2 = "toto2"; + private static final String TYPE_KEY = "thisIsTheType"; + private static final String TYPE_VALUE = "aTypeValue"; + private static final String INVALID_NAME = "?,=*,\n, "; + private static final int ID = 999; + private static Object[] EMPTY_PARAMS = {}; + private static String[] EMPTY_SIGNATURE = {}; + private static final ObjectName OBJECTNAME_CACHE = + ObjectName.valueOf("com.example:type=Cache"); + private static final ObjectName OBJECTNAME_SUBCACHE = + ObjectName.valueOf("com.example:type=SubCache"); + private static final ObjectName OBJECTNAME_CACHEMX = + ObjectName.valueOf("com.example:type=CacheMX"); + private static final ObjectName OBJECTNAME_SUBCACHEMX = + ObjectName.valueOf("com.example:type=SubCacheMX"); + private static final ObjectName OBJECTNAME_DYNACACHE = + ObjectName.valueOf("com.example:type=DynaCache"); + private static final ObjectName OBJECTNAME_STDCACHE = + ObjectName.valueOf("com.example:type=StdCache"); + private static final ObjectName OBJECTNAME_STDCACHEMX = + ObjectName.valueOf("com.example:type=StdCacheMX"); + private static final ObjectName OBJECTNAME_MULTI_1 = + ObjectName.valueOf("com.example:" + + "type=MultiStdCache,name=" + NAME1); + private static final ObjectName OBJECTNAME_MULTI_2 = + ObjectName.valueOf("com.example:" + + "type=MultiStdCache,name=" + NAME2); + private static final ObjectName OBJECTNAME_MONO = + ObjectName.valueOf("com.example:" + TYPE_KEY + "=" + + TYPE_VALUE); + private static final ObjectName OBJECTNAME_QUOTED = + ObjectName.valueOf("com.example:type=Quotted," + + "name="+ObjectName.quote(INVALID_NAME)); + private static final ObjectName OBJECTNAME_WRAPPED_RESOURCE = + ObjectName.valueOf("com.example:type=MgtInterface,id=" + ID); + private static final ObjectName OBJECTNAME_FULL = + ObjectName.valueOf(FULL_NAME); + + private static void test(Class mbean, Object[] params, + String[] signature, ObjectName name, String template) + throws Exception { + mbs.createMBean(mbean.getName(), null, params, signature); + test(name, template); + List> parameters = new ArrayList>(); + for (String sig : signature) { + parameters.add(Class.forName(sig)); + } + Class classes[] = new Class[parameters.size()]; + Constructor ctr = mbean.getConstructor(parameters.toArray(classes)); + Object inst = ctr.newInstance(params); + test(inst, name, template); + } + + private static void test(Object obj, ObjectName name, String template) + throws Exception { + mbs.registerMBean(obj, null); + test(name, template); + } + + private static void test(ObjectName name, String template) + throws Exception { + if (!mbs.isRegistered(name)) { + throw new Exception("Wrong " + name + " name"); + } + if (template != null && !mbs.getMBeanInfo(name).getDescriptor(). + getFieldValue("objectNameTemplate").equals(template)) { + throw new Exception("Invalid Derscriptor"); + } + mbs.unregisterMBean(name); + } + + public static void main(String[] args) throws Exception { + test(Cache.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_CACHE, + OBJECTNAME_CACHE.toString()); + + test(CacheMX.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_CACHEMX, + OBJECTNAME_CACHEMX.toString()); + + test(SubCache.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_SUBCACHE, + OBJECTNAME_SUBCACHE.toString()); + + test(SubCacheMX.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_SUBCACHEMX, + OBJECTNAME_SUBCACHEMX.toString()); + + test(DynaCache.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_DYNACACHE, + null); + + test(StdCacheMX.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_STDCACHEMX, + OBJECTNAME_STDCACHEMX.toString()); + + test(StdCache.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_STDCACHE, + OBJECTNAME_STDCACHE.toString()); + String[] sig = {String.class.getName()}; + Object[] params = {NAME1}; + test(MultiStdCache.class, params, sig, OBJECTNAME_MULTI_1, + NAME_TEMPLATE_MULTI); + Object[] params2 = {NAME2}; + test(MultiStdCache.class, params2, sig, OBJECTNAME_MULTI_2, + NAME_TEMPLATE_MULTI); + + test(MonoStdCache.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_MONO, + NAME_TEMPLATE_MONO); + + test(Quoted.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_QUOTED, + NAME_TEMPLATE_QUOTED); + + test(new StandardMBean(new WrappedResource(), MgtInterface.class), + OBJECTNAME_WRAPPED_RESOURCE, NAME_TEMPLATE_WRAPPED); + + test(FullName.class, EMPTY_PARAMS, EMPTY_SIGNATURE, OBJECTNAME_FULL, + NAME_TEMPLATE_FULL); + try { + test(Wrong.class, EMPTY_PARAMS, EMPTY_SIGNATURE, null, null); + throw new Exception("No treceived expected Exception"); + } catch (NotCompliantMBeanException ncex) { + if (!(ncex.getCause() instanceof AttributeNotFoundException)) { + throw new Exception("Invalid initCause"); + } + } + } + + @MBean + @ObjectNameTemplate("{Naming}") + public static class FullName { + + @ManagedAttribute + public String getNaming() { + return FULL_NAME; + } + } + + @ObjectNameTemplate("com.example:type=MgtInterface,id={Id}") + public interface MgtInterface { + + public int getId(); + } + + public static class WrappedResource implements MgtInterface { + + public int getId() { + return ID; + } + } + + @MBean + @ObjectNameTemplate("com.example:type=Cache") + public static class Cache { + } + + @ObjectNameTemplate("com.example:type=SubCache") + public static class SubCache extends Cache { + } + + @MXBean + @ObjectNameTemplate("com.example:type=CacheMX") + public static class CacheMX { + } + + @ObjectNameTemplate("com.example:type=SubCacheMX") + public static class SubCacheMX extends CacheMX { + } + + @ObjectNameTemplate("com.example:type=StdCache") + public interface StdCacheMBean { + } + + public static class StdCache implements StdCacheMBean { + } + + @ObjectNameTemplate("com.example:type=StdCacheMX") + public interface StdCacheMXBean { + } + + public static class StdCacheMX implements StdCacheMXBean { + } + + public static class DynaCache implements DynamicMBean { + + public Object getAttribute(String attribute) throws AttributeNotFoundException, MBeanException, ReflectionException { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void setAttribute(Attribute attribute) throws AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException { + throw new UnsupportedOperationException("Not supported yet."); + } + + public AttributeList getAttributes(String[] attributes) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public AttributeList setAttributes(AttributeList attributes) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public Object invoke(String actionName, Object[] params, String[] signature) throws MBeanException, ReflectionException { + throw new UnsupportedOperationException("Not supported yet."); + } + + public MBeanInfo getMBeanInfo() { + ImmutableDescriptor d = new ImmutableDescriptor(JMX.OBJECT_NAME_TEMPLATE + "=com.example:type=DynaCache"); + + return new MBeanInfo("DynaCache", "Description", null, null, null, null, d); + } + } + + @ObjectNameTemplate("com.example:type=MultiStdCache,name={Name}") + public interface MultiStdCacheMXBean { + + public String getName(); + } + + public static class MultiStdCache implements MultiStdCacheMXBean { + + private String name; + + public MultiStdCache(String name) { + this.name = name; + } + + public String getName() { + return name; + } + } + + @ObjectNameTemplate("com.example:{Type}={TypeValue}") + public interface MonoStdCacheMXBean { + + public String getTypeValue(); + + public String getType(); + } + + public static class MonoStdCache implements MonoStdCacheMXBean { + + public String getTypeValue() { + return TYPE_VALUE; + } + + public String getType() { + return TYPE_KEY; + } + } + + @ObjectNameTemplate("com.example:type=Quotted,name=\"{Name}\"") + public interface QuottedMXBean { + + public String getName(); + } + + public static class Quoted implements QuottedMXBean { + + public String getName() { + return INVALID_NAME; + } + } + + @ObjectNameTemplate("com.example:{Type}={TypeValue}, name={Name}") + public interface WrongMXBean { + + public String getTypeValue(); + + public String getType(); + } + + public static class Wrong implements WrongMXBean { + + public String getTypeValue() { + return TYPE_VALUE; + } + + public String getType() { + return TYPE_KEY; + } + } +} diff --git a/test/javax/management/MBeanServer/AttributeListMapTest.java b/test/javax/management/MBeanServer/AttributeListMapTest.java new file mode 100644 index 0000000000000000000000000000000000000000..94dd39306a3c64aa9c01dc305cc08f76c0d9d2b1 --- /dev/null +++ b/test/javax/management/MBeanServer/AttributeListMapTest.java @@ -0,0 +1,115 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6336968 + * @summary Test AttributeList.toMap + * @author Eamonn McManus + */ + +import java.math.BigInteger; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import javax.management.Attribute; +import javax.management.AttributeList; + +public class AttributeListMapTest { + + private static String failure; + + public static void main(String[] args) throws Exception { + AttributeList attrs = new AttributeList(Arrays.asList( + new Attribute("Str", "Five"), + new Attribute("Int", 5), + new Attribute("Flt", 5.0))); + + Map map = attrs.toMap(); + final Map expectMap = new HashMap(); + for (Attribute attr : attrs.asList()) + expectMap.put(attr.getName(), attr.getValue()); + assertEquals("Initial map", expectMap, map); + assertEquals("Initial map size", 3, map.size()); + assertEquals("Name set", expectMap.keySet(), map.keySet()); + assertEquals("Values", new HashSet(expectMap.values()), + new HashSet(map.values())); + assertEquals("Entry set", expectMap.entrySet(), map.entrySet()); + + AttributeList attrs2 = new AttributeList(map); + assertEquals("AttributeList from Map", attrs, attrs2); + // This assumes that the Map conserves the order of the attributes, + // which is not specified but true because we use LinkedHashMap. + + // Check that toMap fails if the list contains non-Attribute elements. + AttributeList attrs3 = new AttributeList(attrs); + attrs3.add("Hello"); // allowed but curious + try { + map = attrs3.toMap(); + fail("toMap succeeded on list with non-Attribute elements"); + } catch (Exception e) { + assertEquals("Exception for toMap with non-Atttribute elements", + IllegalArgumentException.class, e.getClass()); + } + + // Check that the Map does not reflect changes made to the list after + // the Map was obtained. + AttributeList attrs4 = new AttributeList(attrs); + map = attrs4.toMap(); + attrs4.add(new Attribute("Big", new BigInteger("5"))); + assertEquals("Map after adding element to list", expectMap, map); + + // Check that if there is more than one Attribute with the same name + // then toMap() chooses the last of them. + AttributeList attrs5 = new AttributeList(attrs); + attrs5.add(new Attribute("Str", "Cinq")); + map = attrs5.toMap(); + assertEquals("Size of Map for list with duplicate attribute name", + 3, map.size()); + Object value = map.get("Str"); + assertEquals("Value of Str in Map for list with two values for it", + "Cinq", value); + + if (failure == null) + System.out.println("TEST PASSED"); + else + throw new Exception("TEST FAILED: " + failure); + } + + private static void assertEquals(String what, Object expect, Object actual) { + if (eq(expect, actual)) + System.out.println("OK: " + what); + else + fail(what + ": expected " + expect + ", got " + actual); + } + + private static boolean eq(Object x, Object y) { + return (x == null) ? (y == null) : x.equals(y); + } + + private static void fail(String why) { + System.out.println("FAIL: " + why); + failure = why; + } +} diff --git a/test/javax/management/MBeanServer/AttributeListTypeSafeTest.java b/test/javax/management/MBeanServer/AttributeListTypeSafeTest.java new file mode 100644 index 0000000000000000000000000000000000000000..ed2fc96fd06159c10f449e141e6a890b94d0de31 --- /dev/null +++ b/test/javax/management/MBeanServer/AttributeListTypeSafeTest.java @@ -0,0 +1,109 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6336968 + * @summary Test adding non-Attribute values to an AttributeList. + * @author Eamonn McManus + */ + +import java.util.Collections; +import java.util.List; +import javax.management.Attribute; +import javax.management.AttributeList; + +public class AttributeListTypeSafeTest { + + private static String failure; + + public static void main(String[] args) throws Exception { + // Test calling asList after adding non-Attribute by various means + for (Op op : Op.values()) { + AttributeList alist = new AttributeList(); + alist.add(new Attribute("foo", "bar")); + doOp(alist, op); + String what = "asList() after calling " + op + " with non-Attribute"; + try { + List lista = alist.asList(); + fail(what + ": succeeded but should not have"); + } catch (IllegalArgumentException e) { + System.out.println("OK: " + what + ": got IllegalArgumentException"); + } + } + + // Test adding non-Attribute by various means after calling asList + for (Op op : Op.values()) { + AttributeList alist = new AttributeList(); + List lista = alist.asList(); + lista.add(new Attribute("foo", "bar")); + String what = op + " with non-Attribute after calling asList()"; + try { + doOp(alist, op); + fail(what + ": succeeded but should not have"); + } catch (IllegalArgumentException e) { + System.out.println("OK: " + what + ": got IllegalArgumentException"); + } + } + + if (failure == null) + System.out.println("TEST PASSED"); + else + throw new Exception("TEST FAILED: " + failure); + } + + private static enum Op { + ADD("add(Object)"), ADD_AT("add(int, Object)"), + ADD_ALL("add(Collection)"), ADD_ALL_AT("add(int, Collection)"), + SET("set(int, Object)"); + + private Op(String what) { + this.what = what; + } + + @Override + public String toString() { + return what; + } + + private final String what; + } + + private static void doOp(AttributeList alist, Op op) { + Object x = "oops"; + switch (op) { + case ADD: alist.add(x); break; + case ADD_AT: alist.add(0, x); break; + case ADD_ALL: alist.add(Collections.singleton(x)); break; + case ADD_ALL_AT: alist.add(0, Collections.singleton(x)); break; + case SET: alist.set(0, x); break; + default: throw new AssertionError("Case not covered"); + } + } + + private static void fail(String why) { + System.out.println("FAIL: " + why); + failure = why; + } + +} diff --git a/test/javax/management/MBeanServer/DynamicWrapperMBeanTest.java b/test/javax/management/MBeanServer/DynamicWrapperMBeanTest.java index 793419abf650b10938d4f115c71e9100fb888587..fc52711c7fec62b995ec3e7a0120a4687c9ab90f 100644 --- a/test/javax/management/MBeanServer/DynamicWrapperMBeanTest.java +++ b/test/javax/management/MBeanServer/DynamicWrapperMBeanTest.java @@ -23,14 +23,27 @@ /* * @test DynamicWrapperMBeanTest - * @bug 6624232 + * @bug 6624232 6776225 * @summary Test the DynamicWrapperMBean interface * @author Eamonn McManus */ import java.lang.management.ManagementFactory; +import javax.annotation.Resource; +import javax.management.JMX; +import javax.management.ListenerNotFoundException; +import javax.management.MBeanNotificationInfo; import javax.management.MBeanServer; +import javax.management.Notification; +import javax.management.NotificationBroadcaster; +import javax.management.NotificationBroadcasterSupport; +import javax.management.NotificationEmitter; +import javax.management.NotificationFilter; +import javax.management.NotificationInfo; +import javax.management.NotificationListener; import javax.management.ObjectName; +import javax.management.SendNotification; +import javax.management.StandardEmitterMBean; import javax.management.StandardMBean; import javax.management.modelmbean.ModelMBeanInfo; import javax.management.modelmbean.ModelMBeanInfoSupport; @@ -39,6 +52,25 @@ import javax.management.modelmbean.RequiredModelMBean; import static javax.management.StandardMBean.Options; public class DynamicWrapperMBeanTest { + private static String failure; + + public static void main(String[] args) throws Exception { + wrapTest(); + notifTest(); + + if (failure == null) + System.out.println("TEST PASSED"); + else + throw new Exception("TEST FAILED: " + failure); + } + + private static final Options wrappedVisOpts = new Options(); + private static final Options wrappedInvisOpts = new Options(); + static { + wrappedVisOpts.setWrappedObjectVisible(true); + wrappedInvisOpts.setWrappedObjectVisible(false); + } + public static interface WrappedMBean { public void sayHello(); } @@ -48,19 +80,13 @@ public class DynamicWrapperMBeanTest { } } - private static String failure; - - public static void main(String[] args) throws Exception { + private static void wrapTest() throws Exception { if (Wrapped.class.getClassLoader() == StandardMBean.class.getClassLoader()) { throw new Exception( "TEST ERROR: Resource and StandardMBean have same ClassLoader"); } - Options wrappedVisOpts = new Options(); - wrappedVisOpts.setWrappedObjectVisible(true); - Options wrappedInvisOpts = new Options(); - wrappedInvisOpts.setWrappedObjectVisible(false); assertEquals("Options withWrappedObjectVisible(false)", new Options(), wrappedInvisOpts); @@ -138,8 +164,223 @@ public class DynamicWrapperMBeanTest { assertEquals("isInstanceOf(RequiredModelMBean) for invisible resource", true, mbs.isInstanceOf(invisibleName, RequiredModelMBean.class.getName())); - if (failure != null) - throw new Exception("TEST FAILED: " + failure); + mbs.unregisterMBean(visibleName); + mbs.unregisterMBean(invisibleName); + } + + private static enum WrapType { + NBS("NotificationBroadcasterSupport"), + INJ("@Resource SendNotification"), + STD_MBEAN_NBS("StandardMBean delegating to NotificationBroadcasterSupport"), + STD_MBEAN_INJ("StandardMBean delegating to @Resource SendNotification"), + STD_MBEAN_SUB_NBS("StandardMBean subclass implementing NotificationBroadcaster"), + STD_MBEAN_SUB_INJ("StandardMBean subclass with @Resource SendNotification"), + STD_EMIT_MBEAN_NBS("StandardEmitterMBean delegating to NotificationBroadcasterSupport"), + STD_EMIT_MBEAN_INJ("StandardEmitterMBean delegating to @Resource SendNotification"), + STD_EMIT_MBEAN_SUB("StandardEmitterMBean subclass"), + STD_EMIT_MBEAN_SUB_INJ("StandardEmitterMBean subclass with @Resource SendNotification"); + + WrapType(String s) { + this.s = s; + } + + @Override + public String toString() { + return s; + } + + private final String s; + } + + @NotificationInfo( + types = {"foo", "bar"} + ) + public static interface BroadcasterMBean { + public void send(Notification n); + } + + public static class Broadcaster + extends NotificationBroadcasterSupport implements BroadcasterMBean { + public void send(Notification n) { + super.sendNotification(n); + } + } + + public static interface SendNotifMBean extends BroadcasterMBean { + } + + public static class SendNotif implements SendNotifMBean { + @Resource + private volatile SendNotification sendNotif; + + public void send(Notification n) { + sendNotif.sendNotification(n); + } + } + + public static class StdBroadcaster + extends StandardMBean + implements BroadcasterMBean, NotificationBroadcaster { + private final NotificationBroadcasterSupport nbs = + new NotificationBroadcasterSupport(); + + public StdBroadcaster() throws Exception { + super(BroadcasterMBean.class); + } + + public void send(Notification n) { + nbs.sendNotification(n); + } + + public void addNotificationListener(NotificationListener listener, + NotificationFilter filter, Object handback) { + nbs.addNotificationListener(listener, filter, handback); + } + + public MBeanNotificationInfo[] getNotificationInfo() { + return null; + } + + public void removeNotificationListener(NotificationListener listener) + throws ListenerNotFoundException { + nbs.removeNotificationListener(listener); + } + } + + public static class StdSendNotif + extends StandardMBean implements SendNotifMBean { + @Resource + private volatile SendNotification sendNotif; + + public StdSendNotif() throws Exception { + super(SendNotifMBean.class); + } + + public void send(Notification n) { + sendNotif.sendNotification(n); + } + } + + public static class StdEmitterBroadcaster // :-) + extends StandardEmitterMBean + implements BroadcasterMBean { + + public StdEmitterBroadcaster() throws Exception { + super(BroadcasterMBean.class, null); + } + + public void send(Notification n) { + super.sendNotification(n); + } + } + + // This case is unlikely - if you're using @Resource SendNotification + // then there's no point in using StandardEmitterMBean, since + // StandardMBean would suffice. + public static class StdEmitterSendNotif + extends StandardEmitterMBean implements SendNotifMBean { + @Resource + private volatile SendNotification sendNotif; + + public StdEmitterSendNotif() { + super(SendNotifMBean.class, null); + } + + public void send(Notification n) { + sendNotif.sendNotification(n); + } + } + + // Test that JMX.isNotificationSource and + // mbs.isInstanceOf("NotificationBroadcaster") work correctly even when + // the MBean is a broadcaster by virtue of its wrapped resource. + // Test that we find the MBeanNotificationInfo[] from the @NotificationInfo + // annotation on BroadcasterMBean. We cover a large number of different + // MBean types, but all ultimately implement that interface. + private static void notifTest() throws Exception { + System.out.println("===Testing notification senders==="); + + for (WrapType wrapType : WrapType.values()) { + System.out.println("---" + wrapType); + + final Object mbean; + + switch (wrapType) { + case NBS: + // An MBean that extends NotificationBroadcasterSupport + mbean = new Broadcaster(); + break; + case INJ: + // An MBean that injects SendNotification + mbean = new SendNotif(); + break; + case STD_MBEAN_NBS: + // A StandardMBean that delegates to a NotificationBroadcasterSupport + mbean = new StandardMBean( + new Broadcaster(), BroadcasterMBean.class, wrappedVisOpts); + break; + case STD_MBEAN_INJ: + // A StandardMBean that delegates to an object that injects + // SendNotification + mbean = new StandardMBean( + new SendNotif(), BroadcasterMBean.class, wrappedVisOpts); + break; + case STD_EMIT_MBEAN_NBS: { + // A StandardEmitterMBean that delegates to a NotificationBroadcasterSupport + Broadcaster broadcaster = new Broadcaster(); + mbean = new StandardEmitterMBean( + broadcaster, BroadcasterMBean.class, wrappedVisOpts, + broadcaster); + break; + } + case STD_EMIT_MBEAN_INJ: { + // A StandardEmitterMBean that delegates to an object that injects + // SendNotification + SendNotif sendNotif = new SendNotif(); + mbean = new StandardEmitterMBean( + sendNotif, BroadcasterMBean.class, wrappedVisOpts, + null); + break; + } + case STD_MBEAN_SUB_NBS: + // A subclass of StandardMBean that implements NotificationBroadcaster + mbean = new StdBroadcaster(); + break; + case STD_MBEAN_SUB_INJ: + // A subclass of StandardMBean that injects SendNotification + mbean = new StdSendNotif(); + break; + case STD_EMIT_MBEAN_SUB: + // A subclass of StandardEmitterMBean + mbean = new StdEmitterBroadcaster(); + break; + case STD_EMIT_MBEAN_SUB_INJ: + // A subclass of StandardEmitterMBean that injects SendNotification + // (which is a rather strange thing to do and probably a user + // misunderstanding but we should do the right thing anyway). + mbean = new StdEmitterSendNotif(); + break; + default: + throw new AssertionError(); + } + + MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); + + final ObjectName name = new ObjectName("a:type=Sender"); + mbs.registerMBean(mbean, name); + boolean isBroadcaster = mbs.isInstanceOf( + name, NotificationBroadcaster.class.getName()); + assertEquals("JMX.isNotificationSource(mbean)", + true, JMX.isNotificationSource(mbean)); + assertEquals("isInstanceOf(NotificationBroadcaster)", + true, isBroadcaster); + MBeanNotificationInfo[] mbnis = + mbs.getMBeanInfo(name).getNotifications(); + assertEquals("MBeanNotificationInfo not empty", + true, (mbnis.length > 0)); + + mbs.unregisterMBean(name); + } } private static void assertEquals(String what, Object expect, Object actual) { diff --git a/test/javax/management/MBeanServer/MBeanExceptionTest.java b/test/javax/management/MBeanServer/MBeanExceptionTest.java index 25260e0c15ed15391dd05f749a093fce47c29de9..6bb6f77b77be42ef2c1648e9fd51ba8c06cb1ef5 100644 --- a/test/javax/management/MBeanServer/MBeanExceptionTest.java +++ b/test/javax/management/MBeanServer/MBeanExceptionTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2004-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,16 +23,19 @@ /* * @test - * @bug 5035217 + * @bug 5035217 6766173 * @summary Test that MBean's RuntimeException is wrapped in * RuntimeMBeanException and (for Standard MBeans) that checked exceptions * are wrapped in MBeanException * @author Eamonn McManus - * @compile -source 1.4 MBeanExceptionTest.java + * @compile MBeanExceptionTest.java * @run main MBeanExceptionTest */ +import java.util.Collections; +import java.util.Set; import javax.management.*; +import javax.management.namespace.MBeanServerSupport; public class MBeanExceptionTest { public static void main(String[] args) throws Exception { @@ -56,6 +59,53 @@ public class MBeanExceptionTest { failures += test(mbs, standardName, true); failures += test(mbs, standardMBeanName, true); failures += test(mbs, dynamicName, false); + + final boolean[] booleans = {false, true}; + + for (boolean mbss : booleans) { + for (boolean runtimeX : booleans) { + Class excC = + runtimeX ? RuntimeMBeanException.class : MBeanException.class; + String excS = + runtimeX ? "a RuntimeMBeanException" : "an MBeanException"; + String mbsS = + mbss ? "a conformant MBeanServerSupport" : "a plain MBeanServer"; + MBeanServer xmbs = + mbss ? new CreateExceptionMBS() : mbs; + System.out.println( + "Test that, with " + mbsS + ", " + excS + " is wrapped " + + "in " + excS); + // E.g. "Test that, with a plain MBeanServer, an MBeanException + // is wrapped in an MBeanException". + try { + mbs.createMBean( + Except.class.getName(), new ObjectName(":name=Oops"), + new Object[] {runtimeX}, + new String[] {boolean.class.getName()}); + System.out.println( + "FAIL: createMBean succeeded but should not have"); + failures++; + } catch (Exception e) { + if (!excC.isInstance(e)) { + System.out.println( + "FAIL: expected " + excC.getName() + " from " + + "createMBean, got " + e); + failures++; + } else { + Throwable cause = e.getCause(); + if (!excC.isInstance(cause)) { + System.out.println( + "FAIL: expected " + excC.getName() + + " as cause of " + excC.getName() + + ", got " + e); + failures++; + } else + System.out.println("...ok"); + } + } + } + } + if (failures == 0) System.out.println("Test passed"); else { @@ -153,6 +203,15 @@ public class MBeanExceptionTest { } public static class Except implements ExceptMBean { + public Except() {} + + public Except(boolean runtimeX) throws MBeanException { + if (runtimeX) + throw new RuntimeMBeanException(new RuntimeException(), "Bang"); + else + throw new MBeanException(new Exception(), "Bang"); + } + public String getUncheckedException() { throw theUncheckedException; } @@ -221,4 +280,28 @@ public class MBeanExceptionTest { private static final RuntimeException theUncheckedException = new UnsupportedOperationException("The unchecked exception " + "that should be seen"); + + private static class CreateExceptionMBS extends MBeanServerSupport { + @Override + protected Set getNames() { + return Collections.emptySet(); + } + + @Override + public DynamicMBean getDynamicMBeanFor(ObjectName name) + throws InstanceNotFoundException { + throw new InstanceNotFoundException(name); + } + + @Override + public ObjectInstance createMBean(String className, + ObjectName name, ObjectName loaderName, Object[] params, + String[] signature, boolean useCLR) + throws ReflectionException, InstanceAlreadyExistsException, + MBeanRegistrationException, MBeanException, + NotCompliantMBeanException, InstanceNotFoundException { + Exception wrapped = new MBeanException(new Exception(), "Bang"); + throw new MBeanException(wrapped, "Bang"); + } + } } diff --git a/test/javax/management/context/ContextForwarderTest.java b/test/javax/management/context/ContextForwarderTest.java new file mode 100644 index 0000000000000000000000000000000000000000..d82acd3b63e5cb49dc400f778e23f415710d0a33 --- /dev/null +++ b/test/javax/management/context/ContextForwarderTest.java @@ -0,0 +1,103 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 5072267 + * @summary Test that a context forwarder can be created and then installed. + * @author Eamonn McManus + */ + +/* The specific thing we're testing for is that the forwarder can be created + * with a null "next", and then installed with a real "next". An earlier + * defect meant that in this case the simulated jmx.context// namespace had a + * null handler that never changed. + */ + +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; +import javax.management.ClientContext; +import javax.management.MBeanServer; +import javax.management.MBeanServerConnection; +import javax.management.MBeanServerFactory; +import javax.management.ObjectName; +import javax.management.remote.JMXConnector; +import javax.management.remote.JMXConnectorFactory; +import javax.management.remote.JMXConnectorServer; +import javax.management.remote.JMXConnectorServerFactory; +import javax.management.remote.JMXServiceURL; +import javax.management.remote.MBeanServerForwarder; + +public class ContextForwarderTest { + private static String failure; + + public static void main(String[] args) throws Exception { + MBeanServer mbs = MBeanServerFactory.newMBeanServer(); + JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://"); + Map env = new HashMap(); + env.put(JMXConnectorServer.CONTEXT_FORWARDER, "false"); + JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer( + url, env, mbs); + MBeanServerForwarder sysMBSF = cs.getSystemMBeanServerForwarder(); + MBeanServerForwarder mbsf = ClientContext.newContextForwarder(mbs, sysMBSF); + sysMBSF.setMBeanServer(mbsf); + + int localCount = mbs.getMBeanCount(); + + cs.start(); + try { + JMXConnector cc = JMXConnectorFactory.connect(cs.getAddress()); + MBeanServerConnection mbsc = cc.getMBeanServerConnection(); + mbsc = ClientContext.withContext(mbsc, "foo", "bar"); + int contextCount = mbsc.getMBeanCount(); + if (localCount + 1 != contextCount) { + fail("Local MBean count %d, context MBean count %d", + localCount, contextCount); + } + Set localNames = + new TreeSet(mbs.queryNames(null, null)); + ObjectName contextNamespaceObjectName = + new ObjectName(ClientContext.NAMESPACE + "//:type=JMXNamespace"); + if (!localNames.add(contextNamespaceObjectName)) + fail("Local names already contained context namespace handler"); + Set contextNames = mbsc.queryNames(null, null); + if (!localNames.equals(contextNames)) { + fail("Name set differs locally and in context: " + + "local: %s; context: %s", localNames, contextNames); + } + } finally { + cs.stop(); + } + if (failure != null) + throw new Exception("TEST FAILED: " + failure); + else + System.out.println("TEST PASSED"); + } + + private static void fail(String msg, Object... params) { + failure = String.format(msg, params); + System.out.println("FAIL: " + failure); + } +} diff --git a/test/javax/management/context/ContextTest.java b/test/javax/management/context/ContextTest.java new file mode 100644 index 0000000000000000000000000000000000000000..e943364ceaed2b8c44ad521bed7093743c398798 --- /dev/null +++ b/test/javax/management/context/ContextTest.java @@ -0,0 +1,534 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test ContextTest + * @bug 5072267 + * @summary Test client contexts. + * @author Eamonn McManus + * TODO: Try registering with a null name replaced by preRegister (for example + * from the MLet class) and see if it now works. + */ + +import java.lang.management.ManagementFactory; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Queue; +import java.util.Set; +import java.util.TreeMap; +import java.util.concurrent.Callable; +import javax.management.Attribute; +import javax.management.AttributeList; +import javax.management.ClientContext; +import javax.management.DynamicMBean; +import javax.management.JMX; +import javax.management.ListenerNotFoundException; +import javax.management.MBeanNotificationInfo; +import javax.management.MBeanRegistration; +import javax.management.MBeanServer; +import javax.management.MBeanServerDelegate; +import javax.management.Notification; +import javax.management.NotificationBroadcasterSupport; +import javax.management.NotificationFilter; +import javax.management.NotificationListener; +import javax.management.ObjectInstance; +import javax.management.ObjectName; +import javax.management.StandardMBean; +import javax.management.loading.MLet; +import javax.management.namespace.JMXNamespace; + +import javax.management.remote.MBeanServerForwarder; +import static java.util.Collections.emptyMap; +import static java.util.Collections.singletonMap; + +public class ContextTest { + private static String failure; + private static final Map emptyContext = emptyMap(); + + public static interface ShowContextMBean { + public Map getContext(); + public Map getCreationContext(); + public Set getCalledOps(); + public String getThing(); + public void setThing(String x); + public int add(int x, int y); + } + + public static class ShowContext + extends NotificationBroadcasterSupport + implements ShowContextMBean, MBeanRegistration { + private final Map creationContext; + private final Set calledOps = new HashSet(); + + public ShowContext() { + creationContext = getContext(); + } + + public Map getContext() { + return ClientContext.getContext(); + } + + public Map getCreationContext() { + return creationContext; + } + + public Set getCalledOps() { + return calledOps; + } + + public String getThing() { + return "x"; + } + + public void setThing(String x) { + } + + public int add(int x, int y) { + return x + y; + } + + public ObjectName preRegister(MBeanServer server, ObjectName name) { + assertEquals("preRegister context", creationContext, getContext()); + calledOps.add("preRegister"); + return name; + } + + public void postRegister(Boolean registrationDone) { + assertEquals("postRegister context", creationContext, getContext()); + calledOps.add("postRegister"); + } + + // The condition checked here is not guaranteed universally true, + // but is true every time we unregister an instance of this MBean + // in this test. + public void preDeregister() throws Exception { + assertEquals("preDeregister context", creationContext, getContext()); + } + + public void postDeregister() { + assertEquals("postDeregister context", creationContext, getContext()); + } + + // Same remark as for preDeregister + @Override + public MBeanNotificationInfo[] getNotificationInfo() { + calledOps.add("getNotificationInfo"); + return super.getNotificationInfo(); + } + + @Override + public void addNotificationListener( + NotificationListener listener, NotificationFilter filter, Object handback) { + calledOps.add("addNotificationListener"); + super.addNotificationListener(listener, filter, handback); + } + + @Override + public void removeNotificationListener( + NotificationListener listener) + throws ListenerNotFoundException { + calledOps.add("removeNL1"); + super.removeNotificationListener(listener); + } + + @Override + public void removeNotificationListener( + NotificationListener listener, NotificationFilter filter, Object handback) + throws ListenerNotFoundException { + calledOps.add("removeNL3"); + super.removeNotificationListener(listener, filter, handback); + } + } + + private static class LogRecord { + final String op; + final Object[] params; + final Map context; + LogRecord(String op, Object[] params, Map context) { + this.op = op; + this.params = params; + this.context = context; + } + + @Override + public String toString() { + return op + Arrays.deepToString(params) + " " + context; + } + } + + /* + * InvocationHandler that forwards all methods to a contained object + * but also records each forwarded method. This allows us to check + * that the appropriate methods were called with the appropriate + * parameters. It's similar to what's typically available in + * Mock Object frameworks. + */ + private static class LogIH implements InvocationHandler { + private final Object wrapped; + Queue log = new LinkedList(); + + LogIH(Object wrapped) { + this.wrapped = wrapped; + } + + public Object invoke(Object proxy, Method method, Object[] args) + throws Throwable { + if (method.getDeclaringClass() != Object.class) { + LogRecord lr = + new LogRecord( + method.getName(), args, ClientContext.getContext()); + log.add(lr); + } + try { + return method.invoke(wrapped, args); + } catch (InvocationTargetException e) { + throw e.getCause(); + } + } + } + + private static T newSnoop(Class wrappedClass, LogIH logIH) { + return wrappedClass.cast(Proxy.newProxyInstance( + wrappedClass.getClassLoader(), + new Class[] {wrappedClass}, + logIH)); + } + + public static void main(String[] args) throws Exception { + MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); + System.out.println(mbs.queryNames(null, null)); + ObjectName name = new ObjectName("a:b=c"); + mbs.registerMBean(new ShowContext(), name); + final ShowContextMBean show = + JMX.newMBeanProxy(mbs, name, ShowContextMBean.class); + + // Test local setting and getting within the MBeanServer + + assertEquals("initial context", emptyContext, show.getContext()); + ClientContext.doWithContext(singletonMap("foo", "bar"), new Callable() { + public Void call() { + assertEquals("context in doWithContext", + singletonMap("foo", "bar"), show.getContext()); + return null; + } + }); + assertEquals("initial context after doWithContext", + emptyContext, show.getContext()); + String got = ClientContext.doWithContext( + singletonMap("foo", "baz"), new Callable() { + public String call() { + return ClientContext.getContext().get("foo"); + } + }); + assertEquals("value extracted from context", "baz", got); + + Map combined = ClientContext.doWithContext( + singletonMap("foo", "baz"), new Callable>() { + public Map call() throws Exception { + return ClientContext.doWithContext( + singletonMap("fred", "jim"), + new Callable>() { + public Map call() { + return ClientContext.getContext(); + } + }); + } + }); + assertEquals("nested doWithContext context", + singletonMap("fred", "jim"), combined); + + final String ugh = "a!\u00c9//*=:\"% "; + ClientContext.doWithContext(singletonMap(ugh, ugh), new Callable() { + public Void call() { + assertEquals("context with tricky encoding", + singletonMap(ugh, ugh), show.getContext()); + return null; + } + }); + Map ughMap = new TreeMap(); + ughMap.put(ugh, ugh); + ughMap.put("fred", "jim"); + // Since this is a TreeMap and "fred" is greater than ugh (which begins + // with "a"), we will see the encoding of ugh first in the output string. + String encoded = ClientContext.encode(ughMap); + String expectedUghCoding = "a%21%C3%89%2F%2F%2A%3D%3A%22%25+"; + String expectedUghMapCoding = + ClientContext.NAMESPACE + "//" + expectedUghCoding + "=" + + expectedUghCoding + ";fred=jim"; + assertEquals("hairy context encoded as string", + expectedUghMapCoding, encoded); + + // Wrap the MBeanServer with a context MBSF so we can test withContext. + // Also check the simulated namespace directly. + + LogIH mbsIH = new LogIH(mbs); + MBeanServer snoopMBS = newSnoop(MBeanServer.class, mbsIH); + MBeanServerForwarder ctxMBS = + ClientContext.newContextForwarder(snoopMBS, null); + + // The MBSF returned by ClientContext is actually a compound of two + // forwarders, but that is supposed to be hidden by changing the + // behaviour of get/setMBeanServer. Check that it is indeed so. + assertEquals("next MBS of context forwarder", + snoopMBS, ctxMBS.getMBeanServer()); + // If the above assertion fails you may get a confusing message + // because the toString() of the two objects is likely to be the same + // so it will look as if they should be equal. + ctxMBS.setMBeanServer(null); + assertEquals("next MBS of context forwarder after setting it null", + null, ctxMBS.getMBeanServer()); + ctxMBS.setMBeanServer(snoopMBS); + + // The MBSF should look the same as the original MBeanServer except + // that it has the JMXNamespace for the simulated namespace. + + Set origNames = mbs.queryNames(null, null); + Set mbsfNames = ctxMBS.queryNames(null, null); + assertEquals("number of MBeans returned by queryNames within forwarder", + origNames.size() + 1, mbsfNames.size()); + assertEquals("MBeanCount within forwarder", + mbsfNames.size(), ctxMBS.getMBeanCount()); + assertCalled(mbsIH, "queryNames", emptyContext); + assertCalled(mbsIH, "getMBeanCount", emptyContext); + + ObjectName ctxNamespaceName = new ObjectName( + ClientContext.NAMESPACE + "//:" + JMXNamespace.TYPE_ASSIGNMENT); + origNames.add(ctxNamespaceName); + assertEquals("MBeans within forwarder", origNames, mbsfNames); + Set domains = new HashSet(Arrays.asList(ctxMBS.getDomains())); + assertEquals("domains include context namespace MBean", + true, domains.contains(ClientContext.NAMESPACE + "//")); + assertCalled(mbsIH, "getDomains", emptyContext); + + // Now test ClientContext.withContext. + + MBeanServer ughMBS = ClientContext.withContext(ctxMBS, ugh, ugh); + + ShowContextMBean ughshow = + JMX.newMBeanProxy(ughMBS, name, ShowContextMBean.class); + Map ughCtx = ughshow.getContext(); + Map ughExpect = singletonMap(ugh, ugh); + assertEquals("context seen by MBean accessed within namespace", + ughExpect, ughCtx); + assertCalled(mbsIH, "getAttribute", ughExpect, name, "Context"); + + MBeanServer cmbs = ClientContext.withContext( + ctxMBS, "mickey", "mouse"); + ShowContextMBean cshow = + JMX.newMBeanProxy(cmbs, name, ShowContextMBean.class); + assertEquals("context seen by MBean accessed within namespace", + singletonMap("mickey", "mouse"), cshow.getContext()); + + MBeanServer ccmbs = ClientContext.withContext( + cmbs, "donald", "duck"); + ShowContextMBean ccshow = + JMX.newMBeanProxy(ccmbs, name, ShowContextMBean.class); + Map disney = new HashMap(); + disney.put("mickey", "mouse"); + disney.put("donald", "duck"); + assertEquals("context seen by MBean in nested namespace", + disney, ccshow.getContext()); + + // Test that all MBS ops produce reasonable results + + ObjectName logger = new ObjectName("a:type=Logger"); + DynamicMBean showMBean = + new StandardMBean(new ShowContext(), ShowContextMBean.class); + LogIH mbeanLogIH = new LogIH(showMBean); + DynamicMBean logMBean = newSnoop(DynamicMBean.class, mbeanLogIH); + ObjectInstance loggerOI = ccmbs.registerMBean(logMBean, logger); + assertEquals("ObjectName returned by createMBean", + logger, loggerOI.getObjectName()); + + // We get an getMBeanInfo call to determine the className in the + // ObjectInstance to return from registerMBean. + assertCalled(mbeanLogIH, "getMBeanInfo", disney); + + ccmbs.getAttribute(logger, "Thing"); + assertCalled(mbeanLogIH, "getAttribute", disney); + + ccmbs.getAttributes(logger, new String[] {"Thing", "Context"}); + assertCalled(mbeanLogIH, "getAttributes", disney); + + ccmbs.setAttribute(logger, new Attribute("Thing", "bar")); + assertCalled(mbeanLogIH, "setAttribute", disney); + + ccmbs.setAttributes(logger, new AttributeList( + Arrays.asList(new Attribute("Thing", "baz")))); + assertCalled(mbeanLogIH, "setAttributes", disney); + + ccmbs.getMBeanInfo(logger); + assertCalled(mbeanLogIH, "getMBeanInfo", disney); + + Set names = ccmbs.queryNames(null, null); + Set expectedNames = new HashSet( + Collections.singleton(MBeanServerDelegate.DELEGATE_NAME)); + assertEquals("context namespace query includes expected names", + true, names.containsAll(expectedNames)); + + Set nsNames = ccmbs.queryNames(new ObjectName("*//:*"), null); + Set expectedNsNames = new HashSet( + Arrays.asList( + new ObjectName(ClientContext.NAMESPACE + + ObjectName.NAMESPACE_SEPARATOR + ":" + + JMXNamespace.TYPE_ASSIGNMENT))); + assertEquals("context namespace query includes namespace MBean", + true, nsNames.containsAll(expectedNsNames)); + + + + Set insts = ccmbs.queryMBeans( + MBeanServerDelegate.DELEGATE_NAME, null); + assertEquals("size of set from MBeanServerDelegate query", 1, insts.size()); + assertEquals("ObjectName from MBeanServerDelegate query", + MBeanServerDelegate.DELEGATE_NAME, + insts.iterator().next().getObjectName()); + + ObjectName createdName = new ObjectName("a:type=Created"); + ObjectInstance createdOI = + ccmbs.createMBean(ShowContext.class.getName(), createdName); + assertEquals("class name from createMBean", + ShowContext.class.getName(), createdOI.getClassName()); + assertEquals("ObjectName from createMBean", + createdName, createdOI.getObjectName()); + assertEquals("context within createMBean", + disney, ccmbs.getAttribute(createdName, "CreationContext")); + + NotificationListener nothingListener = new NotificationListener() { + public void handleNotification(Notification n, Object h) {} + }; + ccmbs.addNotificationListener(createdName, nothingListener, null, null); + ccmbs.removeNotificationListener(createdName, nothingListener, null, null); + ccmbs.addNotificationListener(createdName, nothingListener, null, null); + ccmbs.removeNotificationListener(createdName, nothingListener); + Set expectedOps = new HashSet(Arrays.asList( + "preRegister", "postRegister", "addNotificationListener", + "removeNL1", "removeNL3", "getNotificationInfo")); + assertEquals("operations called on MBean", + expectedOps, ccmbs.getAttribute(createdName, "CalledOps")); + + assertEquals("ClassLoader for MBean", + ShowContext.class.getClassLoader(), + ccmbs.getClassLoaderFor(createdName)); + + assertEquals("isRegistered", true, ccmbs.isRegistered(createdName)); + assertEquals("isInstanceOf", true, ccmbs.isInstanceOf(createdName, + ShowContext.class.getName())); + assertEquals("isInstanceOf", false, ccmbs.isInstanceOf(createdName, + DynamicMBean.class.getName())); + ccmbs.unregisterMBean(createdName); + assertEquals("isRegistered after unregister", + false, ccmbs.isRegistered(createdName)); + + MLet mlet = new MLet(); + ObjectName defaultMLetName = new ObjectName("DefaultDomain:type=MLet"); + + ccmbs.registerMBean(mlet, defaultMLetName); + + assertEquals("getClassLoader", mlet, ccmbs.getClassLoader(defaultMLetName)); + + assertEquals("number of MBean operations", 0, mbeanLogIH.log.size()); + + // Test that contexts still work when we can't combine two encoded contexts. + // Here, we wrap cmbs (mickey=mouse) so that ccmbs2 (donald=duck) cannot + // see that it already contains a context and therefore cannot combine + // into mickey=mouse;donald=duck. We don't actually use the snoop + // capabilities of the returned object -- we just want an opaque + // MBeanServer wrapper + MBeanServer cmbs2 = newSnoop(MBeanServer.class, new LogIH(cmbs)); + MBeanServer ccmbs2 = ClientContext.withContext(cmbs2, "donald", "duck"); + assertEquals("context when combination is impossible", + disney, ccmbs2.getAttribute(name, "Context")); + + // Test failure cases of ClientContext.encode + final List> badEncodeArgs = + Arrays.asList( + null, + Collections.singletonMap(null, "foo"), + Collections.singletonMap("foo", null)); + for (Map bad : badEncodeArgs) { + try { + String oops = ClientContext.encode(bad); + failed("ClientContext.encode(" + bad + ") should have failed: " + + oops); + } catch (Exception e) { + assertEquals("Exception for ClientContext.encode(" + bad + ")", + IllegalArgumentException.class, e.getClass()); + } + } + + // ADD NEW TESTS HERE ^^^ + + if (failure != null) + throw new Exception(failure); + } + + private static void assertEquals(String what, Object x, Object y) { + if (!equal(x, y)) + failed(what + ": expected " + string(x) + "; got " + string(y)); + } + + private static boolean equal(Object x, Object y) { + if (x == y) + return true; + if (x == null || y == null) + return false; + if (x.getClass().isArray()) + return Arrays.deepEquals(new Object[] {x}, new Object[] {y}); + return x.equals(y); + } + + private static String string(Object x) { + String s = Arrays.deepToString(new Object[] {x}); + return s.substring(1, s.length() - 1); + } + + private static void assertCalled( + LogIH logIH, String op, Map expectedContext) { + assertCalled(logIH, op, expectedContext, (Object[]) null); + } + + private static void assertCalled( + LogIH logIH, String op, Map expectedContext, + Object... params) { + LogRecord lr = logIH.log.remove(); + assertEquals("called operation", op, lr.op); + if (params != null) + assertEquals("operation parameters", params, lr.params); + assertEquals("operation context", expectedContext, lr.context); + } + + private static void failed(String why) { + failure = why; + new Throwable("FAILED: " + why).printStackTrace(System.out); + } +} diff --git a/test/javax/management/context/LocaleAwareBroadcasterTest.java b/test/javax/management/context/LocaleAwareBroadcasterTest.java new file mode 100644 index 0000000000000000000000000000000000000000..7963f9f33b63acf88af3d8c643e6b3ad7547b0c0 --- /dev/null +++ b/test/javax/management/context/LocaleAwareBroadcasterTest.java @@ -0,0 +1,328 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 5072267 + * @summary Test that an MBean can handle localized Notification messages. + * @author Eamonn McManus + */ + +import java.util.Collections; +import java.util.ListResourceBundle; +import java.util.Locale; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.ResourceBundle; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.Callable; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.TimeUnit; +import javax.management.ClientContext; +import javax.management.JMX; +import javax.management.ListenerNotFoundException; +import javax.management.MBeanNotificationInfo; +import javax.management.MBeanServer; +import javax.management.MBeanServerConnection; +import javax.management.MBeanServerFactory; +import javax.management.Notification; +import javax.management.NotificationBroadcasterSupport; +import javax.management.NotificationEmitter; +import javax.management.NotificationFilter; +import javax.management.NotificationListener; +import javax.management.ObjectName; +import javax.management.SendNotification; +import javax.management.remote.JMXConnector; +import javax.management.remote.JMXConnectorFactory; +import javax.management.remote.JMXConnectorServer; +import javax.management.remote.JMXConnectorServerFactory; +import javax.management.remote.JMXServiceURL; + +public class LocaleAwareBroadcasterTest { + static final ObjectName mbeanName = ObjectName.valueOf("d:type=LocaleAware"); + + static final String + messageKey = "broken.window", + defaultMessage = "broken window", + frenchMessage = "fen\u00eatre bris\u00e9e", + irishMessage = "fuinneog briste"; + + public static class Bundle extends ListResourceBundle { + @Override + protected Object[][] getContents() { + return new Object[][] { + {messageKey, defaultMessage}, + }; + } + } + + public static class Bundle_fr extends ListResourceBundle { + @Override + protected Object[][] getContents() { + return new Object[][] { + {messageKey, frenchMessage}, + }; + } + } + + public static class Bundle_ga extends ListResourceBundle { + @Override + protected Object[][] getContents() { + return new Object[][] { + {messageKey, irishMessage}, + }; + } + } + + static volatile String failure; + + public static interface LocaleAwareMBean { + public void sendNotification(Notification n); + } + + public static class LocaleAware + implements LocaleAwareMBean, NotificationEmitter, SendNotification { + + private final ConcurrentMap + localeToEmitter = newConcurrentMap(); + + public void sendNotification(Notification n) { + for (Map.Entry entry : + localeToEmitter.entrySet()) { + Notification localizedNotif = + localizeNotification(n, entry.getKey()); + entry.getValue().sendNotification(localizedNotif); + } + } + + public void addNotificationListener( + NotificationListener listener, + NotificationFilter filter, + Object handback) + throws IllegalArgumentException { + Locale locale = ClientContext.getLocale(); + NotificationBroadcasterSupport broadcaster; + broadcaster = localeToEmitter.get(locale); + if (broadcaster == null) { + broadcaster = new NotificationBroadcasterSupport(); + NotificationBroadcasterSupport old = + localeToEmitter.putIfAbsent(locale, broadcaster); + if (old != null) + broadcaster = old; + } + broadcaster.addNotificationListener(listener, filter, handback); + } + + public void removeNotificationListener(NotificationListener listener) + throws ListenerNotFoundException { + Locale locale = ClientContext.getLocale(); + NotificationBroadcasterSupport broadcaster = + localeToEmitter.get(locale); + if (broadcaster == null) + throw new ListenerNotFoundException(); + broadcaster.removeNotificationListener(listener); + } + + public void removeNotificationListener( + NotificationListener listener, + NotificationFilter filter, + Object handback) + throws ListenerNotFoundException { + Locale locale = ClientContext.getLocale(); + NotificationBroadcasterSupport broadcaster = + localeToEmitter.get(locale); + if (broadcaster == null) + throw new ListenerNotFoundException(); + broadcaster.removeNotificationListener(listener, filter, handback); + } + + public MBeanNotificationInfo[] getNotificationInfo() { + return new MBeanNotificationInfo[0]; + } + } + + // Localize notif using the convention that the message looks like + // [resourcebundlename:resourcekey]defaultmessage + // for example [foo.bar.Resources:unknown.problem] + static Notification localizeNotification(Notification n, Locale locale) { + String msg = n.getMessage(); + if (!msg.startsWith("[")) + return n; + int close = msg.indexOf(']'); + if (close < 0) + throw new IllegalArgumentException("Bad notification message: " + msg); + int colon = msg.indexOf(':'); + if (colon < 0 || colon > close) + throw new IllegalArgumentException("Bad notification message: " + msg); + String bundleName = msg.substring(1, colon); + String key = msg.substring(colon + 1, close); + ClassLoader loader = LocaleAwareBroadcasterTest.class.getClassLoader(); + ResourceBundle bundle = + ResourceBundle.getBundle(bundleName, locale, loader); + try { + msg = bundle.getString(key); + } catch (MissingResourceException e) { + msg = msg.substring(close + 1); + } + n = (Notification) n.clone(); + n.setMessage(msg); + return n; + } + + public static void main(String[] args) throws Exception { + Locale.setDefault(new Locale("en")); + testLocal(); + testRemote(); + if (failure == null) + System.out.println("TEST PASSED"); + else + throw new Exception("TEST FAILED: " + failure); + } + + static interface AddListenerInLocale { + public void addListenerInLocale( + MBeanServerConnection mbsc, + NotificationListener listener, + Locale locale) throws Exception; + } + + private static void testLocal() throws Exception { + System.out.println("Test local MBeanServer using doWithContext"); + MBeanServer mbs = makeMBS(); + AddListenerInLocale addListener = new AddListenerInLocale() { + public void addListenerInLocale( + final MBeanServerConnection mbsc, + final NotificationListener listener, + Locale locale) throws Exception { + Map localeContext = Collections.singletonMap( + ClientContext.LOCALE_KEY, locale.toString()); + ClientContext.doWithContext( + localeContext, new Callable() { + public Void call() throws Exception { + mbsc.addNotificationListener( + mbeanName, listener, null, null); + return null; + } + }); + } + }; + test(mbs, addListener); + } + + private static void testRemote() throws Exception { + System.out.println("Test remote MBeanServer using withLocale"); + MBeanServer mbs = makeMBS(); + JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://"); + JMXConnectorServer cs = + JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs); + cs.start(); + JMXServiceURL addr = cs.getAddress(); + JMXConnector cc = JMXConnectorFactory.connect(addr); + MBeanServerConnection mbsc = cc.getMBeanServerConnection(); + AddListenerInLocale addListenerInLocale = new AddListenerInLocale() { + public void addListenerInLocale( + MBeanServerConnection mbsc, + NotificationListener listener, + Locale locale) throws Exception { + mbsc = ClientContext.withLocale(mbsc, locale); + mbsc.addNotificationListener(mbeanName, listener, null, null); + } + }; + try { + test(mbsc, addListenerInLocale); + } finally { + try { + cc.close(); + } catch (Exception e) {} + cs.stop(); + } + } + + static class QueueListener implements NotificationListener { + final BlockingQueue queue = + new ArrayBlockingQueue(10); + + public void handleNotification(Notification notification, + Object handback) { + queue.add(notification); + } + } + + private static void test( + MBeanServerConnection mbsc, AddListenerInLocale addListener) + throws Exception { + QueueListener defaultListener = new QueueListener(); + QueueListener frenchListener = new QueueListener(); + QueueListener irishListener = new QueueListener(); + mbsc.addNotificationListener(mbeanName, defaultListener, null, null); + addListener.addListenerInLocale(mbsc, frenchListener, new Locale("fr")); + addListener.addListenerInLocale(mbsc, irishListener, new Locale("ga")); + + LocaleAwareMBean proxy = + JMX.newMBeanProxy(mbsc, mbeanName, LocaleAwareMBean.class); + String notifMsg = "[" + Bundle.class.getName() + ":" + messageKey + "]" + + "broken window (default message that should never be seen)"; + Notification notif = new Notification( + "notif.type", mbeanName, 0L, notifMsg); + proxy.sendNotification(notif); + + final Object[][] expected = { + {defaultListener, defaultMessage}, + {frenchListener, frenchMessage}, + {irishListener, irishMessage}, + }; + for (Object[] exp : expected) { + QueueListener ql = (QueueListener) exp[0]; + String msg = (String) exp[1]; + System.out.println("Checking: " + msg); + Notification n = ql.queue.poll(1, TimeUnit.SECONDS); + if (n == null) + fail("Did not receive expected notif: " + msg); + if (!n.getMessage().equals(msg)) { + fail("Received notif with wrong message: got " + + n.getMessage() + ", expected " + msg); + } + n = ql.queue.poll(2, TimeUnit.MILLISECONDS); + if (n != null) + fail("Received unexpected extra notif: " + n); + } + } + + private static MBeanServer makeMBS() throws Exception { + MBeanServer mbs = MBeanServerFactory.newMBeanServer(); + LocaleAware aware = new LocaleAware(); + mbs.registerMBean(aware, mbeanName); + return mbs; + } + + static ConcurrentMap newConcurrentMap() { + return new ConcurrentHashMap(); + } + + static void fail(String why) { + System.out.println("FAIL: " + why); + failure = why; + } +} diff --git a/test/javax/management/context/LocaleTest.java b/test/javax/management/context/LocaleTest.java new file mode 100644 index 0000000000000000000000000000000000000000..023c0c7df653a6f08b4c80529c17aa3412e91761 --- /dev/null +++ b/test/javax/management/context/LocaleTest.java @@ -0,0 +1,140 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test LocaleTest.java + * @bug 5072267 + * @summary Test client locales. + * @author Eamonn McManus + */ + +import java.lang.management.ManagementFactory; +import java.util.Collections; +import java.util.ListResourceBundle; +import java.util.Locale; +import java.util.Map; +import java.util.ResourceBundle; +import java.util.concurrent.Callable; +import javax.management.ClientContext; +import java.util.Arrays; +import javax.management.MBeanServer; +import javax.management.ObjectName; + +public class LocaleTest { + private static String failure; + + public static void main(String[] args) throws Exception { + + // Test the translation String -> Locale + + Locale[] locales = Locale.getAvailableLocales(); + System.out.println("Testing String->Locale for " + locales.length + + " locales"); + for (Locale loc : locales) { + Map ctx = Collections.singletonMap( + ClientContext.LOCALE_KEY, loc.toString()); + Locale loc2 = ClientContext.doWithContext( + ctx, new Callable() { + public Locale call() { + return ClientContext.getLocale(); + } + }); + assertEquals(loc, loc2); + } + + // Test that a locale-sensitive attribute works + + MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); + mbs = ClientContext.newContextForwarder(mbs, null); + ObjectName name = new ObjectName("a:type=LocaleSensitive"); + mbs.registerMBean(new LocaleSensitive(), name); + Locale.setDefault(Locale.US); + + assertEquals("spectacular failure", + mbs.getAttribute(name, "LastProblemDescription")); + + MBeanServer frmbs = ClientContext.withContext( + mbs, ClientContext.LOCALE_KEY, Locale.FRANCE.toString()); + assertEquals("\u00e9chec r\u00e9tentissant", + frmbs.getAttribute(name, "LastProblemDescription")); + + if (failure == null) + System.out.println("TEST PASSED"); + else + throw new Exception("TEST FAILED: " + failure); + } + + public static interface LocaleSensitiveMBean { + public String getLastProblemDescription(); + } + + public static class LocaleSensitive implements LocaleSensitiveMBean { + public String getLastProblemDescription() { + Locale loc = ClientContext.getLocale(); + ResourceBundle rb = ResourceBundle.getBundle( + MyResources.class.getName(), loc); + return rb.getString("spectacular"); + } + } + + public static class MyResources extends ListResourceBundle { + protected Object[][] getContents() { + return new Object[][] { + {"spectacular", "spectacular failure"}, + }; + } + } + + public static class MyResources_fr extends ListResourceBundle { + protected Object[][] getContents() { + return new Object[][] { + {"spectacular", "\u00e9chec r\u00e9tentissant"}, + }; + } + } + + private static void assertEquals(Object x, Object y) { + if (!equal(x, y)) + failed("expected " + string(x) + "; got " + string(y)); + } + + private static boolean equal(Object x, Object y) { + if (x == y) + return true; + if (x == null || y == null) + return false; + if (x.getClass().isArray()) + return Arrays.deepEquals(new Object[] {x}, new Object[] {y}); + return x.equals(y); + } + + private static String string(Object x) { + String s = Arrays.deepToString(new Object[] {x}); + return s.substring(1, s.length() - 1); + } + + private static void failed(String why) { + failure = why; + new Throwable("FAILED: " + why).printStackTrace(System.out); + } +} diff --git a/test/javax/management/context/LocalizableTest.java b/test/javax/management/context/LocalizableTest.java new file mode 100644 index 0000000000000000000000000000000000000000..43f736e49ce5d6273eddd94304c77265636c7aab --- /dev/null +++ b/test/javax/management/context/LocalizableTest.java @@ -0,0 +1,192 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test LocalizableTest + * @bug 5072267 6635499 + * @summary Test localizable MBeanInfo using LocalizableMBeanFactory. + * @author Eamonn McManus + */ + +import java.lang.management.ManagementFactory; +import java.util.Locale; +import java.util.ResourceBundle; +import javax.management.ClientContext; +import javax.management.Description; +import javax.management.JMX; +import javax.management.MBeanAttributeInfo; +import javax.management.MBeanConstructorInfo; +import javax.management.MBeanInfo; +import javax.management.MBeanOperationInfo; +import javax.management.MBeanParameterInfo; +import javax.management.MBeanServer; +import javax.management.ObjectName; + +import localizable.MBeanDescriptions_fr; +import localizable.Whatsit; + +import static localizable.WhatsitMBean.*; + +public class LocalizableTest { + // If you change the order of the array elements or their number then + // you must also change these constants. + private static final int + MBEAN = 0, ATTR = 1, OPER = 2, PARAM = 3, CONSTR = 4, + CONSTR_PARAM = 5; + private static final String[] englishDescriptions = { + englishMBeanDescription, englishAttrDescription, englishOperDescription, + englishParamDescription, englishConstrDescription, + englishConstrParamDescription, + }; + private static final String[] defaultDescriptions = englishDescriptions.clone(); + static { + defaultDescriptions[MBEAN] = defaultMBeanDescription; + } + private static final String[] frenchDescriptions = { + frenchMBeanDescription, frenchAttrDescription, frenchOperDescription, + frenchParamDescription, frenchConstrDescription, + frenchConstrParamDescription, + }; + + private static String failure; + + @Description(unlocalizedMBeanDescription) + public static interface UnlocalizedMBean {} + public static class Unlocalized implements UnlocalizedMBean {} + + public static void main(String[] args) throws Exception { + ResourceBundle frenchBundle = new MBeanDescriptions_fr(); + // The purpose of the previous line is to force that class to be compiled + // when the test is run so it will be available for reflection. + // Yes, we could do this with a @build tag. + + MBeanServer plainMBS = ManagementFactory.getPlatformMBeanServer(); + MBeanServer unlocalizedMBS = + ClientContext.newContextForwarder(plainMBS, null); + MBeanServer localizedMBS = + ClientContext.newLocalizeMBeanInfoForwarder(plainMBS); + localizedMBS = ClientContext.newContextForwarder(localizedMBS, null); + ObjectName name = new ObjectName("a:b=c"); + + Whatsit whatsit = new Whatsit(); + Object[][] locales = { + {null, englishDescriptions}, + {"en", englishDescriptions}, + {"fr", frenchDescriptions}, + }; + + for (Object[] localePair : locales) { + String locale = (String) localePair[0]; + String[] localizedDescriptions = (String[]) localePair[1]; + System.out.println("===Testing locale " + locale + "==="); + for (boolean localized : new boolean[] {false, true}) { + String[] descriptions = localized ? + localizedDescriptions : defaultDescriptions; + MBeanServer mbs = localized ? localizedMBS : unlocalizedMBS; + System.out.println("Testing MBean " + whatsit + " with " + + "localized=" + localized); + mbs.registerMBean(whatsit, name); + System.out.println(mbs.getMBeanInfo(name)); + try { + test(mbs, name, locale, descriptions); + } catch (Exception e) { + fail("Caught exception: " + e); + } finally { + mbs.unregisterMBean(name); + } + } + } + + System.out.println("===Testing unlocalizable MBean==="); + Object mbean = new Unlocalized(); + localizedMBS.registerMBean(mbean, name); + try { + MBeanInfo mbi = localizedMBS.getMBeanInfo(name); + assertEquals("MBean description", unlocalizedMBeanDescription, + mbi.getDescription()); + } finally { + localizedMBS.unregisterMBean(name); + } + + System.out.println("===Testing MBeanInfo.localizeDescriptions==="); + plainMBS.registerMBean(whatsit, name); + MBeanInfo mbi = plainMBS.getMBeanInfo(name); + Locale french = new Locale("fr"); + mbi = mbi.localizeDescriptions(french, whatsit.getClass().getClassLoader()); + checkDescriptions(mbi, frenchDescriptions); + + if (failure == null) + System.out.println("TEST PASSED"); + else + throw new Exception("TEST FAILED: Last failure: " + failure); + } + + private static void test(MBeanServer mbs, ObjectName name, String locale, + String[] expectedDescriptions) + throws Exception { + if (locale != null) + mbs = ClientContext.withLocale(mbs, new Locale(locale)); + MBeanInfo mbi = mbs.getMBeanInfo(name); + checkDescriptions(mbi, expectedDescriptions); + } + + private static void checkDescriptions(MBeanInfo mbi, + String[] expectedDescriptions) { + assertEquals("MBean description", + expectedDescriptions[MBEAN], mbi.getDescription()); + MBeanAttributeInfo mbai = mbi.getAttributes()[0]; + assertEquals("Attribute description", + expectedDescriptions[ATTR], mbai.getDescription()); + MBeanOperationInfo mboi = mbi.getOperations()[0]; + assertEquals("Operation description", + expectedDescriptions[OPER], mboi.getDescription()); + MBeanParameterInfo mbpi = mboi.getSignature()[0]; + assertEquals("Parameter description", + expectedDescriptions[PARAM], mbpi.getDescription()); + MBeanConstructorInfo[] mbcis = mbi.getConstructors(); + assertEquals("Number of constructors", 2, mbcis.length); + for (MBeanConstructorInfo mbci : mbcis) { + MBeanParameterInfo[] mbcpis = mbci.getSignature(); + String constrName = mbcpis.length + "-arg constructor"; + assertEquals(constrName + " description", + expectedDescriptions[CONSTR], mbci.getDescription()); + if (mbcpis.length > 0) { + assertEquals(constrName + " parameter description", + expectedDescriptions[CONSTR_PARAM], + mbcpis[0].getDescription()); + } + } + } + + private static void assertEquals(String what, Object expect, Object actual) { + if (expect.equals(actual)) + System.out.println("...OK: " + what + " = " + expect); + else + fail(what + " should be " + expect + ", was " + actual); + } + + private static void fail(String why) { + System.out.println("FAIL: " + why); + failure = why; + } +} diff --git a/test/javax/management/context/RemoteContextTest.java b/test/javax/management/context/RemoteContextTest.java new file mode 100644 index 0000000000000000000000000000000000000000..56c7eab6c8bb827c92d33eda5cc0c75c1b335e08 --- /dev/null +++ b/test/javax/management/context/RemoteContextTest.java @@ -0,0 +1,496 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test RemoteContextTest.java + * @bug 5072267 + * @summary Test client contexts with namespaces. + * @author Eamonn McManus, Daniel Fuchs + */ + +import java.lang.management.ManagementFactory; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; +import java.net.URLEncoder; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.Map; +import java.util.Queue; +import java.util.Set; +import java.util.concurrent.Callable; +import javax.management.Attribute; +import javax.management.AttributeList; +import javax.management.ClientContext; +import javax.management.DynamicMBean; +import javax.management.JMX; +import javax.management.ListenerNotFoundException; +import javax.management.MBeanNotificationInfo; +import javax.management.MBeanRegistration; +import javax.management.MBeanServer; +import javax.management.MBeanServerConnection; +import javax.management.MBeanServerDelegate; +import javax.management.Notification; +import javax.management.NotificationBroadcasterSupport; +import javax.management.NotificationFilter; +import javax.management.NotificationListener; +import javax.management.ObjectInstance; +import javax.management.ObjectName; +import javax.management.StandardMBean; +import javax.management.loading.MLet; +import javax.management.namespace.JMXNamespaces; +import javax.management.namespace.JMXRemoteNamespace; +import javax.management.namespace.JMXNamespace; + +import static java.util.Collections.singletonMap; +import javax.management.MBeanServerFactory; +import javax.management.remote.JMXConnectorServer; +import javax.management.remote.JMXConnectorServerFactory; +import javax.management.remote.JMXServiceURL; + +public class RemoteContextTest { + private static String failure; + + public static interface ShowContextMBean { + public Map getContext(); + public Map getCreationContext(); + public Set getCalledOps(); + public String getThing(); + public void setThing(String x); + public int add(int x, int y); + } + + public static class ShowContext + extends NotificationBroadcasterSupport + implements ShowContextMBean, MBeanRegistration { + private final Map creationContext; + private final Set calledOps = new HashSet(); + + public ShowContext() { + creationContext = getContext(); + } + + public Map getContext() { + return ClientContext.getContext(); + } + + public Map getCreationContext() { + return creationContext; + } + + public Set getCalledOps() { + return calledOps; + } + + public String getThing() { + return "x"; + } + + public void setThing(String x) { + } + + public int add(int x, int y) { + return x + y; + } + + public ObjectName preRegister(MBeanServer server, ObjectName name) { + assertEquals(creationContext, getContext()); + calledOps.add("preRegister"); + return name; + } + + public void postRegister(Boolean registrationDone) { + assertEquals(creationContext, getContext()); + calledOps.add("postRegister"); + } + + // The condition checked here is not guaranteed universally true, + // but is true every time we unregister an instance of this MBean + // in this test. + public void preDeregister() throws Exception { + assertEquals(creationContext, getContext()); + } + + public void postDeregister() { + assertEquals(creationContext, getContext()); + } + + // Same remark as for preDeregister + @Override + public MBeanNotificationInfo[] getNotificationInfo() { + calledOps.add("getNotificationInfo"); + return super.getNotificationInfo(); + } + + @Override + public void addNotificationListener( + NotificationListener listener, NotificationFilter filter, Object handback) { + calledOps.add("addNotificationListener"); + super.addNotificationListener(listener, filter, handback); + } + + @Override + public void removeNotificationListener( + NotificationListener listener) + throws ListenerNotFoundException { + calledOps.add("removeNL1"); + super.removeNotificationListener(listener); + } + + @Override + public void removeNotificationListener( + NotificationListener listener, NotificationFilter filter, Object handback) + throws ListenerNotFoundException { + calledOps.add("removeNL3"); + super.removeNotificationListener(listener, filter, handback); + } + } + + private static class LogRecord { + final String op; + final Object[] params; + final Map context; + LogRecord(String op, Object[] params, Map context) { + this.op = op; + this.params = params; + this.context = context; + } + + @Override + public String toString() { + return op + Arrays.deepToString(params) + " " + context; + } + } + + private static class LogIH implements InvocationHandler { + private final Object wrapped; + Queue log = new LinkedList(); + + LogIH(Object wrapped) { + this.wrapped = wrapped; + } + + public Object invoke(Object proxy, Method method, Object[] args) + throws Throwable { + if (method.getDeclaringClass() != Object.class) { + LogRecord lr = + new LogRecord( + method.getName(), args, ClientContext.getContext()); + log.add(lr); + } + try { + return method.invoke(wrapped, args); + } catch (InvocationTargetException e) { + throw e.getCause(); + } + } + } + + private static T newSnoop(Class wrappedClass, LogIH logIH) { + return wrappedClass.cast(Proxy.newProxyInstance( + wrappedClass.getClassLoader(), + new Class[] {wrappedClass}, + logIH)); + } + + public static void main(String[] args) throws Exception { + final String subnamespace = "sub"; + final ObjectName locname = new ObjectName("a:b=c"); + final ObjectName name = JMXNamespaces.insertPath(subnamespace,locname); + final MBeanServer mbs = ClientContext.newContextForwarder( + ManagementFactory.getPlatformMBeanServer(), null); + final MBeanServer sub = ClientContext.newContextForwarder( + MBeanServerFactory.newMBeanServer(), null); + final JMXServiceURL anonym = new JMXServiceURL("rmi",null,0); + final Map env = Collections.emptyMap(); + final Map emptyContext = Collections.emptyMap(); + final JMXConnectorServer srv = + JMXConnectorServerFactory.newJMXConnectorServer(anonym,env,sub); + sub.registerMBean(new ShowContext(), locname); + + srv.start(); + + try { + JMXRemoteNamespace subns = JMXRemoteNamespace. + newJMXRemoteNamespace(srv.getAddress(),null); + mbs.registerMBean(subns, JMXNamespaces.getNamespaceObjectName("sub")); + mbs.invoke(JMXNamespaces.getNamespaceObjectName("sub"), + "connect", null,null); + final ShowContextMBean show = + JMX.newMBeanProxy(mbs, name, ShowContextMBean.class); + + assertEquals(emptyContext, show.getContext()); + ClientContext.doWithContext(singletonMap("foo", "bar"), new Callable() { + public Void call() { + assertEquals(singletonMap("foo", "bar"), show.getContext()); + return null; + } + }); + assertEquals(emptyContext, show.getContext()); + String got = ClientContext.doWithContext( + singletonMap("foo", "baz"), new Callable() { + public String call() { + return ClientContext.getContext().get("foo"); + } + }); + assertEquals("baz", got); + + Map combined = ClientContext.doWithContext( + singletonMap("foo", "baz"), new Callable>() { + public Map call() throws Exception { + return ClientContext.doWithContext( + singletonMap("fred", "jim"), + new Callable>() { + public Map call() { + return ClientContext.getContext(); + } + }); + } + }); + assertEquals(singletonMap("fred", "jim"), combined); + + final String ugh = "a!?//*=:\"% "; + ClientContext.doWithContext(singletonMap(ugh, ugh), new Callable() { + public Void call() { + assertEquals(Collections.singletonMap(ugh, ugh), + ClientContext.getContext()); + return null; + } + }); + + // Basic withContext tests + + LogIH mbsIH = new LogIH(mbs); + MBeanServer snoopMBS = newSnoop(MBeanServer.class, mbsIH); + MBeanServer ughMBS = ClientContext.withContext(snoopMBS, ugh, ugh); + // ughMBS is never referenced but we check that the withContext call + // included a call to snoopMBS.isRegistered. + String encodedUgh = URLEncoder.encode(ugh, "UTF-8").replace("*", "%2A"); + ObjectName expectedName = new ObjectName( + ClientContext.NAMESPACE + ObjectName.NAMESPACE_SEPARATOR + + encodedUgh + "=" + encodedUgh + + ObjectName.NAMESPACE_SEPARATOR + ":" + + JMXNamespace.TYPE_ASSIGNMENT); + assertCalled(mbsIH, "isRegistered", new Object[] {expectedName}, + emptyContext); + + // Test withDynamicContext + + MBeanServerConnection dynamicSnoop = + ClientContext.withDynamicContext(snoopMBS); + assertCalled(mbsIH, "isRegistered", + new Object[] { + JMXNamespaces.getNamespaceObjectName(ClientContext.NAMESPACE) + }, + emptyContext); + final ShowContextMBean dynamicShow = + JMX.newMBeanProxy(dynamicSnoop, name, ShowContextMBean.class); + assertEquals(Collections.emptyMap(), dynamicShow.getContext()); + assertCalled(mbsIH, "getAttribute", new Object[] {name, "Context"}, + emptyContext); + + Map expectedDynamic = + Collections.singletonMap("gladstone", "gander"); + Map dynamic = ClientContext.doWithContext( + expectedDynamic, + new Callable>() { + public Map call() throws Exception { + return dynamicShow.getContext(); + } + }); + assertEquals(expectedDynamic, dynamic); + ObjectName expectedDynamicName = new ObjectName( + ClientContext.encode(expectedDynamic) + + ObjectName.NAMESPACE_SEPARATOR + name); + assertCalled(mbsIH, "getAttribute", + new Object[] {expectedDynamicName, "Context"}, dynamic); + + MBeanServer cmbs = ClientContext.withContext( + mbs, "mickey", "mouse"); + ShowContextMBean cshow = + JMX.newMBeanProxy(cmbs, name, ShowContextMBean.class); + assertEquals(Collections.singletonMap("mickey", "mouse"), cshow.getContext()); + + MBeanServer ccmbs = ClientContext.withContext( + cmbs, "donald", "duck"); + ShowContextMBean ccshow = + JMX.newMBeanProxy(ccmbs, name, ShowContextMBean.class); + Map disney = new HashMap(); + disney.put("mickey", "mouse"); + disney.put("donald", "duck"); + assertEquals(disney, ccshow.getContext()); + + // Test that all MBS ops produce reasonable results + + ObjectName logger = new ObjectName("a:type=Logger"); + DynamicMBean showMBean = + new StandardMBean(new ShowContext(), ShowContextMBean.class); + LogIH mbeanLogIH = new LogIH(showMBean); + DynamicMBean logMBean = newSnoop(DynamicMBean.class, mbeanLogIH); + ObjectInstance loggerOI = ccmbs.registerMBean(logMBean, logger); + assertEquals(logger, loggerOI.getObjectName()); + + // We get a getMBeanInfo call to determine the className in the + // ObjectInstance to return from registerMBean. + assertCalled(mbeanLogIH, "getMBeanInfo", disney); + + ccmbs.getAttribute(logger, "Thing"); + assertCalled(mbeanLogIH, "getAttribute", disney); + + ccmbs.getAttributes(logger, new String[] {"Thing", "Context"}); + assertCalled(mbeanLogIH, "getAttributes", disney); + + ccmbs.setAttribute(logger, new Attribute("Thing", "bar")); + assertCalled(mbeanLogIH, "setAttribute", disney); + + ccmbs.setAttributes(logger, new AttributeList( + Arrays.asList(new Attribute("Thing", "baz")))); + assertCalled(mbeanLogIH, "setAttributes", disney); + + ccmbs.getMBeanInfo(logger); + assertCalled(mbeanLogIH, "getMBeanInfo", disney); + + Set names = ccmbs.queryNames(null, null); + Set expectedNames = new HashSet( + Collections.singleton(MBeanServerDelegate.DELEGATE_NAME)); + expectedNames.removeAll(names); + assertEquals(0, expectedNames.size()); + + Set nsNames = + ccmbs.queryNames(new ObjectName("**?*?//:*"), null); + Set expectedNsNames = new HashSet( + Arrays.asList( + new ObjectName(ClientContext.NAMESPACE + + ObjectName.NAMESPACE_SEPARATOR + ":" + + JMXNamespace.TYPE_ASSIGNMENT))); + expectedNsNames.removeAll(nsNames); + assertEquals(0, expectedNsNames.size()); + + Set insts = ccmbs.queryMBeans( + MBeanServerDelegate.DELEGATE_NAME, null); + assertEquals(1, insts.size()); + assertEquals(MBeanServerDelegate.DELEGATE_NAME, + insts.iterator().next().getObjectName()); + + ObjectName createdName = new ObjectName("a:type=Created"); + ObjectInstance createdOI = + ccmbs.createMBean(ShowContext.class.getName(), createdName); + assertEquals(ShowContext.class.getName(), createdOI.getClassName()); + assertEquals(createdName, createdOI.getObjectName()); + assertEquals(disney, ccmbs.getAttribute(createdName, "CreationContext")); + + NotificationListener nothingListener = new NotificationListener() { + public void handleNotification(Notification n, Object h) {} + }; + ccmbs.addNotificationListener(createdName, nothingListener, null, null); + ccmbs.removeNotificationListener(createdName, nothingListener, null, null); + ccmbs.addNotificationListener(createdName, nothingListener, null, null); + ccmbs.removeNotificationListener(createdName, nothingListener); + Set expectedOps = new HashSet(Arrays.asList( + "preRegister", "postRegister", "addNotificationListener", + "removeNL1", "removeNL3", "getNotificationInfo")); + assertEquals(expectedOps, ccmbs.getAttribute(createdName, "CalledOps")); + + assertEquals(ShowContext.class.getClassLoader(), + ccmbs.getClassLoaderFor(createdName)); + + assertEquals(true, ccmbs.isRegistered(createdName)); + assertEquals(true, ccmbs.isInstanceOf(createdName, + ShowContext.class.getName())); + assertEquals(false, ccmbs.isInstanceOf(createdName, + DynamicMBean.class.getName())); + ccmbs.unregisterMBean(createdName); + assertEquals(false, ccmbs.isRegistered(createdName)); + + MLet mlet = new MLet(); + ObjectName defaultMLetName = new ObjectName("DefaultDomain:type=MLet"); + + ccmbs.registerMBean(mlet, defaultMLetName); + + assertEquals(mlet, ccmbs.getClassLoader(defaultMLetName)); + + assertEquals(0, mbeanLogIH.log.size()); + + // Test that contexts still work when we can't combine two encoded contexts. + // Here, we wrap cmbs (mickey=mouse) so that ccmbs2 (donald=duck) cannot + // see that it already contains a context and therefore cannot combine + // into mickey=mouse;donald=duck. We don't actually use the snoop + // capabilities of the returned object -- we just want an opaque + // MBeanServer wrapper + MBeanServer cmbs2 = newSnoop(MBeanServer.class, new LogIH(cmbs)); + MBeanServer ccmbs2 = ClientContext.withContext(cmbs2, "donald", "duck"); + assertEquals(disney, ccmbs2.getAttribute(name, "Context")); + + // ADD NEW TESTS HERE ^^^ + + if (failure != null) + throw new Exception(failure); + } finally { + srv.stop(); + } + } + + private static void assertEquals(Object x, Object y) { + if (!equal(x, y)) + failed("expected " + string(x) + "; got " + string(y)); + } + + private static boolean equal(Object x, Object y) { + if (x == y) + return true; + if (x == null || y == null) + return false; + if (x.getClass().isArray()) + return Arrays.deepEquals(new Object[] {x}, new Object[] {y}); + return x.equals(y); + } + + private static String string(Object x) { + String s = Arrays.deepToString(new Object[] {x}); + return s.substring(1, s.length() - 1); + } + + private static void assertCalled( + LogIH logIH, String op, Map expectedContext) { + assertCalled(logIH, op, null, expectedContext); + } + + private static void assertCalled( + LogIH logIH, String op, Object[] params, + Map expectedContext) { + LogRecord lr = logIH.log.remove(); + assertEquals(op, lr.op); + if (params != null) + assertEquals(params, lr.params); + assertEquals(expectedContext, lr.context); + } + + private static void failed(String why) { + failure = why; + new Throwable("FAILED: " + why).printStackTrace(System.out); + } +} diff --git a/test/javax/management/context/localizable/MBeanDescriptions.properties b/test/javax/management/context/localizable/MBeanDescriptions.properties new file mode 100644 index 0000000000000000000000000000000000000000..4722c5b5acc12cabe5644f140df30a7788cb750c --- /dev/null +++ b/test/javax/management/context/localizable/MBeanDescriptions.properties @@ -0,0 +1,9 @@ +# This is the default description ResourceBundle for MBeans in this package. +# Resources here override the descriptions specified with @Description +# but only when localization is happening and when there is not a more +# specific resource for the description (for example from MBeanDescriptions_fr). + +WhatsitMBean.mbean = A whatsit +# This must be the same as WhatsitMBean.englishMBeanDescription for the +# purposes of this test. + diff --git a/test/javax/management/context/localizable/MBeanDescriptions_fr.java b/test/javax/management/context/localizable/MBeanDescriptions_fr.java new file mode 100644 index 0000000000000000000000000000000000000000..3e1ec2d9e15302aaa8f6c2c23b7f84d30faeef91 --- /dev/null +++ b/test/javax/management/context/localizable/MBeanDescriptions_fr.java @@ -0,0 +1,42 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package localizable; + +import java.util.ListResourceBundle; +import static localizable.WhatsitMBean.*; + +public class MBeanDescriptions_fr extends ListResourceBundle { + @Override + protected Object[][] getContents() { + String constrProp = "WhatsitMBean.constructor." + Whatsit.class.getName(); + return new Object[][] { + {"WhatsitMBean.mbean", frenchMBeanDescription}, + {"WhatsitMBean.attribute.Whatsit", frenchAttrDescription}, + {"WhatsitMBean.operation.frob", frenchOperDescription}, + {"WhatsitMBean.operation.frob.p1", frenchParamDescription}, + {constrProp, frenchConstrDescription}, + {constrProp + ".p1", frenchConstrParamDescription}, + }; + } +} diff --git a/test/javax/management/context/localizable/Whatsit.java b/test/javax/management/context/localizable/Whatsit.java new file mode 100644 index 0000000000000000000000000000000000000000..5c10d7bc6ab7731ea5bf9c030898d2f348687499 --- /dev/null +++ b/test/javax/management/context/localizable/Whatsit.java @@ -0,0 +1,59 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package localizable; + +import javax.management.Description; + +public class Whatsit implements WhatsitMBean { + /** + * Attribute : NewAttribute0 + */ + private String newAttribute0; + @Description(englishConstrDescription) + public Whatsit() {} + + @Description(englishConstrDescription) + public Whatsit(@Description(englishConstrParamDescription) int type) {} + + public String getWhatsit() { + return "whatsit"; + } + + public void frob(String whatsit) { + } + + /** + * Get Tiddly + */ + public String getNewAttribute0() { + return newAttribute0; + } + + /** + * Set Tiddly + */ + public void setNewAttribute0(String value) { + newAttribute0 = value; + } +} diff --git a/test/javax/management/context/localizable/WhatsitMBean.java b/test/javax/management/context/localizable/WhatsitMBean.java new file mode 100644 index 0000000000000000000000000000000000000000..8781f5273362783d7e4ee9ecbc0c4a13e83e12b5 --- /dev/null +++ b/test/javax/management/context/localizable/WhatsitMBean.java @@ -0,0 +1,53 @@ +/* + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package localizable; + +import javax.management.Description; + +@Description(WhatsitMBean.defaultMBeanDescription) +public interface WhatsitMBean { + public static final String + defaultMBeanDescription = "Default whatsit MBean description", + englishMBeanDescription = "A whatsit", + // Previous description appears in MBeanDescriptions.properties + // so it overrides the @Description when that file is used. + frenchMBeanDescription = "Un bidule", + englishAttrDescription = "The whatsit", + frenchAttrDescription = "Le bidule", + englishOperDescription = "Frob the whatsit", + frenchOperDescription = "Frober le bidule", + englishParamDescription = "The whatsit to frob", + frenchParamDescription = "Le bidule \u00e0 frober", + englishConstrDescription = "Make a whatsit", + frenchConstrDescription = "Fabriquer un bidule", + englishConstrParamDescription = "Type of whatsit to make", + frenchConstrParamDescription = "Type de bidule \u00e0 fabriquer", + unlocalizedMBeanDescription = "Unlocalized MBean"; + + @Description(englishAttrDescription) + public String getWhatsit(); + + @Description(englishOperDescription) + public void frob(@Description(englishParamDescription) String whatsit); +} diff --git a/test/javax/management/descriptor/DescriptorConstructorTest.java b/test/javax/management/descriptor/DescriptorConstructorTest.java new file mode 100644 index 0000000000000000000000000000000000000000..0906cead4a554e1e9695dfdb95dd1381a1b4e1e8 --- /dev/null +++ b/test/javax/management/descriptor/DescriptorConstructorTest.java @@ -0,0 +1,46 @@ +/* + * Copyright 2004-2005 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6501362 + * @summary DescriptorSupport(String) could recognize "name=value" as well as XML format + * @author Jean-Francois Denise + * @run clean DescriptorConstructorTest + * @run build DescriptorConstructorTest + * @run main DescriptorConstructorTest + */ + +import javax.management.modelmbean.DescriptorSupport; + +public class DescriptorConstructorTest { + public static void main(String[] args) throws Exception { + DescriptorSupport d1 = new DescriptorSupport("MyName1=MyValue1"); + if(!d1.getFieldValue("MyName1").equals("MyValue1")) + throw new Exception("Invalid parsing"); + DescriptorSupport d2 = new DescriptorSupport("" + + ""); + if(!d2.getFieldValue("MyName2").equals("MyValue2")) + throw new Exception("Invalid parsing"); + } +} diff --git a/test/javax/management/eventService/CustomForwarderTest.java b/test/javax/management/eventService/CustomForwarderTest.java index 22238b37505c2377f1ab5d420f1b88e43c2e39ea..4d7e3027e31a07c97a861217c16784ca5fe3c22e 100644 --- a/test/javax/management/eventService/CustomForwarderTest.java +++ b/test/javax/management/eventService/CustomForwarderTest.java @@ -23,7 +23,7 @@ /* * @test CustomForwarderTest - * @bug 5108776 + * @bug 5108776 6759619 * @summary Test that a custom EventForwarder can be added * @author Eamonn McManus */ @@ -45,6 +45,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; +import javax.management.MBeanNotificationInfo; import javax.management.MBeanServer; import javax.management.MBeanServerInvocationHandler; import javax.management.Notification; @@ -107,6 +108,14 @@ public class CustomForwarderTest { socket.close(); } + void simulateNonFatal() { + receiver.nonFatal(new Exception("NonFatal")); + } + + void simulateFailed() { + receiver.failed(new Error("Failed")); + } + private class Receiver implements Runnable { public void run() { byte[] buf = new byte[1024]; @@ -191,8 +200,7 @@ public class CustomForwarderTest { public static void main(String[] args) throws Exception { MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); - MBeanServerForwarder mbsf = EventClientDelegate.newForwarder(); - mbsf.setMBeanServer(mbs); + MBeanServerForwarder mbsf = EventClientDelegate.newForwarder(mbs, null); mbs = mbsf; // for 1.5 @@ -216,16 +224,26 @@ public class CustomForwarderTest { EventClientDelegateMBean.OBJECT_NAME, EventClientDelegateMBean.class, false); - EventRelay relay = new UdpEventRelay(delegate); + UdpEventRelay relay = new UdpEventRelay(delegate); EventClient client = new EventClient(delegate, relay, null, null, 0L); final Semaphore lostCountSema = new Semaphore(0); + final BlockingQueue nonFatalNotifs = + new ArrayBlockingQueue(1); + final BlockingQueue failedNotifs = + new ArrayBlockingQueue(1); NotificationListener lostListener = new NotificationListener() { public void handleNotification(Notification notification, Object handback) { if (notification.getType().equals(EventClient.NOTIFS_LOST)) { System.out.println("Got lost-notifs notif: count=" + notification.getUserData()); lostCountSema.release(((Long) notification.getUserData()).intValue()); + } else if (notification.getType().equals(EventClient.NONFATAL)) { + System.out.println("Got nonFatal notif"); + nonFatalNotifs.add(notification); + } else if (notification.getType().equals(EventClient.FAILED)) { + System.out.println("Got failed notif"); + failedNotifs.add(notification); } else System.out.println("Mysterious EventClient notif: " + notification); } @@ -300,6 +318,35 @@ public class CustomForwarderTest { Thread.sleep(10); assertEquals("Further lost-notifs", 0, lostCountSema.availablePermits()); + System.out.println("Testing error notifs"); + relay.simulateNonFatal(); + n = nonFatalNotifs.poll(10, TimeUnit.SECONDS); + assertEquals("Exception message for non-fatal exception", "NonFatal", + ((Throwable) n.getSource()).getMessage()); + relay.simulateFailed(); + n = failedNotifs.poll(10, TimeUnit.SECONDS); + assertEquals("Exception message for failed exception", "Failed", + ((Throwable) n.getSource()).getMessage()); + + // 6759619 + System.out.println("Test EventClient.getEventClientNotificationInfo"); + MBeanNotificationInfo[] mbnis = client.getEventClientNotificationInfo(); + final String[] expectedTypes = { + EventClient.NOTIFS_LOST, EventClient.NONFATAL, EventClient.FAILED + }; + check: + for (String type : expectedTypes) { + for (MBeanNotificationInfo mbni : mbnis) { + for (String t : mbni.getNotifTypes()) { + if (type.equals(t)) { + System.out.println("...found " + type); + continue check; + } + } + } + throw new Exception("TEST FAILED: Did not find notif type " + type); + } + client.close(); System.out.println("TEST PASSED"); diff --git a/test/javax/management/eventService/EventClientExecutorTest.java b/test/javax/management/eventService/EventClientExecutorTest.java index 19d6afdf8144e0d65c8249be6d1b84158e2c2a00..5201335e8b9f0e7a883d79529e9e1f5b96fc6b0d 100644 --- a/test/javax/management/eventService/EventClientExecutorTest.java +++ b/test/javax/management/eventService/EventClientExecutorTest.java @@ -65,8 +65,7 @@ public class EventClientExecutorTest { new NamedThreadFactory("LEASE")); MBeanServer mbs = MBeanServerFactory.newMBeanServer(); - MBeanServerForwarder mbsf = EventClientDelegate.newForwarder(); - mbsf.setMBeanServer(mbs); + MBeanServerForwarder mbsf = EventClientDelegate.newForwarder(mbs, null); mbs = mbsf; EventClientDelegateMBean ecd = EventClientDelegate.getProxy(mbs); diff --git a/test/javax/management/eventService/EventManagerTest.java b/test/javax/management/eventService/EventManagerTest.java index 2717c0e51035f8de4140278e4d45935665a531cf..66e4e36cf4a3ef0ce1c043f46024f8a8e75b33e8 100644 --- a/test/javax/management/eventService/EventManagerTest.java +++ b/test/javax/management/eventService/EventManagerTest.java @@ -98,7 +98,7 @@ public class EventManagerTest { succeed &= test(new EventClient(ecd, new RMIPushEventRelay(ecd), null, null, - EventClient.DEFAULT_LEASE_TIMEOUT)); + EventClient.DEFAULT_REQUESTED_LEASE_TIME)); conn.close(); server.stop(); diff --git a/test/javax/management/eventService/ListenerTest.java b/test/javax/management/eventService/ListenerTest.java index 7195736b66264abd53e4303de2eee6ebe947cd8d..c4c91135673826136525df9e5cd2d3d5cf12eb14 100644 --- a/test/javax/management/eventService/ListenerTest.java +++ b/test/javax/management/eventService/ListenerTest.java @@ -99,7 +99,7 @@ public class ListenerTest { succeed &= test(new EventClient(ecd, new RMIPushEventRelay(ecd), null, null, - EventClient.DEFAULT_LEASE_TIMEOUT)); + EventClient.DEFAULT_REQUESTED_LEASE_TIME)); conn.close(); server.stop(); diff --git a/test/javax/management/eventService/NotSerializableNotifTest.java b/test/javax/management/eventService/NotSerializableNotifTest.java index 0bf0bc5faae6c6e545d998d9d510def15a292bb0..4185b4dd9e4aceac8db05bcf843fe03223630290 100644 --- a/test/javax/management/eventService/NotSerializableNotifTest.java +++ b/test/javax/management/eventService/NotSerializableNotifTest.java @@ -95,7 +95,7 @@ public class NotSerializableNotifTest { FetchingEventRelay.DEFAULT_MAX_NOTIFICATIONS, null); EventClient ec = new EventClient(ecd, eventRelay, null, null, - EventClient.DEFAULT_LEASE_TIMEOUT); + EventClient.DEFAULT_REQUESTED_LEASE_TIME); // add listener from the client side Listener listener = new Listener(); diff --git a/test/javax/management/eventService/UsingEventService.java b/test/javax/management/eventService/UsingEventService.java index 3d768ed8d6faa420b691f08d26e7aebd7f375fc6..b46ffe3f6d88331d70fc7e1ee7c509f2029e0273 100644 --- a/test/javax/management/eventService/UsingEventService.java +++ b/test/javax/management/eventService/UsingEventService.java @@ -1,3 +1,26 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + /* * @test UsingEventService.java 1.10 08/01/22 * @bug 5108776 diff --git a/test/javax/management/interop/MBeanExceptionInteropTest.java b/test/javax/management/interop/MBeanExceptionInteropTest.java new file mode 100644 index 0000000000000000000000000000000000000000..dff6d9639d39c01ef05b4ab124726d783fef059e --- /dev/null +++ b/test/javax/management/interop/MBeanExceptionInteropTest.java @@ -0,0 +1,166 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6456269 + * @summary Test that an MBeanException serialized on JDK 6 deserializes + * correctly on JDK 7. + * @author Eamonn McManus + */ + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import javax.management.MBeanException; + +// In JDK 6, the Throwable.cause field was always null for an MBeanException, +// but it didn't matter because we overrode getCause() to return +// MBeanException.exception instead. In JDK 7, we no longer override getCause() +// because MBeanException doubles as the serial form of GenericMBeanException. +// So we need some care to make sure that objects deserialized from JDK 6 +// have the right getCause() behaviour. +public class MBeanExceptionInteropTest { + private static final byte[] SERIALIZED_MBEAN_EXCEPTION = { + -84,-19,0,5,115,114,0,31,106,97,118,97,120,46,109,97, + 110,97,103,101,109,101,110,116,46,77,66,101,97,110,69,120, + 99,101,112,116,105,111,110,56,110,-116,-27,110,87,49,-50,2, + 0,1,76,0,9,101,120,99,101,112,116,105,111,110,116,0, + 21,76,106,97,118,97,47,108,97,110,103,47,69,120,99,101, + 112,116,105,111,110,59,120,114,0,28,106,97,118,97,120,46, + 109,97,110,97,103,101,109,101,110,116,46,74,77,69,120,99, + 101,112,116,105,111,110,4,-35,76,-20,-109,-99,126,113,2,0, + 0,120,114,0,19,106,97,118,97,46,108,97,110,103,46,69, + 120,99,101,112,116,105,111,110,-48,-3,31,62,26,59,28,-60, + 2,0,0,120,114,0,19,106,97,118,97,46,108,97,110,103, + 46,84,104,114,111,119,97,98,108,101,-43,-58,53,39,57,119, + -72,-53,3,0,3,76,0,5,99,97,117,115,101,116,0,21, + 76,106,97,118,97,47,108,97,110,103,47,84,104,114,111,119, + 97,98,108,101,59,76,0,13,100,101,116,97,105,108,77,101, + 115,115,97,103,101,116,0,18,76,106,97,118,97,47,108,97, + 110,103,47,83,116,114,105,110,103,59,91,0,10,115,116,97, + 99,107,84,114,97,99,101,116,0,30,91,76,106,97,118,97, + 47,108,97,110,103,47,83,116,97,99,107,84,114,97,99,101, + 69,108,101,109,101,110,116,59,120,112,113,0,126,0,8,116, + 0,7,79,104,32,100,101,97,114,117,114,0,30,91,76,106, + 97,118,97,46,108,97,110,103,46,83,116,97,99,107,84,114, + 97,99,101,69,108,101,109,101,110,116,59,2,70,42,60,60, + -3,34,57,2,0,0,120,112,0,0,0,2,115,114,0,27, + 106,97,118,97,46,108,97,110,103,46,83,116,97,99,107,84, + 114,97,99,101,69,108,101,109,101,110,116,97,9,-59,-102,38, + 54,-35,-123,2,0,4,73,0,10,108,105,110,101,78,117,109, + 98,101,114,76,0,14,100,101,99,108,97,114,105,110,103,67, + 108,97,115,115,113,0,126,0,6,76,0,8,102,105,108,101, + 78,97,109,101,113,0,126,0,6,76,0,10,109,101,116,104, + 111,100,78,97,109,101,113,0,126,0,6,120,112,0,0,0, + 63,116,0,25,77,66,101,97,110,69,120,99,101,112,116,105, + 111,110,73,110,116,101,114,111,112,84,101,115,116,116,0,30, + 77,66,101,97,110,69,120,99,101,112,116,105,111,110,73,110, + 116,101,114,111,112,84,101,115,116,46,106,97,118,97,116,0, + 5,119,114,105,116,101,115,113,0,126,0,12,0,0,0,46, + 113,0,126,0,14,113,0,126,0,15,116,0,4,109,97,105, + 110,120,115,114,0,34,106,97,118,97,46,108,97,110,103,46, + 73,108,108,101,103,97,108,65,114,103,117,109,101,110,116,69, + 120,99,101,112,116,105,111,110,-75,-119,115,-45,125,102,-113,-68, + 2,0,0,120,114,0,26,106,97,118,97,46,108,97,110,103, + 46,82,117,110,116,105,109,101,69,120,99,101,112,116,105,111, + 110,-98,95,6,71,10,52,-125,-27,2,0,0,120,113,0,126, + 0,3,113,0,126,0,21,116,0,3,66,97,100,117,113,0, + 126,0,10,0,0,0,2,115,113,0,126,0,12,0,0,0, + 62,113,0,126,0,14,113,0,126,0,15,113,0,126,0,16, + 115,113,0,126,0,12,0,0,0,46,113,0,126,0,14,113, + 0,126,0,15,113,0,126,0,18,120, + }; + + private static volatile String failure; + + public static void main(String[] args) throws Exception { + if (args.length > 0) { + if (args[0].equals("write") && args.length == 1) { + write(); + return; + } else { + System.err.println( + "Usage: java MBeanExceptionInteropTest"); + System.err.println( + "or: java MBeanExceptionInteropTest write"); + System.exit(1); + } + } + + // Read the serialized object and check it is correct. + ByteArrayInputStream bin = + new ByteArrayInputStream(SERIALIZED_MBEAN_EXCEPTION); + ObjectInputStream oin = new ObjectInputStream(bin); + MBeanException mbeanEx = (MBeanException) oin.readObject(); + assertEquals("MBeanException message", "Oh dear", mbeanEx.getMessage()); + System.out.println("getCause(): " + mbeanEx.getCause() + "; " + + "getTargetException(): " + mbeanEx.getTargetException()); + for (Throwable t : + new Throwable[] {mbeanEx.getCause(), mbeanEx.getTargetException()}) { + if (!(t instanceof IllegalArgumentException)) + fail("Nested exception not an IllegalArgumentException: " + t); + else + assertEquals("Nested exception message", "Bad", t.getMessage()); + } + + if (failure == null) + System.out.println("TEST PASSED"); + else + throw new Exception("TEST FAILED: " + failure); + } + + // Write a file that can be inserted into this source file as the + // contents of the SERIALIZED_MBEAN_EXCEPTION array. Run this program + // on JDK 6 to generate the array, then test on JDK 7. + private static void write() throws Exception { + Exception wrapped = new IllegalArgumentException("Bad"); + MBeanException mbeanEx = new MBeanException(wrapped, "Oh dear"); + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + ObjectOutputStream oout = new ObjectOutputStream(bout); + oout.writeObject(mbeanEx); + oout.close(); + byte[] bytes = bout.toByteArray(); + for (int i = 0; i < bytes.length; i++) { + System.out.printf("%d,", bytes[i]); + if (i % 16 == 15) + System.out.println(); + } + if (bytes.length % 16 != 0) + System.out.println(); + } + + private static void assertEquals(String what, Object expect, Object actual) { + boolean equal = (expect == null) ? (actual == null) : expect.equals(actual); + if (equal) + System.out.println("OK: " + what + ": " + expect); + else + fail(what + ": expected " + expect + ", got " + actual); + } + + private static void fail(String why) { + System.out.println("FAIL: " + why); + failure = why; + } +} diff --git a/test/javax/management/monitor/DerivedGaugeMonitorTest.java b/test/javax/management/monitor/DerivedGaugeMonitorTest.java new file mode 100644 index 0000000000000000000000000000000000000000..dca66e074720ef68d17ed6ea035ac2c150ba0e27 --- /dev/null +++ b/test/javax/management/monitor/DerivedGaugeMonitorTest.java @@ -0,0 +1,270 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6683213 + * @summary Test that the initial derived gauge is (Integer)0 + * @author Daniel Fuchs + * @run clean DerivedGaugeMonitorTest + * @run build DerivedGaugeMonitorTest + * @run main DerivedGaugeMonitorTest + */ + +import java.io.Serializable; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import javax.management.MBeanServer; +import javax.management.MBeanServerFactory; +import javax.management.ObjectName; +import javax.management.monitor.CounterMonitor; +import javax.management.monitor.GaugeMonitor; + +public class DerivedGaugeMonitorTest { + + public static interface Things { + public long getALong(); + public int getAnInt(); + public double getADouble(); + public short getAShort(); + public byte getAByte(); + public float getAFloat(); + } + public static interface MyMBean extends Things { + public Things getAThing(); + } + + public static class MyThings implements Things, Serializable { + private static final long serialVersionUID = -4333982919572564126L; + + private volatile long along = 0; + private volatile int anint = 0; + private volatile short ashort = 0; + private volatile byte abyte = 0; + private volatile float afloat = 0; + private volatile double adouble = 0; + + private volatile transient boolean mutable; + + public MyThings() { + this(false); + } + + protected MyThings(boolean mutable) { + this.mutable=mutable; + } + + public long getALong() { + return mutable?along++:along; + } + + public int getAnInt() { + return mutable?anint++:anint; + } + + public double getADouble() { + return mutable?adouble++:adouble; + } + + public short getAShort() { + return mutable?ashort++:ashort; + } + + public byte getAByte() { + return mutable?abyte++:abyte; + } + + public float getAFloat() { + return mutable?afloat++:afloat; + } + + @Override + public Object clone() throws CloneNotSupportedException { + final MyThings other = (MyThings)super.clone(); + other.mutable=false; + return other; + } + } + + public static class My implements MyMBean { + + public final CountDownLatch cdl = new CountDownLatch(6); + + private final MyThings things = new MyThings(true); + private volatile int count = 0; + + public Things getAThing() { + count++; + cdl.countDown(); + try { + return (Things) things.clone(); + } catch (CloneNotSupportedException ex) { + return null; + } + } + + public long getALong() { + count++; + cdl.countDown(); + return things.getALong(); + } + + public int getAnInt() { + count++; + cdl.countDown(); + return things.getAnInt(); + } + + public double getADouble() { + count++; + cdl.countDown(); + return things.getADouble(); + } + + public short getAShort() { + count++; + cdl.countDown(); + return things.getAShort(); + } + + public byte getAByte() { + count++; + cdl.countDown(); + return things.getAByte(); + } + + public float getAFloat() { + count++; + cdl.countDown(); + return things.getAFloat(); + } + + } + + + public static String[] attributes = { + "AByte","AShort","AnInt","ALong","AFloat","ADouble" + }; + public static String[] things = { + "AThing.AByte","AThing.AShort","AThing.AnInt","AThing.ALong", + "AThing.AFloat","AThing.ADouble" + }; + + public static void check(String attr, MBeanServer server, ObjectName mon, + ObjectName mbean) throws Exception { + final Object obj = server.getAttribute(mon, "DerivedGauge"); + check(attr,server,mon,mbean,obj); + } + + public static void check(String attr, MBeanServer server, ObjectName mon, + ObjectName mbean, Object obj) throws Exception { + if (obj == null) + throw new Exception("Derived gauge for: " + attr + + " ["+mon+", "+mbean+"] is null!"); + if (!Integer.valueOf(0).equals(obj)) + throw new Exception("Derived gauge for: " + attr + + " ["+mon+", "+mbean+"] is "+obj); + } + + public static void check(String attr, MBeanServer server, ObjectName mon, + ObjectName mbean, long start) throws Exception { + final Object obj = server.getAttribute(mon, "DerivedGauge"); + final long now = System.currentTimeMillis(); + final long gran = (Long)server.getAttribute(mon, "GranularityPeriod"); + if (now > start +2*gran) { + throw new Exception(attr+": Can't verify test case: " + + "granularity period expired!"); + } + check(attr,server,mon,mbean,obj); + } + + public static void test(String attr) throws Exception { + System.err.println("Testing "+ attr); + final MBeanServer server = MBeanServerFactory.createMBeanServer(); + final ObjectName mbean = new ObjectName("ugly:type=cr.p"); + final My my = new My(); + final GaugeMonitor mon2 = new GaugeMonitor(); + final ObjectName mon2n = new ObjectName("mon1:type=GaugeMonitor"); + final CounterMonitor mon1 = new CounterMonitor(); + final ObjectName mon1n = new ObjectName("mon2:type=CounterMonitor"); + + server.registerMBean(my, mbean); + server.registerMBean(mon1, mon1n); + server.registerMBean(mon2, mon2n); + + mon1.addObservedObject(mbean); + mon1.setGranularityPeriod(60000); // 60 sec... + mon1.setObservedAttribute(attr); + mon1.setDifferenceMode(true); + check(attr,server,mon1n,mbean); + + mon2.addObservedObject(mbean); + mon2.setGranularityPeriod(60000); // 60 sec... + mon2.setObservedAttribute(attr); + mon2.setDifferenceMode(true); + check(attr,server,mon2n,mbean); + + final long approxStart = System.currentTimeMillis(); + mon1.start(); + mon2.start(); + + try { + check(attr,server,mon1n,mbean,approxStart); + check(attr,server,mon2n,mbean,approxStart); + check(attr,server,mon1n,mbean,approxStart); + check(attr,server,mon2n,mbean,approxStart); + + + mon1.setGranularityPeriod(5); + mon2.setGranularityPeriod(5); + + my.cdl.await(1000, TimeUnit.MILLISECONDS); + if (my.cdl.getCount() > 0) + throw new Exception(attr+": Count down not reached!"); + + // just check that we don't get an exception now... + System.err.println(attr+": [" + mon1n+ + "] DerivedGauge is now "+ + server.getAttribute(mon1n, "DerivedGauge")); + System.err.println(attr+": [" + mon2n+ + "] DerivedGauge is now "+ + server.getAttribute(mon2n, "DerivedGauge")); + } finally { + try {mon1.stop();} catch (Exception x) {} + try {mon2.stop();} catch (Exception x) {} + } + } + + + + + public static void main(String[] args) throws Exception { + for (String attr:attributes) { + test(attr); + } + for (String attr:things) { + test(attr); + } + } + +} diff --git a/test/javax/management/monitor/InstantiateMonitorNotificationTest.java b/test/javax/management/monitor/InstantiateMonitorNotificationTest.java new file mode 100644 index 0000000000000000000000000000000000000000..ae16858d2413fbfae6d53eb9fa0c166e0adb3a44 --- /dev/null +++ b/test/javax/management/monitor/InstantiateMonitorNotificationTest.java @@ -0,0 +1,52 @@ + +import javax.management.ObjectName; +import javax.management.monitor.MonitorNotification; + +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6373143 + * @summary Test MonitorNotification public constructor + * @author JFDenise + * @run clean InstantiateMonitorNotificationTest + * @run build InstantiateMonitorNotificationTest + * @run main InstantiateMonitorNotificationTest + */ + +public class InstantiateMonitorNotificationTest { + + public static void main(String[] args) throws Exception { + MonitorNotification notif = new MonitorNotification("com.foo.test", + ObjectName.valueOf(":type=Monitor"), + 999, + 999, + "A message", + ObjectName.valueOf(":type=Observed"), + "MyAttribute", + Integer.valueOf(14), + Integer.valueOf(15)); + System.out.println("Test passed"); + } +} diff --git a/test/javax/management/mxbean/ExceptionDiagnosisTest.java b/test/javax/management/mxbean/ExceptionDiagnosisTest.java new file mode 100644 index 0000000000000000000000000000000000000000..d44e289efd8763216c6e9c9b7642cc83ccd86330 --- /dev/null +++ b/test/javax/management/mxbean/ExceptionDiagnosisTest.java @@ -0,0 +1,237 @@ +/* + * @test + * @bug 6713777 + * @summary Test that exception messages include all relevant information + * @author Eamonn McManus + */ + +import java.beans.ConstructorProperties; +import java.io.File; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import javax.management.JMX; +import javax.management.MBeanServer; +import javax.management.MBeanServerFactory; +import javax.management.NotCompliantMBeanException; +import javax.management.ObjectName; + +public class ExceptionDiagnosisTest { + private static volatile String failure; + + // ------ Illegal MXBeans ------ + + // Test that all of BdelloidMXBean, Rotifer, and File appear in the + // exception messages. File is not an allowed type because of recursive + // getters like "File getParentFile()". + public static interface BdelloidMXBean { + public Rotifer getRotifer(); + } + + public static class Bdelloid implements BdelloidMXBean { + public Rotifer getRotifer() { + return null; + } + } + + public static class Rotifer { + public File getFile() { + return null; + } + } + + // Test that all of IndirectHashMapMXBean, HashMapContainer, and + // HashMap appear in the exception messages. + // HashMap is not an allowed type because only the + // java.util interface such as Map are allowed with generic parameters, + // not their concrete implementations like HashMap. + public static interface IndirectHashMapMXBean { + public HashMapContainer getContainer(); + } + + public static class IndirectHashMap implements IndirectHashMapMXBean { + public HashMapContainer getContainer() { + return null; + } + } + + public static class HashMapContainer { + public HashMap getHashMap() {return null;} + } + + // ------ MXBeans that are legal but where proxies are not ------ + + // Test that all of BlimMXBean, BlimContainer, Blim, and Blam appear + // in the exception messages for a proxy for this MXBean. Blam is + // legal in MXBeans but is not reconstructible so you cannot make + // a proxy for BlimMXBean. + public static interface BlimMXBean { + public BlimContainer getBlimContainer(); + } + + public static class BlimImpl implements BlimMXBean { + public BlimContainer getBlimContainer() { + return null; + } + } + + public static class BlimContainer { + public Blim getBlim() {return null;} + public void setBlim(Blim blim) {} + } + + public static class Blim { + public Blam getBlam() {return null;} + public void setBlam(Blam blam) {} + } + + public static class Blam { + public Blam(int x) {} + + public int getX() {return 0;} + } + + + // ------ Property name differing only in case ------ + + public static interface CaseProbMXBean { + public CaseProb getCaseProb(); + } + + public static class CaseProbImpl implements CaseProbMXBean { + public CaseProb getCaseProb() {return null;} + } + + public static class CaseProb { + @ConstructorProperties({"urlPath"}) + public CaseProb(String urlPath) {} + + public String getURLPath() {return null;} + } + + + public static void main(String[] args) throws Exception { + testMXBeans(new Bdelloid(), BdelloidMXBean.class, Rotifer.class, File.class); + testMXBeans(new IndirectHashMap(), + IndirectHashMapMXBean.class, HashMapContainer.class, + HashMapContainer.class.getMethod("getHashMap").getGenericReturnType()); + + testProxies(new BlimImpl(), BlimMXBean.class, BlimMXBean.class, + BlimContainer.class, Blim.class, Blam.class); + + testCaseProb(); + + if (failure == null) + System.out.println("TEST PASSED"); + else + throw new Exception("TEST FAILED: " + failure); + } + + private static void testMXBeans(Object mbean, Type... expectedTypes) + throws Exception { + try { + MBeanServer mbs = MBeanServerFactory.newMBeanServer(); + ObjectName name = new ObjectName("a:b=c"); + mbs.registerMBean(mbean, name); + fail("No exception from registerMBean for " + mbean); + } catch (NotCompliantMBeanException e) { + checkExceptionChain("MBean " + mbean, e, expectedTypes); + } + } + + private static void testProxies( + Object mbean, Class mxbeanClass, Type... expectedTypes) + throws Exception { + MBeanServer mbs = MBeanServerFactory.newMBeanServer(); + ObjectName name = new ObjectName("a:b=c"); + mbs.registerMBean(mbean, name); + T proxy = JMX.newMXBeanProxy(mbs, name, mxbeanClass); + List methods = new ArrayList(); + for (Method m : mxbeanClass.getMethods()) { + if (m.getDeclaringClass() == mxbeanClass) + methods.add(m); + } + if (methods.size() != 1) { + fail("TEST BUG: expected to find exactly one method in " + + mxbeanClass.getName() + ": " + methods); + } + Method getter = methods.get(0); + try { + try { + getter.invoke(proxy); + fail("No exception from proxy method " + getter.getName() + + " in " + mxbeanClass.getName()); + } catch (InvocationTargetException e) { + Throwable cause = e.getCause(); + if (cause instanceof Exception) + throw (Exception) cause; + else + throw (Error) cause; + } + } catch (IllegalArgumentException e) { + checkExceptionChain( + "Proxy for " + mxbeanClass.getName(), e, expectedTypes); + } + } + + private static void testCaseProb() throws Exception { + MBeanServer mbs = MBeanServerFactory.newMBeanServer(); + ObjectName name = new ObjectName("a:b=c"); + Object mbean = new CaseProbImpl(); + mbs.registerMBean(new CaseProbImpl(), name); + CaseProbMXBean proxy = JMX.newMXBeanProxy(mbs, name, CaseProbMXBean.class); + try { + CaseProb prob = proxy.getCaseProb(); + fail("No exception from proxy method getCaseProb"); + } catch (IllegalArgumentException e) { + String messageChain = messageChain(e); + if (messageChain.contains("URLPath")) { + System.out.println("Message chain contains URLPath as required: " + + messageChain); + } else { + fail("Exception chain for CaseProb does not mention property" + + " URLPath differing only in case"); + System.out.println("Full stack trace:"); + e.printStackTrace(System.out); + } + } + } + + private static void checkExceptionChain( + String what, Throwable e, Type[] expectedTypes) { + System.out.println("Exceptions in chain for " + what + ":"); + for (Throwable t = e; t != null; t = t.getCause()) + System.out.println(".." + t); + + String messageChain = messageChain(e); + + // Now check that each of the classes is mentioned in those messages + for (Type type : expectedTypes) { + String name = (type instanceof Class) ? + ((Class) type).getName() : type.toString(); + if (!messageChain.contains(name)) { + fail("Exception chain for " + what + " does not mention " + + name); + System.out.println("Full stack trace:"); + e.printStackTrace(System.out); + } + } + + System.out.println(); + } + + private static String messageChain(Throwable t) { + String msg = "//"; + for ( ; t != null; t = t.getCause()) + msg += " " + t.getMessage() + " //"; + return msg; + } + + private static void fail(String why) { + failure = why; + System.out.println("FAIL: " + why); + } +} diff --git a/test/javax/management/mxbean/TypeNameTest.java b/test/javax/management/mxbean/TypeNameTest.java new file mode 100644 index 0000000000000000000000000000000000000000..b8189691c0bdcbfbd51c533845bd7ca565a21d29 --- /dev/null +++ b/test/javax/management/mxbean/TypeNameTest.java @@ -0,0 +1,121 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6757225 6763051 + * @summary Test that type names in MXBeans match their spec. + * @author Eamonn McManus + */ + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; +import java.util.List; +import java.util.Map; +import javax.management.MBeanAttributeInfo; +import javax.management.MBeanInfo; +import javax.management.MBeanServer; +import javax.management.MBeanServerFactory; +import javax.management.ObjectName; +import javax.management.StandardMBean; +import javax.management.openmbean.TabularData; +import javax.management.openmbean.TabularType; + +public class TypeNameTest { + public static interface TestMXBean { + public int getInt(); + public String IntName = "int"; + + public Map getMapSI(); + public String MapSIName = "java.util.Map"; + + public Map getMapSInts(); + public String MapSIntsName = "java.util.Map"; + + public List> getListListInts(); + public String ListListIntsName = "java.util.List>"; + } + + private static InvocationHandler nullIH = new InvocationHandler() { + public Object invoke(Object proxy, Method method, Object[] args) + throws Throwable { + return null; + } + }; + + static volatile String failure; + + public static void main(String[] args) throws Exception { + TestMXBean testImpl = (TestMXBean) Proxy.newProxyInstance( + TestMXBean.class.getClassLoader(), new Class[] {TestMXBean.class}, nullIH); + Object mxbean = new StandardMBean(testImpl, TestMXBean.class, true); + MBeanServer mbs = MBeanServerFactory.newMBeanServer(); + ObjectName name = new ObjectName("a:b=c"); + mbs.registerMBean(mxbean, name); + MBeanInfo mbi = mbs.getMBeanInfo(name); + MBeanAttributeInfo[] mbais = mbi.getAttributes(); + boolean sawTabular = false; + for (MBeanAttributeInfo mbai : mbais) { + String attrName = mbai.getName(); + String attrTypeName = (String) mbai.getDescriptor().getFieldValue("originalType"); + String fieldName = attrName + "Name"; + Field nameField = TestMXBean.class.getField(fieldName); + String expectedTypeName = (String) nameField.get(null); + + if (expectedTypeName.equals(attrTypeName)) { + System.out.println("OK: " + attrName + ": " + attrTypeName); + } else { + fail("For attribute " + attrName + " expected type name \"" + + expectedTypeName + "\", found type name \"" + attrTypeName + + "\""); + } + + if (mbai.getType().equals(TabularData.class.getName())) { + sawTabular = true; + TabularType tt = (TabularType) mbai.getDescriptor().getFieldValue("openType"); + if (tt.getTypeName().equals(attrTypeName)) { + System.out.println("OK: TabularType name for " + attrName); + } else { + fail("For attribute " + attrName + " expected TabularType " + + "name \"" + attrTypeName + "\", found \"" + + tt.getTypeName()); + } + } + } + + if (!sawTabular) + fail("Test bug: did not test TabularType name"); + + if (failure == null) + System.out.println("TEST PASSED"); + else + throw new Exception("TEST FAILED: " + failure); + } + + private static void fail(String why) { + System.out.println("FAIL: " + why); + failure = why; + } +} diff --git a/test/javax/management/namespace/EventWithNamespaceControlTest.java b/test/javax/management/namespace/EventWithNamespaceControlTest.java index 1e3901104c7462a2666e21e9708f064ab9a936e5..9bfa9866d855cb598e62a9666e8a77ad320caaae 100644 --- a/test/javax/management/namespace/EventWithNamespaceControlTest.java +++ b/test/javax/management/namespace/EventWithNamespaceControlTest.java @@ -85,6 +85,7 @@ public class EventWithNamespaceControlTest extends EventWithNamespaceTest { } } + @Override public Map getServerMap() { Map retValue = Collections.emptyMap(); return retValue; diff --git a/test/javax/management/namespace/JMXNamespaceSecurityTest.java b/test/javax/management/namespace/JMXNamespaceSecurityTest.java index 213ffbfb63e734be4bb10ce6cd8ed85586e1e320..ec201dbda2c8304bdc8a0f07f96616725e3678fd 100644 --- a/test/javax/management/namespace/JMXNamespaceSecurityTest.java +++ b/test/javax/management/namespace/JMXNamespaceSecurityTest.java @@ -51,6 +51,7 @@ import javax.management.namespace.JMXDomain; import javax.management.namespace.JMXNamespace; import javax.management.namespace.JMXNamespaces; import javax.management.remote.JMXConnectorServer; +import javax.management.ClientContext; /** * diff --git a/test/javax/management/namespace/JMXNamespaceViewTest.java b/test/javax/management/namespace/JMXNamespaceViewTest.java index e134968296b9990c95694bd41b74ca11c6637dfe..4764f531f6fc387b081580820cf53496dff6b4a7 100644 --- a/test/javax/management/namespace/JMXNamespaceViewTest.java +++ b/test/javax/management/namespace/JMXNamespaceViewTest.java @@ -42,6 +42,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import javax.management.ClientContext; import javax.management.JMException; import javax.management.MBeanRegistration; import javax.management.MBeanServer; @@ -62,11 +63,6 @@ import javax.management.remote.JMXServiceURL; */ public class JMXNamespaceViewTest { - // TODO: Remove this when contexts are added. - public static class ClientContext { - public final static String NAMESPACE = "jmx.context"; - } - /** * Describe the configuration of a namespace */ diff --git a/test/javax/management/namespace/JMXRemoteTargetNamespace.java b/test/javax/management/namespace/JMXRemoteTargetNamespace.java index 3d83844b1ffe1eef1c21a33dc86010711b85981a..633e930214210712bacea0de4c7919532be82235 100644 --- a/test/javax/management/namespace/JMXRemoteTargetNamespace.java +++ b/test/javax/management/namespace/JMXRemoteTargetNamespace.java @@ -68,13 +68,7 @@ public class JMXRemoteTargetNamespace extends JMXRemoteNamespace { public JMXRemoteTargetNamespace(JMXServiceURL sourceURL, Map optionsMap, String sourceNamespace) { - this(sourceURL,optionsMap,sourceNamespace,false); - } - - public JMXRemoteTargetNamespace(JMXServiceURL sourceURL, - Map optionsMap, String sourceNamespace, - boolean createEventClient) { - super(sourceURL,optionsMap); + super(sourceURL, optionsMap); this.sourceNamespace = sourceNamespace; this.createEventClient = createEventClient(optionsMap); } @@ -92,14 +86,14 @@ public class JMXRemoteTargetNamespace extends JMXRemoteNamespace { } @Override - protected JMXConnector newJMXConnector(JMXServiceURL url, - Map env) throws IOException { - JMXConnector sup = super.newJMXConnector(url, env); - if (sourceNamespace == null || "".equals(sourceNamespace)) - return sup; + protected MBeanServerConnection getMBeanServerConnection(JMXConnector jmxc) + throws IOException { + MBeanServerConnection mbsc = super.getMBeanServerConnection(jmxc); + if (sourceNamespace != null && sourceNamespace.length() > 0) + mbsc = JMXNamespaces.narrowToNamespace(mbsc, sourceNamespace); if (createEventClient) - sup = EventClient.withEventClient(sup); - return JMXNamespaces.narrowToNamespace(sup, sourceNamespace); + mbsc = EventClient.getEventClientConnection(mbsc); + return mbsc; } diff --git a/test/javax/management/namespace/LeadingSeparatorsTest.java b/test/javax/management/namespace/LeadingSeparatorsTest.java index 5660b275317bc98a9d25a16d11802b51a88bc35d..6f931ffd46dfd1e19033b0fded6b4f843482531d 100644 --- a/test/javax/management/namespace/LeadingSeparatorsTest.java +++ b/test/javax/management/namespace/LeadingSeparatorsTest.java @@ -24,7 +24,7 @@ * @test LeadingSeparatorsTest.java * @summary Test that the semantics of a leading // in ObjectName is respected. * @author Daniel Fuchs - * @bug 5072476 + * @bug 5072476 6768935 * @run clean LeadingSeparatorsTest Wombat WombatMBean * @compile -XDignore.symbol.file=true LeadingSeparatorsTest.java * @run build LeadingSeparatorsTest Wombat WombatMBean @@ -36,6 +36,7 @@ import java.util.Arrays; import java.util.Set; import java.util.HashSet; import java.util.logging.Logger; +import javax.management.InstanceNotFoundException; import javax.management.MBeanServer; import javax.management.MBeanServerFactory; import javax.management.NotCompliantMBeanException; @@ -121,19 +122,29 @@ public class LeadingSeparatorsTest { // register wombat using an object name with a leading // final Object obj = new MyWombat(); // check that returned object name doesn't have the leading // - assertEquals(n2,top.registerMBean(obj, n1).getObjectName()); + assertEquals(n2,top.registerMBean(obj, n2).getObjectName()); System.out.println(n1+" registered"); // check that the registered Wombat can be accessed with all its // names. System.out.println(n2+" mood is: "+top.getAttribute(n2, "Mood")); - System.out.println(n1+" mood is: "+top.getAttribute(n1, "Mood")); + try { + System.out.println(n1+" mood is: "+top.getAttribute(n1, "Mood")); + throw new Exception("Excepected exception not thrown for "+n1); + } catch (InstanceNotFoundException x) { + System.out.println("OK: "+x); + } System.out.println(n4+" mood is: "+top.getAttribute(n4, "Mood")); - System.out.println(n3+" mood is: "+top.getAttribute(n3, "Mood")); + try { + System.out.println(n3+" mood is: "+top.getAttribute(n3, "Mood")); + throw new Exception("Excepected exception not thrown for "+n3); + } catch (InstanceNotFoundException x) { + System.out.println("OK: "+x); + } // call listMatching. The result should not contain any prefix. final Set res = (Set) - top.invoke(n3, "listMatching", + top.invoke(n4, "listMatching", // remove rmi// from rmi//*:* JMXNamespaces.deepReplaceHeadNamespace( new Object[] {ObjectName.WILDCARD.withDomain("rmi//*")}, @@ -158,7 +169,7 @@ public class LeadingSeparatorsTest { // //niark//niark// // final Set res4 = (Set) - top.invoke(n3, "untrue", + top.invoke(n4, "untrue", // remove niark//niark : should remove nothing since // our ObjectName begins with a leading // JMXNamespaces.deepReplaceHeadNamespace( diff --git a/test/javax/management/namespace/NamespaceNotificationsTest.java b/test/javax/management/namespace/NamespaceNotificationsTest.java index 9c5a1a04a1ca29bd26ba583b0ecf3b8127c1ad63..0545a36b2adf9ac1b920ec88ead4f9b64282925f 100644 --- a/test/javax/management/namespace/NamespaceNotificationsTest.java +++ b/test/javax/management/namespace/NamespaceNotificationsTest.java @@ -206,18 +206,10 @@ public class NamespaceNotificationsTest { aconn.addNotificationListener(deep,listener,null,deep); - final JMXServiceURL urlx = new JMXServiceURL(url1.toString()); - System.out.println("conn: "+urlx); - final JMXConnector jc2 = JMXNamespaces.narrowToNamespace( - JMXConnectorFactory.connect(urlx),"server1//server1"); - final JMXConnector jc3 = JMXNamespaces.narrowToNamespace(jc2,"server3"); - jc3.connect(); - System.out.println("JC#3: " + - ((jc3 instanceof JMXAddressable)? - ((JMXAddressable)jc3).getAddress(): - jc3.toString())); - final MBeanServerConnection bconn = - jc3.getMBeanServerConnection(); + MBeanServerConnection iconn = + JMXNamespaces.narrowToNamespace(aconn, "server1//server1"); + MBeanServerConnection bconn = + JMXNamespaces.narrowToNamespace(aconn, "server3"); final ObjectName shallow = new ObjectName("bush:"+ deep.getKeyPropertyListString()); diff --git a/test/javax/management/namespace/NullDomainObjectNameTest.java b/test/javax/management/namespace/NullDomainObjectNameTest.java index 3251d388a860cf07ed79729cef353270082562a3..fa8455e2a15e1a23ad4b788a53067d02f0b68b25 100644 --- a/test/javax/management/namespace/NullDomainObjectNameTest.java +++ b/test/javax/management/namespace/NullDomainObjectNameTest.java @@ -40,6 +40,7 @@ import javax.management.MBeanServerFactory; import javax.management.NotCompliantMBeanException; import javax.management.ObjectInstance; import javax.management.ObjectName; +import javax.management.RuntimeOperationsException; import javax.management.namespace.JMXNamespaces; import javax.management.namespace.JMXRemoteNamespace; import javax.management.namespace.JMXNamespace; @@ -155,7 +156,7 @@ public class NullDomainObjectNameTest { // namespace. // RoutingServerProxy proxy = - new RoutingServerProxy(sub, "", "faked", false); + new RoutingServerProxy(sub, "", "faked", true); // These should fail because the ObjectName doesn't start // with "faked//" @@ -215,9 +216,20 @@ public class NullDomainObjectNameTest { assertEquals(proxy.queryNames( new ObjectName(":*"),null). contains(moi3.getObjectName()),true); - failed("queryNames(null,null) should have failed for faked//"); - } catch (IllegalArgumentException x) { - System.out.println("Received expected exception for faked//: "+x); + failed("queryNames(new ObjectName(\":*\"),null) " + + "should have failed for faked//"); + } catch (RuntimeOperationsException x) { + if (x.getCause() instanceof IllegalArgumentException) + System.out.println( + "Received expected exception for faked//: "+x); + else { + System.err.println( + "Expected exception has unexpected cause " + + "for faked//: "+x.getCause()); + x.printStackTrace(); + failed("queryNames(new ObjectName(\":*\"),null)" + + " failed with unexpected cause for faked//"); + } } // These should fail because the ObjectName doesn't start // with "faked//" @@ -226,9 +238,20 @@ public class NullDomainObjectNameTest { "new ObjectName(\":*\"),null) with faked//"); assertEquals(proxy.queryMBeans( new ObjectName(":*"),null).contains(moi3),true); - failed("queryMBeans(null,null) should have failed for faked//"); - } catch (IllegalArgumentException x) { - System.out.println("Received expected exception for faked//: "+x); + failed("queryMBeans(new ObjectName(\":*\"),null)" + + " should have failed for faked//"); + } catch (RuntimeOperationsException x) { + if (x.getCause() instanceof IllegalArgumentException) + System.out.println( + "Received expected exception for faked//: "+x); + else { + System.err.println( + "Expected exception has unexpected cause " + + "for faked//: "+x.getCause()); + x.printStackTrace(); + failed("queryMBeans(new ObjectName(\":*\"),null) " + + "failed with unexpected cause for faked//"); + } } System.out.println("Checking queryNames(faked//*:*,null)"); diff --git a/test/javax/management/namespace/NullObjectNameTest.java b/test/javax/management/namespace/NullObjectNameTest.java index 156e7661db55b816880044563b415990f47ca977..5cf99a230e54f51b527b540a52fa814046e254a8 100644 --- a/test/javax/management/namespace/NullObjectNameTest.java +++ b/test/javax/management/namespace/NullObjectNameTest.java @@ -41,6 +41,7 @@ import javax.management.MBeanServerFactory; import javax.management.NotCompliantMBeanException; import javax.management.ObjectInstance; import javax.management.ObjectName; +import javax.management.RuntimeOperationsException; import javax.management.namespace.JMXNamespaces; import javax.management.namespace.JMXRemoteNamespace; import javax.management.namespace.JMXNamespace; @@ -162,7 +163,7 @@ public class NullObjectNameTest { // this case. // RoutingServerProxy proxy = - new RoutingServerProxy(sub,"","faked",false); + new RoutingServerProxy(sub, "", "faked", true); final ObjectInstance moi3 = proxy.registerMBean(new MyWombat(),null); System.out.println(moi3.getObjectName().toString()+ @@ -189,15 +190,35 @@ public class NullObjectNameTest { assertEquals(proxy.queryNames(null,null). contains(moi3.getObjectName()),true); failed("queryNames(null,null) should have failed for faked//"); - } catch (IllegalArgumentException x) { - System.out.println("Received expected exception for faked//: "+x); + } catch (RuntimeOperationsException x) { + if (x.getCause() instanceof IllegalArgumentException) + System.out.println( + "Received expected exception for faked//: "+x); + else { + System.err.println( + "Expected exception has unexpected cause " + + "for faked//: "+x.getCause()); + x.printStackTrace(); + failed("queryNames(null,null) failed with unexpected " + + "cause for faked//"); + } } try { System.out.println("Checking queryMBeans(null,null) with faked//"); assertEquals(proxy.queryMBeans(null,null).contains(moi3),true); failed("queryMBeans(null,null) should have failed for faked//"); - } catch (IllegalArgumentException x) { - System.out.println("Received expected exception for faked//: "+x); + } catch (RuntimeOperationsException x) { + if (x.getCause() instanceof IllegalArgumentException) + System.out.println( + "Received expected exception for faked//: "+x); + else { + System.err.println( + "Expected exception has unexpected cause " + + "for faked//: "+x.getCause()); + x.printStackTrace(); + failed("queryMBeans(null,null) failed with unexpected " + + "cause for faked//"); + } } System.out.println("Checking queryNames(faked//*:*,null)"); assertEquals(proxy.queryNames(new ObjectName("faked//*:*"),null). diff --git a/test/javax/management/namespace/QueryNamesTest.java b/test/javax/management/namespace/QueryNamesTest.java index 1af597aceb938b10ee70e0f5201711b827bd4afe..5b507644600a7dbede5892da8f3d506c1c8a271c 100644 --- a/test/javax/management/namespace/QueryNamesTest.java +++ b/test/javax/management/namespace/QueryNamesTest.java @@ -25,7 +25,7 @@ * @test QueryNamesTest.java 1.4 * @summary Test how queryNames works with Namespaces. * @author Daniel Fuchs - * @bug 5072476 + * @bug 5072476 6768935 * @run clean QueryNamesTest Wombat WombatMBean * @run build QueryNamesTest Wombat WombatMBean * @run main QueryNamesTest @@ -34,6 +34,7 @@ import java.io.IOException; import java.lang.management.ManagementFactory; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; @@ -52,7 +53,9 @@ import javax.management.MBeanServer; import javax.management.MBeanServerConnection; import javax.management.MBeanServerFactory; import javax.management.MalformedObjectNameException; +import javax.management.ObjectInstance; import javax.management.ObjectName; +import javax.management.RuntimeOperationsException; import javax.management.namespace.JMXNamespace; import javax.management.namespace.JMXNamespaces; @@ -366,6 +369,66 @@ public class QueryNamesTest { return res; } + private static void checkNsPattern(MBeanServer server) throws Exception { + final List list = new ArrayList(); + for (String s : namespaces) { + final String[] cmpnt = s.split("//"); + for (int i=0;i res = new HashSet(); + + try { + res.addAll(server.queryNames(ObjectName.valueOf(s),null)); + } catch (RuntimeOperationsException x) { + if (x.getCause() instanceof IllegalArgumentException) { + System.out.println("queryNames("+s+"): OK - received "+x.getCause()); + continue; + } + System.err.println("queryNames("+s+"): Bad cause: "+x.getCause()); + throw x; + } catch (Exception x) { + System.err.println("queryNames("+s+"): Bad exception: "+x); + throw x; + } + System.err.println("queryNames("+s+"): Bad result: "+res); + System.err.println("queryNames("+s+"): Excpected exception not thrown."); + throw new Exception("queryNames("+s+"): Excpected exception not thrown."); + } + for (String s : list) { + final Set res = new HashSet(); + + try { + res.addAll(server.queryMBeans(ObjectName.valueOf(s),null)); + } catch (RuntimeOperationsException x) { + if (x.getCause() instanceof IllegalArgumentException) { + System.out.println("queryMBeans("+s+"): OK - received "+x.getCause()); + continue; + } + System.err.println("queryMBeans("+s+"): Bad cause: "+x.getCause()); + throw x; + } catch (Exception x) { + System.err.println("queryMBeans("+s+"): Bad exception: "+x); + throw x; + } + System.err.println("queryMBeans("+s+"): Bad result: "+res); + System.err.println("queryMBeans("+s+"): Excpected exception not thrown."); + throw new Exception("queryMBeans("+s+"): Excpected exception not thrown."); + } + } + public static void main(String[] args) throws Exception { final MBeanServer server = ManagementFactory.getPlatformMBeanServer(); @@ -378,6 +441,7 @@ public class QueryNamesTest { System.out.println("Domains: " +Arrays.asList(server.getDomains())); checkRegistration(server); checkNsQuery(server); + checkNsPattern(server); } finally { boolean res = true; res = res && removeWombats(server, wombats); diff --git a/test/javax/management/notification/SupportClearTest.java b/test/javax/management/notification/SupportClearTest.java new file mode 100644 index 0000000000000000000000000000000000000000..56712cf482b17aabab61f4e95b48120ffeb04837 --- /dev/null +++ b/test/javax/management/notification/SupportClearTest.java @@ -0,0 +1,80 @@ +/* + * Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6336980 + * @summary test 2 new methods: isListenedTo() and clear() + * @author Shanliang JIANG + * @run clean SupportClearTest + * @run build SupportClearTest + * @run main SupportClearTest + */ + +import javax.management.*; + +public class SupportClearTest { + private static boolean received = false; + + public static void main(String[] args) throws Exception { + System.out.println(">>> test 2 new methods: isListenedTo() and clear()."); + + final NotificationListener listener = new NotificationListener() { + public void handleNotification(Notification n, Object hb) { + received = true; + } + }; + + final NotificationBroadcasterSupport broadcaster = + new NotificationBroadcasterSupport(); + + System.out.println(">>> testing the method \"isListenedTo\"..."); + if (broadcaster.isListenedTo()) { + throw new RuntimeException( + "Bad implementation of the method \"isListenedTo\"!"); + } + + broadcaster.addNotificationListener(listener, null, null); + + if (!broadcaster.isListenedTo()) { + throw new RuntimeException( + "Bad implementation of the method \"isListenedTo\"!"); + } + + System.out.println(">>> testing the method \"clear\"..."); + broadcaster.removeAllNotificationListeners(); + if (broadcaster.isListenedTo()) { + throw new RuntimeException( + "Bad implementation of the method \"clear\"!"); + } + + broadcaster.sendNotification(new Notification("", "", 1L)); + + if (received) { + throw new RuntimeException( + "Bad implementation of the method \"clear\"!"); + } + + System.out.println(">>> PASSED!"); + } +} diff --git a/test/javax/management/openmbean/CompositeDataStringTest.java b/test/javax/management/openmbean/CompositeDataStringTest.java index 286bfd1d41bfdd932eaea446a82c16902fe15265..7a64e52305a2dfd573ee07689e8d2e6da3c66c06 100644 --- a/test/javax/management/openmbean/CompositeDataStringTest.java +++ b/test/javax/management/openmbean/CompositeDataStringTest.java @@ -21,19 +21,19 @@ * have any questions. */ -import javax.management.openmbean.CompositeType; -import javax.management.openmbean.OpenType; -import javax.management.openmbean.SimpleType; - /* * @test * @bug 6610174 * @summary Test that CompositeDataSupport.toString() represents arrays correctly * @author Eamonn McManus */ + import javax.management.openmbean.ArrayType; import javax.management.openmbean.CompositeData; import javax.management.openmbean.CompositeDataSupport; +import javax.management.openmbean.CompositeType; +import javax.management.openmbean.OpenType; +import javax.management.openmbean.SimpleType; public class CompositeDataStringTest { public static void main(String[] args) throws Exception { diff --git a/test/javax/management/openmbean/CompositeDataToMapTest.java b/test/javax/management/openmbean/CompositeDataToMapTest.java new file mode 100644 index 0000000000000000000000000000000000000000..30641b7c72f4aca073117f8c5fe7b1018a31086e --- /dev/null +++ b/test/javax/management/openmbean/CompositeDataToMapTest.java @@ -0,0 +1,116 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6750472 6752563 + * @summary Test CompositeDataSupport.toMap. + * @author Eamonn McManus + * @run main/othervm -ea CompositeDataToMapTest + */ + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import javax.management.openmbean.CompositeData; +import javax.management.openmbean.CompositeDataSupport; +import javax.management.openmbean.CompositeType; +import javax.management.openmbean.OpenType; +import javax.management.openmbean.SimpleType; + +public class CompositeDataToMapTest { + private static class IdentityInvocationHandler implements InvocationHandler { + private final Object wrapped; + + public IdentityInvocationHandler(Object wrapped) { + this.wrapped = wrapped; + } + + public Object invoke(Object proxy, Method m, Object[] args) + throws Throwable { + try { + return m.invoke(wrapped, args); + } catch (InvocationTargetException e) { + throw e.getCause(); + } + } + } + + private static T wrap(T x, Class intf) { + InvocationHandler ih = new IdentityInvocationHandler(x); + return intf.cast(Proxy.newProxyInstance( + intf.getClassLoader(), new Class[] {intf}, ih)); + } + + public static void main(String[] args) throws Exception { + if (!CompositeDataToMapTest.class.desiredAssertionStatus()) + throw new AssertionError("Must be run with -ea"); + + CompositeType emptyCT = new CompositeType( + "empty", "empty", new String[0], new String[0], new OpenType[0]); + CompositeData emptyCD = new CompositeDataSupport( + emptyCT, Collections.emptyMap()); + assert CompositeDataSupport.toMap(emptyCD).isEmpty() : + "Empty CD produces empty Map"; + + CompositeData emptyCD2 = new CompositeDataSupport( + emptyCT, new String[0], new Object[0]); + assert emptyCD.equals(emptyCD2) : "Empty CD can be constructed two ways"; + + CompositeType namedNumberCT = new CompositeType( + "NamedNumber", "NamedNumber", + new String[] {"name", "number"}, + new String[] {"name", "number"}, + new OpenType[] {SimpleType.STRING, SimpleType.INTEGER}); + Map namedNumberMap = new HashMap(); + namedNumberMap.put("name", "Deich"); + namedNumberMap.put("number", 10); + CompositeData namedNumberCD = new CompositeDataSupport( + namedNumberCT, namedNumberMap); + assert CompositeDataSupport.toMap(namedNumberCD).equals(namedNumberMap) : + "Map survives passage through CompositeData"; + + namedNumberCD = wrap(namedNumberCD, CompositeData.class); + assert CompositeDataSupport.toMap(namedNumberCD).equals(namedNumberMap) : + "Map survives passage through wrapped CompositeData"; + + namedNumberMap = CompositeDataSupport.toMap(namedNumberCD); + namedNumberMap.put("name", "Ceathar"); + namedNumberMap.put("number", 4); + namedNumberCD = new CompositeDataSupport(namedNumberCT, namedNumberMap); + assert CompositeDataSupport.toMap(namedNumberCD).equals(namedNumberMap) : + "Modified Map survives passage through CompositeData"; + + try { + namedNumberMap = CompositeDataSupport.toMap(null); + assert false : "Null toMap arg provokes exception"; + } catch (Exception e) { + assert e instanceof IllegalArgumentException : + "Exception for null toMap arg is IllegalArgumentException"; + } + } +} diff --git a/test/javax/management/openmbean/GenericMBeanExceptionTest.java b/test/javax/management/openmbean/GenericMBeanExceptionTest.java new file mode 100644 index 0000000000000000000000000000000000000000..fa682d0d0d7dbc47f16b534ce38964137a7502fc --- /dev/null +++ b/test/javax/management/openmbean/GenericMBeanExceptionTest.java @@ -0,0 +1,278 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6456269 + * @summary Test GenericMBeanException + * @author Eamonn McManus + */ + +import java.beans.ConstructorProperties; +import java.lang.management.ManagementFactory; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import javax.management.GenericMBeanException; +import javax.management.JMX; +import javax.management.MBeanServer; +import javax.management.MBeanServerConnection; +import javax.management.ObjectName; +import javax.management.openmbean.CompositeData; +import javax.management.openmbean.CompositeType; +import javax.management.openmbean.MXBeanMapping; +import javax.management.openmbean.MXBeanMappingFactory; +import javax.management.remote.JMXConnector; +import javax.management.remote.JMXConnectorFactory; +import javax.management.remote.JMXConnectorServer; +import javax.management.remote.JMXConnectorServerFactory; +import javax.management.remote.JMXServiceURL; + +public class GenericMBeanExceptionTest { + private static volatile String failure = null; + + public static interface ThrowerMBean { + public void throwGeneric() throws GenericMBeanException; + public void throwGeneric(Throwable cause) throws GenericMBeanException; + public void throwGeneric(String errorCode) throws GenericMBeanException; + public void throwGeneric(CompositeData userData) throws GenericMBeanException; + public void throwGeneric(String errorCode, CompositeData userData) + throws GenericMBeanException; + public void throwGeneric(String errorCode, CompositeData userData, Throwable cause) + throws GenericMBeanException; + } + + public static class Thrower implements ThrowerMBean { + + public void throwGeneric() throws GenericMBeanException { + throw new GenericMBeanException("Message"); + } + + public void throwGeneric(Throwable cause) throws GenericMBeanException { + throw new GenericMBeanException("Message", cause); + } + + public void throwGeneric(String errorCode) throws GenericMBeanException { + throw new GenericMBeanException("Message", errorCode, null); + } + + public void throwGeneric(CompositeData userData) throws GenericMBeanException { + throw new GenericMBeanException("Message", null, userData); + } + + public void throwGeneric(String errorCode, CompositeData userData) + throws GenericMBeanException { + throw new GenericMBeanException("Message", errorCode, userData); + } + + public void throwGeneric(String errorCode, CompositeData userData, + Throwable cause) throws GenericMBeanException { + throw new GenericMBeanException("Message", errorCode, userData, cause); + } + } + + public static class Payload { + private final int severity; + private final String subsystem; + + @ConstructorProperties({"severity", "subsystem"}) + public Payload(int severity, String subsystem) { + this.severity = severity; + this.subsystem = subsystem; + } + + public int getSeverity() { + return severity; + } + + public String getSubsystem() { + return subsystem; + } + + @Override + public boolean equals(Object x) { + if (!(x instanceof Payload)) + return false; + Payload p = (Payload) x; + return (severity == p.severity && + (subsystem == null) ? + p.subsystem == null : subsystem.equals(p.subsystem)); + } + + @Override + public int hashCode() { + return severity + subsystem.hashCode(); + } + + @Override + public String toString() { + return "Payload{severity: " + severity + ", subsystem: " + subsystem + "}"; + } + } + + public static void main(String[] args) throws Exception { + MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); + ObjectName name = new ObjectName("test:type=Thrower"); + Thrower thrower = new Thrower(); + mbs.registerMBean(thrower, name); + + if (args.length > 0) { + System.out.println("Attach client now, hit return to exit"); + System.in.read(); + return; + } + + JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://"); + JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer( + url, null, mbs); + cs.start(); + JMXServiceURL addr = cs.getAddress(); + + JMXConnector cc = JMXConnectorFactory.connect(addr); + MBeanServerConnection mbsc = cc.getMBeanServerConnection(); + + ThrowerMBean throwerProxy = JMX.newMBeanProxy(mbsc, name, ThrowerMBean.class); + + Payload payload = new Payload(5, "modular modulizer"); + MXBeanMapping payloadMapping = MXBeanMappingFactory.DEFAULT.mappingForType( + Payload.class, MXBeanMappingFactory.DEFAULT); + CompositeData userData = (CompositeData) + payloadMapping.toOpenValue(payload); + Throwable cause = new IllegalArgumentException("Badness"); + + Object[][] testCases = { + {}, + {"code1"}, + {userData}, + {"code2", userData}, + {(String) null, userData}, + {"code99", userData, cause}, + {(String) null, userData, cause}, + }; + + for (Object[] testCase : testCases) { + System.out.println("Test case: " + testCaseString(testCase)); + + // Find which ThrowerMBean method it corresponds to + Method testMethod = null; +search: + for (Method m : ThrowerMBean.class.getMethods()) { + Class[] paramTypes = m.getParameterTypes(); + if (paramTypes.length != testCase.length) + continue; + for (int i = 0; i < paramTypes.length; i++) { + if (testCase[i] != null && !paramTypes[i].isInstance(testCase[i])) + continue search; + } + testMethod = m; + } + + if (testMethod == null) { + throw new Exception("TEST ERROR: no method corresponds: " + + testCaseString(testCase)); + } + + try { + testMethod.invoke(throwerProxy, testCase); + fail("Did not throw exception", testCase); + continue; + } catch (InvocationTargetException e) { + Throwable iteCause = e.getCause(); + if (!(iteCause instanceof GenericMBeanException)) { + iteCause.printStackTrace(System.out); + fail("Threw wrong exception " + iteCause, testCase); + continue; + } + GenericMBeanException ge = (GenericMBeanException) iteCause; + if (!ge.getMessage().equals("Message")) + fail("Wrong message: " + ge.getMessage(), testCase); + + Class[] paramTypes = testMethod.getParameterTypes(); + for (int i = 0; i < paramTypes.length; i++) { + Class paramType = paramTypes[i]; + + if (paramType == Throwable.class) { // cause + Throwable geCause = ge.getCause(); + if (!(geCause instanceof IllegalArgumentException)) + fail("Wrong cause: " + geCause, testCase); + else if (!geCause.getMessage().equals("Badness")) + fail("Wrong cause message: " + geCause.getMessage(), testCase); + } else if (paramType == String.class) { // errorCode + String errorCode = ge.getErrorCode(); + String expectedErrorCode = + (testCase[i] == null) ? "" : (String) testCase[i]; + if (!expectedErrorCode.equals(errorCode)) + fail("Wrong error code: " + ge.getErrorCode(), testCase); + } else if (paramType == CompositeData.class) { // userData + CompositeData userData2 = ge.getUserData(); + if (!userData.equals(userData2)) + fail("Wrong userData: " + userData2, testCase); + Payload payload2 = (Payload) payloadMapping.fromOpenValue(userData2); + if (!payload.equals(payload2)) + fail("Wrong payload: " + payload2, testCase); + } else + throw new Exception("TEST ERROR: unknown parameter type: " + paramType); + } + } + } + + if (failure == null) + System.out.println("TEST PASSED"); + else + throw new Exception("TEST FAILED: " + failure); + } + + private static String testCaseString(Object[] testCase) { + StringBuilder sb = new StringBuilder("["); + String sep = ""; + for (Object x : testCase) { + sb.append(sep); + String xs = (x instanceof CompositeData) ? + compositeDataString((CompositeData) x) : String.valueOf(x); + sb.append(xs); + sep = ", "; + } + sb.append("]"); + return sb.toString(); + } + + private static String compositeDataString(CompositeData cd) { + StringBuilder sb = new StringBuilder("CompositeData{"); + CompositeType ct = cd.getCompositeType(); + String sep = ""; + for (String key : ct.keySet()) { + sb.append(sep).append(key).append(": ").append(cd.get(key)); + sep = ", "; + } + sb.append("}"); + return sb.toString(); + } + + private static void fail(String why, Object[] testCase) { + fail(testCaseString(testCase) + ": " + why); + } + + private static void fail(String why) { + failure = why; + System.out.println("FAIL: " + why); + } +} diff --git a/test/javax/management/remote/mandatory/connection/DaemonRMIExporterTest.java b/test/javax/management/remote/mandatory/connection/DaemonRMIExporterTest.java new file mode 100644 index 0000000000000000000000000000000000000000..3ee6066b0e54e1a1705a59d88ddb5420217cac1e --- /dev/null +++ b/test/javax/management/remote/mandatory/connection/DaemonRMIExporterTest.java @@ -0,0 +1,123 @@ +/* + * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + + +/* + * @test + * @bug 6760712 + * @summary test the connector server option that causes it not to prevent the + * VM from exiting + * @author Shanliang JIANG, Eamonn McManus + * @run main/othervm DaemonRMIExporterTest + */ +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import javax.management.MBeanServerFactory; +import javax.management.remote.JMXConnector; +import javax.management.remote.JMXConnectorFactory; +import javax.management.remote.JMXServiceURL; +import javax.management.remote.JMXConnectorServer; +import javax.management.remote.JMXConnectorServerFactory; + +// Test the connector server option that causes it not to prevent the VM +// from exiting. It's tricky to test exactly that, though possible. If +// we're being run from within jtreg, then jtreg has threads of its own +// that will prevent the VM from exiting. What's more it will kill all +// threads that the test created as soon as the main method returns, +// including the ones that would prevent the VM from exiting without the +// special option. +// Here we check that the test code does not create +// any permanent non-daemon threads, by recording the initial set of +// non-daemon threads (including at least one from jtreg), doing our stuff, +// then waiting for there to be no non-daemon threads that were not in +// the initial set. +public class DaemonRMIExporterTest { + public static void main(String[] args) throws Exception { + Set initialNonDaemonThreads = getNonDaemonThreads(); + + JMXServiceURL addr = new JMXServiceURL("rmi", null, 0); + System.out.println("DaemonRMIExporterTest: Creating a RMIConnectorServer on " + addr); + Map env = + Collections.singletonMap("jmx.remote.x.daemon", "true"); + JMXConnectorServer server = + JMXConnectorServerFactory.newJMXConnectorServer(addr, + env, + MBeanServerFactory.createMBeanServer()); + server.start(); + System.out.println("DaemonRMIExporterTest: Started the server on " + server.getAddress()); + + System.out.println("DaemonRMIExporterTest: Connecting a client to the server ..."); + final JMXConnector conn = JMXConnectorFactory.connect(server.getAddress()); + conn.getMBeanServerConnection().getDefaultDomain(); + + System.out.println("DaemonRMIExporterTest: Closing the client ..."); + conn.close(); + + System.out.println("DaemonRMIExporterTest No more user code to execute, the VM should " + + "exit normally, otherwise will be blocked forever if the bug is not fixed."); + + long deadline = System.currentTimeMillis() + 10000; + ok: { + while (System.currentTimeMillis() < deadline) { + Set nonDaemonThreads = getNonDaemonThreads(); + nonDaemonThreads.removeAll(initialNonDaemonThreads); + if (nonDaemonThreads.isEmpty()) + break ok; + System.out.println("Non-daemon threads: " + nonDaemonThreads); + try { + Thread.sleep(500); + } catch (InterruptedException e) { + throw new AssertionError(e); + } + } + throw new Exception("TEST FAILED: non-daemon threads remain"); + } + + System.out.println("TEST PASSED"); + } + + private static Set getNonDaemonThreads() { + ThreadGroup tg = Thread.currentThread().getThreadGroup(); + while (tg.getParent() != null) + tg = tg.getParent(); + Thread[] threads = null; + for (int size = 10; size < 10000; size *= 2) { + threads = new Thread[size]; + int n = tg.enumerate(threads, true); + if (n < size) { + threads = Arrays.copyOf(threads, n); + break; + } + } + Set ndThreads = new HashSet(); + for (Thread t : threads) { + if (!t.isDaemon()) + ndThreads.add(t); + } + return ndThreads; + } +} diff --git a/test/javax/management/remote/mandatory/connectorServer/CloseConnectionTest.java b/test/javax/management/remote/mandatory/connectorServer/CloseConnectionTest.java new file mode 100644 index 0000000000000000000000000000000000000000..54d05f84273bf60ed7157bd697efaefe0b37dd4f --- /dev/null +++ b/test/javax/management/remote/mandatory/connectorServer/CloseConnectionTest.java @@ -0,0 +1,217 @@ +/* + * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + + +/* + * @test + * @bug 6332907 + * @summary test the ability for connector server to close individual connections + * @author Shanliang JIANG + * @run clean CloseConnectionTest + * @run build CloseConnectionTest + * @run main CloseConnectionTest + */ +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import javax.management.MBeanServerFactory; + +import javax.management.Notification; +import javax.management.NotificationListener; +import javax.management.remote.JMXConnectionNotification; +import javax.management.remote.JMXConnector; +import javax.management.remote.JMXConnectorFactory; +import javax.management.remote.JMXServiceURL; +import javax.management.remote.JMXConnectorServer; +import javax.management.remote.JMXConnectorServerFactory; + +public class CloseConnectionTest { + + public static void main(String[] args) throws Exception { + System.out.println(">>> Test the ability for connector server to close " + + "individual connections."); + + final String[] protos = new String[]{"rmi", "iiop", "jmxmp"}; + for (String p : protos) { + System.out.println("\n>>> Testing the protocol " + p); + JMXServiceURL addr = new JMXServiceURL(p, null, 0); + System.out.println(">>> Creating a JMXConnectorServer on " + addr); + JMXConnectorServer server = null; + try { + server = JMXConnectorServerFactory.newJMXConnectorServer(addr, + null, + MBeanServerFactory.createMBeanServer()); + } catch (Exception e) { + System.out.println(">>> Skip the protocol: " + p); + continue; + } + + test1(server); + test2(server); + + server.stop(); + } + + System.out.println(">>> Bye bye!"); + } + + private static void test1(JMXConnectorServer server) throws Exception { + try { + server.closeConnection("toto"); + // not started, known id + throw new RuntimeException("An IllegalArgumentException is not thrown."); + } catch (IllegalStateException e) { + System.out.println(">>> Test1: Got expected IllegalStateException: " + e); + } + + server.start(); + System.out.println(">>>Test1 Started the server on " + server.getAddress()); + + try { + server.closeConnection("toto"); + throw new RuntimeException("An IllegalArgumentException is not thrown."); + } catch (IllegalArgumentException e) { + System.out.println(">> Test1: Got expected IllegalArgumentException: " + e); + } + + MyListener listener = new MyListener(); + server.addNotificationListener(listener, null, null); + + System.out.println(">>> Test1: Connecting a client to the server ..."); + final JMXConnector conn = JMXConnectorFactory.connect(server.getAddress()); + conn.getMBeanServerConnection().getDefaultDomain(); + final String id1 = conn.getConnectionId(); + + listener.wait(JMXConnectionNotification.OPENED, timeout); + + System.out.println(">>> Test1: Closing the connection: " + conn.getConnectionId()); + server.closeConnection(id1); + listener.wait(JMXConnectionNotification.CLOSED, timeout); + + System.out.println(">>> Test1: Using again the connector whose connection " + + "should be closed by the server, it should reconnect " + + "automatically to the server and get a new connection id."); + conn.getMBeanServerConnection().getDefaultDomain(); + final String id2 = conn.getConnectionId(); + listener.wait(JMXConnectionNotification.OPENED, timeout); + + if (id1.equals(id2)) { + throw new RuntimeException("Failed, the first client connection is not closed."); + } + + System.out.println(">>> Test1: Greate, we get a new connection id " + id2 + + ", the first one is closed as expected."); + + System.out.println(">>> Test1: Closing the client."); + conn.close(); + System.out.println(">>> Test1: Stopping the server."); + server.removeNotificationListener(listener); + } + + private static void test2(JMXConnectorServer server) throws Exception { + System.out.println(">>> Test2 close a connection before " + + "the client can use it..."); + final Killer killer = new Killer(server); + server.addNotificationListener(killer, null, null); + + System.out.println(">>> Test2 Connecting a client to the server ..."); + final JMXConnector conn; + try { + conn = JMXConnectorFactory.connect(server.getAddress()); + throw new RuntimeException(">>> Failed, do not receive an " + + "IOException telling the connection is refused."); + } catch (IOException ioe) { + System.out.println(">>> Test2 got expected IOException: "+ioe); + } + } + + private static class MyListener implements NotificationListener { + public void handleNotification(Notification n, Object hb) { + if (n instanceof JMXConnectionNotification) { + synchronized (received) { + received.add((JMXConnectionNotification) n); + received.notify(); + } + } + } + + public JMXConnectionNotification wait(String type, long timeout) + throws Exception { + JMXConnectionNotification waited = null; + long toWait = timeout; + long deadline = System.currentTimeMillis() + timeout; + synchronized (received) { + while (waited == null && toWait > 0) { + received.wait(toWait); + for (JMXConnectionNotification n : received) { + if (type.equals(n.getType())) { + waited = n; + break; + } + } + received.clear(); + toWait = deadline - System.currentTimeMillis(); + } + } + + if (waited == null) { + throw new RuntimeException("Do not receive expected notification " + type); + } else { + System.out.println(">>> Received expected notif: "+type+ + " "+waited.getConnectionId()); + } + + return waited; + } + + final List received = + new ArrayList(); + } + + private static class Killer implements NotificationListener { + public Killer(JMXConnectorServer server) { + this.server = server; + } + public void handleNotification(Notification n, Object hb) { + if (n instanceof JMXConnectionNotification) { + if (JMXConnectionNotification.OPENED.equals(n.getType())) { + final JMXConnectionNotification cn = + (JMXConnectionNotification)n; + try { + System.out.println(">>> Killer: close the connection "+ + cn.getConnectionId()); + server.closeConnection(cn.getConnectionId()); + } catch (Exception e) { + // impossible? + e.printStackTrace(); + System.exit(1); + } + } + } + } + + private final JMXConnectorServer server; + } + + private static final long timeout = 6000; +} diff --git a/test/javax/management/remote/mandatory/connectorServer/ForwarderChainTest.java b/test/javax/management/remote/mandatory/connectorServer/ForwarderChainTest.java index b6c6d87926fade5670fce3242a6994b442c77d7d..e1dcbcb6e05087a49e5d35e46e00b22313d1709c 100644 --- a/test/javax/management/remote/mandatory/connectorServer/ForwarderChainTest.java +++ b/test/javax/management/remote/mandatory/connectorServer/ForwarderChainTest.java @@ -86,16 +86,20 @@ public class ForwarderChainTest { test(cs, mbs); System.out.println("===Remove any leftover forwarders==="); - while (cs.getSystemMBeanServer() instanceof MBeanServerForwarder) { - MBeanServerForwarder mbsf = - (MBeanServerForwarder) cs.getSystemMBeanServer(); - cs.removeMBeanServerForwarder(mbsf); + MBeanServerForwarder systemMBSF = cs.getSystemMBeanServerForwarder(); + // Real code would just do systemMBSF.setMBeanServer(mbs). + while (true) { + MBeanServer xmbs = systemMBSF.getMBeanServer(); + if (!(xmbs instanceof MBeanServerForwarder)) + break; + cs.removeMBeanServerForwarder((MBeanServerForwarder) xmbs); } expectChain(cs, "U", mbs); System.out.println("===Ensure forwarders are called==="); cs.setMBeanServerForwarder(forwarders[0]); - cs.setSystemMBeanServerForwarder(forwarders[1]); + systemMBSF.setMBeanServer(forwarders[1]); + forwarders[1].setMBeanServer(forwarders[0]); expectChain(cs, "1U0", mbs); cs.start(); if (forwarders[0].defaultDomainCount != 0 || @@ -125,8 +129,8 @@ public class ForwarderChainTest { private static void test(JMXConnectorServer cs, MBeanServer end) { // A newly-created connector server might have system forwarders, // so get rid of those. - while (cs.getSystemMBeanServer() != cs.getMBeanServer()) - cs.removeMBeanServerForwarder((MBeanServerForwarder) cs.getSystemMBeanServer()); + MBeanServerForwarder systemMBSF = cs.getSystemMBeanServerForwarder(); + systemMBSF.setMBeanServer(cs.getMBeanServer()); expectChain(cs, "U", end); @@ -139,7 +143,8 @@ public class ForwarderChainTest { expectChain(cs, "U10", end); System.out.println("Add a system forwarder"); - cs.setSystemMBeanServerForwarder(forwarders[2]); + forwarders[2].setMBeanServer(systemMBSF.getMBeanServer()); + systemMBSF.setMBeanServer(forwarders[2]); expectChain(cs, "2U10", end); System.out.println("Add another user forwarder"); @@ -147,7 +152,8 @@ public class ForwarderChainTest { expectChain(cs, "2U310", end); System.out.println("Add another system forwarder"); - cs.setSystemMBeanServerForwarder(forwarders[4]); + forwarders[4].setMBeanServer(systemMBSF.getMBeanServer()); + systemMBSF.setMBeanServer(forwarders[4]); expectChain(cs, "42U310", end); System.out.println("Remove the first user forwarder"); @@ -215,9 +221,8 @@ public class ForwarderChainTest { } case 2: { // add it to the system chain System.out.println("Add " + c + " to system chain"); - if (cs.getSystemMBeanServer() == null) - mbsf.setMBeanServer(null); - cs.setSystemMBeanServerForwarder(mbsf); + mbsf.setMBeanServer(systemMBSF.getMBeanServer()); + systemMBSF.setMBeanServer(mbsf); chain = c + chain; break; } @@ -240,7 +245,7 @@ public class ForwarderChainTest { private static void expectChain( JMXConnectorServer cs, String chain, MBeanServer end) { System.out.println("...expected chain: " + chain); - MBeanServer curr = cs.getSystemMBeanServer(); + MBeanServer curr = cs.getSystemMBeanServerForwarder().getMBeanServer(); int i = 0; while (i < chain.length()) { char c = chain.charAt(i); diff --git a/test/javax/management/remote/mandatory/connectorServer/StandardForwardersTest.java b/test/javax/management/remote/mandatory/connectorServer/StandardForwardersTest.java index d2d5e3771fff03e6d791dbbed93c758c6cd35c3f..25efde9dd0e4a4a53604f59b82beab08a127aed0 100644 --- a/test/javax/management/remote/mandatory/connectorServer/StandardForwardersTest.java +++ b/test/javax/management/remote/mandatory/connectorServer/StandardForwardersTest.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.management.ClientContext; import javax.management.MBeanServer; import javax.management.event.EventClientDelegate; import javax.management.remote.JMXConnectorServer; @@ -62,13 +63,23 @@ public class StandardForwardersTest { public static void main(String[] args) throws Exception { MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); + MBeanServerForwarder ctxFwd = ClientContext.newContextForwarder(mbs, null); + Forwarder ctx = new Forwarder( + JMXConnectorServer.CONTEXT_FORWARDER, true, ctxFwd.getClass()); + + MBeanServerForwarder locFwd = + ClientContext.newLocalizeMBeanInfoForwarder(mbs); + Forwarder loc = new Forwarder( + JMXConnectorServer.LOCALIZE_MBEAN_INFO_FORWARDER, false, + locFwd.getClass()); + MBeanServerForwarder ecdFwd = - EventClientDelegate.newForwarder(); + EventClientDelegate.newForwarder(mbs, null); Forwarder ecd = new Forwarder( JMXConnectorServer.EVENT_CLIENT_DELEGATE_FORWARDER, true, ecdFwd.getClass()); - Forwarder[] forwarders = {ecd}; + Forwarder[] forwarders = {ctx, loc, ecd}; // Now go through every combination of forwarders. Each forwarder // may be explicitly enabled, explicitly disabled, or left to its @@ -154,9 +165,11 @@ public class StandardForwardersTest { } MBeanServer stop = cs.getMBeanServer(); List> foundClasses = new ArrayList>(); - for (MBeanServer mbs = cs.getSystemMBeanServer(); mbs != stop; - mbs = ((MBeanServerForwarder) mbs).getMBeanServer()) + for (MBeanServer mbs = cs.getSystemMBeanServerForwarder().getMBeanServer(); + mbs != stop; + mbs = ((MBeanServerForwarder) mbs).getMBeanServer()) { foundClasses.add(mbs.getClass()); + } if (!expectedClasses.equals(foundClasses)) { fail("Incorrect forwarder chain: expected " + expectedClasses + "; found " + foundClasses); @@ -165,9 +178,12 @@ public class StandardForwardersTest { // env is consistent if either (a) localizer is not enabled or (b) // localizer is enabled and context is enabled. - // Neither of those is present in this codebase so env is always consistent. private static boolean isConsistent(Map env) { - return true; + String ctxS = env.get(JMXConnectorServer.CONTEXT_FORWARDER); + boolean ctx = (ctxS == null) ? true : Boolean.parseBoolean(ctxS); + String locS = env.get(JMXConnectorServer.LOCALIZE_MBEAN_INFO_FORWARDER); + boolean loc = (locS == null) ? false : Boolean.parseBoolean(locS); + return !loc || ctx; } private static void fail(String why) { diff --git a/test/javax/management/remote/mandatory/provider/ProviderTest.java b/test/javax/management/remote/mandatory/provider/ProviderTest.java index 0c7e906b6a620c1c2ec888b7a858302b9731cdb0..d5c091f2ed9e03e85ed03b445e3311ebbd1b2958 100644 --- a/test/javax/management/remote/mandatory/provider/ProviderTest.java +++ b/test/javax/management/remote/mandatory/provider/ProviderTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -46,6 +46,8 @@ import javax.management.MBeanServer; /* * Tests jar services provider are called */ +import provider.JMXConnectorProviderImpl; +import provider.JMXConnectorServerProviderImpl; public class ProviderTest { public static void main(String[] args) throws Exception { System.out.println("Starting ProviderTest"); @@ -56,8 +58,14 @@ public class ProviderTest { dotest(url, mbs); - if(!provider.JMXConnectorProviderImpl.called() || - !provider.JMXConnectorServerProviderImpl.called()) { + boolean clientCalled = provider.JMXConnectorProviderImpl.called(); + boolean serverCalled = provider.JMXConnectorServerProviderImpl.called(); + boolean ok = clientCalled && serverCalled; + if (!ok) { + if (!clientCalled) + System.out.println("Client provider not called"); + if (!serverCalled) + System.out.println("Server provider not called"); System.out.println("Test Failed"); System.exit(1); } diff --git a/test/javax/management/remote/mandatory/subjectDelegation/SimpleStandard.java b/test/javax/management/remote/mandatory/subjectDelegation/SimpleStandard.java index 1a0e1dfe66d711f188657d5b58f59a13436f94e8..c8aa3de73112ea947ba4543b8d2b0615c030ac5a 100644 --- a/test/javax/management/remote/mandatory/subjectDelegation/SimpleStandard.java +++ b/test/javax/management/remote/mandatory/subjectDelegation/SimpleStandard.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -75,7 +75,7 @@ public class SimpleStandard * @return the current value of the "State" attribute. */ public String getState() { - checkSubject(); + checkSubject("getState"); return state; } @@ -85,7 +85,7 @@ public class SimpleStandard * @param s the new value of the "State" attribute. */ public void setState(String s) { - checkSubject(); + checkSubject("setState"); state = s; nbChanges++; } @@ -97,7 +97,7 @@ public class SimpleStandard * @return the current value of the "NbChanges" attribute. */ public int getNbChanges() { - checkSubject(); + checkSubject("getNbChanges"); return nbChanges; } @@ -106,7 +106,7 @@ public class SimpleStandard * attributes of the "SimpleStandard" standard MBean. */ public void reset() { - checkSubject(); + checkSubject("reset"); AttributeChangeNotification acn = new AttributeChangeNotification(this, 0, @@ -149,18 +149,18 @@ public class SimpleStandard * Check that the principal contained in the Subject is of * type JMXPrincipal and refers to the principalName identity. */ - private void checkSubject() { + private void checkSubject(String op) { AccessControlContext acc = AccessController.getContext(); Subject subject = Subject.getSubject(acc); Set principals = subject.getPrincipals(); Principal principal = (Principal) principals.iterator().next(); if (!(principal instanceof JMXPrincipal)) - throw new SecurityException("Authenticated subject contains " + + throw new SecurityException(op+": Authenticated subject contains " + "invalid principal type = " + principal.getClass().getName()); String identity = principal.getName(); if (!identity.equals(principalName)) - throw new SecurityException("Authenticated subject contains " + + throw new SecurityException(op+": Authenticated subject contains " + "invalid principal name = " + identity); } diff --git a/test/javax/management/remote/mandatory/version/JMXSpecVersionTest.java b/test/javax/management/remote/mandatory/version/JMXSpecVersionTest.java new file mode 100644 index 0000000000000000000000000000000000000000..69782690d0a9eed40108ed7b81de91b5018c5b70 --- /dev/null +++ b/test/javax/management/remote/mandatory/version/JMXSpecVersionTest.java @@ -0,0 +1,308 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6750008 + * @summary Test JMX.getSpecificationVersion + * @author Eamonn McManus + */ + +import java.io.IOException; +import java.util.Collections; +import java.util.ListIterator; +import java.util.Set; +import javax.management.Attribute; +import javax.management.AttributeList; +import javax.management.AttributeNotFoundException; +import javax.management.DynamicMBean; +import javax.management.InstanceNotFoundException; +import javax.management.InvalidAttributeValueException; +import javax.management.JMX; +import javax.management.MBeanException; +import javax.management.MBeanInfo; +import javax.management.MBeanServer; +import javax.management.MBeanServerConnection; +import javax.management.MBeanServerDelegate; +import javax.management.MBeanServerDelegateMBean; +import javax.management.MBeanServerFactory; +import javax.management.ObjectName; +import javax.management.ReflectionException; +import javax.management.StandardMBean; +import javax.management.namespace.JMXNamespace; +import javax.management.namespace.JMXNamespaces; +import javax.management.namespace.MBeanServerSupport; +import javax.management.remote.JMXConnector; +import javax.management.remote.JMXConnectorFactory; +import javax.management.remote.JMXConnectorServer; +import javax.management.remote.JMXConnectorServerFactory; +import javax.management.remote.JMXServiceURL; + +public class JMXSpecVersionTest { + private static String failure; + private static final Object POISON_PILL = new Object(); + + private static class FakeDelegate implements DynamicMBean { + private final Object specVersion; + private final DynamicMBean delegate = new StandardMBean( + new MBeanServerDelegate(), MBeanServerDelegateMBean.class, false); + + FakeDelegate(Object specVersion) { + this.specVersion = specVersion; + } + + public Object getAttribute(String attribute) + throws AttributeNotFoundException, MBeanException, + ReflectionException { + if ("SpecificationVersion".equals(attribute)) { + if (specVersion == POISON_PILL) + throw new AttributeNotFoundException(attribute); + else + return specVersion; + } else + return delegate.getAttribute(attribute); + } + + public void setAttribute(Attribute attribute) + throws AttributeNotFoundException, InvalidAttributeValueException, + MBeanException, ReflectionException { + delegate.setAttribute(attribute); + } + + public AttributeList getAttributes(String[] attributes) { + AttributeList list = delegate.getAttributes(attributes); + for (ListIterator it = list.asList().listIterator(); + it.hasNext(); ) { + Attribute attr = it.next(); + if (attr.getName().equals("SpecificationVersion")) { + it.remove(); + if (specVersion != POISON_PILL) { + attr = new Attribute(attr.getName(), specVersion); + it.add(attr); + } + } + } + return list; + } + + public AttributeList setAttributes(AttributeList attributes) { + return delegate.setAttributes(attributes); + } + + public Object invoke(String actionName, Object[] params, + String[] signature) throws MBeanException, + ReflectionException { + return delegate.invoke(actionName, params, signature); + } + + public MBeanInfo getMBeanInfo() { + throw new UnsupportedOperationException("Not supported yet."); + } + } + + private static class MBeanServerWithVersion extends MBeanServerSupport { + private final DynamicMBean delegate; + + public MBeanServerWithVersion(Object specVersion) { + this.delegate = new FakeDelegate(specVersion); + } + + @Override + public DynamicMBean getDynamicMBeanFor(ObjectName name) + throws InstanceNotFoundException { + if (MBeanServerDelegate.DELEGATE_NAME.equals(name)) + return delegate; + else + throw new InstanceNotFoundException(name); + } + + @Override + protected Set getNames() { + return Collections.singleton(MBeanServerDelegate.DELEGATE_NAME); + } + } + + private static class EmptyMBeanServer extends MBeanServerSupport { + @Override + public DynamicMBean getDynamicMBeanFor(ObjectName name) throws InstanceNotFoundException { + throw new InstanceNotFoundException(name); + } + + @Override + protected Set getNames() { + return Collections.emptySet(); + } + } + + public static void main(String[] args) throws Exception { + MBeanServer mbs = MBeanServerFactory.newMBeanServer(); + JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///"); + JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer( + url, null, mbs); + cs.start(); + + String realVersion = (String) mbs.getAttribute( + MBeanServerDelegate.DELEGATE_NAME, "SpecificationVersion"); + assertEquals("Reported local version", + realVersion, JMX.getSpecificationVersion(mbs, null)); + assertEquals("Reported local version >= \"2.0\"", + true, (realVersion.compareTo("2.0") >= 0)); + + JMXConnector cc = JMXConnectorFactory.connect(cs.getAddress()); + MBeanServerConnection mbsc = cc.getMBeanServerConnection(); + assertEquals("Reported remote version", + realVersion, JMX.getSpecificationVersion(mbsc, null)); + + cc.close(); + try { + String brokenVersion = JMX.getSpecificationVersion(mbsc, null); + fail("JMX.getSpecificationVersion succeded over closed connection" + + " (returned " + brokenVersion + ")"); + } catch (Exception e) { + assertEquals("Exception for closed connection", + IOException.class, e.getClass()); + } + + try { + String brokenVersion = JMX.getSpecificationVersion( + new EmptyMBeanServer(), null); + fail("JMX.getSpecificationVersion succeded with empty MBean Server" + + " (returned " + brokenVersion + ")"); + } catch (Exception e) { + assertEquals("Exception for empty MBean Server", + IOException.class, e.getClass()); + } + + try { + String brokenVersion = JMX.getSpecificationVersion(null, null); + fail("JMX.getSpecificationVersion succeded with null MBean Server" + + " (returned " + brokenVersion + ")"); + } catch (Exception e) { + assertEquals("Exception for null MBean Server", + IllegalArgumentException.class, e.getClass()); + } + + MBeanServer mbs1_2 = new MBeanServerWithVersion("1.2"); + String version1_2 = JMX.getSpecificationVersion(mbs1_2, null); + assertEquals("Version for 1.2 MBean Server", "1.2", version1_2); + + // It's completely nutty for an MBean Server to return null as the + // value of its spec version, and we don't actually say what happens + // in that case, but in fact we return the null to the caller. + MBeanServer mbs_null = new MBeanServerWithVersion(null); + String version_null = JMX.getSpecificationVersion(mbs_null, null); + assertEquals("Version for MBean Server that declares null spec version", + null, version_null); + + try { + MBeanServer mbs1_2_float = new MBeanServerWithVersion(1.2f); + String version1_2_float = + JMX.getSpecificationVersion(mbs1_2_float, null); + fail("JMX.getSpecificationVersion succeeded with version 1.2f" + + " (returned " + version1_2_float + ")"); + } catch (Exception e) { + assertEquals("Exception for non-string version (1.2f)", + IOException.class, e.getClass()); + } + + try { + MBeanServer mbs_missing = new MBeanServerWithVersion(POISON_PILL); + String version_missing = + JMX.getSpecificationVersion(mbs_missing, null); + fail("JMX.getSpecificationVersion succeeded with null version" + + " (returned " + version_missing + ")"); + } catch (Exception e) { + assertEquals("Exception for missing version", + IOException.class, e.getClass()); + } + + ObjectName wildcardNamespaceName = new ObjectName("foo//*//bar//baz:k=v"); + try { + String brokenVersion = + JMX.getSpecificationVersion(mbsc, wildcardNamespaceName); + fail("JMX.getSpecificationVersion succeeded with wildcard namespace" + + " (returned " + brokenVersion + ")"); + } catch (Exception e) { + assertEquals("Exception for wildcard namespace", + IllegalArgumentException.class, e.getClass()); + } + + String sub1_2namespace = "blibby"; + JMXNamespace sub1_2 = new JMXNamespace(mbs1_2); + ObjectName sub1_2name = + JMXNamespaces.getNamespaceObjectName(sub1_2namespace); + mbs.registerMBean(sub1_2, sub1_2name); + String sub1_2namespaceHandlerVersion = + JMX.getSpecificationVersion(mbs, sub1_2name); + assertEquals("Spec version of namespace handler", + realVersion, sub1_2namespaceHandlerVersion); + // The namespace handler is in the top-level namespace so its + // version should not be 1.2. + + for (String nameInSub : new String[] {"*:*", "d:k=v"}) { + ObjectName subName = new ObjectName(sub1_2namespace + "//" + nameInSub); + String subVersion = JMX.getSpecificationVersion(mbs, subName); + assertEquals("Spec version in 1.2 namespace (" + nameInSub + ")", + "1.2", subVersion); + } + + mbs.unregisterMBean(sub1_2name); + for (String noSuchNamespace : new String[] { + sub1_2namespace + "//*:*", sub1_2namespace + "//d:k=v", + }) { + try { + String brokenVersion = JMX.getSpecificationVersion( + mbs, new ObjectName(noSuchNamespace)); + fail("JMX.getSpecificationVersion succeeded with missing " + + "namespace (" + noSuchNamespace + " -> " + + brokenVersion); + } catch (Exception e) { + assertEquals("Exception for missing namespace", + IOException.class, e.getClass()); + } + } + + if (failure != null) + throw new Exception("TEST FAILED: " + failure); + System.out.println("TEST PASSED"); + } + + private static void assertEquals(String what, Object expect, Object actual) { + if (equal(expect, actual)) + System.out.println("OK: " + what + ": " + expect); + else + fail(what + ": expected " + expect + ", got " + actual); + } + + private static boolean equal(Object x, Object y) { + if (x == null) + return (y == null); + else + return x.equals(y); + } + + private static void fail(String why) { + System.out.println("FAILED: " + why); + failure = why; + } +} diff --git a/test/javax/management/standardmbean/FindMethodTest.java b/test/javax/management/standardmbean/FindMethodTest.java new file mode 100644 index 0000000000000000000000000000000000000000..b568d70ac8833914f459bc7906beb8ba91fe5dc8 --- /dev/null +++ b/test/javax/management/standardmbean/FindMethodTest.java @@ -0,0 +1,384 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6287328 + * @summary Add methods to StandardMBean to retrieve a method based on + * MBean{Attribute|Operation}Info + * @author Jean-Francois Denise + * @run main FindMethodTest + */ + +import java.lang.management.ManagementFactory; +import java.lang.management.MemoryMXBean; +import java.lang.management.ThreadMXBean; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import javax.management.MBean; +import javax.management.MBeanAttributeInfo; +import javax.management.MBeanInfo; +import javax.management.MBeanOperationInfo; +import javax.management.MBeanParameterInfo; +import javax.management.MBeanServer; +import javax.management.ManagedAttribute; +import javax.management.ManagedOperation; +import javax.management.ObjectName; +import javax.management.StandardMBean; + +public class FindMethodTest { + + private static MBeanServer server = + ManagementFactory.getPlatformMBeanServer(); + + private static Map> expectedMapping = + new HashMap>(); + private static Set STATE_SET = new HashSet(); + private static Set ENABLED_SET = new HashSet(); + private static Set DOIT_SET = new HashSet(); + private static Set STATUS_SET = new HashSet(); + private static Set HEAPMEMORYUSAGE_SET = new HashSet(); + private static Set THREADINFO_SET = new HashSet(); + private static Set DOIT_ANNOTATED_SET = new HashSet(); + private static Set IT_ANNOTATED_SET = new HashSet(); + private static HashSet> TEST_MBEAN_SET = + new HashSet>(); + private static HashSet> ANNOTATED_MBEAN_SET = + new HashSet>(); + private static HashSet> MEMORY_MBEAN_SET = + new HashSet>(); + private static HashSet> THREAD_MBEAN_SET = + new HashSet>(); + + public interface TestMBean { + + public void doIt(); + + public void setState(String str); + + public String getState(); + + public boolean isEnabled(); + + public void setStatus(int i); + } + + public interface FaultyTestMBean { + + public void doIt(String doIt); + + public long getState(); + + public void setEnabled(boolean b); + + public int getStatus(); + + public String setWrong(int i); + } + + @MBean + public static class AnnotatedTest { + @ManagedOperation + public void doItAnnotated() { + + } + + public void dontDoIt() { + + } + + @ManagedAttribute + public String getItAnnotated() { + return null; + } + @ManagedAttribute + public void setItAnnotated(String str) { + + } + + public String getItNot() { + return null; + } + + } + + static class Test implements TestMBean { + + public void doIt() { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void setState(String str) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public String getState() { + throw new UnsupportedOperationException("Not supported yet."); + } + + public boolean isEnabled() { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void setStatus(int i) { + throw new UnsupportedOperationException("Not supported yet."); + } + } + + + static { + try { + ENABLED_SET.add(TestMBean.class.getDeclaredMethod("isEnabled")); + + STATE_SET.add(TestMBean.class.getDeclaredMethod("getState")); + STATE_SET.add(TestMBean.class.getDeclaredMethod("setState", + String.class)); + STATUS_SET.add(TestMBean.class.getDeclaredMethod("setStatus", + int.class)); + + DOIT_SET.add(TestMBean.class.getDeclaredMethod("doIt")); + + DOIT_ANNOTATED_SET.add(AnnotatedTest.class.getDeclaredMethod("doItAnnotated")); + + IT_ANNOTATED_SET.add(AnnotatedTest.class.getDeclaredMethod("getItAnnotated")); + IT_ANNOTATED_SET.add(AnnotatedTest.class.getDeclaredMethod("setItAnnotated", String.class)); + + THREADINFO_SET.add(ThreadMXBean.class.getDeclaredMethod("dumpAllThreads", boolean.class, + boolean.class)); + + HEAPMEMORYUSAGE_SET.add(MemoryMXBean.class.getDeclaredMethod("getHeapMemoryUsage")); + + TEST_MBEAN_SET.add(ENABLED_SET); + TEST_MBEAN_SET.add(STATE_SET); + TEST_MBEAN_SET.add(STATUS_SET); + TEST_MBEAN_SET.add(DOIT_SET); + + ANNOTATED_MBEAN_SET.add(DOIT_ANNOTATED_SET); + ANNOTATED_MBEAN_SET.add(IT_ANNOTATED_SET); + + MEMORY_MBEAN_SET.add(HEAPMEMORYUSAGE_SET); + + THREAD_MBEAN_SET.add(THREADINFO_SET); + + expectedMapping.put("State", STATE_SET); + expectedMapping.put("Enabled", ENABLED_SET); + expectedMapping.put("Status", STATUS_SET); + expectedMapping.put("doIt", DOIT_SET); + expectedMapping.put("HeapMemoryUsage", HEAPMEMORYUSAGE_SET); + expectedMapping.put("dumpAllThreads", THREADINFO_SET); + expectedMapping.put("doItAnnotated", DOIT_ANNOTATED_SET); + expectedMapping.put("ItAnnotated", IT_ANNOTATED_SET); + + } catch (Exception ex) { + ex.printStackTrace(); + throw new RuntimeException("Initialization failed"); + } + } + + private static void testMBean(ObjectName name, Class itf, + HashSet> expectMappings) + throws Exception { + + Set> expectedMappings = + (Set>) expectMappings.clone(); + + MBeanInfo info = server.getMBeanInfo(name); + for (MBeanAttributeInfo attr : info.getAttributes()) { + Set expected = expectedMapping.get(attr.getName()); + if (expected == null) { + continue; + } + if (!expectedMappings.remove(expected)) { + throw new Exception("The mapping to use is not the expected " + + "one for " + attr); + } + System.out.println("Expected : " + expected); + Set found = + StandardMBean.findAttributeAccessors(itf, attr); + System.out.println("Found : " + found); + if (!found.equals(expected)) { + throw new Exception("Mapping error."); + } + } + for (MBeanOperationInfo op : info.getOperations()) { + Set expected = expectedMapping.get(op.getName()); + if (expected == null) { + continue; + } + if (!expectedMappings.remove(expected)) { + throw new Exception("The mapping to use is not the expected " + + "one for " + op); + } + System.out.println("Expected : " + expected); + Method method = + StandardMBean.findOperationMethod(itf, op); + Set found = new HashSet(); + found.add(method); + System.out.println("Found : " + found); + if (!found.equals(expected)) { + throw new Exception("Mapping error."); + } + } + + if (expectedMappings.size() != 0) { + throw new Exception("Some mapping have not been found " + + expectedMappings); + } else { + System.out.println("All mappings have been found"); + } + } + + public static void main(String[] args) throws Exception { + // Positive tests + Test t = new Test(); + ObjectName name = ObjectName.valueOf(":type=Test"); + server.registerMBean(t, name); + AnnotatedTest at = new AnnotatedTest(); + ObjectName annotatedName = ObjectName.valueOf(":type=AnnotatedTest"); + server.registerMBean(at, annotatedName); + + testMBean(name, TestMBean.class, TEST_MBEAN_SET); + + testMBean(annotatedName, AnnotatedTest.class, ANNOTATED_MBEAN_SET); + + ObjectName memoryName = + ObjectName.valueOf(ManagementFactory.MEMORY_MXBEAN_NAME); + testMBean(memoryName, MemoryMXBean.class, MEMORY_MBEAN_SET); + + ObjectName threadName = + ObjectName.valueOf(ManagementFactory.THREAD_MXBEAN_NAME); + testMBean(threadName, ThreadMXBean.class, THREAD_MBEAN_SET); + + // Negative tests + try { + StandardMBean.findOperationMethod(null, + new MBeanOperationInfo("Test", + TestMBean.class.getDeclaredMethod("doIt"))); + throw new Exception("Expected exception not found"); + } catch (IllegalArgumentException ex) { + System.out.println("OK received expected exception " + ex); + } + try { + StandardMBean.findOperationMethod(TestMBean.class, null); + throw new Exception("Expected exception not found"); + } catch (IllegalArgumentException ex) { + System.out.println("OK received expected exception " + ex); + } + try { + StandardMBean.findAttributeAccessors(null, + new MBeanAttributeInfo("Test", "Test", + TestMBean.class.getDeclaredMethod("getState"), + TestMBean.class.getDeclaredMethod("setState", + String.class))); + throw new Exception("Expected exception not found"); + } catch (IllegalArgumentException ex) { + System.out.println("OK received expected exception " + ex); + } + try { + StandardMBean.findAttributeAccessors(TestMBean.class, null); + throw new Exception("Expected exception not found"); + } catch (IllegalArgumentException ex) { + System.out.println("OK received expected exception " + ex); + } + //Wrong operation signature + try { + StandardMBean.findOperationMethod(TestMBean.class, + new MBeanOperationInfo("FaultyTest", + FaultyTestMBean.class.getDeclaredMethod("doIt", + String.class))); + throw new Exception("Expected exception not found"); + } catch (NoSuchMethodException ex) { + System.out.println("OK received expected exception " + ex); + } + //Wrong attribute accessor + try { + StandardMBean.findAttributeAccessors(TestMBean.class, + new MBeanAttributeInfo("FaultyTest", "FaultyTest", null, + FaultyTestMBean.class.getDeclaredMethod("setEnabled", + String.class))); + throw new Exception("Expected exception not found"); + } catch (NoSuchMethodException ex) { + System.out.println("OK received expected exception " + ex); + } + //Wrong attribute type + try { + StandardMBean.findAttributeAccessors(TestMBean.class, + new MBeanAttributeInfo("State", "toto.FaultType", + "FaultyTest", true, true, false)); + throw new Exception("Expected exception not found"); + } catch (ClassNotFoundException ex) { + System.out.println("OK received expected exception " + ex); + } + //Wrong operation parameter type + try { + MBeanParameterInfo[] p = {new MBeanParameterInfo("p1", + "toto.FaultType2", "FaultyParameter") + }; + StandardMBean.findOperationMethod(TestMBean.class, + new MBeanOperationInfo("doIt", "FaultyMethod", p, "void", + 0)); + throw new Exception("Expected exception not found"); + } catch (ClassNotFoundException ex) { + System.out.println("OK received expected exception " + ex); + } + // Check that not annotated attributes are not found + try { + StandardMBean.findAttributeAccessors(AnnotatedTest.class, + new MBeanAttributeInfo("ItNot", String.class.getName(), + "FaultyTest", true, false, false)); + throw new Exception("Expected exception not found"); + } catch (NoSuchMethodException ex) { + System.out.println("OK received expected exception " + ex); + } + // Check that not annotated operations are not found + try { + StandardMBean.findOperationMethod(AnnotatedTest.class, + new MBeanOperationInfo("dontDoIt","dontDoIt",null, + Void.TYPE.getName(),0)); + throw new Exception("Expected exception not found"); + } catch (NoSuchMethodException ex) { + System.out.println("OK received expected exception " + ex); + } + // Check that wrong getter return type throws Exception + try { + StandardMBean.findAttributeAccessors(AnnotatedTest.class, + new MBeanAttributeInfo("ItAnnotated", Long.class.getName(), + "FaultyTest", true, false, false)); + throw new Exception("Expected exception not found"); + } catch (NoSuchMethodException ex) { + System.out.println("OK received expected exception " + ex); + } + // Check that wrong setter return type throws Exception + try { + StandardMBean.findAttributeAccessors(FaultyTestMBean.class, + new MBeanAttributeInfo("Wrong", String.class.getName(), + "FaultyTest", true, true, false)); + throw new Exception("Expected exception not found"); + } catch (NoSuchMethodException ex) { + System.out.println("OK received expected exception " + ex); + } + } +} diff --git a/test/javax/management/standardmbean/RegistrationTest.java b/test/javax/management/standardmbean/RegistrationTest.java new file mode 100644 index 0000000000000000000000000000000000000000..9ca0c464f00969c923952510f5a278376d248de7 --- /dev/null +++ b/test/javax/management/standardmbean/RegistrationTest.java @@ -0,0 +1,91 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6450834 + * @summary Forward MBeanRegistration calls + * @author JF Denise + * @run main RegistrationTest + */ + +import java.io.Serializable; +import java.lang.management.ManagementFactory; +import javax.management.*; + +public class RegistrationTest { + static boolean preRegisterCalled; + static boolean postRegisterCalled; + static boolean preDeregisterCalled; + static boolean postDeregisterCalled; + + static void checkResult(boolean expected) throws Exception { + if((preRegisterCalled != expected || + postRegisterCalled != expected || + preDeregisterCalled != expected || + postDeregisterCalled != expected)) + throw new Exception("Mismatch preRegisterCalled = " + + preRegisterCalled + ", postRegisterCalled = " + + postRegisterCalled + ", preDeregisterCalled = " + + preDeregisterCalled + ", postDeregisterCalled = " + + postDeregisterCalled); + } + static class Wrapped implements MBeanRegistration,Serializable { + + public ObjectName preRegister(MBeanServer server, ObjectName name) + throws Exception { + preRegisterCalled = true; + return name; + } + + public void postRegister(Boolean registrationDone) { + postRegisterCalled = true; + } + + public void preDeregister() throws Exception { + preDeregisterCalled = true; + } + + public void postDeregister() { + postDeregisterCalled = true; + } + + } + + public static void main(String[] args) throws Exception { + StandardMBean std = new StandardMBean(new Wrapped(), + Serializable.class); + ObjectName name = ObjectName.valueOf(":type=Test"); + ManagementFactory.getPlatformMBeanServer().registerMBean(std,name); + ManagementFactory.getPlatformMBeanServer().unregisterMBean(name); + checkResult(false); + StandardMBean.Options opt = new StandardMBean.Options(); + opt.setMBeanRegistrationForwarded(true); + std = new StandardMBean(new Wrapped(), + Serializable.class, opt ); + ManagementFactory.getPlatformMBeanServer().registerMBean(std,name); + ManagementFactory.getPlatformMBeanServer().unregisterMBean(name); + checkResult(true); + System.out.println("Test OK"); + } +} diff --git a/test/javax/swing/RepaintManager/6608456/bug6608456.java b/test/javax/swing/RepaintManager/6608456/bug6608456.java index 1d8a14fcaa2c737bdfd806721c99d527f51dfc83..b5087c4aaecf02d16c8e96123f646e33d9d64ef1 100644 --- a/test/javax/swing/RepaintManager/6608456/bug6608456.java +++ b/test/javax/swing/RepaintManager/6608456/bug6608456.java @@ -1,5 +1,5 @@ /* - * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/test/javax/swing/text/html/HRuleView/Test5062055.java b/test/javax/swing/text/html/HRuleView/Test5062055.java index 4fe2dbbcc9b6809f34510b2ac56e454101d7a6ee..804009279fee0aa559bb1e22e28d843c82c44022 100644 --- a/test/javax/swing/text/html/HRuleView/Test5062055.java +++ b/test/javax/swing/text/html/HRuleView/Test5062055.java @@ -1,5 +1,5 @@ /* - * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/test/javax/xml/crypto/dsig/GenerationTests.java b/test/javax/xml/crypto/dsig/GenerationTests.java index bb4aff50ba41747260e0feddda65e164a7085dc2..ea4fd610e1ed658477f163b5478c3a85f78d316c 100644 --- a/test/javax/xml/crypto/dsig/GenerationTests.java +++ b/test/javax/xml/crypto/dsig/GenerationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2005-2007 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2005-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/test/lib/security/cacerts/VerifyCACerts.java b/test/lib/security/cacerts/VerifyCACerts.java index 774908cca54bdc61d70ddee0cd08f4dcbace9bb4..a5559a0e7553ffe9b63d18d5abb6fa16d70c7aa3 100644 --- a/test/lib/security/cacerts/VerifyCACerts.java +++ b/test/lib/security/cacerts/VerifyCACerts.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2006 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,11 +23,12 @@ /** * @test - * @bug 4400624 6321453 + * @bug 4400624 6321453 6728890 6732157 6754779 6768559 * @summary Make sure all self-signed root cert signatures are valid */ import java.io.FileInputStream; import java.security.KeyStore; +import java.security.MessageDigest; import java.security.cert.*; import java.util.*; @@ -39,25 +40,102 @@ public class VerifyCACerts { System.getProperty("file.separator") + "security" + System.getProperty("file.separator") + "cacerts"; + private static boolean atLeastOneFailed = false; + + private static MessageDigest md; + + // map of cert alias to SHA1 fingerprint + private static Map fpMap = new HashMap(); + + private static String[][] entries = { + { "swisssignsilverg2ca", "9B:AA:E5:9F:56:EE:21:CB:43:5A:BE:25:93:DF:A7:F0:40:D1:1D:CB"}, + { "swisssigngoldg2ca", "D8:C5:38:8A:B7:30:1B:1B:6E:D4:7A:E6:45:25:3A:6F:9F:1A:27:61"}, + { "swisssignplatinumg2ca", "56:E0:FA:C0:3B:8F:18:23:55:18:E5:D3:11:CA:E8:C2:43:31:AB:66"}, + { "verisigntsaca", "BE:36:A4:56:2F:B2:EE:05:DB:B3:D3:23:23:AD:F4:45:08:4E:D6:56"}, + { "camerfirmachambersignca", "4A:BD:EE:EC:95:0D:35:9C:89:AE:C7:52:A1:2C:5B:29:F6:D6:AA:0C"}, + { "camerfirmachambersca", "78:6A:74:AC:76:AB:14:7F:9C:6A:30:50:BA:9E:A8:7E:FE:9A:CE:3C"}, + { "camerfirmachamberscommerceca", "6E:3A:55:A4:19:0C:19:5C:93:84:3C:C0:DB:72:2E:31:30:61:F0:B1"}, + { "deutschetelekomrootca2", "85:A4:08:C0:9C:19:3E:5D:51:58:7D:CD:D6:13:30:FD:8C:DE:37:BF"}, + }; + + static { + for (String[] entry : entries) { + fpMap.put(entry[0], entry[1]); + } + }; + public static void main(String[] args) throws Exception { + md = MessageDigest.getInstance("SHA1"); + KeyStore ks = KeyStore.getInstance("JKS"); + ks.load(new FileInputStream(cacertsFileName), "changeit".toCharArray()); + // check that all entries in the map are in the keystore + for (String alias : fpMap.keySet()) { + if (!ks.isCertificateEntry(alias)) { + atLeastOneFailed = true; + System.err.println(alias + " is not in cacerts"); + } + } // pull all the trusted self-signed CA certs out of the cacerts file // and verify their signatures - KeyStore ks = KeyStore.getInstance("JKS"); - ks.load(new FileInputStream(cacertsFileName), "changeit".toCharArray()); Enumeration aliases = ks.aliases(); while (aliases.hasMoreElements()) { String alias = aliases.nextElement(); System.out.println("Verifying " + alias); - if (!ks.isCertificateEntry(alias)) - throw new Exception(alias + " is not a trusted cert entry"); + if (!ks.isCertificateEntry(alias)) { + atLeastOneFailed = true; + System.err.println(alias + " is not a trusted cert entry"); + } Certificate cert = ks.getCertificate(alias); // remember the GTE CyberTrust CA cert for further tests if (alias.equals("gtecybertrustca")) { - throw new Exception + atLeastOneFailed = true; + System.err.println ("gtecybertrustca is expired and should be deleted"); } cert.verify(cert.getPublicKey()); + if (!checkFingerprint(alias, cert)) { + atLeastOneFailed = true; + System.err.println + (alias + " SHA1 fingerprint is incorrect"); + } + } + + if (atLeastOneFailed) { + throw new Exception("At least one cacert test failed"); + } + } + + private static boolean checkFingerprint(String alias, Certificate cert) + throws Exception { + String fingerprint = fpMap.get(alias); + if (fingerprint == null) { + // no entry for alias + return true; + } + System.out.println("Checking fingerprint of " + alias); + byte[] digest = md.digest(cert.getEncoded()); + return fingerprint.equals(toHexString(digest)); + } + + private static String toHexString(byte[] block) { + StringBuffer buf = new StringBuffer(); + int len = block.length; + for (int i = 0; i < len; i++) { + byte2hex(block[i], buf); + if (i < len-1) { + buf.append(":"); + } } + return buf.toString(); + } + + private static void byte2hex(byte b, StringBuffer buf) { + char[] hexChars = { '0', '1', '2', '3', '4', '5', '6', '7', '8', + '9', 'A', 'B', 'C', 'D', 'E', 'F' }; + int high = ((b & 0xf0) >> 4); + int low = (b & 0x0f); + buf.append(hexChars[high]); + buf.append(hexChars[low]); } } diff --git a/test/sun/jvmstat/monitor/MonitoredVm/CR6672135.java b/test/sun/jvmstat/monitor/MonitoredVm/CR6672135.java new file mode 100644 index 0000000000000000000000000000000000000000..9a75f3da644241da3bd13e85963a47cd36095897 --- /dev/null +++ b/test/sun/jvmstat/monitor/MonitoredVm/CR6672135.java @@ -0,0 +1,71 @@ +/* + * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +import java.net.URISyntaxException; +import java.util.Set; +import sun.jvmstat.monitor.MonitorException; +import sun.jvmstat.monitor.MonitoredHost; +import sun.jvmstat.monitor.MonitoredVm; +import sun.jvmstat.monitor.VmIdentifier; + +/** + * + * @test + * @bug 6672135 + * @summary setInterval() for local MonitoredHost and local MonitoredVm + * @author Tomas Hurka + */ +public class CR6672135 { + + private static final int INTERVAL = 2000; + + public static void main(String[] args) { + int vmInterval; + int hostInterval; + + try { + MonitoredHost localHost = MonitoredHost.getMonitoredHost("localhost"); + Set vms = localHost.activeVms(); + Integer vmInt = (Integer) vms.iterator().next(); + String uriString = "//" + vmInt + "?mode=r"; // NOI18N + VmIdentifier vmId = new VmIdentifier(uriString); + MonitoredVm vm = localHost.getMonitoredVm(vmId); + + vm.setInterval(INTERVAL); + localHost.setInterval(INTERVAL); + vmInterval = vm.getInterval(); + hostInterval = localHost.getInterval(); + } catch (Exception ex) { + throw new Error ("Test failed",ex); + } + System.out.println("VM "+vmInterval); + if (vmInterval != INTERVAL) { + throw new Error("Test failed"); + } + System.out.println("Host "+hostInterval); + if (hostInterval != INTERVAL) { + throw new Error("Test failed"); + } + } +} + diff --git a/test/sun/management/jmxremote/LocalRMIServerSocketFactoryTest.java b/test/sun/management/jmxremote/LocalRMIServerSocketFactoryTest.java new file mode 100644 index 0000000000000000000000000000000000000000..614c68fb14e5f9d0920e1b2d34c06e6b2623893c --- /dev/null +++ b/test/sun/management/jmxremote/LocalRMIServerSocketFactoryTest.java @@ -0,0 +1,145 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/** + * @test LocalRMIServerSocketFactoryTest.java + * @bug 6774170 + * @summary Connect to a server socket returned by the LocalRMIServerSocketFactory. + * + * @author Daniel Fuchs + * + * @run compile -XDignore.symbol.file=true -source 1.6 -g LocalRMIServerSocketFactoryTest.java + * @run main LocalRMIServerSocketFactoryTest + */ + +import sun.management.jmxremote.LocalRMIServerSocketFactory; +import java.io.IOException; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.concurrent.SynchronousQueue; + +public class LocalRMIServerSocketFactoryTest { + + private static final SynchronousQueue queue = + new SynchronousQueue(); + + static final class Result extends Exception { + + private Result() { + super("SUCCESS: No exception was thrown"); + } + static final Result SUCCESS = new Result(); + } + + private static void checkError(String message) throws Exception { + + // Wait for the server to set the error field. + final Exception x = queue.take(); + + if (x == Result.SUCCESS) { + return; + } + + + // case of 6674166: this is very unlikely to happen, even if + // both 6674166 and 6774170 aren't fixed. If it happens + // however, it might indicate that neither defects are fixed. + + if (x instanceof NullPointerException) { + throw new Exception(message + " - " + + "Congratulations! it seems you have triggered 6674166. " + + "Neither 6674166 nor 6774170 seem to be fixed: " + x, x); + } else if (x instanceof IOException) { + throw new Exception(message + " - " + + "Unexpected IOException. Maybe you triggered 6674166? " + + x, x); + } else if (x != null) { + throw new Exception(message + " - " + + "Ouch, that's bad. " + + "This is a new kind of unexpected exception " + + x, x); + } + } + + public static void main(String[] args) throws Exception { + final LocalRMIServerSocketFactory f = + new LocalRMIServerSocketFactory(); + final ServerSocket s = f.createServerSocket(0); + final int port = s.getLocalPort(); + Thread t = new Thread() { + + public void run() { + while (true) { + Exception error = Result.SUCCESS; + try { + System.err.println("Accepting: "); + final Socket ss = s.accept(); + System.err.println(ss.getInetAddress() + " accepted"); + } catch (Exception x) { + x.printStackTrace(); + error = x; + } finally { + try { + // wait for the client to get the exception. + queue.put(error); + } catch (Exception x) { + // too bad! + System.err.println("Could't send result to client!"); + x.printStackTrace(); + return; + } + } + } + } + }; + t.setDaemon(true); + t.start(); + + System.err.println("new Socket((String)null, port)"); + final Socket s1 = new Socket((String) null, port); + checkError("new Socket((String)null, port)"); + s1.close(); + System.err.println("new Socket((String)null, port): PASSED"); + + System.err.println("new Socket(InetAddress.getByName(null), port)"); + final Socket s2 = new Socket(InetAddress.getByName(null), port); + checkError("new Socket(InetAddress.getByName(null), port)"); + s2.close(); + System.err.println("new Socket(InetAddress.getByName(null), port): PASSED"); + + System.err.println("new Socket(localhost, port)"); + final Socket s3 = new Socket("localhost", port); + checkError("new Socket(localhost, port)"); + s3.close(); + System.err.println("new Socket(localhost, port): PASSED"); + + System.err.println("new Socket(127.0.0.1, port)"); + final Socket s4 = new Socket("127.0.0.1", port); + checkError("new Socket(127.0.0.1, port)"); + s4.close(); + System.err.println("new Socket(127.0.0.1, port): PASSED"); + + } +} diff --git a/test/sun/security/krb5/auto/Action.java b/test/sun/security/krb5/auto/Action.java new file mode 100644 index 0000000000000000000000000000000000000000..1e7073dc1ff792541cebcb8ccf3146e871c8cd1f --- /dev/null +++ b/test/sun/security/krb5/auto/Action.java @@ -0,0 +1,33 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/** + * Action used in Context.doAs + */ +public interface Action { + /** + * This method always reads a byte block and emits another one + */ + byte[] run(Context s, byte[] input) throws Exception; +} + diff --git a/test/sun/security/krb5/auto/BasicKrb5Test.java b/test/sun/security/krb5/auto/BasicKrb5Test.java new file mode 100644 index 0000000000000000000000000000000000000000..26d52e0787cdb5a8afecb56b1afb725f49f65445 --- /dev/null +++ b/test/sun/security/krb5/auto/BasicKrb5Test.java @@ -0,0 +1,114 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6706974 + * @summary Add krb5 test infrastructure + */ + +import org.ietf.jgss.GSSName; +import sun.security.jgss.GSSUtil; +import sun.security.krb5.Config; +import sun.security.krb5.internal.crypto.EType; + +/** + * Basic JGSS/krb5 test with 3 parties: client, server, backend server. Each + * party uses JAAS login to get subjects and executes JGSS calls using + * Subject.doAs. + */ +public class BasicKrb5Test { + + /** + * @param args empty or etype + */ + public static void main(String[] args) + throws Exception { + + String etype = null; + if (args.length > 0) { + etype = args[0]; + } + + // Creates and starts the KDC. This line must be put ahead of etype check + // since the check needs a krb5.conf. + new OneKDC(etype).writeJAASConf(); + + System.out.println("Testing etype " + etype); + if (etype != null && !EType.isSupported(Config.getInstance().getType(etype))) { + System.out.println("Not supported."); + System.exit(0); + } + + new BasicKrb5Test().go(OneKDC.SERVER, OneKDC.BACKEND); + } + + void go(final String server, final String backend) throws Exception { + Context c, s, s2, b; + c = Context.fromJAAS("client"); + s = Context.fromJAAS("server"); + b = Context.fromJAAS("backend"); + + c.startAsClient(server, GSSUtil.GSS_KRB5_MECH_OID); + c.x().requestCredDeleg(true); + s.startAsServer(GSSUtil.GSS_KRB5_MECH_OID); + + c.status(); + s.status(); + + Context.handshake(c, s); + GSSName client = c.x().getSrcName(); + + c.status(); + s.status(); + + Context.transmit("i say high --", c, s); + Context.transmit(" you say low", s, c); + + s2 = s.delegated(); + s.dispose(); + s = null; + + s2.startAsClient(backend, GSSUtil.GSS_KRB5_MECH_OID); + b.startAsServer(GSSUtil.GSS_KRB5_MECH_OID); + + s2.status(); + b.status(); + + Context.handshake(s2, b); + GSSName client2 = b.x().getSrcName(); + + if (!client.equals(client2)) { + throw new Exception("Delegation failed"); + } + + s2.status(); + b.status(); + + Context.transmit("you say hello --", s2, b); + Context.transmit(" i say goodbye", b, s2); + + s2.dispose(); + b.dispose(); + } +} diff --git a/test/sun/security/krb5/auto/CleanState.java b/test/sun/security/krb5/auto/CleanState.java new file mode 100644 index 0000000000000000000000000000000000000000..8f79fd8e70e8554207c98ea99c939af2e9a55419 --- /dev/null +++ b/test/sun/security/krb5/auto/CleanState.java @@ -0,0 +1,75 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6716534 + * @summary Krb5LoginModule has not cleaned temp info between authentication attempts + */ +import com.sun.security.auth.module.Krb5LoginModule; +import java.util.HashMap; +import java.util.Map; +import javax.security.auth.Subject; +import javax.security.auth.callback.Callback; +import javax.security.auth.callback.CallbackHandler; +import javax.security.auth.callback.NameCallback; +import javax.security.auth.callback.PasswordCallback; + +public class CleanState { + public static void main(String[] args) throws Exception { + CleanState x = new CleanState(); + new OneKDC(null); + x.go(); + } + + void go() throws Exception { + Krb5LoginModule krb5 = new Krb5LoginModule(); + + final String name = OneKDC.USER; + final char[] password = OneKDC.PASS; + char[] badpassword = "hellokitty".toCharArray(); + + Map map = new HashMap(); + map.put("useTicketCache", "false"); + map.put("doNotPrompt", "false"); + map.put("tryFirstPass", "true"); + Map shared = new HashMap(); + shared.put("javax.security.auth.login.name", name); + shared.put("javax.security.auth.login.password", badpassword); + + krb5.initialize(new Subject(), new CallbackHandler() { + @Override + public void handle(Callback[] callbacks) { + for(Callback callback: callbacks) { + if (callback instanceof NameCallback) { + ((NameCallback)callback).setName(name); + } + if (callback instanceof PasswordCallback) { + ((PasswordCallback)callback).setPassword(password); + } + } + } + }, shared, map); + krb5.login(); + } +} diff --git a/test/sun/security/krb5/auto/Context.java b/test/sun/security/krb5/auto/Context.java new file mode 100644 index 0000000000000000000000000000000000000000..2439aa240376edca54527db2055b820d12f0c705 --- /dev/null +++ b/test/sun/security/krb5/auto/Context.java @@ -0,0 +1,403 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +import com.sun.security.auth.module.Krb5LoginModule; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import javax.security.auth.Subject; +import javax.security.auth.kerberos.KerberosKey; +import javax.security.auth.kerberos.KerberosTicket; +import javax.security.auth.login.LoginContext; +import org.ietf.jgss.GSSContext; +import org.ietf.jgss.GSSCredential; +import org.ietf.jgss.GSSException; +import org.ietf.jgss.GSSManager; +import org.ietf.jgss.GSSName; +import org.ietf.jgss.MessageProp; +import org.ietf.jgss.Oid; + +/** + * Context of a JGSS subject, encapsulating Subject and GSSContext. + * + * Three "constructors", which acquire the (private) credentials and fill + * it into the Subject: + * + * 1. static fromJAAS(): Creates a Context using a JAAS login config entry + * 2. static fromUserPass(): Creates a Context using a username and a password + * 3. delegated(): A new context which uses the delegated credentials from a + * previously established acceptor Context + * + * Two context initiators, which create the GSSContext object inside: + * + * 1. startAsClient() + * 2. startAsServer() + * + * Privileged action: + * doAs(): Performs an action in the name of the Subject + * + * Handshake process: + * static handShake(initiator, acceptor) + * + * A four-phase typical data communication which includes all four GSS + * actions (wrap, unwrap, getMic and veryfyMiC): + * static transmit(message, from, to) + */ +public class Context { + + private Subject s; + private GSSContext x; + private boolean f; // context established? + private String name; + private GSSCredential cred; // see static method delegated(). + + private Context() {} + + /** + * Using the delegated credentials from a previous acceptor + * @param c + */ + public Context delegated() throws Exception { + Context out = new Context(); + out.s = s; + out.cred = x.getDelegCred(); + out.name = name + " as " + out.cred.getName().toString(); + return out; + } + + /** + * Logins with a JAAS login config entry name + */ + public static Context fromJAAS(final String name) throws Exception { + Context out = new Context(); + out.name = name; + LoginContext lc = new LoginContext(name); + lc.login(); + out.s = lc.getSubject(); + return out; + } + + /** + * Logins with a username and a password, using Krb5LoginModule directly + * @param storeKey true if key should be saved, used on acceptor side + */ + public static Context fromUserPass(String user, char[] pass, boolean storeKey) throws Exception { + Context out = new Context(); + out.name = user; + out.s = new Subject(); + Krb5LoginModule krb5 = new Krb5LoginModule(); + Map map = new HashMap(); + Map shared = new HashMap(); + + if (pass != null) { + map.put("useFirstPass", "true"); + shared.put("javax.security.auth.login.name", user); + shared.put("javax.security.auth.login.password", pass); + } else { + map.put("doNotPrompt", "true"); + map.put("useTicketCache", "true"); + if (user != null) { + map.put("principal", user); + } + } + if (storeKey) { + map.put("storeKey", "true"); + } + + krb5.initialize(out.s, null, shared, map); + krb5.login(); + krb5.commit(); + return out; + } + + /** + * Starts as a client + * @param target communication peer + * @param mech GSS mech + * @throws java.lang.Exception + */ + public void startAsClient(final String target, final Oid mech) throws Exception { + doAs(new Action() { + @Override + public byte[] run(Context me, byte[] dummy) throws Exception { + GSSManager m = GSSManager.getInstance(); + me.x = m.createContext( + target.indexOf('@') < 0 ? + m.createName(target, null) : + m.createName(target, GSSName.NT_HOSTBASED_SERVICE), + mech, + cred, + GSSContext.DEFAULT_LIFETIME); + return null; + } + }, null); + f = false; + } + + /** + * Starts as a server + * @param mech GSS mech + * @throws java.lang.Exception + */ + public void startAsServer(final Oid mech) throws Exception { + doAs(new Action() { + @Override + public byte[] run(Context me, byte[] dummy) throws Exception { + GSSManager m = GSSManager.getInstance(); + me.x = m.createContext(m.createCredential( + null, + GSSCredential.INDEFINITE_LIFETIME, + mech, + GSSCredential.ACCEPT_ONLY)); + return null; + } + }, null); + f = false; + } + + /** + * Accesses the internal GSSContext object. Currently it's used for -- + * + * 1. calling requestXXX() before handshake + * 2. accessing source name + * + * Note: If the application needs to do any privileged call on this + * object, please use doAs(). Otherwise, it can be done directly. The + * methods listed above are all non-privileged calls. + * + * @return the GSSContext object + */ + public GSSContext x() { + return x; + } + + /** + * Disposes the GSSContext within + * @throws org.ietf.jgss.GSSException + */ + public void dispose() throws GSSException { + x.dispose(); + } + + /** + * Does something using the Subject inside + * @param action the action + * @param in the input byte + * @return the output byte + * @throws java.lang.Exception + */ + public byte[] doAs(final Action action, final byte[] in) throws Exception { + try { + return Subject.doAs(s, new PrivilegedExceptionAction() { + + @Override + public byte[] run() throws Exception { + return action.run(Context.this, in); + } + }); + } catch (PrivilegedActionException pae) { + throw pae.getException(); + } + } + + /** + * Prints status of GSSContext and Subject + * @throws java.lang.Exception + */ + public void status() throws Exception { + System.out.println("STATUS OF " + name.toUpperCase()); + try { + StringBuffer sb = new StringBuffer(); + if (x.getAnonymityState()) { + sb.append("anon, "); + } + if (x.getConfState()) { + sb.append("conf, "); + } + if (x.getCredDelegState()) { + sb.append("deleg, "); + } + if (x.getIntegState()) { + sb.append("integ, "); + } + if (x.getMutualAuthState()) { + sb.append("mutual, "); + } + if (x.getReplayDetState()) { + sb.append("rep det, "); + } + if (x.getSequenceDetState()) { + sb.append("seq det, "); + } + System.out.println("Context status of " + name + ": " + sb.toString()); + System.out.println(x.getSrcName() + " -> " + x.getTargName()); + } catch (Exception e) { + ;// Don't care + } + System.out.println("====================================="); + for (Object o : s.getPrivateCredentials()) { + System.out.println(" " + o.getClass()); + if (o instanceof KerberosTicket) { + KerberosTicket kt = (KerberosTicket) o; + System.out.println(" " + kt.getServer() + " for " + kt.getClient()); + } else if (o instanceof KerberosKey) { + KerberosKey kk = (KerberosKey) o; + System.out.print(" " + kk.getKeyType() + " " + kk.getVersionNumber() + " " + kk.getAlgorithm() + " "); + for (byte b : kk.getEncoded()) { + System.out.printf("%02X", b & 0xff); + } + System.out.println(); + } else if (o instanceof Map) { + Map map = (Map) o; + for (Object k : map.keySet()) { + System.out.println(" " + k + ": " + map.get(k)); + } + } + } + } + + /** + * Transmits a message from one Context to another. The sender wraps the + * message and sends it to the receiver. The receiver unwraps it, creates + * a MIC of the clear text and sends it back to the sender. The sender + * verifies the MIC against the message sent earlier. + * @param message the message + * @param s1 the sender + * @param s2 the receiver + * @throws java.lang.Exception If anything goes wrong + */ + static public void transmit(final String message, final Context s1, + final Context s2) throws Exception { + final byte[] messageBytes = message.getBytes(); + System.out.printf("-------------------- TRANSMIT from %s to %s------------------------\n", + s1.name, s2.name); + + byte[] t = s1.doAs(new Action() { + @Override + public byte[] run(Context me, byte[] dummy) throws Exception { + System.out.println("wrap"); + MessageProp p1 = new MessageProp(0, true); + byte[] out = me.x.wrap(messageBytes, 0, messageBytes.length, p1); + System.out.println(printProp(p1)); + return out; + } + }, null); + + t = s2.doAs(new Action() { + @Override + public byte[] run(Context me, byte[] input) throws Exception { + MessageProp p1 = new MessageProp(0, true); + byte[] bytes = me.x.unwrap(input, 0, input.length, p1); + if (!Arrays.equals(messageBytes, bytes)) + throw new Exception("wrap/unwrap mismatch"); + System.out.println("unwrap"); + System.out.println(printProp(p1)); + p1 = new MessageProp(0, true); + System.out.println("getMIC"); + bytes = me.x.getMIC(bytes, 0, bytes.length, p1); + System.out.println(printProp(p1)); + return bytes; + } + }, t); + // Re-unwrap should make p2.isDuplicateToken() returns true + s1.doAs(new Action() { + @Override + public byte[] run(Context me, byte[] input) throws Exception { + MessageProp p1 = new MessageProp(0, true); + System.out.println("verifyMIC"); + me.x.verifyMIC(input, 0, input.length, + messageBytes, 0, messageBytes.length, + p1); + System.out.println(printProp(p1)); + return null; + } + }, t); + } + + /** + * Returns a string description of a MessageProp object + * @param prop the object + * @return the description + */ + static public String printProp(MessageProp prop) { + StringBuffer sb = new StringBuffer(); + sb.append("MessagePop: "); + sb.append("QOP="+ prop.getQOP() + ", "); + sb.append(prop.getPrivacy()?"privacy, ":""); + sb.append(prop.isDuplicateToken()?"dup, ":""); + sb.append(prop.isGapToken()?"gap, ":""); + sb.append(prop.isOldToken()?"old, ":""); + sb.append(prop.isUnseqToken()?"unseq, ":""); + sb.append(prop.getMinorString()+ "(" + prop.getMinorStatus()+")"); + return sb.toString(); + } + + /** + * Handshake (security context establishment process) between two Contexts + * @param c the initiator + * @param s the acceptor + * @throws java.lang.Exception + */ + static public void handshake(final Context c, final Context s) throws Exception { + byte[] t = new byte[0]; + while (!c.f || !s.f) { + t = c.doAs(new Action() { + @Override + public byte[] run(Context me, byte[] input) throws Exception { + if (me.x.isEstablished()) { + me.f = true; + System.out.println(c.name + " side established"); + if (input != null) { + throw new Exception("Context established but " + + "still receive token at " + c.name); + } + return null; + } else { + System.out.println(c.name + " call initSecContext"); + return me.x.initSecContext(input, 0, input.length); + } + } + }, t); + + t = s.doAs(new Action() { + @Override + public byte[] run(Context me, byte[] input) throws Exception { + if (me.x.isEstablished()) { + me.f = true; + System.out.println(s.name + " side established"); + if (input != null) { + throw new Exception("Context established but " + + "still receive token at " + s.name); + } + return null; + } else { + System.out.println(s.name + " called acceptSecContext"); + return me.x.acceptSecContext(input, 0, input.length); + } + } + }, t); + } + } +} diff --git a/test/sun/security/krb5/auto/CrossRealm.java b/test/sun/security/krb5/auto/CrossRealm.java new file mode 100644 index 0000000000000000000000000000000000000000..9b610279ebca922143e1c63044bba7891b74fc3e --- /dev/null +++ b/test/sun/security/krb5/auto/CrossRealm.java @@ -0,0 +1,101 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6706974 + * @summary Add krb5 test infrastructure + */ +import java.io.FileOutputStream; +import java.io.IOException; +import java.security.Security; +import javax.security.auth.callback.Callback; +import javax.security.auth.callback.CallbackHandler; +import javax.security.auth.callback.NameCallback; +import javax.security.auth.callback.PasswordCallback; +import javax.security.auth.callback.UnsupportedCallbackException; +import org.ietf.jgss.GSSContext; +import org.ietf.jgss.GSSManager; +import org.ietf.jgss.GSSName; +import sun.security.jgss.GSSUtil; + +public class CrossRealm implements CallbackHandler { + public static void main(String[] args) throws Exception { + startKDCs(); + xRealmAuth(); + } + + static void startKDCs() throws Exception { + // Create and start the KDC + KDC kdc1 = KDC.create("RABBIT.HOLE"); + kdc1.addPrincipal("dummy", "bogus".toCharArray()); + kdc1.addPrincipalRandKey("krbtgt/RABBIT.HOLE"); + kdc1.addPrincipal("krbtgt/SNAKE.HOLE", "sharedsec".toCharArray()); + + KDC kdc2 = KDC.create("SNAKE.HOLE"); + kdc2.addPrincipalRandKey("krbtgt/SNAKE.HOLE"); + kdc2.addPrincipal("krbtgt/RABBIT.HOLE", "sharedsec".toCharArray()); + kdc2.addPrincipalRandKey("host/www.snake.hole"); + + KDC.saveConfig("krb5-localkdc.conf", kdc1, kdc2, + "forwardable=true", + "[domain_realm]", + ".snake.hole=SNAKE.HOLE"); + System.setProperty("java.security.krb5.conf", "krb5-localkdc.conf"); + } + + static void xRealmAuth() throws Exception { + Security.setProperty("auth.login.defaultCallbackHandler", "CrossRealm"); + System.setProperty("java.security.auth.login.config", "jaas-localkdc.conf"); + System.setProperty("javax.security.auth.useSubjectCredsOnly", "false"); + FileOutputStream fos = new FileOutputStream("jaas-localkdc.conf"); + fos.write(("com.sun.security.jgss.krb5.initiate {\n" + + " com.sun.security.auth.module.Krb5LoginModule\n" + + " required\n" + + " principal=dummy\n" + + " doNotPrompt=false\n" + + " useTicketCache=false\n" + + " ;\n" + + "};").getBytes()); + fos.close(); + + GSSManager m = GSSManager.getInstance(); + m.createContext( + m.createName("host@www.snake.hole", GSSName.NT_HOSTBASED_SERVICE), + GSSUtil.GSS_KRB5_MECH_OID, + null, + GSSContext.DEFAULT_LIFETIME).initSecContext(new byte[0], 0, 0); + } + + @Override + public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { + for (Callback callback : callbacks) { + if (callback instanceof NameCallback) { + ((NameCallback) callback).setName("dummy"); + } + if (callback instanceof PasswordCallback) { + ((PasswordCallback) callback).setPassword("bogus".toCharArray()); + } + } + } +} diff --git a/test/sun/security/krb5/auto/KDC.java b/test/sun/security/krb5/auto/KDC.java new file mode 100644 index 0000000000000000000000000000000000000000..3e6a7792644f12cd03704a7606f6fc8ac76c0c41 --- /dev/null +++ b/test/sun/security/krb5/auto/KDC.java @@ -0,0 +1,992 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.net.*; +import java.io.*; +import java.lang.reflect.Method; +import java.security.SecureRandom; +import java.util.*; +import java.util.concurrent.*; +import sun.security.krb5.*; +import sun.security.krb5.internal.*; +import sun.security.krb5.internal.ccache.CredentialsCache; +import sun.security.krb5.internal.crypto.KeyUsage; +import sun.security.krb5.internal.ktab.KeyTab; +import sun.security.util.DerInputStream; +import sun.security.util.DerOutputStream; +import sun.security.util.DerValue; + +/** + * A KDC server. + *

      + * Features: + *

        + *
      1. Supports TCP and UDP + *
      2. Supports AS-REQ and TGS-REQ + *
      3. Principal db and other settings hard coded in application + *
      4. Options, say, request preauth or not + *
      + * Side effects: + *
        + *
      1. The Sun-internal class sun.security.krb5.Config is a + * singleton and initialized according to Kerberos settings (krb5.conf and + * java.security.krb5.* system properties). This means once it's initialized + * it will not automatically notice any changes to these settings (or file + * changes of krb5.conf). The KDC class normally does not touch these + * settings (except for the writeKtab() method). However, to make + * sure nothing ever goes wrong, if you want to make any changes to these + * settings after calling a KDC method, call Config.refresh() to + * make sure your changes are reflected in the Config object. + *
      + * Issues and TODOs: + *
        + *
      1. Generates krb5.conf to be used on another machine, currently the kdc is + * always localhost + *
      2. More options to KDC, say, error output, say, response nonce != + * request nonce + *
      + * Note: This program uses internal krb5 classes (including reflection to + * access private fields and methods). + *

      + * Usages: + *

      + * 1. Init and start the KDC: + *

      + * KDC kdc = KDC.create("REALM.NAME", port, isDaemon);
      + * KDC kdc = KDC.create("REALM.NAME");
      + * 
      + * Here, port is the UDP and TCP port number the KDC server + * listens on. If zero, a random port is chosen, which you can use getPort() + * later to retrieve the value. + *

      + * If isDaemon is true, the KDC worker threads will be daemons. + *

      + * The shortcut KDC.create("REALM.NAME") has port=0 and + * isDaemon=false, and is commonly used in an embedded KDC. + *

      + * 2. Adding users: + *

      + * kdc.addPrincipal(String principal_name, char[] password);
      + * kdc.addPrincipalRandKey(String principal_name);
      + * 
      + * A service principal's name should look like "host/f.q.d.n". The second form + * generates a random key. To expose this key, call writeKtab() to + * save the keys into a keytab file. + *

      + * Note that you need to add the principal name krbtgt/REALM.NAME yourself. + *

      + * Note that you can safely add a principal at any time after the KDC is + * started and before a user requests info on this principal. + *

      + * 3. Other public methods: + *

        + *
      • getPort: Returns the port number the KDC uses + *
      • getRealm: Returns the realm name + *
      • writeKtab: Writes all principals' keys into a keytab file + *
      • saveConfig: Saves a krb5.conf file to access this KDC + *
      • setOption: Sets various options + *
      + * Read the javadoc for details. Lazy developer can use OneKDC + * directly. + */ +public class KDC { + + // Under the hood. + + // The random generator to generate random keys (including session keys) + private static SecureRandom secureRandom = new SecureRandom(); + // Principal db + private Map passwords = new HashMap(); + // Realm name + private String realm; + // The request/response job queue + private BlockingQueue q = new ArrayBlockingQueue(100); + // Service port number + private int port; + // Options + private Map options = new HashMap(); + + /** + * Option names, to be expanded forever. + */ + public static enum Option { + /** + * Whether pre-authentication is required. Default Boolean.TRUE + */ + PREAUTH_REQUIRED, + }; + + /** + * A standalone KDC server. + * @param args + * @throws java.lang.Exception + */ + public static void main(String[] args) throws Exception { + if (args.length > 0) { + if (args[0].equals("-help") || args[0].equals("--help")) { + System.out.println("Usage:"); + System.out.println(" java " + KDC.class + " " + + "Start KDC on port 8888"); + return; + } + } + String localhost = "localhost"; + try { + localhost = InetAddress.getByName(localhost) + .getCanonicalHostName(); + } catch (UnknownHostException uhe) { + ; // Ignore, localhost is still "localhost" + } + KDC kdc = create("RABBIT.HOLE", 8888, false); + kdc.addPrincipal("dummy", "bogus".toCharArray()); + kdc.addPrincipal("foo", "bar".toCharArray()); + kdc.addPrincipalRandKey("krbtgt/" + kdc.realm); + kdc.addPrincipalRandKey("server/" + localhost); + kdc.addPrincipalRandKey("backend/" + localhost); + } + + /** + * Creates and starts a KDC running as a daemon on a random port. + * @param realm the realm name + * @return the running KDC instance + * @throws java.io.IOException for any socket creation error + */ + public static KDC create(String realm) throws IOException { + return create(realm, 0, true); + } + + /** + * Creates and starts a KDC server. + * @param realm the realm name + * @param port the TCP and UDP port to listen to. A random port will to + * chosen if zero. + * @param asDaemon if true, KDC threads will be daemons. Otherwise, not. + * @return the running KDC instance + * @throws java.io.IOException for any socket creation error + */ + public static KDC create(String realm, int port, boolean asDaemon) throws IOException { + return new KDC(realm, port, asDaemon); + } + + /** + * Sets an option + * @param key the option name + * @param obj the value + */ + public void setOption(Option key, Object value) { + options.put(key, value); + } + + /** + * Write all principals' keys into a keytab file. Note that the keys for + * the krbtgt principal for this realm will not be written. + *

      + * Attention: This method references krb5.conf settings. If you need to + * setup krb5.conf later, please call Config.refresh() after + * the new setting. For example: + *

      +     * kdc.writeKtab("/etc/kdc/ktab");  // Config is initialized,
      +     * System.setProperty("java.security.krb5.conf", "/home/mykrb5.conf");
      +     * Config.refresh();
      +     * 
      + * + * Inside this method there are 2 places krb5.conf is used: + *
        + *
      1. (Fatal) Generating keys: EncryptionKey.acquireSecretKeys + *
      2. (Has workaround) Creating PrincipalName + *
      + * @param tab The keytab filename to write to. + * @throws java.io.IOException for any file output error + * @throws sun.security.krb5.KrbException for any realm and/or principal + * name error. + */ + public void writeKtab(String tab) throws IOException, KrbException { + KeyTab ktab = KeyTab.create(tab); + for (String name : passwords.keySet()) { + if (name.equals("krbtgt/" + realm)) { + continue; + } + ktab.addEntry(new PrincipalName(name + "@" + realm, + name.indexOf('/') < 0 ? + PrincipalName.KRB_NT_UNKNOWN : + PrincipalName.KRB_NT_SRV_HST), passwords.get(name)); + } + ktab.save(); + } + + /** + * Adds a new principal to this realm with a given password. + * @param user the principal's name. For a service principal, use the + * form of host/f.q.d.n + * @param pass the password for the principal + */ + public void addPrincipal(String user, char[] pass) { + passwords.put(user, pass); + } + + /** + * Adds a new principal to this realm with a random password + * @param user the principal's name. For a service principal, use the + * form of host/f.q.d.n + */ + public void addPrincipalRandKey(String user) { + passwords.put(user, randomPassword()); + } + + /** + * Returns the name of this realm + * @return the name of this realm + */ + public String getRealm() { + return realm; + } + + /** + * Writes a krb5.conf for one or more KDC that includes KDC locations for + * each realm and the default realm name. You can also add extra strings + * into the file. The method should be called like: + *
      +     *   KDC.saveConfig("krb5.conf", kdc1, kdc2, ..., line1, line2, ...);
      +     * 
      + * Here you can provide one or more kdc# and zero or more line# arguments. + * The line# will be put after [libdefaults] and before [realms]. Therefore + * you can append new lines into [libdefaults] and/or create your new + * stanzas as well. Note that a newline character will be appended to + * each line# argument. + *

      + * For example: + *

      +     * KDC.saveConfig("krb5.conf", this);
      +     * 
      + * generates: + *
      +     * [libdefaults]
      +     * default_realm = REALM.NAME
      +     *
      +     * [realms]
      +     *   REALM.NAME = {
      +     *     kdc = localhost:port_number
      +     *   }
      +     * 
      + * + * Another example: + *
      +     * KDC.saveConfig("krb5.conf", kdc1, kdc2, "forwardable = true", "",
      +     *         "[domain_realm]",
      +     *         ".kdc1.com = KDC1.NAME");
      +     * 
      + * generates: + *
      +     * [libdefaults]
      +     * default_realm = KDC1.NAME
      +     * forwardable = true
      +     *
      +     * [domain_realm]
      +     * .kdc1.com = KDC1.NAME
      +     *
      +     * [realms]
      +     *   KDC1.NAME = {
      +     *     kdc = localhost:port1
      +     *   }
      +     *   KDC2.NAME = {
      +     *     kdc = localhost:port2
      +     *   }
      +     * 
      + * @param file the name of the file to write into + * @param kdc the first (and default) KDC + * @param more more KDCs or extra lines (in their appearing order) to + * insert into the krb5.conf file. This method reads each argument's type + * to determine what it's for. This argument can be empty. + * @throws java.io.IOException for any file output error + */ + public static void saveConfig(String file, KDC kdc, Object... more) + throws IOException { + File f = new File(file); + StringBuffer sb = new StringBuffer(); + sb.append("[libdefaults]\ndefault_realm = "); + sb.append(kdc.realm); + sb.append("\n"); + for (Object o: more) { + if (o instanceof String) { + sb.append(o); + sb.append("\n"); + } + } + sb.append("\n[realms]\n"); + sb.append(realmLineForKDC(kdc)); + for (Object o: more) { + if (o instanceof KDC) { + sb.append(realmLineForKDC((KDC)o)); + } + } + FileOutputStream fos = new FileOutputStream(f); + fos.write(sb.toString().getBytes()); + fos.close(); + } + + /** + * Returns the service port of the KDC server. + * @return the KDC service port + */ + public int getPort() { + return port; + } + + // Private helper methods + + /** + * Private constructor, cannot be called outside. + * @param realm + */ + private KDC(String realm) { + this.realm = realm; + } + + /** + * A constructor that starts the KDC service also. + */ + protected KDC(String realm, int port, boolean asDaemon) + throws IOException { + this(realm); + startServer(port, asDaemon); + } + /** + * Generates a 32-char random password + * @return the password + */ + private static char[] randomPassword() { + char[] pass = new char[32]; + for (int i=0; i<32; i++) + pass[i] = (char)secureRandom.nextInt(); + return pass; + } + + /** + * Generates a random key for the given encryption type. + * @param eType the encryption type + * @return the generated key + * @throws sun.security.krb5.KrbException for unknown/unsupported etype + */ + private static EncryptionKey generateRandomKey(int eType) + throws KrbException { + // Is 32 enough for AES256? I should have generated the keys directly + // but different cryptos have different rules on what keys are valid. + char[] pass = randomPassword(); + String algo; + switch (eType) { + case EncryptedData.ETYPE_DES_CBC_MD5: algo = "DES"; break; + case EncryptedData.ETYPE_DES3_CBC_HMAC_SHA1_KD: algo = "DESede"; break; + case EncryptedData.ETYPE_AES128_CTS_HMAC_SHA1_96: algo = "AES128"; break; + case EncryptedData.ETYPE_ARCFOUR_HMAC: algo = "ArcFourHMAC"; break; + case EncryptedData.ETYPE_AES256_CTS_HMAC_SHA1_96: algo = "AES256"; break; + default: algo = "DES"; break; + } + return new EncryptionKey(pass, "NOTHING", algo); // Silly + } + + /** + * Returns the password for a given principal + * @param p principal + * @return the password + * @throws sun.security.krb5.KrbException when the principal is not inside + * the database. + */ + private char[] getPassword(PrincipalName p) throws KrbException { + char[] pass = passwords.get(p.getNameString()); + if (pass == null) { + throw new KrbException(Krb5.KDC_ERR_C_PRINCIPAL_UNKNOWN); + } + return pass; + } + + /** + * Returns the salt string for the principal. For normal users, the + * concatenation for the realm name and the sections of the principal; + * for krgtgt/A@B and krbtgt/B@A, always return AB (so that inter-realm + * principals have the same key). + * @param p principal + * @return the salt + */ + private String getSalt(PrincipalName p) { + String[] ns = p.getNameStrings(); + if (ns[0].equals("krbtgt") && ns.length > 1) { + // Shared cross-realm keys must be the same + if (ns[1].compareTo(realm) < 0) { + return ns[1] + realm; + } else { + return realm + ns[1]; + } + } else { + String s = getRealm(); + for (String n: p.getNameStrings()) { + s += n; + } + return s; + } + } + + /** + * Returns the key for a given principal of the given encryption type + * @param p the principal + * @param etype the encryption type + * @return the key + * @throws sun.security.krb5.KrbException for unknown/unsupported etype + */ + private EncryptionKey keyForUser(PrincipalName p, int etype) throws KrbException { + try { + // Do not call EncryptionKey.acquireSecretKeys(), otherwise + // the krb5.conf config file would be loaded. + Method stringToKey = EncryptionKey.class.getDeclaredMethod("stringToKey", char[].class, String.class, byte[].class, Integer.TYPE); + stringToKey.setAccessible(true); + return new EncryptionKey((byte[]) stringToKey.invoke(null, getPassword(p), getSalt(p), null, etype), etype, null); + } catch (InvocationTargetException ex) { + KrbException ke = (KrbException)ex.getCause(); + throw ke; + } catch (Exception e) { + throw new RuntimeException(e); // should not happen + } + } + + /** + * Processes an incoming request and generates a response. + * @param in the request + * @return the response + * @throws java.lang.Exception for various errors + */ + private byte[] processMessage(byte[] in) throws Exception { + if ((in[0] & 0x1f) == Krb5.KRB_AS_REQ) + return processAsReq(in); + else + return processTgsReq(in); + } + + /** + * Processes a TGS_REQ and generates a TGS_REP (or KRB_ERROR) + * @param in the request + * @return the response + * @throws java.lang.Exception for various errors + */ + private byte[] processTgsReq(byte[] in) throws Exception { + TGSReq tgsReq = new TGSReq(in); + try { + System.out.println(realm + "> " + tgsReq.reqBody.cname + + " sends TGS-REQ for " + + tgsReq.reqBody.sname); + KDCReqBody body = tgsReq.reqBody; + int etype = 0; + + // Reflection: PAData[] pas = tgsReq.pAData; + Field f = KDCReq.class.getDeclaredField("pAData"); + f.setAccessible(true); + PAData[] pas = (PAData[])f.get(tgsReq); + + Ticket tkt = null; + EncTicketPart etp = null; + if (pas == null || pas.length == 0) { + throw new KrbException(Krb5.KDC_ERR_PADATA_TYPE_NOSUPP); + } else { + for (PAData pa: pas) { + if (pa.getType() == Krb5.PA_TGS_REQ) { + APReq apReq = new APReq(pa.getValue()); + EncryptedData ed = apReq.authenticator; + tkt = apReq.ticket; + etype = tkt.encPart.getEType(); + EncryptionKey kkey = null; + if (!tkt.realm.toString().equals(realm)) { + if (tkt.sname.getNameString().equals("krbtgt/" + realm)) { + kkey = keyForUser(new PrincipalName("krbtgt/" + tkt.realm.toString(), realm), etype); + } + } else { + kkey = keyForUser(tkt.sname, etype); + } + byte[] bb = tkt.encPart.decrypt(kkey, KeyUsage.KU_TICKET); + DerInputStream derIn = new DerInputStream(bb); + DerValue der = derIn.getDerValue(); + etp = new EncTicketPart(der.toByteArray()); + } + } + if (tkt == null) { + throw new KrbException(Krb5.KDC_ERR_PADATA_TYPE_NOSUPP); + } + } + EncryptionKey skey = keyForUser(body.sname, etype); + if (skey == null) { + throw new KrbException(Krb5.KDC_ERR_SUMTYPE_NOSUPP); // TODO + } + + // Session key for original ticket, TGT + EncryptionKey ckey = etp.key; + + // Session key for session with the service + EncryptionKey key = generateRandomKey(etype); + + // Check time, TODO + KerberosTime till = body.till; + if (till == null) { + throw new KrbException(Krb5.KDC_ERR_NEVER_VALID); // TODO + } else if (till.isZero()) { + till = new KerberosTime(new Date().getTime() + 1000 * 3600 * 11); + } + + boolean[] bFlags = new boolean[Krb5.TKT_OPTS_MAX+1]; + if (body.kdcOptions.get(KDCOptions.FORWARDABLE)) { + bFlags[Krb5.TKT_OPTS_FORWARDABLE] = true; + } + if (body.kdcOptions.get(KDCOptions.FORWARDED) || + etp.flags.get(Krb5.TKT_OPTS_FORWARDED)) { + bFlags[Krb5.TKT_OPTS_FORWARDED] = true; + } + if (body.kdcOptions.get(KDCOptions.RENEWABLE)) { + bFlags[Krb5.TKT_OPTS_RENEWABLE] = true; + //renew = new KerberosTime(new Date().getTime() + 1000 * 3600 * 24 * 7); + } + if (body.kdcOptions.get(KDCOptions.PROXIABLE)) { + bFlags[Krb5.TKT_OPTS_PROXIABLE] = true; + } + if (body.kdcOptions.get(KDCOptions.POSTDATED)) { + bFlags[Krb5.TKT_OPTS_POSTDATED] = true; + } + if (body.kdcOptions.get(KDCOptions.ALLOW_POSTDATE)) { + bFlags[Krb5.TKT_OPTS_MAY_POSTDATE] = true; + } + bFlags[Krb5.TKT_OPTS_INITIAL] = true; + + TicketFlags tFlags = new TicketFlags(bFlags); + EncTicketPart enc = new EncTicketPart( + tFlags, + key, + etp.crealm, + etp.cname, + new TransitedEncoding(1, new byte[0]), // TODO + new KerberosTime(new Date()), + body.from, + till, body.rtime, + body.addresses, + null); + Ticket t = new Ticket( + body.crealm, + body.sname, + new EncryptedData(skey, enc.asn1Encode(), KeyUsage.KU_TICKET) + ); + EncTGSRepPart enc_part = new EncTGSRepPart( + key, + new LastReq(new LastReqEntry[]{ + new LastReqEntry(0, new KerberosTime(new Date().getTime() - 10000)) + }), + body.getNonce(), // TODO: detect replay + new KerberosTime(new Date().getTime() + 1000 * 3600 * 24), + // Next 5 and last MUST be same with ticket + tFlags, + new KerberosTime(new Date()), + body.from, + till, body.rtime, + body.crealm, + body.sname, + body.addresses + ); + EncryptedData edata = new EncryptedData(ckey, enc_part.asn1Encode(), KeyUsage.KU_ENC_TGS_REP_PART_SESSKEY); + TGSRep tgsRep = new TGSRep(null, + etp.crealm, + etp.cname, + t, + edata); + System.out.println(" Return " + tgsRep.cname + + " ticket for " + tgsRep.ticket.sname); + + DerOutputStream out = new DerOutputStream(); + out.write(DerValue.createTag(DerValue.TAG_APPLICATION, + true, (byte)Krb5.KRB_TGS_REP), tgsRep.asn1Encode()); + return out.toByteArray(); + } catch (KrbException ke) { + ke.printStackTrace(System.out); + KRBError kerr = ke.getError(); + KDCReqBody body = tgsReq.reqBody; + System.out.println(" Error " + ke.returnCode() + + " " +ke.returnCodeMessage()); + if (kerr == null) { + kerr = new KRBError(null, null, null, + new KerberosTime(new Date()), + 0, + ke.returnCode(), + body.crealm, body.cname, + new Realm(getRealm()), body.sname, + KrbException.errorMessage(ke.returnCode()), + null); + } + return kerr.asn1Encode(); + } + } + + /** + * Processes a AS_REQ and generates a AS_REP (or KRB_ERROR) + * @param in the request + * @return the response + * @throws java.lang.Exception for various errors + */ + private byte[] processAsReq(byte[] in) throws Exception { + ASReq asReq = new ASReq(in); + int[] eTypes = null; + try { + System.out.println(realm + "> " + asReq.reqBody.cname + + " sends AS-REQ for " + + asReq.reqBody.sname); + + KDCReqBody body = asReq.reqBody; + + // Reflection: int[] eType = body.eType; + Field f = KDCReqBody.class.getDeclaredField("eType"); + f.setAccessible(true); + eTypes = (int[])f.get(body); + int eType = eTypes[0]; + + EncryptionKey ckey = keyForUser(body.cname, eType); + EncryptionKey skey = keyForUser(body.sname, eType); + if (ckey == null) { + throw new KrbException(Krb5.KDC_ERR_ETYPE_NOSUPP); + } + if (skey == null) { + throw new KrbException(Krb5.KDC_ERR_SUMTYPE_NOSUPP); // TODO + } + + // Session key + EncryptionKey key = generateRandomKey(eType); + // Check time, TODO + KerberosTime till = body.till; + if (till == null) { + throw new KrbException(Krb5.KDC_ERR_NEVER_VALID); // TODO + } else if (till.isZero()) { + till = new KerberosTime(new Date().getTime() + 1000 * 3600 * 11); + } + //body.from + boolean[] bFlags = new boolean[Krb5.TKT_OPTS_MAX+1]; + if (body.kdcOptions.get(KDCOptions.FORWARDABLE)) { + bFlags[Krb5.TKT_OPTS_FORWARDABLE] = true; + } + if (body.kdcOptions.get(KDCOptions.RENEWABLE)) { + bFlags[Krb5.TKT_OPTS_RENEWABLE] = true; + //renew = new KerberosTime(new Date().getTime() + 1000 * 3600 * 24 * 7); + } + if (body.kdcOptions.get(KDCOptions.PROXIABLE)) { + bFlags[Krb5.TKT_OPTS_PROXIABLE] = true; + } + if (body.kdcOptions.get(KDCOptions.POSTDATED)) { + bFlags[Krb5.TKT_OPTS_POSTDATED] = true; + } + if (body.kdcOptions.get(KDCOptions.ALLOW_POSTDATE)) { + bFlags[Krb5.TKT_OPTS_MAY_POSTDATE] = true; + } + bFlags[Krb5.TKT_OPTS_INITIAL] = true; + + f = KDCReq.class.getDeclaredField("pAData"); + f.setAccessible(true); + PAData[] pas = (PAData[])f.get(asReq); + if (pas == null || pas.length == 0) { + Object preauth = options.get(Option.PREAUTH_REQUIRED); + if (preauth == null || preauth.equals(Boolean.TRUE)) { + throw new KrbException(Krb5.KDC_ERR_PREAUTH_REQUIRED); + } + } else { + try { + Constructor ctor = EncryptedData.class.getDeclaredConstructor(DerValue.class); + ctor.setAccessible(true); + EncryptedData data = ctor.newInstance(new DerValue(pas[0].getValue())); + data.decrypt(ckey, KeyUsage.KU_PA_ENC_TS); + } catch (Exception e) { + throw new KrbException(Krb5.KDC_ERR_PREAUTH_FAILED); + } + bFlags[Krb5.TKT_OPTS_PRE_AUTHENT] = true; + } + + TicketFlags tFlags = new TicketFlags(bFlags); + EncTicketPart enc = new EncTicketPart( + tFlags, + key, + body.crealm, + body.cname, + new TransitedEncoding(1, new byte[0]), + new KerberosTime(new Date()), + body.from, + till, body.rtime, + body.addresses, + null); + Ticket t = new Ticket( + body.crealm, + body.sname, + new EncryptedData(skey, enc.asn1Encode(), KeyUsage.KU_TICKET) + ); + EncASRepPart enc_part = new EncASRepPart( + key, + new LastReq(new LastReqEntry[]{ + new LastReqEntry(0, new KerberosTime(new Date().getTime() - 10000)) + }), + body.getNonce(), // TODO: detect replay? + new KerberosTime(new Date().getTime() + 1000 * 3600 * 24), + // Next 5 and last MUST be same with ticket + tFlags, + new KerberosTime(new Date()), + body.from, + till, body.rtime, + body.crealm, + body.sname, + body.addresses + ); + EncryptedData edata = new EncryptedData(ckey, enc_part.asn1Encode(), KeyUsage.KU_ENC_AS_REP_PART); + ASRep asRep = new ASRep(null, + body.crealm, + body.cname, + t, + edata); + + System.out.println(" Return " + asRep.cname + + " ticket for " + asRep.ticket.sname); + + DerOutputStream out = new DerOutputStream(); + out.write(DerValue.createTag(DerValue.TAG_APPLICATION, + true, (byte)Krb5.KRB_AS_REP), asRep.asn1Encode()); + byte[] result = out.toByteArray(); + + // Added feature: + // Write the current issuing TGT into a ccache file specified + // by the system property below. + String ccache = System.getProperty("test.kdc.save.ccache"); + if (ccache != null) { + asRep.encKDCRepPart = enc_part; + sun.security.krb5.internal.ccache.Credentials credentials = + new sun.security.krb5.internal.ccache.Credentials(asRep); + asReq.reqBody.cname.setRealm(getRealm()); + CredentialsCache cache = + CredentialsCache.create(asReq.reqBody.cname, ccache); + if (cache == null) { + throw new IOException("Unable to create the cache file " + + ccache); + } + cache.update(credentials); + cache.save(); + new File(ccache).deleteOnExit(); + } + + return result; + } catch (KrbException ke) { + ke.printStackTrace(System.out); + KRBError kerr = ke.getError(); + KDCReqBody body = asReq.reqBody; + System.out.println(" Error " + ke.returnCode() + + " " +ke.returnCodeMessage()); + byte[] eData = null; + if (kerr == null) { + if (ke.returnCode() == Krb5.KDC_ERR_PREAUTH_REQUIRED || + ke.returnCode() == Krb5.KDC_ERR_PREAUTH_FAILED) { + PAData pa; + + ETypeInfo2 ei2 = new ETypeInfo2(eTypes[0], null, null); + DerOutputStream eid = new DerOutputStream(); + eid.write(DerValue.tag_Sequence, ei2.asn1Encode()); + + pa = new PAData(Krb5.PA_ETYPE_INFO2, eid.toByteArray()); + + DerOutputStream bytes = new DerOutputStream(); + bytes.write(new PAData(Krb5.PA_ENC_TIMESTAMP, new byte[0]).asn1Encode()); + bytes.write(pa.asn1Encode()); + + boolean allOld = true; + for (int i: eTypes) { + if (i == EncryptedData.ETYPE_AES128_CTS_HMAC_SHA1_96 || + i == EncryptedData.ETYPE_AES256_CTS_HMAC_SHA1_96) { + allOld = false; + break; + } + } + if (allOld) { + ETypeInfo ei = new ETypeInfo(eTypes[0], null); + eid = new DerOutputStream(); + eid.write(DerValue.tag_Sequence, ei.asn1Encode()); + pa = new PAData(Krb5.PA_ETYPE_INFO, eid.toByteArray()); + bytes.write(pa.asn1Encode()); + } + DerOutputStream temp = new DerOutputStream(); + temp.write(DerValue.tag_Sequence, bytes); + eData = temp.toByteArray(); + } + kerr = new KRBError(null, null, null, + new KerberosTime(new Date()), + 0, + ke.returnCode(), + body.crealm, body.cname, + new Realm(getRealm()), body.sname, + KrbException.errorMessage(ke.returnCode()), + eData); + } + return kerr.asn1Encode(); + } + } + + /** + * Generates a line for a KDC to put inside [realms] of krb5.conf + * @param kdc the KDC + * @return REALM.NAME = { kdc = localhost:port } + */ + private static String realmLineForKDC(KDC kdc) { + return String.format(" %s = {\n kdc = localhost:%d\n }\n", kdc.realm, kdc.port); + } + + /** + * Start the KDC service. This server listens on both UDP and TCP using + * the same port number. It uses three threads to deal with requests. + * They can be set to daemon threads if requested. + * @param port the port number to listen to. If zero, a random available + * port no less than 8000 will be chosen and used. + * @param asDaemon true if the KDC threads should be daemons + * @throws java.io.IOException for any communication error + */ + protected void startServer(int port, boolean asDaemon) throws IOException { + DatagramSocket u1 = null; + ServerSocket t1 = null; + if (port > 0) { + u1 = new DatagramSocket(port, InetAddress.getByName("127.0.0.1")); + t1 = new ServerSocket(port); + } else { + while (true) { + // Try to find a port number that's both TCP and UDP free + try { + port = 8000 + new java.util.Random().nextInt(10000); + u1 = null; + u1 = new DatagramSocket(port, InetAddress.getByName("127.0.0.1")); + t1 = new ServerSocket(port); + break; + } catch (Exception e) { + if (u1 != null) u1.close(); + } + } + } + final DatagramSocket udp = u1; + final ServerSocket tcp = t1; + System.out.println("Start KDC on " + port); + + this.port = port; + + // The UDP consumer + Thread thread = new Thread() { + public void run() { + while (true) { + try { + byte[] inbuf = new byte[8192]; + DatagramPacket p = new DatagramPacket(inbuf, inbuf.length); + udp.receive(p); + System.out.println("-----------------------------------------------"); + System.out.println(">>>>> UDP packet received"); + q.put(new Job(processMessage(Arrays.copyOf(inbuf, p.getLength())), udp, p)); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + }; + thread.setDaemon(asDaemon); + thread.start(); + + // The TCP consumer + thread = new Thread() { + public void run() { + while (true) { + try { + Socket socket = tcp.accept(); + System.out.println("-----------------------------------------------"); + System.out.println(">>>>> TCP connection established"); + DataInputStream in = new DataInputStream(socket.getInputStream()); + DataOutputStream out = new DataOutputStream(socket.getOutputStream()); + byte[] token = new byte[in.readInt()]; + in.readFully(token); + q.put(new Job(processMessage(token), socket, out)); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + }; + thread.setDaemon(asDaemon); + thread.start(); + + // The dispatcher + thread = new Thread() { + public void run() { + while (true) { + try { + q.take().send(); + } catch (Exception e) { + } + } + } + }; + thread.setDaemon(true); + thread.start(); + } + + /** + * Helper class to encapsulate a job in a KDC. + */ + private static class Job { + byte[] token; // The received request at creation time and + // the response at send time + Socket s; // The TCP socket from where the request comes + DataOutputStream out; // The OutputStream of the TCP socket + DatagramSocket s2; // The UDP socket from where the request comes + DatagramPacket dp; // The incoming UDP datagram packet + boolean useTCP; // Whether TCP or UDP is used + + // Creates a job object for TCP + Job(byte[] token, Socket s, DataOutputStream out) { + useTCP = true; + this.token = token; + this.s = s; + this.out = out; + } + + // Creates a job object for UDP + Job(byte[] token, DatagramSocket s2, DatagramPacket dp) { + useTCP = false; + this.token = token; + this.s2 = s2; + this.dp = dp; + } + + // Sends the output back to the client + void send() { + try { + if (useTCP) { + System.out.println(">>>>> TCP request honored"); + out.writeInt(token.length); + out.write(token); + s.close(); + } else { + System.out.println(">>>>> UDP request honored"); + s2.send(new DatagramPacket(token, token.length, dp.getAddress(), dp.getPort())); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } +} diff --git a/test/sun/security/krb5/auto/KerberosHashEqualsTest.java b/test/sun/security/krb5/auto/KerberosHashEqualsTest.java new file mode 100644 index 0000000000000000000000000000000000000000..9e5b5839309a7a09df0152e05eeb488deadb66e9 --- /dev/null +++ b/test/sun/security/krb5/auto/KerberosHashEqualsTest.java @@ -0,0 +1,173 @@ +/* + * Copyright 2005-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 4641821 + * @summary hashCode() and equals() for KerberosKey and KerberosTicket + */ + +import java.net.InetAddress; +import java.util.Date; +import javax.security.auth.kerberos.KerberosKey; +import javax.security.auth.kerberos.KerberosPrincipal; +import javax.security.auth.kerberos.KerberosTicket; + +public class KerberosHashEqualsTest { + public static void main(String[] args) throws Exception { + new OneKDC(null); + new KerberosHashEqualsTest().check(); + } + + void checkSame(Object o1, Object o2) { + if(!o1.equals(o2)) { + throw new RuntimeException("equals() fails"); + } + if(o1.hashCode() != o2.hashCode()) { + throw new RuntimeException("hashCode() not same"); + } + } + + void checkNotSame(Object o1, Object o2) { + if(o1.equals(o2)) { + throw new RuntimeException("equals() succeeds"); + } + } + + void check() throws Exception { + + // The key part: + // new KerberosKey(principal, bytes, keyType, version) + + KerberosKey k1, k2; + KerberosPrincipal CLIENT = new KerberosPrincipal("client"); + KerberosPrincipal SERVER = new KerberosPrincipal("server"); + byte[] PASS = "pass".getBytes(); + + k1 = new KerberosKey(CLIENT, PASS, 1, 1); + k2 = new KerberosKey(CLIENT, PASS, 1, 1); + checkSame(k1, k1); // me is me + checkSame(k1, k2); // same + + // A destroyed key doesn't equal to any key + k2.destroy(); + checkNotSame(k1, k2); + checkNotSame(k2, k1); + k1.destroy(); + checkNotSame(k1, k2); // even if they are both destroyed + checkNotSame(k2, k1); + checkSame(k2, k2); + + // a little difference means not equal + k1 = new KerberosKey(CLIENT, PASS, 1, 1); + k2 = new KerberosKey(SERVER, PASS, 1, 1); + checkNotSame(k1, k2); // Different principal name + + k2 = new KerberosKey(CLIENT, "ssap".getBytes(), 1, 1); + checkNotSame(k1, k2); // Different password + + k2 = new KerberosKey(CLIENT, PASS, 2, 1); + checkNotSame(k1, k2); // Different keytype + + k2 = new KerberosKey(CLIENT, PASS, 1, 2); + checkNotSame(k1, k2); // Different version + + k2 = new KerberosKey(null, PASS, 1, 2); + checkNotSame(k1, k2); // null is not non-null + + k1 = new KerberosKey(null, PASS, 1, 2); + checkSame(k1, k2); // null is null + + checkNotSame(k1, "Another Object"); + + // The ticket part: + // new KerberosTicket(asn1 bytes, client, server, session key, type, flags, + // auth, start, end, renewUntil times, address) + + KerberosTicket t1, t2; + + byte[] ASN1 = "asn1".getBytes(); + boolean[] FORWARDABLE = new boolean[] {true, true}; + boolean[] ALLTRUE = new boolean[] {true, true, true, true, true, true, true, true, true, true}; + Date D0 = new Date(0); + + t1 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, FORWARDABLE, D0, D0, D0, D0, null); + t2 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, FORWARDABLE, D0, D0, D0, D0, null); + checkSame(t1, t1); + checkSame(t1, t2); + + // destroyed tickets doesn't equal to each other + t1.destroy(); + checkNotSame(t1, t2); + checkNotSame(t2, t1); + + t2.destroy(); + checkNotSame(t1, t2); // even if they are both destroyed + checkNotSame(t2, t1); + + checkSame(t2, t2); // unless they are the same object + + // a little difference means not equal + t1 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, FORWARDABLE, D0, D0, D0, D0, null); + t2 = new KerberosTicket("asn11".getBytes(), CLIENT, SERVER, PASS, 1, FORWARDABLE, D0, D0, D0, D0, null); + checkNotSame(t1, t2); // Different ASN1 encoding + + t2 = new KerberosTicket(ASN1, new KerberosPrincipal("client1"), SERVER, PASS, 1, FORWARDABLE, D0, D0, D0, D0, null); + checkNotSame(t1, t2); // Different client + + t2 = new KerberosTicket(ASN1, CLIENT, new KerberosPrincipal("server1"), PASS, 1, FORWARDABLE, D0, D0, D0, D0, null); + checkNotSame(t1, t2); // Different server + + t2 = new KerberosTicket(ASN1, CLIENT, SERVER, "pass1".getBytes(), 1, FORWARDABLE, D0, D0, D0, D0, null); + checkNotSame(t1, t2); // Different session key + + t2 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 2, FORWARDABLE, D0, D0, D0, D0, null); + checkNotSame(t1, t2); // Different key type + + t2 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, new boolean[] {true, false}, D0, D0, D0, D0, null); + checkNotSame(t1, t2); // Different flags, not FORWARDABLE + + t2 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, FORWARDABLE, new Date(1), D0, D0, D0, null); + checkNotSame(t1, t2); // Different authtime + + t2 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, FORWARDABLE, D0, new Date(1), D0, D0, null); + checkNotSame(t1, t2); // Different starttime + + t2 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, FORWARDABLE, D0, D0, new Date(1), D0, null); + checkNotSame(t1, t2); // Different endtime + + t2 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, FORWARDABLE, D0, D0, D0, D0, new InetAddress[2]); + checkNotSame(t1, t2); // Different client addresses + + t2 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, FORWARDABLE, D0, D0, D0, new Date(1), null); + t1 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, FORWARDABLE, D0, D0, D0, new Date(2), null); + checkSame(t1, t2); // renewtill is ignored when RENEWABLE ticket flag is not set. + + t2 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, ALLTRUE, D0, D0, D0, new Date(1), null); + t1 = new KerberosTicket(ASN1, CLIENT, SERVER, PASS, 1, ALLTRUE, D0, D0, D0, new Date(2), null); + checkNotSame(t1, t2); // renewtill is used when RENEWABLE is set. + + checkNotSame(t1, "Another Object"); + System.out.println("Good!"); + } +} diff --git a/test/sun/security/krb5/auto/LoginModuleOptions.java b/test/sun/security/krb5/auto/LoginModuleOptions.java new file mode 100644 index 0000000000000000000000000000000000000000..4c0dd73b8d5d649f2dd181b79bb0f11377719368 --- /dev/null +++ b/test/sun/security/krb5/auto/LoginModuleOptions.java @@ -0,0 +1,184 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6765491 + * @summary Krb5LoginModule a little too restrictive, and the doc is not clear. + */ +import com.sun.security.auth.module.Krb5LoginModule; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import javax.security.auth.Subject; +import javax.security.auth.callback.Callback; +import javax.security.auth.callback.CallbackHandler; +import javax.security.auth.callback.NameCallback; +import javax.security.auth.callback.PasswordCallback; +import javax.security.auth.callback.UnsupportedCallbackException; + +public class LoginModuleOptions { + + private static final String NAME = "javax.security.auth.login.name"; + private static final String PWD = "javax.security.auth.login.password"; + + public static void main(String[] args) throws Exception { + OneKDC kdc = new OneKDC(null); + kdc.addPrincipal("foo", "bar".toCharArray()); + kdc.writeKtab(OneKDC.KTAB); // rewrite to add foo + + // All 4 works: keytab, shared state, callback, cache + login(null, "useKeyTab", "true", "principal", "dummy"); + login(null, "tryFirstPass", "true", NAME, OneKDC.USER, + PWD, OneKDC.PASS); + System.setProperty("test.kdc.save.ccache", "krbcc"); + login(new MyCallback(OneKDC.USER, OneKDC.PASS)); // save the cache + System.clearProperty("test.kdc.save.ccache"); + login(null, "useTicketCache", "true", "ticketCache", "krbcc"); + + // Fallbacks + // 1. ccache -> keytab + login(null, "useTicketCache", "true", "ticketCache", "krbcc_non_exists", + "useKeyTab", "true", "principal", "dummy"); + // 2. keytab -> shared + login(null, "useKeyTab", "true", "principal", "dummy", + "keyTab", "ktab_non_exist", + "tryFirstPass", "true", NAME, OneKDC.USER, PWD, OneKDC.PASS); + // 3. shared -> callback + // 3.1. useFirstPass, no callback + boolean failed = false; + try { + login(new MyCallback(OneKDC.USER, OneKDC.PASS), + "useFirstPass", "true", + NAME, OneKDC.USER, PWD, "haha".toCharArray()); + } catch (Exception e) { + failed = true; + } + if (!failed) { + throw new Exception("useFirstPass should not fallback to callback"); + } + // 3.2. tryFirstPass, has callback + login(new MyCallback(OneKDC.USER, OneKDC.PASS), + "tryFirstPass", "true", + NAME, OneKDC.USER, PWD, "haha".toCharArray()); + + // Preferences of type + // 1. ccache preferred to keytab + login(new MyCallback("foo", null), + "useTicketCache", "true", "ticketCache", "krbcc", + "useKeyTab", "true"); + // 2. keytab preferred to shared. This test case is not exactly correct, + // because principal=dummy would shadow the PWD setting in the shared + // state. So by only looking at the final authentication user name + // (which is how this program does), there's no way to tell if keyTab + // is picked first, or shared is tried first but fallback to keytab. + login(null, "useKeyTab", "true", "principal", "dummy", + "tryFirstPass", "true", NAME, "foo", PWD, "bar".toCharArray()); + // 3. shared preferred to callback + login(new MyCallback("foo", "bar".toCharArray()), + "tryFirstPass", "true", NAME, OneKDC.USER, PWD, OneKDC.PASS); + + // Preferences of username + // 1. principal preferred to NAME (NAME can be wrong or missing) + login(null, "principal", OneKDC.USER, + "tryFirstPass", "true", NAME, "someone_else", PWD, OneKDC.PASS); + login(null, "principal", OneKDC.USER, + "tryFirstPass", "true", PWD, OneKDC.PASS); + // 2. NAME preferred to callback + login(new MyCallback("someone_else", OneKDC.PASS), + "principal", OneKDC.USER); + // 3. With tryFirstPass, NAME preferred to callback + login(new MyCallback("someone_else", null), + "tryFirstPass", "true", NAME, OneKDC.USER, PWD, OneKDC.PASS); + // 3.1. you must provide a NAME (when there's no principal) + failed = false; + try { + login(new MyCallback(OneKDC.USER, null), + "tryFirstPass", "true", PWD, OneKDC.PASS); + } catch (Exception e) { + failed = true; + } + if (!failed) { + throw new Exception("useFirstPass must provide a NAME"); + } + // 3.2 Hybrid, you can use NAME as "", and provide it using callback. + // I don't think this is designed. + login(new MyCallback(OneKDC.USER, null), + "tryFirstPass", "true", NAME, "", PWD, OneKDC.PASS); + + // Test for the bug fix: doNotPrompt can be true if tryFirstPass=true + login(null, "doNotPrompt", "true", "storeKey", "true", + "tryFirstPass", "true", NAME, OneKDC.USER, PWD, OneKDC.PASS); + } + + static void login(CallbackHandler callback, Object... options) + throws Exception { + Krb5LoginModule krb5 = new Krb5LoginModule(); + Subject subject = new Subject(); + Map map = new HashMap(); + Map shared = new HashMap(); + + int count = options.length / 2; + for (int i = 0; i < count; i++) { + String key = (String) options[2 * i]; + Object value = options[2 * i + 1]; + if (key.startsWith("javax")) { + shared.put(key, value); + } else { + map.put(key, (String) value); + } + } + krb5.initialize(subject, callback, shared, map); + krb5.login(); + krb5.commit(); + if (!subject.getPrincipals().iterator().next() + .getName().startsWith(OneKDC.USER)) { + throw new Exception("The authenticated is not " + OneKDC.USER); + } + } + + static class MyCallback implements CallbackHandler { + + private String name; + private char[] password; + + public MyCallback(String name, char[] password) { + this.name = name; + this.password = password; + } + + public void handle(Callback[] callbacks) { + for (Callback callback : callbacks) { + System.err.println(callback); + if (callback instanceof NameCallback) { + System.err.println("name is " + name); + ((NameCallback) callback).setName(name); + } + if (callback instanceof PasswordCallback) { + System.err.println("pass is " + new String(password)); + ((PasswordCallback) callback).setPassword(password); + } + } + } + } +} diff --git a/test/sun/security/krb5/auto/NonMutualSpnego.java b/test/sun/security/krb5/auto/NonMutualSpnego.java new file mode 100644 index 0000000000000000000000000000000000000000..f2e7812c3ed317ee375d7b200057a6d85e9b6cb5 --- /dev/null +++ b/test/sun/security/krb5/auto/NonMutualSpnego.java @@ -0,0 +1,58 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6733095 + * @summary Failure when SPNEGO request non-Mutual + */ + +import sun.security.jgss.GSSUtil; + +public class NonMutualSpnego { + + public static void main(String[] args) + throws Exception { + + // Create and start the KDC + new OneKDC(null).writeJAASConf(); + new NonMutualSpnego().go(); + } + + void go() throws Exception { + Context c = Context.fromJAAS("client"); + Context s = Context.fromJAAS("server"); + + c.startAsClient(OneKDC.SERVER, GSSUtil.GSS_SPNEGO_MECH_OID); + c.x().requestMutualAuth(false); + s.startAsServer(GSSUtil.GSS_SPNEGO_MECH_OID); + + Context.handshake(c, s); + + Context.transmit("i say high --", c, s); + Context.transmit(" you say low", s, c); + + c.dispose(); + s.dispose(); + } +} diff --git a/test/sun/security/krb5/auto/OneKDC.java b/test/sun/security/krb5/auto/OneKDC.java new file mode 100644 index 0000000000000000000000000000000000000000..9505c6a3c8f6378ece79fa61e1e7c391056de96f --- /dev/null +++ b/test/sun/security/krb5/auto/OneKDC.java @@ -0,0 +1,155 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.security.Security; +import javax.security.auth.callback.Callback; +import javax.security.auth.callback.CallbackHandler; +import javax.security.auth.callback.NameCallback; +import javax.security.auth.callback.PasswordCallback; +import sun.security.krb5.Config; + +/** + * This class starts a simple KDC with one realm, several typical principal + * names, generates delete-on-exit krb5.conf and keytab files, and setup + * system properties for them. There's also a helper method to generate a + * JAAS login config file that can be used for JAAS or JGSS apps. + *

      + * Just call this line to start everything: + *

      + * new OneKDC(null).writeJaasConf();
      + * 
      + */ +public class OneKDC extends KDC { + + // The krb5 codes would try to canonicalize hostnames before creating + // a service principal name, so let's find out the canonicalized form + // of localhost first. The following codes mimic the process inside + // PrincipalName.java. + static String localhost = "localhost"; + static { + try { + localhost = InetAddress.getByName(localhost) + .getCanonicalHostName(); + } catch (UnknownHostException uhe) { + ; // Ignore, localhost is still "localhost" + } + } + public static final String USER = "dummy"; + public static final char[] PASS = "bogus".toCharArray(); + public static String SERVER = "server/" + localhost; + public static String BACKEND = "backend/" + localhost; + public static final String KRB5_CONF = "localkdc-krb5.conf"; + public static final String KTAB = "localkdc.ktab"; + public static final String JAAS_CONF = "localkdc-jaas.conf"; + public static final String REALM = "RABBIT.HOLE"; + + /** + * Creates the KDC and starts it. + * @param etype Encryption type, null if not specified + * @throws java.lang.Exception if there's anything wrong + */ + public OneKDC(String etype) throws Exception { + super(REALM, 0, true); + addPrincipal(USER, PASS); + addPrincipalRandKey("krbtgt/" + REALM); + addPrincipalRandKey(SERVER); + addPrincipalRandKey(BACKEND); + KDC.saveConfig(KRB5_CONF, this, + "forwardable = true", + "default_keytab_name = " + KTAB, + etype == null ? "" : "default_tkt_enctypes=" + etype + "\ndefault_tgs_enctypes=" + etype); + System.setProperty("java.security.krb5.conf", KRB5_CONF); + // Whatever krb5.conf had been loaded before, we reload ours now. + Config.refresh(); + + writeKtab(KTAB); + new File(KRB5_CONF).deleteOnExit(); + new File(KTAB).deleteOnExit(); + } + + /** + * Writes a JAAS login config file, which contains as many as useful + * entries, including JGSS style initiator/acceptor and normal JAAS + * entries with names using existing OneKDC principals. + * @throws java.lang.Exception if anything goes wrong + */ + public void writeJAASConf() throws IOException { + System.setProperty("java.security.auth.login.config", JAAS_CONF); + File f = new File(JAAS_CONF); + FileOutputStream fos = new FileOutputStream(f); + fos.write(( + "com.sun.security.jgss.krb5.initiate {\n" + + " com.sun.security.auth.module.Krb5LoginModule required;\n};\n" + + "com.sun.security.jgss.krb5.accept {\n" + + " com.sun.security.auth.module.Krb5LoginModule required\n" + + " principal=\"" + SERVER + "\"\n" + + " useKeyTab=true\n" + + " isInitiator=false\n" + + " storeKey=true;\n};\n" + + "client {\n" + + " com.sun.security.auth.module.Krb5LoginModule required;\n};\n" + + "server {\n" + + " com.sun.security.auth.module.Krb5LoginModule required\n" + + " principal=\"" + SERVER + "\"\n" + + " useKeyTab=true\n" + + " storeKey=true;\n};\n" + + "backend {\n" + + " com.sun.security.auth.module.Krb5LoginModule required\n" + + " principal=\"" + BACKEND + "\"\n" + + " useKeyTab=true\n" + + " storeKey=true\n" + + " isInitiator=false;\n};\n" + ).getBytes()); + fos.close(); + f.deleteOnExit(); + Security.setProperty("auth.login.defaultCallbackHandler", "OneKDC$CallbackForClient"); + } + + /** + * The default callback handler for JAAS login. Note that this handler is + * hard coded to provide only info for USER1. If you need to provide info + * for another principal, please use Context.fromUserPass() instead. + */ + public static class CallbackForClient implements CallbackHandler { + public void handle(Callback[] callbacks) { + String user = OneKDC.USER; + char[] pass = OneKDC.PASS; + for (Callback callback : callbacks) { + if (callback instanceof NameCallback) { + System.out.println("Callback for name: " + user); + ((NameCallback) callback).setName(user); + } + if (callback instanceof PasswordCallback) { + System.out.println("Callback for pass: " + + new String(pass)); + ((PasswordCallback) callback).setPassword(pass); + } + } + } + } +} diff --git a/test/sun/security/krb5/auto/basic.sh b/test/sun/security/krb5/auto/basic.sh new file mode 100644 index 0000000000000000000000000000000000000000..388e4a1ea55d8d46e7f0119376cdcaeec2e6691c --- /dev/null +++ b/test/sun/security/krb5/auto/basic.sh @@ -0,0 +1,65 @@ +# +# Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +# @test +# @bug 6706974 +# @summary Add krb5 test infrastructure +# @run shell/timeout=300 basic.sh +# + +if [ "${TESTSRC}" = "" ] ; then + TESTSRC="." +fi +if [ "${TESTJAVA}" = "" ] ; then + echo "TESTJAVA not set. Test cannot execute." + echo "FAILED!!!" + exit 1 +fi + +# set platform-dependent variables +OS=`uname -s` +case "$OS" in + Windows_* ) + FS="\\" + ;; + * ) + FS="/" + ;; +esac + +${TESTJAVA}${FS}bin${FS}javac -d . \ + ${TESTSRC}${FS}BasicKrb5Test.java \ + ${TESTSRC}${FS}KDC.java \ + ${TESTSRC}${FS}OneKDC.java \ + ${TESTSRC}${FS}Action.java \ + ${TESTSRC}${FS}Context.java \ + || exit 10 +${TESTJAVA}${FS}bin${FS}java -Dtest.src=$TESTSRC BasicKrb5Test || exit 100 +${TESTJAVA}${FS}bin${FS}java -Dtest.src=$TESTSRC BasicKrb5Test des-cbc-crc || exit 1 +${TESTJAVA}${FS}bin${FS}java -Dtest.src=$TESTSRC BasicKrb5Test des-cbc-md5 || exit 3 +${TESTJAVA}${FS}bin${FS}java -Dtest.src=$TESTSRC BasicKrb5Test des3-cbc-sha1 || exit 16 +${TESTJAVA}${FS}bin${FS}java -Dtest.src=$TESTSRC BasicKrb5Test aes128-cts || exit 17 +${TESTJAVA}${FS}bin${FS}java -Dtest.src=$TESTSRC BasicKrb5Test aes256-cts || exit 18 +${TESTJAVA}${FS}bin${FS}java -Dtest.src=$TESTSRC BasicKrb5Test rc4-hmac || exit 23 + +exit 0 diff --git a/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLEngineImpl/EmptyExtensionData.java b/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLEngineImpl/EmptyExtensionData.java new file mode 100644 index 0000000000000000000000000000000000000000..3d86cc90e9d347d6e06a6dacac63cddd119005d0 --- /dev/null +++ b/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLEngineImpl/EmptyExtensionData.java @@ -0,0 +1,196 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * @test + * @bug 6728126 + * @summary Parsing Extensions in Client Hello message is done in a wrong way + */ + +import javax.net.ssl.*; +import javax.net.ssl.SSLEngineResult.*; +import java.io.*; +import java.security.*; +import java.nio.*; + +public class EmptyExtensionData { + + private static boolean debug = false; + + private static String pathToStores = "../../../../../../../etc"; + private static String keyStoreFile = "keystore"; + private static String trustStoreFile = "truststore"; + private static String passwd = "passphrase"; + + private static String keyFilename = + System.getProperty("test.src", "./") + "/" + pathToStores + + "/" + keyStoreFile; + private static String trustFilename = + System.getProperty("test.src", "./") + "/" + pathToStores + + "/" + trustStoreFile; + + private static void checkDone(SSLEngine ssle) throws Exception { + if (!ssle.isInboundDone()) { + throw new Exception("isInboundDone isn't done"); + } + if (!ssle.isOutboundDone()) { + throw new Exception("isOutboundDone isn't done"); + } + } + + private static void runTest(SSLEngine ssle) throws Exception { + // a client hello message with an empty extension data + byte[] msg_clihello = { + (byte)0x16, (byte)0x03, (byte)0x01, (byte)0x00, + (byte)0x6f, (byte)0x01, (byte)0x00, (byte)0x00, + (byte)0x6b, (byte)0x03, (byte)0x01, (byte)0x48, + (byte)0x90, (byte)0x71, (byte)0xfc, (byte)0xf9, + (byte)0xa2, (byte)0x3a, (byte)0xd7, (byte)0xa8, + (byte)0x0b, (byte)0x25, (byte)0xf1, (byte)0x2b, + (byte)0x88, (byte)0x80, (byte)0x66, (byte)0xca, + (byte)0x07, (byte)0x78, (byte)0x2a, (byte)0x08, + (byte)0x9d, (byte)0x62, (byte)0x1d, (byte)0x89, + (byte)0xc9, (byte)0x1e, (byte)0x1f, (byte)0xe5, + (byte)0x92, (byte)0xfe, (byte)0x8d, (byte)0x00, + (byte)0x00, (byte)0x24, (byte)0x00, (byte)0x88, + (byte)0x00, (byte)0x87, (byte)0x00, (byte)0x39, + (byte)0x00, (byte)0x38, (byte)0x00, (byte)0x84, + (byte)0x00, (byte)0x35, (byte)0x00, (byte)0x45, + (byte)0x00, (byte)0x44, (byte)0x00, (byte)0x33, + (byte)0x00, (byte)0x32, (byte)0x00, (byte)0x41, + (byte)0x00, (byte)0x04, (byte)0x00, (byte)0x05, + (byte)0x00, (byte)0x2f, (byte)0x00, (byte)0x16, + (byte)0x00, (byte)0x13, (byte)0xfe, (byte)0xff, + (byte)0x00, (byte)0x0a, (byte)0x01, (byte)0x00, + (byte)0x00, (byte)0x1e, (byte)0x00, (byte)0x00, + (byte)0x00, (byte)0x16, (byte)0x00, (byte)0x14, + (byte)0x00, (byte)0x00, (byte)0x11, (byte)0x6a, + (byte)0x75, (byte)0x73, (byte)0x74, (byte)0x69, + (byte)0x6e, (byte)0x2e, (byte)0x75, (byte)0x6b, + (byte)0x2e, (byte)0x73, (byte)0x75, (byte)0x6e, + (byte)0x2e, (byte)0x63, (byte)0x6f, (byte)0x6d, + (byte)0x00, (byte)0x23, (byte)0x00, (byte)0x00 + }; + ByteBuffer bf_clihello = ByteBuffer.wrap(msg_clihello); + + SSLSession session = ssle.getSession(); + int appBufferMax = session.getApplicationBufferSize(); + int netBufferMax = session.getPacketBufferSize(); + + ByteBuffer serverIn = ByteBuffer.allocate(appBufferMax + 50); + ByteBuffer serverOut = ByteBuffer.wrap("I'm Server".getBytes()); + ByteBuffer sTOc = ByteBuffer.allocate(netBufferMax); + + ssle.beginHandshake(); + + // unwrap the clientHello message. + SSLEngineResult result = ssle.unwrap(bf_clihello, serverIn); + System.out.println("server unwrap " + result); + runDelegatedTasks(result, ssle); + + // one more step, ensure the clientHello message is parsed. + SSLEngineResult.HandshakeStatus status = ssle.getHandshakeStatus(); + if ( status == HandshakeStatus.NEED_UNWRAP) { + result = ssle.unwrap(bf_clihello, serverIn); + System.out.println("server unwrap " + result); + runDelegatedTasks(result, ssle); + } else if ( status == HandshakeStatus.NEED_WRAP) { + result = ssle.wrap(serverOut, sTOc); + System.out.println("server wrap " + result); + runDelegatedTasks(result, ssle); + } else { + throw new Exception("unexpected handshake status " + status); + } + + // enough, stop + } + + /* + * If the result indicates that we have outstanding tasks to do, + * go ahead and run them in this thread. + */ + private static void runDelegatedTasks(SSLEngineResult result, + SSLEngine engine) throws Exception { + + if (result.getHandshakeStatus() == HandshakeStatus.NEED_TASK) { + Runnable runnable; + while ((runnable = engine.getDelegatedTask()) != null) { + log("\trunning delegated task..."); + runnable.run(); + } + HandshakeStatus hsStatus = engine.getHandshakeStatus(); + if (hsStatus == HandshakeStatus.NEED_TASK) { + throw new Exception( + "handshake shouldn't need additional tasks"); + } + log("\tnew HandshakeStatus: " + hsStatus); + } + } + + public static void main(String args[]) throws Exception { + + SSLEngine ssle = createSSLEngine(keyFilename, trustFilename); + runTest(ssle); + + System.out.println("Test Passed."); + } + + /* + * Create an initialized SSLContext to use for this test. + */ + static private SSLEngine createSSLEngine(String keyFile, String trustFile) + throws Exception { + + SSLEngine ssle; + + KeyStore ks = KeyStore.getInstance("JKS"); + KeyStore ts = KeyStore.getInstance("JKS"); + + char[] passphrase = "passphrase".toCharArray(); + + ks.load(new FileInputStream(keyFile), passphrase); + ts.load(new FileInputStream(trustFile), passphrase); + + KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); + kmf.init(ks, passphrase); + + TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509"); + tmf.init(ts); + + SSLContext sslCtx = SSLContext.getInstance("TLS"); + + sslCtx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); + + ssle = sslCtx.createSSLEngine(); + ssle.setUseClientMode(false); + + return ssle; + } + + + private static void log(String str) { + if (debug) { + System.out.println(str); + } + } +}