提交 582eceab 编写于 作者: V valeriep

Merge

...@@ -96,3 +96,5 @@ b357910aa04aead2a16b6d6ff395a8df4b51d1dd jdk7-b118 ...@@ -96,3 +96,5 @@ b357910aa04aead2a16b6d6ff395a8df4b51d1dd jdk7-b118
ecab7eefb8f2326fd90fb632f47f1b6f81e928f8 jdk7-b119 ecab7eefb8f2326fd90fb632f47f1b6f81e928f8 jdk7-b119
37d74e29687cf07c2bf9411af58c7e42440855c3 jdk7-b120 37d74e29687cf07c2bf9411af58c7e42440855c3 jdk7-b120
a661d8587b5d8986aacae086f5df66af9e1a96b1 jdk7-b121 a661d8587b5d8986aacae086f5df66af9e1a96b1 jdk7-b121
ac311eb325bfc763698219252bf3cee9e091f3af jdk7-b122
869190935eedee7750d955019ab2a1b80f0a13a8 jdk7-b123
...@@ -466,7 +466,8 @@ else ...@@ -466,7 +466,8 @@ else
# On X86, make sure tail call optimization is off # On X86, make sure tail call optimization is off
# The z and y are the tail call optimizations. # The z and y are the tail call optimizations.
ifeq ($(ARCH_FAMILY), i586) ifeq ($(ARCH_FAMILY), i586)
ifeq ($(shell $(EXPR) $(CC_VER) \> 5.8), 1) ifeq ($(shell $(EXPR) $(CC_MAJORVER) \>= 5), 1)
ifeq ($(shell $(EXPR) $(CC_MINORVER) \> 8), 1)
# Somehow, tail call optimization is creeping in. # Somehow, tail call optimization is creeping in.
# Make sure it is off. # Make sure it is off.
# WARNING: These may cause compiler warnings about duplicate -O options # WARNING: These may cause compiler warnings about duplicate -O options
...@@ -474,6 +475,7 @@ else ...@@ -474,6 +475,7 @@ else
CXX_XKEEPFRAME_OPTIONS += -Qoption ube -O$(OPT_LEVEL/$(OPTIMIZATION_LEVEL))~yz CXX_XKEEPFRAME_OPTIONS += -Qoption ube -O$(OPT_LEVEL/$(OPTIMIZATION_LEVEL))~yz
endif endif
endif endif
endif
# On i586 we need to tell the code generator to ALWAYS use a # On i586 we need to tell the code generator to ALWAYS use a
# frame pointer. # frame pointer.
...@@ -487,7 +489,9 @@ else ...@@ -487,7 +489,9 @@ else
CC_XKEEPFRAME_OPTIONS += -Wu,-Z~B CC_XKEEPFRAME_OPTIONS += -Wu,-Z~B
CXX_XKEEPFRAME_OPTIONS += -Qoption ube -Z~B CXX_XKEEPFRAME_OPTIONS += -Qoption ube -Z~B
endif endif
ifeq ($(shell $(EXPR) $(CC_VER) \> 5.6), 1)
ifeq ($(shell $(EXPR) $(CC_MAJORVER) \>= 5), 1)
ifeq ($(shell $(EXPR) $(CC_MINORVER) \> 6), 1)
# Do NOT use frame pointer register as a general purpose opt register # Do NOT use frame pointer register as a general purpose opt register
CC_OPT/NONE += -xregs=no%frameptr CC_OPT/NONE += -xregs=no%frameptr
CXX_OPT/NONE += -xregs=no%frameptr CXX_OPT/NONE += -xregs=no%frameptr
...@@ -495,6 +499,7 @@ else ...@@ -495,6 +499,7 @@ else
CXX_XKEEPFRAME_OPTIONS += -xregs=no%frameptr CXX_XKEEPFRAME_OPTIONS += -xregs=no%frameptr
endif endif
endif endif
endif
# Optimizer for sparc needs to be told not to do certain things # Optimizer for sparc needs to be told not to do certain things
# related to frames or save instructions. # related to frames or save instructions.
......
...@@ -251,8 +251,8 @@ ZLIB_VERSION = 1.2.3 ...@@ -251,8 +251,8 @@ ZLIB_VERSION = 1.2.3
# Localizations for the different parts of the product beyond English # Localizations for the different parts of the product beyond English
# #
JRE_LOCALES = de es fr it ja ko sv zh_CN zh_TW zh_HK JRE_LOCALES = de es fr it ja ko pt_BR sv zh_CN zh_TW zh_HK
PLUGIN_LOCALES = de es fr it ja ko sv zh_CN zh_TW zh_HK PLUGIN_LOCALES = de es fr it ja ko pt_BR sv zh_CN zh_TW zh_HK
JDK_LOCALES = ja zh_CN JDK_LOCALES = ja zh_CN
# #
......
...@@ -61,6 +61,7 @@ endif ...@@ -61,6 +61,7 @@ endif
# Get compiler version # Get compiler version
_CC_VER :=$(shell $(CC) -V 2>&1 | $(HEAD) -n 1) _CC_VER :=$(shell $(CC) -V 2>&1 | $(HEAD) -n 1)
CC_VER :=$(call GetVersion,"$(_CC_VER)") CC_VER :=$(call GetVersion,"$(_CC_VER)")
CC_MAJORVER :=$(call MajorVersion,$(CC_VER))
CC_MINORVER :=$(call MinorVersion,$(CC_VER)) CC_MINORVER :=$(call MinorVersion,$(CC_VER))
# Name of compilers being used # Name of compilers being used
......
# #
# Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
...@@ -193,7 +193,7 @@ endif ...@@ -193,7 +193,7 @@ endif
REQUIRED_ANT_VER = 1.6.3 REQUIRED_ANT_VER = 1.6.3
REQUIRED_BOOT_VER = 1.6 REQUIRED_BOOT_VER = 1.6
REQUIRED_FREETYPE_VERSION = 2.3.0 REQUIRED_FREETYPE_VERSION = 2.3.0
REQUIRED_MAKE_VER = 3.78 REQUIRED_MAKE_VER = 3.81
REQUIRED_UNZIP_VER = 5.12 REQUIRED_UNZIP_VER = 5.12
REQUIRED_ZIP_VER = 2.2 REQUIRED_ZIP_VER = 2.2
...@@ -287,9 +287,12 @@ ifdef BUILD_NUMBER ...@@ -287,9 +287,12 @@ ifdef BUILD_NUMBER
FULL_VERSION = $(RELEASE)-$(BUILD_NUMBER) FULL_VERSION = $(RELEASE)-$(BUILD_NUMBER)
else else
BUILD_NUMBER = b00 BUILD_NUMBER = b00
ifndef USER_RELEASE_SUFFIX
BUILD_DATE := $(shell $(DATE) '+%Y_%m_%d_%H_%M') BUILD_DATE := $(shell $(DATE) '+%Y_%m_%d_%H_%M')
CLEAN_USERNAME := $(shell $(ECHO) "$(USER)" | $(TR) -d -c '[:alnum:]') CLEAN_USERNAME := $(shell $(ECHO) "$(USER)" | $(TR) -d -c '[:alnum:]')
USER_RELEASE_SUFFIX := $(shell $(ECHO) "$(CLEAN_USERNAME)_$(BUILD_DATE)" | $(TR) '[:upper:]' '[:lower:]' ) USER_RELEASE_SUFFIX := $(shell $(ECHO) "$(CLEAN_USERNAME)_$(BUILD_DATE)" | $(TR) '[:upper:]' '[:lower:]' )
endif
export USER_RELEASE_SUFFIX
FULL_VERSION = $(RELEASE)-$(USER_RELEASE_SUFFIX)-$(BUILD_NUMBER) FULL_VERSION = $(RELEASE)-$(USER_RELEASE_SUFFIX)-$(BUILD_NUMBER)
endif endif
...@@ -335,7 +338,9 @@ endif ...@@ -335,7 +338,9 @@ endif
# Include any private definitions for this set of workspaces # Include any private definitions for this set of workspaces
_PRIVATE_DEFS_FILE=$(JDK_MAKE_SHARED_DIR)/PrivateDefs.gmk _PRIVATE_DEFS_FILE=$(JDK_MAKE_SHARED_DIR)/PrivateDefs.gmk
USING_PRIVATE_DEFS:=$(shell if [ -f $(_PRIVATE_DEFS_FILE) ]; then echo true; else echo false; fi) ifeq ($(USING_PRIVATE_DEFS),)
USING_PRIVATE_DEFS:=$(shell if [ -f $(_PRIVATE_DEFS_FILE) ]; then echo true; else echo false; fi)
endif
ifeq ($(USING_PRIVATE_DEFS),true) ifeq ($(USING_PRIVATE_DEFS),true)
dummy:=$(warning "WARNING: Using definitions from $(_PRIVATE_DEFS_FILE)") dummy:=$(warning "WARNING: Using definitions from $(_PRIVATE_DEFS_FILE)")
include $(_PRIVATE_DEFS_FILE) include $(_PRIVATE_DEFS_FILE)
......
...@@ -1393,14 +1393,15 @@ ifdef REQUIRED_ALSA_VERSION ...@@ -1393,14 +1393,15 @@ ifdef REQUIRED_ALSA_VERSION
endif endif
sane-alsa-headers: sane-alsa-headers:
ifdef REQUIRED_ALSA_VERSION ifdef REQUIRED_ALSA_VERSION
@if [ "$(ALSA_CHECK)" != "missing" ] ; then \
if [ "$(ALSA_CHECK)" != "same" -a "$(ALSA_CHECK)" != "newer" ] ; then \ if [ "$(ALSA_CHECK)" != "same" -a "$(ALSA_CHECK)" != "newer" ] ; then \
$(ECHO) "ERROR: The ALSA version must be $(REQUIRED_ALSA_VERSION) or higher. \n" \ $(ECHO) "ERROR: The ALSA version must be $(REQUIRED_ALSA_VERSION) or higher. \n" \
" You have the following ALSA version installed: $${alsa_version) \n" \ " You have the following ALSA version installed: $${alsa_version} \n" \
" Please reinstall ALSA (drivers and lib). You can download \n" \ " Please reinstall ALSA (drivers and lib). You can download \n" \
" the source distribution from http://www.alsa-project.org \n" \ " the source distribution from http://www.alsa-project.org \n" \
" or go to http://www.freshrpms.net/docs/alsa/ for precompiled RPM packages. \n" \ " or go to http://www.freshrpms.net/docs/alsa/ for precompiled RPM packages. \n" \
"" >> $(ERROR_FILE) ; \ "" >> $(ERROR_FILE) ; \
fi \ fi ; \
else \ else \
$(ECHO) "ERROR: You seem to not have installed ALSA $(REQUIRED_ALSA_VERSION) or higher. \n" \ $(ECHO) "ERROR: You seem to not have installed ALSA $(REQUIRED_ALSA_VERSION) or higher. \n" \
" Please install ALSA (drivers and lib). You can download the \n" \ " Please install ALSA (drivers and lib). You can download the \n" \
......
...@@ -36,9 +36,7 @@ AUTO_FILES_JAVA_DIRS = java/dyn sun/dyn ...@@ -36,9 +36,7 @@ AUTO_FILES_JAVA_DIRS = java/dyn sun/dyn
LANGUAGE_VERSION = -source 7 LANGUAGE_VERSION = -source 7
CLASS_VERSION = -target 7 CLASS_VERSION = -target 7
# Actually, it will be less disruptive to compile with the same # Tell the compiler not to accept transitional forms.
# -target option as the rest of the system, and just turn on OTHER_JAVACFLAGS = -XDallowTransitionalJSR292=no
# the specific compiler option we need here:
OTHER_JAVACFLAGS = -XDinvokedynamic
include $(BUILDDIR)/common/Classes.gmk include $(BUILDDIR)/common/Classes.gmk
...@@ -37,4 +37,5 @@ FILES_java = \ ...@@ -37,4 +37,5 @@ FILES_java = \
sun/util/resources/TimeZoneNames_es.java \ sun/util/resources/TimeZoneNames_es.java \
sun/util/resources/TimeZoneNames_fr.java \ sun/util/resources/TimeZoneNames_fr.java \
sun/util/resources/TimeZoneNames_it.java \ sun/util/resources/TimeZoneNames_it.java \
sun/util/resources/TimeZoneNames_pt_BR.java \
sun/util/resources/TimeZoneNames_sv.java sun/util/resources/TimeZoneNames_sv.java
...@@ -26,9 +26,6 @@ ...@@ -26,9 +26,6 @@
# JPRT rule to build this workspace # JPRT rule to build this workspace
JPRT_ARCHIVE_BUNDLE=$(ABS_OUTPUTDIR)/$(JPRT_BUILD_FLAVOR)-bundle.zip JPRT_ARCHIVE_BUNDLE=$(ABS_OUTPUTDIR)/$(JPRT_BUILD_FLAVOR)-bundle.zip
ifdef JPRT_BUILD_VERSION
MILESTONE=$(JPRT_BUILD_VERSION)
endif
jprt_build_product: all images jprt_build_product: all images
( $(CD) $(OUTPUTDIR)/j2sdk-image && \ ( $(CD) $(OUTPUTDIR)/j2sdk-image && \
......
...@@ -18,11 +18,15 @@ MEDIA_SRC = $(SUN_SRC)/awt/medialib ...@@ -18,11 +18,15 @@ MEDIA_SRC = $(SUN_SRC)/awt/medialib
J2D_SRC = $(SUN_SRC)/java2d J2D_SRC = $(SUN_SRC)/java2d
J2D_FONT_SRC = $(SUN_SRC)/font J2D_FONT_SRC = $(SUN_SRC)/font
J2D_WINDOWS_SRC = $(WINDOWS_SRC)/native/sun/java2d J2D_WINDOWS_SRC = $(WINDOWS_SRC)/native/sun/java2d
AWT_WINDOWS_SRC = $(WINDOWS_SRC)/native/sun/awt
LOOP_SRC = $(SUN_SRC)/java2d/loops LOOP_SRC = $(SUN_SRC)/java2d/loops
PIPE_SRC = $(SUN_SRC)/java2d/pipe PIPE_SRC = $(SUN_SRC)/java2d/pipe
WINDOWS_SRC = $(TOPDIR)/src/windows WINDOWS_SRC = $(TOPDIR)/src/windows
SRC = $(WINDOWS_SRC)/native/sun/windows SRC = $(WINDOWS_SRC)/native/sun/windows
# ensure consistent sort order
LC_ALL:= C
SRCDIRS = \ SRCDIRS = \
$(COMP_SRC) \ $(COMP_SRC) \
$(DEBUG_SRC) \ $(DEBUG_SRC) \
...@@ -61,6 +65,7 @@ INCLUDES = \ ...@@ -61,6 +65,7 @@ INCLUDES = \
-I$(J2D_WINDOWS_SRC)/windows \ -I$(J2D_WINDOWS_SRC)/windows \
-I$(J2D_WINDOWS_SRC)/d3d \ -I$(J2D_WINDOWS_SRC)/d3d \
-I$(J2D_WINDOWS_SRC)/opengl \ -I$(J2D_WINDOWS_SRC)/opengl \
-I$(AWT_WINDOWS_SRC) \
-I$(LOOP_SRC) \ -I$(LOOP_SRC) \
-I$(PIPE_SRC) \ -I$(PIPE_SRC) \
-I$(SRC) -I$(SRC)
...@@ -68,22 +73,29 @@ INCLUDES = \ ...@@ -68,22 +73,29 @@ INCLUDES = \
STUBFILES = \ STUBFILES = \
$(STUBDIR)/ddraw.h \ $(STUBDIR)/ddraw.h \
$(STUBDIR)/d3d.h \ $(STUBDIR)/d3d.h \
$(STUBDIR)/d3d9.h \
$(STUBDIR)/Ole2.h \ $(STUBDIR)/Ole2.h \
$(STUBDIR)/Zmouse.h \ $(STUBDIR)/Zmouse.h \
$(STUBDIR)/cderr.h \ $(STUBDIR)/cderr.h \
$(STUBDIR)/comdef.h \
$(STUBDIR)/commctrl.h \ $(STUBDIR)/commctrl.h \
$(STUBDIR)/commdlg.h \ $(STUBDIR)/commdlg.h \
$(STUBDIR)/comutil.h \
$(STUBDIR)/direct.h \ $(STUBDIR)/direct.h \
$(STUBDIR)/d3dcom.h \ $(STUBDIR)/d3dcom.h \
$(STUBDIR)/imm.h \ $(STUBDIR)/imm.h \
$(STUBDIR)/ime.h \ $(STUBDIR)/ime.h \
$(STUBDIR)/io.h \ $(STUBDIR)/io.h \
$(STUBDIR)/map \
$(STUBDIR)/mmsystem.h \ $(STUBDIR)/mmsystem.h \
$(STUBDIR)/new.h \ $(STUBDIR)/new.h \
$(STUBDIR)/new \
$(STUBDIR)/ole2.h \ $(STUBDIR)/ole2.h \
$(STUBDIR)/process.h \
$(STUBDIR)/richole.h \ $(STUBDIR)/richole.h \
$(STUBDIR)/richedit.h \ $(STUBDIR)/richedit.h \
$(STUBDIR)/shellapi.h \ $(STUBDIR)/shellapi.h \
$(STUBDIR)/shlwapi.h \
$(STUBDIR)/shlobj.h \ $(STUBDIR)/shlobj.h \
$(STUBDIR)/tchar.h \ $(STUBDIR)/tchar.h \
$(STUBDIR)/winbase.h \ $(STUBDIR)/winbase.h \
...@@ -135,6 +147,9 @@ dependencies: ...@@ -135,6 +147,9 @@ dependencies:
include FILES_export_windows.gmk include FILES_export_windows.gmk
EXTRAFILES_java = \ EXTRAFILES_java = \
sun/java2d/opengl/OGLContext/OGLContextCaps.java \
sun/java2d/d3d/D3DPaints/MultiGradient.java \
sun/java2d/d3d/D3DContext/D3DContextCaps.java \
java/lang/Integer.java java/lang/Integer.java
FILES_java = $(FILES_export) $(FILES_export2) $(FILES_export3) \ FILES_java = $(FILES_export) $(FILES_export2) $(FILES_export3) \
......
...@@ -85,6 +85,8 @@ FILES_2D_c = \ ...@@ -85,6 +85,8 @@ FILES_2D_c = \
ScaledBlit.c \ ScaledBlit.c \
FillRect.c \ FillRect.c \
FillSpans.c \ FillSpans.c \
FillParallelogram.c \
DrawParallelogram.c \
DrawLine.c \ DrawLine.c \
DrawRect.c \ DrawRect.c \
DrawPolygons.c \ DrawPolygons.c \
......
...@@ -30,6 +30,8 @@ FILES_c = \ ...@@ -30,6 +30,8 @@ FILES_c = \
ScaledBlit.c \ ScaledBlit.c \
FillRect.c \ FillRect.c \
FillSpans.c \ FillSpans.c \
FillParallelogram.c \
DrawParallelogram.c \
DrawLine.c \ DrawLine.c \
DrawRect.c \ DrawRect.c \
DrawPolygons.c \ DrawPolygons.c \
......
...@@ -36,6 +36,8 @@ FILES_export = \ ...@@ -36,6 +36,8 @@ FILES_export = \
sun/java2d/loops/TransformBlit.java \ sun/java2d/loops/TransformBlit.java \
sun/java2d/loops/FillRect.java \ sun/java2d/loops/FillRect.java \
sun/java2d/loops/FillSpans.java \ sun/java2d/loops/FillSpans.java \
sun/java2d/loops/FillParallelogram.java \
sun/java2d/loops/DrawParallelogram.java \
sun/java2d/loops/DrawGlyphList.java \ sun/java2d/loops/DrawGlyphList.java \
sun/java2d/loops/DrawGlyphListAA.java \ sun/java2d/loops/DrawGlyphListAA.java \
sun/java2d/loops/DrawGlyphListLCD.java \ sun/java2d/loops/DrawGlyphListLCD.java \
......
...@@ -135,6 +135,8 @@ FILES_export2 = \ ...@@ -135,6 +135,8 @@ FILES_export2 = \
sun/java2d/loops/ScaledBlit.java \ sun/java2d/loops/ScaledBlit.java \
sun/java2d/loops/FillRect.java \ sun/java2d/loops/FillRect.java \
sun/java2d/loops/FillSpans.java \ sun/java2d/loops/FillSpans.java \
sun/java2d/loops/FillParallelogram.java \
sun/java2d/loops/DrawParallelogram.java \
sun/java2d/loops/DrawGlyphList.java \ sun/java2d/loops/DrawGlyphList.java \
sun/java2d/loops/DrawGlyphListAA.java \ sun/java2d/loops/DrawGlyphListAA.java \
sun/java2d/loops/DrawGlyphListLCD.java \ sun/java2d/loops/DrawGlyphListLCD.java \
......
...@@ -370,7 +370,8 @@ _FONTCONFIGS = \ ...@@ -370,7 +370,8 @@ _FONTCONFIGS = \
fontconfig.RedHat.4.properties \ fontconfig.RedHat.4.properties \
fontconfig.Sun.properties \ fontconfig.Sun.properties \
fontconfig.Turbo.properties \ fontconfig.Turbo.properties \
fontconfig.SuSE.properties fontconfig.SuSE.10.properties \
fontconfig.SuSE.11.properties
endif endif
FONTCONFIGS_SRC_PREFIX = $(PLATFORM). FONTCONFIGS_SRC_PREFIX = $(PLATFORM).
......
此差异已折叠。
...@@ -112,6 +112,8 @@ SUNWprivate_1.1 { ...@@ -112,6 +112,8 @@ SUNWprivate_1.1 {
Java_sun_java2d_loops_DrawRect_DrawRect; Java_sun_java2d_loops_DrawRect_DrawRect;
Java_sun_java2d_loops_FillRect_FillRect; Java_sun_java2d_loops_FillRect_FillRect;
Java_sun_java2d_loops_FillSpans_FillSpans; Java_sun_java2d_loops_FillSpans_FillSpans;
Java_sun_java2d_loops_FillParallelogram_FillParallelogram;
Java_sun_java2d_loops_DrawParallelogram_DrawParallelogram;
Java_sun_java2d_loops_GraphicsPrimitiveMgr_initIDs; Java_sun_java2d_loops_GraphicsPrimitiveMgr_initIDs;
Java_sun_java2d_loops_GraphicsPrimitiveMgr_registerNativeLoops; Java_sun_java2d_loops_GraphicsPrimitiveMgr_registerNativeLoops;
Java_sun_java2d_loops_MaskBlit_MaskBlit; Java_sun_java2d_loops_MaskBlit_MaskBlit;
......
...@@ -68,8 +68,7 @@ FILES_cpp_shared = \ ...@@ -68,8 +68,7 @@ FILES_cpp_shared = \
GlyphPositioningTables.cpp \ GlyphPositioningTables.cpp \
GlyphSubstLookupProc.cpp \ GlyphSubstLookupProc.cpp \
GlyphSubstitutionTables.cpp \ GlyphSubstitutionTables.cpp \
HebrewLigatureData.cpp \ HangulLayoutEngine.cpp \
HebrewShaping.cpp \
IndicClassTables.cpp \ IndicClassTables.cpp \
IndicReordering.cpp \ IndicReordering.cpp \
KernTable.cpp \ KernTable.cpp \
...@@ -95,6 +94,8 @@ FILES_cpp_shared = \ ...@@ -95,6 +94,8 @@ FILES_cpp_shared = \
SubstitutionLookups.cpp \ SubstitutionLookups.cpp \
ThaiShaping.cpp \ ThaiShaping.cpp \
ThaiStateTables.cpp \ ThaiStateTables.cpp \
TibetanLayoutEngine.cpp \
TibetanReordering.cpp \
ValueRecords.cpp \ ValueRecords.cpp \
ArabicLayoutEngine.cpp \ ArabicLayoutEngine.cpp \
ArabicShaping.cpp \ ArabicShaping.cpp \
......
Copyright %YEARS% Sun Microsystems, Inc. All Rights Reserved. Copyright (c) %YEARS% Oracle and/or its affiliates. All rights reserved.
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions modification, are permitted provided that the following conditions
...@@ -26,3 +26,4 @@ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF ...@@ -26,3 +26,4 @@ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Copyright %YEARS% Sun Microsystems, Inc. All Rights Reserved. Copyright (c) %YEARS% Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
...@@ -20,3 +20,4 @@ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ...@@ -20,3 +20,4 @@ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
or visit www.oracle.com if you need additional information or have any or visit www.oracle.com if you need additional information or have any
questions. questions.
Copyright %YEARS% Sun Microsystems, Inc. All Rights Reserved. Copyright (c) %YEARS% Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it This code is free software; you can redistribute it and/or modify it
...@@ -18,3 +18,4 @@ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ...@@ -18,3 +18,4 @@ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
or visit www.oracle.com if you need additional information or have any or visit www.oracle.com if you need additional information or have any
questions. questions.
...@@ -159,7 +159,8 @@ static jboolean IsWildCardEnabled(); ...@@ -159,7 +159,8 @@ static jboolean IsWildCardEnabled();
* create a new thread to invoke JVM. See 6316197 for more information. * create a new thread to invoke JVM. See 6316197 for more information.
*/ */
static jlong threadStackSize = 0; /* stack size of the new thread */ static jlong threadStackSize = 0; /* stack size of the new thread */
static jlong heapSize = 0; /* heap size */ static jlong maxHeapSize = 0; /* max heap size */
static jlong initialHeapSize = 0; /* inital heap size */
int JNICALL JavaMain(void * args); /* entry point */ int JNICALL JavaMain(void * args); /* entry point */
...@@ -381,7 +382,7 @@ JavaMain(void * _args) ...@@ -381,7 +382,7 @@ JavaMain(void * _args)
if (showSettings != NULL) { if (showSettings != NULL) {
ShowSettings(env, showSettings); ShowSettings(env, showSettings);
CHECK_EXCEPTION_LEAVE(0); CHECK_EXCEPTION_LEAVE(1);
} }
/* If the user specified neither a class name nor a JAR file */ /* If the user specified neither a class name nor a JAR file */
if (printXUsage || printUsage || (jarfile == 0 && classname == 0)) { if (printXUsage || printUsage || (jarfile == 0 && classname == 0)) {
...@@ -689,7 +690,14 @@ AddOption(char *str, void *info) ...@@ -689,7 +690,14 @@ AddOption(char *str, void *info)
if (JLI_StrCCmp(str, "-Xmx") == 0) { if (JLI_StrCCmp(str, "-Xmx") == 0) {
jlong tmp; jlong tmp;
if (parse_size(str + 4, &tmp)) { if (parse_size(str + 4, &tmp)) {
heapSize = tmp; maxHeapSize = tmp;
}
}
if (JLI_StrCCmp(str, "-Xms") == 0) {
jlong tmp;
if (parse_size(str + 4, &tmp)) {
initialHeapSize = tmp;
} }
} }
} }
...@@ -1506,12 +1514,13 @@ ShowSettings(JNIEnv *env, char *optString) ...@@ -1506,12 +1514,13 @@ ShowSettings(JNIEnv *env, char *optString)
jstring joptString; jstring joptString;
NULL_CHECK(cls = FindBootStrapClass(env, "sun/launcher/LauncherHelper")); NULL_CHECK(cls = FindBootStrapClass(env, "sun/launcher/LauncherHelper"));
NULL_CHECK(showSettingsID = (*env)->GetStaticMethodID(env, cls, NULL_CHECK(showSettingsID = (*env)->GetStaticMethodID(env, cls,
"showSettings", "(ZLjava/lang/String;JJZ)V")); "showSettings", "(ZLjava/lang/String;JJJZ)V"));
joptString = (*env)->NewStringUTF(env, optString); joptString = (*env)->NewStringUTF(env, optString);
(*env)->CallStaticVoidMethod(env, cls, showSettingsID, (*env)->CallStaticVoidMethod(env, cls, showSettingsID,
JNI_TRUE, JNI_TRUE,
joptString, joptString,
(jlong)heapSize, (jlong)initialHeapSize,
(jlong)maxHeapSize,
(jlong)threadStackSize, (jlong)threadStackSize,
ServerClassMachine()); ServerClassMachine());
} }
......
#
# This properties file is used to create a PropertyResourceBundle
# It contains Locale specific strings used be the Accessibility package.
#
# When this file is read in, the strings are put into the
# defaults table. This is an implementation detail of the current
# workings of Accessibility. DO NOT DEPEND ON THIS.
# This may change in future versions of Accessibility as we improve
# localization support.
#
# @author Lynn Monsanto
#
# accessible roles
#
alert=alerta
awtcomponent=componente AWT
checkbox=caixa de sele\u00e7\u00e3o
colorchooser=seletor de cores
columnheader=cabe\u00e7alho da coluna
combobox=caixa de combina\u00e7\u00e3o
canvas=tela
desktopicon=\u00edcone da \u00e1rea de trabalho
desktoppane=painel da \u00e1rea de trabalho
dialog=caixa de di\u00e1logo
directorypane=painel do diret\u00f3rio
glasspane=painel transparente
filechooser=seletor de arquivos
filler=preenchimento
frame=quadro
internalframe=quadro interno
label=r\u00f3tulo
layeredpane=painel em camadas
list=lista
listitem=item da lista
menubar=barra de menus
menu=menu
menuitem=item do menu
optionpane=painel de op\u00e7\u00f5es
pagetab=aba da p\u00e1gina
pagetablist=lista de abas da p\u00e1gina
panel=painel
passwordtext=texto da senha
popupmenu=menu pop-up
progressbar=barra de progresso
pushbutton=bot\u00e3o de a\u00e7\u00e3o
radiobutton=bot\u00e3o de op\u00e7\u00e3o
rootpane=painel base
rowheader=cabe\u00e7alho da linha
scrollbar=barra de rolagem
scrollpane=painel de rolagem
separator=separador
slider=controle deslizante
splitpane=painel dividido
swingcomponent=componente swing
table=tabela
text=texto
tree=\u00e1rvore
togglebutton=bot\u00e3o de altern\u00e2ncia
toolbar=barra de ferramentas
tooltip=dica de ferramenta
unknown=desconhecido
viewport=janela de visualiza\u00e7\u00e3o
window=janela
#
# accessible relations
#
labelFor=r\u00f3tulo de
labeledBy=rotulado por
memberOf=membro de
controlledBy=controlledBy
controllerFor=controllerFor
#
# accessible states
#
active=ativo
armed=armado
busy=ocupado
checked=selecionado
collapsed=recolhido
editable=edit\u00e1vel
expandable=expans\u00edvel
expanded=expandido
enabled=habilitado
focusable=focaliz\u00e1vel
focused=focalizado
iconified=iconizado
modal=modal
multiline=v\u00e1rias linhas
multiselectable=m\u00faltipla escolha
opaque=opaco
pressed=pressionado
resizable=redimension\u00e1vel
selectable=selecion\u00e1vel
selected=selecionado
showing=exibindo
singleline=linha \u00fanica
transient=transit\u00f3rio
visible=vis\u00edvel
vertical=vertical
horizontal=horizontal
#
# accessible actions
#
toggle expandir=alternar expandir
# new relations, roles and states for J2SE 1.5.0
#
# accessible relations
#
flowsTo=fluxos para
flowsFrom=fluxos de
subwindowOf=subjanela de
parentWindowOf=janela pai de
embeds=integra
embeddedBy=integrado por
childNodeOf=n\u00f3 filho de
#
# accessible roles
#
header=cabe\u00e7alho
footer=rodap\u00e9
paragraph=par\u00e1grafo
ruler=r\u00e9gua
editbar=barra de edi\u00e7\u00e3o
progressMonitor=monitor de progresso
#
# accessible states
#
managesDescendants=gerencia descendentes
indeterminate=indeterminado
truncated=truncado
# new for J2SE 1.6.0
#
# accessible roles
#
htmlcontainer=cont\u00eainer HTML
#
# END OF MATERIAL TO LOCALIZE
#
# Refer to the note in basic.properties for a description as to what
# the mnemonics correspond to and how to calculate them.
# GTK specific properties
# GTK color chooser properties:
GTKColorChooserPanel.nameText=Seletor de cores do GTK
# mnemonic as a VK_ constant
GTKColorChooserPanel.mnemonic=71
# Can also define GTKColorChooserPanel.dispalyedMnemonicIndex if you
# want an index other than would normally be underlined by
# GTKColorChooserPanel.mnemonic to be underlined. This is only useful
# if GTKColorChooserPanel.nameText defines the mnemonic character more
# than once and you want a character other than the first underlined.
# Text and mnemonics for the spinner. You can also defined a different
# index for the mnemonic via xxxMnemonicIndex, for example
# GTKColorChooserPanel.hueMnemonicIndex=1 would indicate the second
# character of GTKColorChooserPanel.hueText should be underlined to
# represent the mnemonic.
GTKColorChooserPanel.hueText=Matiz:
GTKColorChooserPanel.hueMnemonic=72
GTKColorChooserPanel.redText=Vermelho:
GTKColorChooserPanel.redMnemonic=69
GTKColorChooserPanel.saturationText=Satura\u00e7\u00e3o:
GTKColorChooserPanel.saturationMnemonic=83
GTKColorChooserPanel.greenText=Verde:
GTKColorChooserPanel.greenMnemonic=71
GTKColorChooserPanel.valueText=Valor:
GTKColorChooserPanel.valueMnemonic=86
GTKColorChooserPanel.blueText=Azul:
GTKColorChooserPanel.blueMnemonic=66
GTKColorChooserPanel.colorNameText=Nome da cor:
GTKColorChooserPanel.colorNameMnemonic=78
############ FILE CHOOSER STRINGS #############
FileChooser.acceptAllFileFilterText=Todos os arquivos
FileChooser.newFolderButtonText=Nova pasta
FileChooser.newFolderButtonMnemonic=78
FileChooser.newFolderDialogText=Nome da pasta:
FileChooser.deleteFileButtonText=Excluir arquivo
FileChooser.deleteFileButtonMnemonic=76
FileChooser.renameFileButtonText=Renomear arquivo
FileChooser.renameFileButtonMnemonic=82
FileChooser.cancelButtonText=Cancelar
FileChooser.cancelButtonMnemonic=67
FileChooser.saveButtonText=OK
FileChooser.saveButtonMnemonic=79
FileChooser.openButtonText=OK
FileChooser.openButtonMnemonic=79
FileChooser.saveDialogTitleText=Salvar
FileChooser.openDialogTitleText=Abrir
FileChooser.pathLabelText=Sele\u00e7\u00e3o:
FileChooser.filterLabelText=Filtro:
FileChooser.pathLabelMnemonic=83
FileChooser.foldersLabelText=Pastas
FileChooser.foldersLabelMnemonic=68
FileChooser.filesLabelText=Arquivos
FileChooser.filesLabelMnemonic=70
FileChooser.cancelButtonToolTipText=Anular caixa de di\u00e1logo do seletor de arquivos.
FileChooser.saveButtonToolTipText=Salvar arquivo selecionado.
FileChooser.openButtonToolTipText=Abrir arquivo selecionado.
FileChooser.renameFileDialogText=Renomear arquivo "{0}" por
FileChooser.renameFileErrorTitle=Erro
FileChooser.renameFileErrorText=Erro ao renomear o arquivo "{0}" por "{1}"
OptionPane.okButtonMnemonic=79
OptionPane.cancelButtonMnemonic=67
# This properties file is used to create a PropertyResourceBundle
# It contains Locale specific strings used be the Motif Look and Feel.
# Currently, the following components need this for support:
#
# FileChooser
#
# When this file is read in, the strings are put into the
# defaults table. This is an implementation detail of the current
# workings of Swing. DO NOT DEPEND ON THIS.
# This may change in future versions of Swing as we improve localization
# support.
#
# Refer to the note in basic.properties for a description as to what
# the mnemonics correspond to and how to calculate them.
#
# @author Steve Wilson
############ FILE CHOOSER STRINGS #############
FileChooser.acceptAllFileFilterText=*
FileChooser.cancelButtonText=Cancelar
FileChooser.saveButtonText=Salvar
FileChooser.openButtonText=OK
FileChooser.saveDialogTitleText=Salvar
FileChooser.openDialogTitleText=Abrir
FileChooser.updateButtonText=Atualizar
FileChooser.helpButtonText=Ajuda
FileChooser.pathLabelText=Inserir caminho ou nome da pasta:
FileChooser.filterLabelText=Filtro
FileChooser.foldersLabelText=Pastas
FileChooser.filesLabelText=Arquivos
FileChooser.enterFileNameLabelText=Inserir nome de arquivo:
FileChooser.cancelButtonToolTipText=Anular caixa de di\u00e1logo do seletor de arquivos.
FileChooser.saveButtonToolTipText=Salvar arquivo selecionado.
FileChooser.openButtonToolTipText=Abrir arquivo selecionado.
FileChooser.updateButtonToolTipText=Atualizar lista de diret\u00f3rios.
FileChooser.helpButtonToolTipText=Ajuda do FileChooser.
...@@ -33,11 +33,11 @@ FileChooser.newFolderActionLabelText=Neuer Ordner ...@@ -33,11 +33,11 @@ FileChooser.newFolderActionLabelText=Neuer Ordner
FileChooser.listViewButtonToolTipText=Liste FileChooser.listViewButtonToolTipText=Liste
FileChooser.listViewButtonAccessibleName=Liste FileChooser.listViewButtonAccessibleName=Liste
FileChooser.listViewActionLabelText=Liste FileChooser.listViewActionLabelText=Liste
FileChooser.detailsViewButtonToolTipText=Einzelheiten FileChooser.detailsViewButtonToolTipText=Details
FileChooser.detailsViewButtonAccessibleName=Einzelheiten FileChooser.detailsViewButtonAccessibleName=Details
FileChooser.viewMenuButtonToolTipText = View Menu FileChooser.viewMenuButtonToolTipText = View Menu
FileChooser.viewMenuButtonAccessibleName = View Menu FileChooser.viewMenuButtonAccessibleName = View Menu
FileChooser.detailsViewActionLabelText=Einzelheiten FileChooser.detailsViewActionLabelText=Details
FileChooser.refreshActionLabelText=Aktualisieren FileChooser.refreshActionLabelText=Aktualisieren
FileChooser.viewMenuLabelText=Ansicht FileChooser.viewMenuLabelText=Ansicht
FileChooser.fileNameHeaderText=Dateiname FileChooser.fileNameHeaderText=Dateiname
......
...@@ -45,3 +45,6 @@ FileChooser.fileSizeHeaderText=\u30b5\u30a4\u30ba ...@@ -45,3 +45,6 @@ FileChooser.fileSizeHeaderText=\u30b5\u30a4\u30ba
FileChooser.fileTypeHeaderText=\u30bf\u30a4\u30d7 FileChooser.fileTypeHeaderText=\u30bf\u30a4\u30d7
FileChooser.fileDateHeaderText=\u66f4\u65b0\u65e5 FileChooser.fileDateHeaderText=\u66f4\u65b0\u65e5
FileChooser.fileAttrHeaderText=\u5c5e\u6027 FileChooser.fileAttrHeaderText=\u5c5e\u6027
FileChooser.directoryOpenButtonText=\u958b\u304f(O)
FileChooser.openButtonText=\u958b\u304f(O)
FileChooser.saveButtonText=\u4fdd\u5b58(S)
...@@ -45,3 +45,6 @@ FileChooser.fileSizeHeaderText=\ud06c\uae30 ...@@ -45,3 +45,6 @@ FileChooser.fileSizeHeaderText=\ud06c\uae30
FileChooser.fileTypeHeaderText=\uc885\ub958 FileChooser.fileTypeHeaderText=\uc885\ub958
FileChooser.fileDateHeaderText=\uc218\uc815 FileChooser.fileDateHeaderText=\uc218\uc815
FileChooser.fileAttrHeaderText=\uc18d\uc131 FileChooser.fileAttrHeaderText=\uc18d\uc131
FileChooser.directoryOpenButtonText=\uc5f4\uae30(O)
FileChooser.openButtonText=\uc5f4\uae30(O)
FileChooser.saveButtonText=\uc800\uc7a5(S)
# This properties file is used to create a PropertyResourceBundle
# It contains Locale specific strings used be the Windows Look and Feel.
# Currently, the following components need this for support:
#
# FileChooser
#
# When this file is read in, the strings are put into the
# defaults table. This is an implementation detail of the current
# workings of Swing. DO NOT DEPEND ON THIS.
# This may change in future versions of Swing as we improve localization
# support.
#
# Refer to the note in basic.properties for a description as to what
# the mnemonics correspond to and how to calculate them.
#
# @author Steve Wilson
############ FILE CHOOSER STRINGS #############
FileChooser.lookInLabelText=Consultar em:
FileChooser.saveInLabelText=Salvar em:
FileChooser.fileNameLabelText=Nome de arquivo:
FileChooser.filesOfTypeLabelText=Arquivos de tipo:
FileChooser.upFolderToolTipText=Um n\u00edvel acima
FileChooser.upFolderAccessibleName=Acima
FileChooser.homeFolderToolTipText=In\u00edcio
FileChooser.homeFolderAccessibleName=In\u00edcio
FileChooser.newFolderToolTipText=Criar nova pasta
FileChooser.newFolderAccessibleName=Nova pasta
FileChooser.newFolderActionLabelText=Nova pasta
FileChooser.listViewButtonToolTipText=Lista
FileChooser.listViewButtonAccessibleName=Lista
FileChooser.listViewActionLabelText=Lista
FileChooser.detailsViewButtonToolTipText=Detalhes
FileChooser.detailsViewButtonAccessibleName=Detalhes
FileChooser.detailsViewActionLabelText=Detalhes
FileChooser.refreshActionLabelText=Atualizar
FileChooser.viewMenuLabelText=Exibir
FileChooser.fileNameHeaderText=Nome
FileChooser.fileSizeHeaderText=Tamanho
FileChooser.fileTypeHeaderText=Tipo
FileChooser.fileDateHeaderText=Modificado
FileChooser.fileAttrHeaderText=Atributos
...@@ -45,3 +45,6 @@ FileChooser.fileSizeHeaderText=\u5927\u5c0f ...@@ -45,3 +45,6 @@ FileChooser.fileSizeHeaderText=\u5927\u5c0f
FileChooser.fileTypeHeaderText=\u7c7b\u578b FileChooser.fileTypeHeaderText=\u7c7b\u578b
FileChooser.fileDateHeaderText=\u4fee\u8ba2\u7248 FileChooser.fileDateHeaderText=\u4fee\u8ba2\u7248
FileChooser.fileAttrHeaderText=\u5c5e\u6027 FileChooser.fileAttrHeaderText=\u5c5e\u6027
FileChooser.directoryOpenButtonText=\u6253\u5f00(O)
FileChooser.openButtonText=\u6253\u5f00(O)
FileChooser.saveButtonText=\u4fdd\u5b58(S)
...@@ -45,3 +45,6 @@ FileChooser.fileSizeHeaderText=\u5927\u5c0f ...@@ -45,3 +45,6 @@ FileChooser.fileSizeHeaderText=\u5927\u5c0f
FileChooser.fileTypeHeaderText=\u985e\u578b FileChooser.fileTypeHeaderText=\u985e\u578b
FileChooser.fileDateHeaderText=\u4fee\u6539 FileChooser.fileDateHeaderText=\u4fee\u6539
FileChooser.fileAttrHeaderText=\u5c6c\u6027 FileChooser.fileAttrHeaderText=\u5c6c\u6027
FileChooser.directoryOpenButtonText=\u958b\u555f(O)
FileChooser.openButtonText=\u958b\u555f(O)
FileChooser.saveButtonText=\u5132\u5b58(S)
# #
# Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
...@@ -60,7 +60,6 @@ cachedrowsetimpl.movetoins1 = moveToInsertRow: keine Metadaten ...@@ -60,7 +60,6 @@ cachedrowsetimpl.movetoins1 = moveToInsertRow: keine Metadaten
cachedrowsetimpl.movetoins2 = moveToInsertRow: ung\u00fcltige Spaltenanzahl cachedrowsetimpl.movetoins2 = moveToInsertRow: ung\u00fcltige Spaltenanzahl
cachedrowsetimpl.tablename = Tabellenname darf nicht Null sein cachedrowsetimpl.tablename = Tabellenname darf nicht Null sein
cachedrowsetimpl.keycols = Ung\u00fcltige Schl\u00fcsselspalten cachedrowsetimpl.keycols = Ung\u00fcltige Schl\u00fcsselspalten
cachedrowsetimpl.invalidcol = Ung\u00fcltiger Spaltenindex
cachedrowsetimpl.opnotsupp = Datenbank unterst\u00fctzt Vorgang nicht cachedrowsetimpl.opnotsupp = Datenbank unterst\u00fctzt Vorgang nicht
cachedrowsetimpl.matchcols = \u00dcbereinstimmende Spalten entsprechen nicht den definierten Spalten cachedrowsetimpl.matchcols = \u00dcbereinstimmende Spalten entsprechen nicht den definierten Spalten
cachedrowsetimpl.setmatchcols = \u00dcbereinstimmende Spalten m\u00fcssen vor dem Abrufen definiert werden cachedrowsetimpl.setmatchcols = \u00dcbereinstimmende Spalten m\u00fcssen vor dem Abrufen definiert werden
...@@ -97,7 +96,7 @@ joinrowsetimpl.notdefined = Kein definierter Verkn\u00fcpfungstyp ...@@ -97,7 +96,7 @@ joinrowsetimpl.notdefined = Kein definierter Verkn\u00fcpfungstyp
joinrowsetimpl.notsupported = Verkn\u00fcpfungstyp wird nicht unterst\u00fctzt joinrowsetimpl.notsupported = Verkn\u00fcpfungstyp wird nicht unterst\u00fctzt
joinrowsetimpl.initerror = Initialisierungsfehler bei JoinRowSet joinrowsetimpl.initerror = Initialisierungsfehler bei JoinRowSet
joinrowsetimpl.genericerr = Generischer Anfangsfehler bei joinrowset joinrowsetimpl.genericerr = Generischer Anfangsfehler bei joinrowset
joinrowsetimpl.emptyrowset = Leeres Rowset kann nicht zu JoinRowSet hinzugef\u00fcgt werden joinrowsetimpl.emptyrowset = Leeres rowset kann nicht zu diesem JoinRowSet hinzugef\u00fcgt werden
#JdbcRowSetImpl exceptions #JdbcRowSetImpl exceptions
jdbcrowsetimpl.invalstate = Ung\u00fcltiger Status jdbcrowsetimpl.invalstate = Ung\u00fcltiger Status
...@@ -117,16 +116,16 @@ jdbcrowsetimpl.featnotsupp = Funktion nicht unterst\u00fctzt ...@@ -117,16 +116,16 @@ jdbcrowsetimpl.featnotsupp = Funktion nicht unterst\u00fctzt
#CachedRowSetReader exceptions #CachedRowSetReader exceptions
crsreader.connect = (JNDI) Verbindung nicht m\u00f6glich crsreader.connect = (JNDI) Verbindung nicht m\u00f6glich
crsreader.paramtype = Parametertyp konnte nicht abgeleitet werden crsreader.paramtype = Parametertyp konnte nicht abgeleitet werden
crsreader.connecterr = Interner Fehler im RowSetReader: keine Verbindung oder kein Befehl crsreader.connecterr = Interner Fehler in RowSetReader: Keine Verbindung oder kein Befehl
crsreader.datedetected = Datum gefunden crsreader.datedetected = Datum festgestellt
crsreader.caldetected = Kalender gefunden crsreader.caldetected = Kalender festgestellt
#CachedRowSetWriter exceptions #CachedRowSetWriter exceptions
crswriter.connect = Verbindung konnte nicht hergestellt werden crswriter.connect = Verbindung konnte nicht hergestellt werden
crswriter.tname = writeData kann Tabellennamen nicht feststellen crswriter.tname = writeData kann Tabellennamen nicht feststellen
crswriter.params1 = Wert f\u00fcr params1: {0} crswriter.params1 = Wert f\u00fcr params1: {0}
crswriter.params2 = Wert f\u00fcr params2: {0} crswriter.params2 = Wert f\u00fcr params2: {0}
crswriter.conflictsno = Konflikte w\u00e4hrend der Synchronisation crswriter.conflictsno = Konflikt beim Synchronisieren
#InsertRow exceptions #InsertRow exceptions
insertrow.novalue = Es wurde kein Wert eingef\u00fcgt insertrow.novalue = Es wurde kein Wert eingef\u00fcgt
...@@ -140,7 +139,7 @@ syncrsimpl.valtores = Aufzul\u00f6sender Wert befindet sich entweder in der Date ...@@ -140,7 +139,7 @@ syncrsimpl.valtores = Aufzul\u00f6sender Wert befindet sich entweder in der Date
#WebRowSetXmlReader exception #WebRowSetXmlReader exception
wrsxmlreader.invalidcp = Ende von RowSet wurde erreicht. Ung\u00fcltige Cursorposition wrsxmlreader.invalidcp = Ende von RowSet wurde erreicht. Ung\u00fcltige Cursorposition
wrsxmlreader.readxml = readXML: {0} wrsxmlreader.readxml = readXML: {0}
wrsxmlreader.parseerr = ** Parsing-Fehler wrsxmlreader.parseerr = ** Parsing-Fehler: {0}, Zeile: {1} , uri: {2}
#WebRowSetXmlWriter exceptions #WebRowSetXmlWriter exceptions
wrsxmlwriter.ioex = IOException: {0} wrsxmlwriter.ioex = IOException: {0}
...@@ -151,17 +150,16 @@ wsrxmlwriter.notproper = Kein zul\u00e4ssiger Typ ...@@ -151,17 +150,16 @@ wsrxmlwriter.notproper = Kein zul\u00e4ssiger Typ
#XmlReaderContentHandler exceptions #XmlReaderContentHandler exceptions
xmlrch.errmap = Fehler beim Definieren der Zuordnung: {0} xmlrch.errmap = Fehler beim Definieren der Zuordnung: {0}
xmlrch.errmetadata = Fehler beim Definieren der Metadaten: {0} xmlrch.errmetadata = Fehler beim Definieren der Metadaten: {0}
xmlrch.errinsert = Fehler beim Einf\u00fcgen der Werte: {0} xmlrch.errinsertval = Fehler beim Einf\u00fcgen der Werte: {0}
xmlrch.errconstr = Fehler beim Erstellen der Zeile: {0} xmlrch.errconstr = Fehler beim Erstellen der Zeile: {0}
xmlrch.errdel = Fehler beim L\u00f6schen der Zeile: {0} xmlrch.errdel = Fehler beim L\u00f6schen der Zeile: {0}
xmlrch.errinsert = Fehler beim Erstellen der Einf\u00fcgezeile: {0}
xmlrch.errinsdel = Fehler beim Erstellen der Einf\u00fcge- oder L\u00f6schzeile: {0} xmlrch.errinsdel = Fehler beim Erstellen der Einf\u00fcge- oder L\u00f6schzeile: {0}
xmlrch.errupdate = Fehler beim Erstellen der Aktualisierungszeile: {0} xmlrch.errupdate = Fehler beim Erstellen der Aktualisierungszeile: {0}
xmlrch.errupdrow = Fehler beim Aktualisieren der Zeile : {0} xmlrch.errupdrow = Fehler beim Aktualisieren der Zeile: {0}
xmlrch.chars = Zeichen: xmlrch.chars = Zeichen:
xmlrch.badvalue = Fehlerhafter Wert; Eigenschaft darf nicht Null sein. xmlrch.badvalue = Fehlerhafter Wert; Eigenschaft darf nicht Null sein.
xmlrch.badvalue1 = Fehlerhafter Wert; Metadaten d\u00fcrfen nicht Null sein. xmlrch.badvalue1 = Fehlerhafter Wert; Metadaten d\u00fcrfen nicht Null sein.
xmlrch.warning = ** Warnung xmlrch.warning = ** Warnung: {0}, Zeile: {1} , uri: {2}
#RIOptimisticProvider Exceptions #RIOptimisticProvider Exceptions
riop.locking = Sperren der Klassifizierung wird nicht unterst\u00fctzt riop.locking = Sperren der Klassifizierung wird nicht unterst\u00fctzt
......
# #
# Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
...@@ -60,7 +60,6 @@ cachedrowsetimpl.movetoins1 = moveToInsertRow: no hay metadatos ...@@ -60,7 +60,6 @@ cachedrowsetimpl.movetoins1 = moveToInsertRow: no hay metadatos
cachedrowsetimpl.movetoins2 = moveToInsertRow: n\u00famero de columnas no v\u00e1lido cachedrowsetimpl.movetoins2 = moveToInsertRow: n\u00famero de columnas no v\u00e1lido
cachedrowsetimpl.tablename = El nombre de la tabla no puede ser nulo cachedrowsetimpl.tablename = El nombre de la tabla no puede ser nulo
cachedrowsetimpl.keycols = Columnas clave no v\u00e1lidas cachedrowsetimpl.keycols = Columnas clave no v\u00e1lidas
cachedrowsetimpl.invalidcol = \u00cdndice de columnas no v\u00e1lido
cachedrowsetimpl.opnotsupp = La base de datos no admite esta operaci\u00f3n cachedrowsetimpl.opnotsupp = La base de datos no admite esta operaci\u00f3n
cachedrowsetimpl.matchcols = Las columnas emparejadas no concuerdan con las definidas cachedrowsetimpl.matchcols = Las columnas emparejadas no concuerdan con las definidas
cachedrowsetimpl.setmatchcols = Configurar emparejamiento de columnas antes de obtenerlas cachedrowsetimpl.setmatchcols = Configurar emparejamiento de columnas antes de obtenerlas
...@@ -76,7 +75,7 @@ cachedrowsetimpl.pagesize = El tama\u00f1o de p\u00e1gina no puede ser menor que ...@@ -76,7 +75,7 @@ cachedrowsetimpl.pagesize = El tama\u00f1o de p\u00e1gina no puede ser menor que
cachedrowsetimpl.pagesize1 = El tama\u00f1o de p\u00e1gina no puede ser mayor que maxRows cachedrowsetimpl.pagesize1 = El tama\u00f1o de p\u00e1gina no puede ser mayor que maxRows
cachedrowsetimpl.fwdonly = ResultSet s\u00f3lo se reenv\u00eda cachedrowsetimpl.fwdonly = ResultSet s\u00f3lo se reenv\u00eda
cachedrowsetimpl.type = El tipo es: {0} cachedrowsetimpl.type = El tipo es: {0}
cachedrowsetimpl.opnotysupp = Operaci\u00f3n a\u00fan no admitida cachedrowsetimpl.opnotysupp = Operaci\u00f3n no admitida todav\u00eda
cachedrowsetimpl.featnotsupp = Funci\u00f3n no admitida cachedrowsetimpl.featnotsupp = Funci\u00f3n no admitida
# WebRowSetImpl exceptions # WebRowSetImpl exceptions
...@@ -111,13 +110,13 @@ jdbcrowsetimpl.unsetmatch = Las columnas que se est\u00e1n desconfigurando no so ...@@ -111,13 +110,13 @@ jdbcrowsetimpl.unsetmatch = Las columnas que se est\u00e1n desconfigurando no so
jdbcrowsetimpl.usecolname = Usar nombre de columna como argumento en unsetMatchColumn jdbcrowsetimpl.usecolname = Usar nombre de columna como argumento en unsetMatchColumn
jdbcrowsetimpl.usecolid = Usar ID de columna como argumento en unsetMatchColumn jdbcrowsetimpl.usecolid = Usar ID de columna como argumento en unsetMatchColumn
jdbcrowsetimpl.resnotupd = ResultSet no se puede actualizar jdbcrowsetimpl.resnotupd = ResultSet no se puede actualizar
jdbcrowsetimpl.opnotysupp = Operaci\u00f3n a\u00fan no admitida jdbcrowsetimpl.opnotysupp = Operaci\u00f3n no admitida todav\u00eda
jdbcrowsetimpl.featnotsupp = Funci\u00f3n no admitida jdbcrowsetimpl.featnotsupp = Funci\u00f3n no admitida
#CachedRowSetReader exceptions #CachedRowSetReader exceptions
crsreader.connect = (JNDI) No se puede conectar crsreader.connect = (JNDI) No se puede conectar
crsreader.paramtype = No se puede deducir tipo de par\u00e1metro crsreader.paramtype = No se puede deducir tipo de par\u00e1metro
crsreader.connecterr = Error interno en RowSetReader: no hay conexi\u00f3n ni comando crsreader.connecterr = Error interno en RowSetReader: no hay conexi\u00f3n o comando
crsreader.datedetected = Fecha detectada crsreader.datedetected = Fecha detectada
crsreader.caldetected = Calendario detectado crsreader.caldetected = Calendario detectado
...@@ -140,7 +139,7 @@ syncrsimpl.valtores = El valor que se debe definir puede estar en la base de dat ...@@ -140,7 +139,7 @@ syncrsimpl.valtores = El valor que se debe definir puede estar en la base de dat
#WebRowSetXmlReader exception #WebRowSetXmlReader exception
wrsxmlreader.invalidcp = Se ha llegado al final de RowSet. Posici\u00f3n de cursor no v\u00e1lida wrsxmlreader.invalidcp = Se ha llegado al final de RowSet. Posici\u00f3n de cursor no v\u00e1lida
wrsxmlreader.readxml = readXML: {0} wrsxmlreader.readxml = readXML: {0}
wrsxmlreader.parseerr = ** Error de an\u00e1lisis wrsxmlreader.parseerr = ** Error de an\u00e1lisis: {0} , l\u00ednea: {1} , uri: {2}
#WebRowSetXmlWriter exceptions #WebRowSetXmlWriter exceptions
wrsxmlwriter.ioex = IOException: {0} wrsxmlwriter.ioex = IOException: {0}
...@@ -151,17 +150,16 @@ wsrxmlwriter.notproper = Tipo incorrecto ...@@ -151,17 +150,16 @@ wsrxmlwriter.notproper = Tipo incorrecto
#XmlReaderContentHandler exceptions #XmlReaderContentHandler exceptions
xmlrch.errmap = Error al configurar la asignaci\u00f3n: {0} xmlrch.errmap = Error al configurar la asignaci\u00f3n: {0}
xmlrch.errmetadata = Error al configurar metadatos: {0} xmlrch.errmetadata = Error al configurar metadatos: {0}
xmlrch.errinsert = Error al insertar los valores: {0} xmlrch.errinsertval = Error al insertar los valores: {0}
xmlrch.errconstr = Error al construir fila: {0} xmlrch.errconstr = Error al construir fila: {0}
xmlrch.errdel = Error al borrar fila: {0} xmlrch.errdel = Error al borrar fila: {0}
xmlrch.errinsert = Error al construir insertar fila: {0}
xmlrch.errinsdel = Error al construir insertar o suprimir fila: {0} xmlrch.errinsdel = Error al construir insertar o suprimir fila: {0}
xmlrch.errupdate = Error al construir actualizar fila: {0} xmlrch.errupdate = Error al construir actualizar fila: {0}
xmlrch.errupdrow = Error al actualizar la fila: {0} xmlrch.errupdrow = Error al actualizar la fila: {0}
xmlrch.chars = caracteres: xmlrch.chars = caracteres:
xmlrch.badvalue = Valor incorrecto; la propiedad no puede ser nula xmlrch.badvalue = Valor incorrecto; la propiedad no puede ser nula
xmlrch.badvalue1 = Valor incorrecto; los metadatos no pueden ser nulos xmlrch.badvalue1 = Valor incorrecto; los metadatos no pueden ser nulos
xmlrch.warning = ** Advertencia xmlrch.warning = ** Advertencia: {0} , l\u00ednea: {1} , uri: {2}
#RIOptimisticProvider Exceptions #RIOptimisticProvider Exceptions
riop.locking = No se permite bloquear la clasificaci\u00f3n riop.locking = No se permite bloquear la clasificaci\u00f3n
......
# #
# Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
...@@ -60,7 +60,6 @@ cachedrowsetimpl.movetoins1 = moveToInsertRow : aucune m\u00e9tadonn\u00e9e ...@@ -60,7 +60,6 @@ cachedrowsetimpl.movetoins1 = moveToInsertRow : aucune m\u00e9tadonn\u00e9e
cachedrowsetimpl.movetoins2 = moveToInsertRow : Nombre de colonnes non valide cachedrowsetimpl.movetoins2 = moveToInsertRow : Nombre de colonnes non valide
cachedrowsetimpl.tablename = Le nom du tableau ne peut pas \u00eatre null cachedrowsetimpl.tablename = Le nom du tableau ne peut pas \u00eatre null
cachedrowsetimpl.keycols = Colonnes de cl\u00e9 non valides cachedrowsetimpl.keycols = Colonnes de cl\u00e9 non valides
cachedrowsetimpl.invalidcol = Index de colonne non valide
cachedrowsetimpl.opnotsupp = Op\u00e9ration non prise en charge par la base de donn\u00e9es cachedrowsetimpl.opnotsupp = Op\u00e9ration non prise en charge par la base de donn\u00e9es
cachedrowsetimpl.matchcols = Les colonnes correspondantes ne sont pas les m\u00eames que les colonnes d\u00e9finies cachedrowsetimpl.matchcols = Les colonnes correspondantes ne sont pas les m\u00eames que les colonnes d\u00e9finies
cachedrowsetimpl.setmatchcols = D\u00e9finissez les colonnes correspondantes avant de les prendre cachedrowsetimpl.setmatchcols = D\u00e9finissez les colonnes correspondantes avant de les prendre
...@@ -76,7 +75,7 @@ cachedrowsetimpl.pagesize = La taille de la page ne peut pas \u00eatre n\u00e9ga ...@@ -76,7 +75,7 @@ cachedrowsetimpl.pagesize = La taille de la page ne peut pas \u00eatre n\u00e9ga
cachedrowsetimpl.pagesize1 = La taille de la page ne peut pas \u00eatre sup\u00e9rieure \u00e0 maxRows cachedrowsetimpl.pagesize1 = La taille de la page ne peut pas \u00eatre sup\u00e9rieure \u00e0 maxRows
cachedrowsetimpl.fwdonly = ResultSet est en avant seulement cachedrowsetimpl.fwdonly = ResultSet est en avant seulement
cachedrowsetimpl.type = Le type est : {0} cachedrowsetimpl.type = Le type est : {0}
cachedrowsetimpl.opnotysupp = Op\u00e9ration encore non prise en charge cachedrowsetimpl.opnotysupp = Op\u00e9ration non encore prise en charge
cachedrowsetimpl.featnotsupp = Fonction non prise en charge cachedrowsetimpl.featnotsupp = Fonction non prise en charge
# WebRowSetImpl exceptions # WebRowSetImpl exceptions
...@@ -97,7 +96,7 @@ joinrowsetimpl.notdefined = Ce n'est pas un type de jointure d\u00e9fini ...@@ -97,7 +96,7 @@ joinrowsetimpl.notdefined = Ce n'est pas un type de jointure d\u00e9fini
joinrowsetimpl.notsupported = Ce type de jointure n'est pas pris en charge joinrowsetimpl.notsupported = Ce type de jointure n'est pas pris en charge
joinrowsetimpl.initerror = Erreur d'initialisation de JoinRowSet joinrowsetimpl.initerror = Erreur d'initialisation de JoinRowSet
joinrowsetimpl.genericerr = Erreur initiale g\u00e9n\u00e9rique de JoinRowSet joinrowsetimpl.genericerr = Erreur initiale g\u00e9n\u00e9rique de JoinRowSet
joinrowsetimpl.emptyrowset = Impossible d'ajouter un ensemble de lignes vide \u00e0 ce JoinRowSet joinrowsetimpl.emptyrowset = Impossible d'ajouter un objet RowSet vide \u00e0 ce JoinRowSet
#JdbcRowSetImpl exceptions #JdbcRowSetImpl exceptions
jdbcrowsetimpl.invalstate = \u00c9tat non valide jdbcrowsetimpl.invalstate = \u00c9tat non valide
...@@ -111,22 +110,22 @@ jdbcrowsetimpl.unsetmatch = Les colonnes non d\u00e9finies ne sont pas les m\u00 ...@@ -111,22 +110,22 @@ jdbcrowsetimpl.unsetmatch = Les colonnes non d\u00e9finies ne sont pas les m\u00
jdbcrowsetimpl.usecolname = Utilisez le nom de la colonne en argument de unsetMatchColumn jdbcrowsetimpl.usecolname = Utilisez le nom de la colonne en argument de unsetMatchColumn
jdbcrowsetimpl.usecolid = Utilisez l'ID de la colonne en argument de unsetMatchColumn jdbcrowsetimpl.usecolid = Utilisez l'ID de la colonne en argument de unsetMatchColumn
jdbcrowsetimpl.resnotupd = La mise \u00e0 jour de ResultSet est interdite jdbcrowsetimpl.resnotupd = La mise \u00e0 jour de ResultSet est interdite
jdbcrowsetimpl.opnotysupp = Op\u00e9ration encore non prise en charge jdbcrowsetimpl.opnotysupp = Op\u00e9ration non encore prise en charge
jdbcrowsetimpl.featnotsupp = Fonction non prise en charge jdbcrowsetimpl.featnotsupp = Fonction non prise en charge
#CachedRowSetReader exceptions #CachedRowSetReader exceptions
crsreader.connect = Impossible de connecter (JNDI) crsreader.connect = Impossible de connecter (JNDI)
crsreader.paramtype = Impossible de d\u00e9duire le type de param\u00e8tre crsreader.paramtype = Impossible de d\u00e9duire le type de param\u00e8tre
crsreader.connecterr = Erreur interne dans RowSetReader\u00a0: aucune connexion ou commande crsreader.connecterr = Erreur interne dans RowSetReader\u00a0: pas de connexion ni de commande
crsreader.datedetected = Date d\u00e9tect\u00e9e crsreader.datedetected = Une date a \u00e9t\u00e9 d\u00e9tect\u00e9e
crsreader.caldetected = Calendrier d\u00e9tect\u00e9 crsreader.caldetected = Un calendrier a \u00e9t\u00e9 d\u00e9tect\u00e9
#CachedRowSetWriter exceptions #CachedRowSetWriter exceptions
crswriter.connect = Impossible d'obtenir la connexion crswriter.connect = Impossible d'obtenir la connexion
crswriter.tname = writeData ne peut pas d\u00e9terminer le nom du tableau crswriter.tname = writeData ne peut pas d\u00e9terminer le nom du tableau
crswriter.params1 = Valeur de params1 : {0} crswriter.params1 = Valeur de params1 : {0}
crswriter.params2 = Valeur de params2 : {0} crswriter.params2 = Valeur de params2 : {0}
crswriter.conflictsno = Conflits au cours de la synchronisation crswriter.conflictsno = conflits lors de la synchronisation
#InsertRow exceptions #InsertRow exceptions
insertrow.novalue = Aucune valeur n'a \u00e9t\u00e9 ins\u00e9r\u00e9e insertrow.novalue = Aucune valeur n'a \u00e9t\u00e9 ins\u00e9r\u00e9e
...@@ -140,7 +139,7 @@ syncrsimpl.valtores = La valeur \u00e0 r\u00e9soudre peut \u00eatre soit dans la ...@@ -140,7 +139,7 @@ syncrsimpl.valtores = La valeur \u00e0 r\u00e9soudre peut \u00eatre soit dans la
#WebRowSetXmlReader exception #WebRowSetXmlReader exception
wrsxmlreader.invalidcp = Fin de RowSet atteinte. Position de curseur non valide wrsxmlreader.invalidcp = Fin de RowSet atteinte. Position de curseur non valide
wrsxmlreader.readxml = readXML : {0} wrsxmlreader.readxml = readXML : {0}
wrsxmlreader.parseerr = ** Erreur d'analyse wrsxmlreader.parseerr = ** Erreur d''analyse : {0} , ligne : {1} , URI : {2}
#WebRowSetXmlWriter exceptions #WebRowSetXmlWriter exceptions
wrsxmlwriter.ioex = IOException : {0} wrsxmlwriter.ioex = IOException : {0}
...@@ -151,17 +150,16 @@ wsrxmlwriter.notproper = N'est pas un type correct ...@@ -151,17 +150,16 @@ wsrxmlwriter.notproper = N'est pas un type correct
#XmlReaderContentHandler exceptions #XmlReaderContentHandler exceptions
xmlrch.errmap = Erreur lors de la d\u00e9finition de Map : {0} xmlrch.errmap = Erreur lors de la d\u00e9finition de Map : {0}
xmlrch.errmetadata = Erreur lors de la d\u00e9finition des m\u00e9tadonn\u00e9es : {0} xmlrch.errmetadata = Erreur lors de la d\u00e9finition des m\u00e9tadonn\u00e9es : {0}
xmlrch.errinsert = Erreur lors de l''insertion des valeurs : {0} xmlrch.errinsertval = Erreur lors de l''insertion des valeurs\u00a0: {0}
xmlrch.errconstr = Erreur lors de la construction de la ligne : {0} xmlrch.errconstr = Erreur lors de la construction de la ligne : {0}
xmlrch.errdel = Erreur lors de la suppression de la ligne : {0} xmlrch.errdel = Erreur lors de la suppression de la ligne : {0}
xmlrch.errinsert = Erreur lors de la construction de la ligne \u00e0 ins\u00e9rer : {0}
xmlrch.errinsdel = Erreur lors de la construction de la ligne insdel : {0} xmlrch.errinsdel = Erreur lors de la construction de la ligne insdel : {0}
xmlrch.errupdate = Erreur lors de la construction de la ligne \u00e0 mettre \u00e0 jour : {0} xmlrch.errupdate = Erreur lors de la construction de la ligne \u00e0 mettre \u00e0 jour : {0}
xmlrch.errupdrow = Erreur lors de la mise \u00e0 jour de la ligne\u00a0: {0} xmlrch.errupdrow = Erreur lors de la mise \u00e0 jour de la ligne\u00a0: {0}
xmlrch.chars = caract\u00e8res : xmlrch.chars = caract\u00e8res :
xmlrch.badvalue = Valeur incorrecte ; null impossible pour cette propri\u00e9t\u00e9 xmlrch.badvalue = Valeur incorrecte ; null impossible pour cette propri\u00e9t\u00e9
xmlrch.badvalue1 = Valeur incorrecte ; null impossible pour ces m\u00e9tadonn\u00e9es xmlrch.badvalue1 = Valeur incorrecte ; null impossible pour ces m\u00e9tadonn\u00e9es
xmlrch.warning = ** Avertissement xmlrch.warning = ** Avertissement : {0} , ligne : {1} , URI : {2}
#RIOptimisticProvider Exceptions #RIOptimisticProvider Exceptions
riop.locking = Le verrouillage de la classification n'est pas pris en charge riop.locking = Le verrouillage de la classification n'est pas pris en charge
......
# #
# Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
...@@ -60,7 +60,6 @@ cachedrowsetimpl.movetoins1 = moveToInsertRow: nessun metadato ...@@ -60,7 +60,6 @@ cachedrowsetimpl.movetoins1 = moveToInsertRow: nessun metadato
cachedrowsetimpl.movetoins2 = moveToInsertRow: numero di colonne non valido cachedrowsetimpl.movetoins2 = moveToInsertRow: numero di colonne non valido
cachedrowsetimpl.tablename = Il nome di tabella non pu\u00f2 essere nullo cachedrowsetimpl.tablename = Il nome di tabella non pu\u00f2 essere nullo
cachedrowsetimpl.keycols = Colonne chiave non valide cachedrowsetimpl.keycols = Colonne chiave non valide
cachedrowsetimpl.invalidcol = Indice di colonna non valido
cachedrowsetimpl.opnotsupp = Operazione non supportata dal database cachedrowsetimpl.opnotsupp = Operazione non supportata dal database
cachedrowsetimpl.matchcols = Le colonne di corrispondenza non coincidono con le colonne impostate cachedrowsetimpl.matchcols = Le colonne di corrispondenza non coincidono con le colonne impostate
cachedrowsetimpl.setmatchcols = Impostare le colonne di corrispondenza prima di recuperarle cachedrowsetimpl.setmatchcols = Impostare le colonne di corrispondenza prima di recuperarle
...@@ -76,7 +75,7 @@ cachedrowsetimpl.pagesize = La dimensione della pagina non pu\u00f2 essere infer ...@@ -76,7 +75,7 @@ cachedrowsetimpl.pagesize = La dimensione della pagina non pu\u00f2 essere infer
cachedrowsetimpl.pagesize1 = La dimensione della pagina non pu\u00f2 essere superiore a maxRows cachedrowsetimpl.pagesize1 = La dimensione della pagina non pu\u00f2 essere superiore a maxRows
cachedrowsetimpl.fwdonly = ResultSet \u00e8 a solo inoltro cachedrowsetimpl.fwdonly = ResultSet \u00e8 a solo inoltro
cachedrowsetimpl.type = Il tipo \u00e8: {0} cachedrowsetimpl.type = Il tipo \u00e8: {0}
cachedrowsetimpl.opnotysupp = Operazione non ancora supportata cachedrowsetimpl.opnotysupp = Operazione attualmente non supportata
cachedrowsetimpl.featnotsupp = Funzionalit\u00e0 non supportata cachedrowsetimpl.featnotsupp = Funzionalit\u00e0 non supportata
# WebRowSetImpl exceptions # WebRowSetImpl exceptions
...@@ -97,7 +96,7 @@ joinrowsetimpl.notdefined = Non \u00e8 un tipo di unione definito ...@@ -97,7 +96,7 @@ joinrowsetimpl.notdefined = Non \u00e8 un tipo di unione definito
joinrowsetimpl.notsupported = Questo tipo di unione non \u00e8 supportato joinrowsetimpl.notsupported = Questo tipo di unione non \u00e8 supportato
joinrowsetimpl.initerror = Errore di inizializzazione di JoinRowSet joinrowsetimpl.initerror = Errore di inizializzazione di JoinRowSet
joinrowsetimpl.genericerr = Errore iniziale di joinrowset generico joinrowsetimpl.genericerr = Errore iniziale di joinrowset generico
joinrowsetimpl.emptyrowset = Impossibile aggiungere un rowset al JoinRowSet corrente joinrowsetimpl.emptyrowset = Impossibile aggiungere un set di righe vuoto al JoinRowSet corrente
#JdbcRowSetImpl exceptions #JdbcRowSetImpl exceptions
jdbcrowsetimpl.invalstate = Stato non valido jdbcrowsetimpl.invalstate = Stato non valido
...@@ -111,22 +110,22 @@ jdbcrowsetimpl.unsetmatch = Le colonne rimosse non coincidono con le colonne imp ...@@ -111,22 +110,22 @@ jdbcrowsetimpl.unsetmatch = Le colonne rimosse non coincidono con le colonne imp
jdbcrowsetimpl.usecolname = Utilizzare il nome di colonna come argomento per unsetMatchColumn jdbcrowsetimpl.usecolname = Utilizzare il nome di colonna come argomento per unsetMatchColumn
jdbcrowsetimpl.usecolid = Utilizzare l'ID di colonna come argomento per unsetMatchColumn jdbcrowsetimpl.usecolid = Utilizzare l'ID di colonna come argomento per unsetMatchColumn
jdbcrowsetimpl.resnotupd = ResultSet non \u00e8 aggiornabile jdbcrowsetimpl.resnotupd = ResultSet non \u00e8 aggiornabile
jdbcrowsetimpl.opnotysupp = Operazione non ancora supportata jdbcrowsetimpl.opnotysupp = Operazione attualmente non supportata
jdbcrowsetimpl.featnotsupp = Funzionalit\u00e0 non supportata jdbcrowsetimpl.featnotsupp = Funzionalit\u00e0 non supportata
#CachedRowSetReader exceptions #CachedRowSetReader exceptions
crsreader.connect = (JNDI) Impossibile stabilire una connessione crsreader.connect = (JNDI) Impossibile stabilire una connessione
crsreader.paramtype = Impossibile dedurre il tipo di parametro crsreader.paramtype = Impossibile dedurre il tipo di parametro
crsreader.connecterr = Errore interno in RowSetReader: nessuna connessione o comando disponibile crsreader.connecterr = Errore interno in RowSetReader: nessuna connessione o comando
crsreader.datedetected = Data rilevata crsreader.datedetected = \u00c8 stata rilevata una data
crsreader.caldetected = Calendario rilevato crsreader.caldetected = \u00c8 stato rilevato un calendario
#CachedRowSetWriter exceptions #CachedRowSetWriter exceptions
crswriter.connect = Impossibile stabilire una connessione crswriter.connect = Impossibile stabilire una connessione
crswriter.tname = writeData non riesce a determinare il nome di tabella crswriter.tname = writeData non riesce a determinare il nome di tabella
crswriter.params1 = Valore dei parametri 1: {0} crswriter.params1 = Valore dei parametri 1: {0}
crswriter.params2 = Valore dei parametri 2: {0} crswriter.params2 = Valore dei parametri 2: {0}
crswriter.conflictsno = conflitti durante la sincronizzazione crswriter.conflictsno = Conflitti durante la sincronizzazione
#InsertRow exceptions #InsertRow exceptions
insertrow.novalue = Non \u00e8 stato inserito alcun valore insertrow.novalue = Non \u00e8 stato inserito alcun valore
...@@ -140,7 +139,7 @@ syncrsimpl.valtores = Il valore da risolvere pu\u00f2 essere nel database o in c ...@@ -140,7 +139,7 @@ syncrsimpl.valtores = Il valore da risolvere pu\u00f2 essere nel database o in c
#WebRowSetXmlReader exception #WebRowSetXmlReader exception
wrsxmlreader.invalidcp = Raggiunta la fine di RowSet. Posizione cursore non valida wrsxmlreader.invalidcp = Raggiunta la fine di RowSet. Posizione cursore non valida
wrsxmlreader.readxml = readXML: {0} wrsxmlreader.readxml = readXML: {0}
wrsxmlreader.parseerr = ** Errore di analisi wrsxmlreader.parseerr = **Errore di analisi: {0}, riga: {1}, URI: {2}
#WebRowSetXmlWriter exceptions #WebRowSetXmlWriter exceptions
wrsxmlwriter.ioex = IOException: {0} wrsxmlwriter.ioex = IOException: {0}
...@@ -150,18 +149,17 @@ wsrxmlwriter.notproper = Non un tipo corretto ...@@ -150,18 +149,17 @@ wsrxmlwriter.notproper = Non un tipo corretto
#XmlReaderContentHandler exceptions #XmlReaderContentHandler exceptions
xmlrch.errmap = Errore durante l''impostazione della mappa: {0} xmlrch.errmap = Errore durante l''impostazione della mappa: {0}
xmlrch.errmetadata = Errore durante l'impostazione dei metadati: {0} xmlrch.errmetadata = Errore durante l''impostazione dei metadati: {0}
xmlrch.errinsert = Errore durante l''inserimento dei valori: {0} xmlrch.errinsertval = Errore durante l''inserimento dei valori: {0}
xmlrch.errconstr = Errore durante la costruzione della riga: {0} xmlrch.errconstr = Errore durante la costruzione della riga: {0}
xmlrch.errdel = Errore durante l''eliminazione della riga: {0} xmlrch.errdel = Errore durante l''eliminazione della riga: {0}
xmlrch.errinsert = Errore durante la costruzione della riga di inserimento: {0}
xmlrch.errinsdel = Errore durante la costruzione della riga insdel: {0} xmlrch.errinsdel = Errore durante la costruzione della riga insdel: {0}
xmlrch.errupdate = Errore durante la costruzione della riga di aggiornamento: {0} xmlrch.errupdate = Errore durante la costruzione della riga di aggiornamento: {0}
xmlrch.errupdrow = Errore durante l''aggiornamento della riga: {0} xmlrch.errupdrow = Errore durante l''aggiornamento della riga: {0}
xmlrch.chars = caratteri: xmlrch.chars = caratteri:
xmlrch.badvalue = valore non valido; propriet\u00e0 non annullabile xmlrch.badvalue = valore non valido; propriet\u00e0 non annullabile
xmlrch.badvalue1 = valore non valido; metadati non annullabili xmlrch.badvalue1 = valore non valido; metadati non annullabili
xmlrch.warning = ** Avviso xmlrch.warning = **Avviso: {0}, riga: {1}, URI: {2}
#RIOptimisticProvider Exceptions #RIOptimisticProvider Exceptions
riop.locking = La classificazione di blocco non \u00e8 supportata riop.locking = La classificazione di blocco non \u00e8 supportata
......
# #
# Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
...@@ -60,7 +60,6 @@ cachedrowsetimpl.movetoins1 = moveToInsertRow : \u30e1\u30bf\u30c7\u30fc\u30bf\u ...@@ -60,7 +60,6 @@ cachedrowsetimpl.movetoins1 = moveToInsertRow : \u30e1\u30bf\u30c7\u30fc\u30bf\u
cachedrowsetimpl.movetoins2 = moveToInsertRow : \u7121\u52b9\u306a\u5217\u6570 cachedrowsetimpl.movetoins2 = moveToInsertRow : \u7121\u52b9\u306a\u5217\u6570
cachedrowsetimpl.tablename = \u8868\u540d\u306b null \u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002 cachedrowsetimpl.tablename = \u8868\u540d\u306b null \u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002
cachedrowsetimpl.keycols = \u7121\u52b9\u306a\u30ad\u30fc\u5217 cachedrowsetimpl.keycols = \u7121\u52b9\u306a\u30ad\u30fc\u5217
cachedrowsetimpl.invalidcol = \u7121\u52b9\u306a\u5217\u30a4\u30f3\u30c7\u30c3\u30af\u30b9
cachedrowsetimpl.opnotsupp = \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u306a\u3044\u64cd\u4f5c cachedrowsetimpl.opnotsupp = \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u306a\u3044\u64cd\u4f5c
cachedrowsetimpl.matchcols = \u4e00\u81f4\u5217\u304c\u5217\u306e\u30bb\u30c3\u30c8\u3068\u540c\u3058\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 cachedrowsetimpl.matchcols = \u4e00\u81f4\u5217\u304c\u5217\u306e\u30bb\u30c3\u30c8\u3068\u540c\u3058\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
cachedrowsetimpl.setmatchcols = \u4e00\u81f4\u5217\u3092\u53d6\u5f97\u3059\u308b\u524d\u306b\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 cachedrowsetimpl.setmatchcols = \u4e00\u81f4\u5217\u3092\u53d6\u5f97\u3059\u308b\u524d\u306b\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
...@@ -76,8 +75,8 @@ cachedrowsetimpl.pagesize = \u30da\u30fc\u30b8\u30b5\u30a4\u30ba\u306f\u30bc\u30 ...@@ -76,8 +75,8 @@ cachedrowsetimpl.pagesize = \u30da\u30fc\u30b8\u30b5\u30a4\u30ba\u306f\u30bc\u30
cachedrowsetimpl.pagesize1 = \u30da\u30fc\u30b8\u30b5\u30a4\u30ba\u306f maxRows \u3088\u308a\u5927\u304d\u304f\u3066\u306f\u306a\u308a\u307e\u305b\u3093\u3002 cachedrowsetimpl.pagesize1 = \u30da\u30fc\u30b8\u30b5\u30a4\u30ba\u306f maxRows \u3088\u308a\u5927\u304d\u304f\u3066\u306f\u306a\u308a\u307e\u305b\u3093\u3002
cachedrowsetimpl.fwdonly = ResultSet \u306f\u9806\u65b9\u5411\u306e\u307f\u3067\u3059\u3002 cachedrowsetimpl.fwdonly = ResultSet \u306f\u9806\u65b9\u5411\u306e\u307f\u3067\u3059\u3002
cachedrowsetimpl.type = \u578b : {0} cachedrowsetimpl.type = \u578b : {0}
cachedrowsetimpl.opnotysupp = \u3053\u306e\u64cd\u4f5c\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 cachedrowsetimpl.opnotysupp = \u307e\u3060\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u64cd\u4f5c
cachedrowsetimpl.featnotsupp = \u3053\u306e\u6a5f\u80fd\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 cachedrowsetimpl.featnotsupp = \u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u6a5f\u80fd
# WebRowSetImpl exceptions # WebRowSetImpl exceptions
webrowsetimpl.nullhash = WebRowSetImpl \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u307e\u305b\u3093\u3002\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306b null \u306e Hashtable \u304c\u4f7f\u7528\u3055\u308c\u307e\u3057\u305f\u3002 webrowsetimpl.nullhash = WebRowSetImpl \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u307e\u305b\u3093\u3002\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306b null \u306e Hashtable \u304c\u4f7f\u7528\u3055\u308c\u307e\u3057\u305f\u3002
...@@ -97,7 +96,7 @@ joinrowsetimpl.notdefined = \u5b9a\u7fa9\u3055\u308c\u305f\u7d50\u5408\u306e\u57 ...@@ -97,7 +96,7 @@ joinrowsetimpl.notdefined = \u5b9a\u7fa9\u3055\u308c\u305f\u7d50\u5408\u306e\u57
joinrowsetimpl.notsupported = \u3053\u306e\u578b\u306e\u7d50\u5408\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 joinrowsetimpl.notsupported = \u3053\u306e\u578b\u306e\u7d50\u5408\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
joinrowsetimpl.initerror = JoinRowSet \u521d\u671f\u5316\u30a8\u30e9\u30fc joinrowsetimpl.initerror = JoinRowSet \u521d\u671f\u5316\u30a8\u30e9\u30fc
joinrowsetimpl.genericerr = \u6c4e\u7528 joinrowset \u306e\u521d\u671f\u30a8\u30e9\u30fc joinrowsetimpl.genericerr = \u6c4e\u7528 joinrowset \u306e\u521d\u671f\u30a8\u30e9\u30fc
joinrowsetimpl.emptyrowset = \u3053\u306e JoinRowSet \u306b\u306f\u7a7a\u306e\u884c\u30bb\u30c3\u30c8\u3092\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3002 joinrowsetimpl.emptyrowset = \u3053\u306e JoinRowSet \u306b\u7a7a\u306e\u884c\u30bb\u30c3\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
#JdbcRowSetImpl exceptions #JdbcRowSetImpl exceptions
jdbcrowsetimpl.invalstate = \u7121\u52b9\u306a\u72b6\u614b jdbcrowsetimpl.invalstate = \u7121\u52b9\u306a\u72b6\u614b
...@@ -111,13 +110,13 @@ jdbcrowsetimpl.unsetmatch = \u8a2d\u5b9a\u89e3\u9664\u3055\u308c\u3066\u3044\u30 ...@@ -111,13 +110,13 @@ jdbcrowsetimpl.unsetmatch = \u8a2d\u5b9a\u89e3\u9664\u3055\u308c\u3066\u3044\u30
jdbcrowsetimpl.usecolname = unsetMatchColumn \u3078\u306e\u5f15\u6570\u3068\u3057\u3066\u5217\u540d\u3092\u4f7f\u7528\u3066\u304f\u3060\u3055\u3044\u3002 jdbcrowsetimpl.usecolname = unsetMatchColumn \u3078\u306e\u5f15\u6570\u3068\u3057\u3066\u5217\u540d\u3092\u4f7f\u7528\u3066\u304f\u3060\u3055\u3044\u3002
jdbcrowsetimpl.usecolid = unsetMatchColumn \u3078\u306e\u5f15\u6570\u3068\u3057\u3066\u5217 ID \u3092\u4f7f\u7528\u3066\u304f\u3060\u3055\u3044\u3002 jdbcrowsetimpl.usecolid = unsetMatchColumn \u3078\u306e\u5f15\u6570\u3068\u3057\u3066\u5217 ID \u3092\u4f7f\u7528\u3066\u304f\u3060\u3055\u3044\u3002
jdbcrowsetimpl.resnotupd = ResultSet \u306f\u66f4\u65b0\u3067\u304d\u307e\u305b\u3093\u3002 jdbcrowsetimpl.resnotupd = ResultSet \u306f\u66f4\u65b0\u3067\u304d\u307e\u305b\u3093\u3002
jdbcrowsetimpl.opnotysupp = \u3053\u306e\u64cd\u4f5c\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 jdbcrowsetimpl.opnotysupp = \u307e\u3060\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u64cd\u4f5c
jdbcrowsetimpl.featnotsupp = \u3053\u306e\u6a5f\u80fd\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 jdbcrowsetimpl.featnotsupp = \u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u6a5f\u80fd
#CachedRowSetReader exceptions #CachedRowSetReader exceptions
crsreader.connect = (JNDI) \u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3002 crsreader.connect = (JNDI) \u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3002
crsreader.paramtype = \u30d1\u30e9\u30e1\u30fc\u30bf\u578b\u3092\u63a8\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002 crsreader.paramtype = \u30d1\u30e9\u30e1\u30fc\u30bf\u578b\u3092\u63a8\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002
crsreader.connecterr = RowSetReader \u306e\u5185\u90e8\u30a8\u30e9\u30fc: \u5207\u65ad\u3055\u308c\u3066\u3044\u308b\u304b\u307e\u305f\u306f\u30b3\u30de\u30f3\u30c9\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 crsreader.connecterr = RowSetReader \u306e\u5185\u90e8\u30a8\u30e9\u30fc: \u63a5\u7d9a\u307e\u305f\u306f\u30b3\u30de\u30f3\u30c9\u306a\u3057
crsreader.datedetected = \u65e5\u4ed8\u3092\u691c\u51fa\u3057\u307e\u3057\u305f\u3002 crsreader.datedetected = \u65e5\u4ed8\u3092\u691c\u51fa\u3057\u307e\u3057\u305f\u3002
crsreader.caldetected = \u30ab\u30ec\u30f3\u30c0\u3092\u691c\u51fa\u3057\u307e\u3057\u305f\u3002 crsreader.caldetected = \u30ab\u30ec\u30f3\u30c0\u3092\u691c\u51fa\u3057\u307e\u3057\u305f\u3002
...@@ -126,7 +125,7 @@ crswriter.connect = \u63a5\u7d9a\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093 ...@@ -126,7 +125,7 @@ crswriter.connect = \u63a5\u7d9a\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093
crswriter.tname = writeData \u304c\u8868\u540d\u3092\u5224\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002 crswriter.tname = writeData \u304c\u8868\u540d\u3092\u5224\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002
crswriter.params1 = params1 \u306e\u5024 : {0} crswriter.params1 = params1 \u306e\u5024 : {0}
crswriter.params2 = params2 \u306e\u5024 : {0} crswriter.params2 = params2 \u306e\u5024 : {0}
crswriter.conflictsno = \u540c\u671f\u4e2d\u306b\u885d\u7a81\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 crswriter.conflictsno = \u540c\u671f\u4e2d\u306b\u7af6\u5408\u304c\u767a\u751f\u3057\u307e\u3059\u3002
#InsertRow exceptions #InsertRow exceptions
insertrow.novalue = \u5024\u306f\u633f\u5165\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 insertrow.novalue = \u5024\u306f\u633f\u5165\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
...@@ -140,7 +139,7 @@ syncrsimpl.valtores = \u89e3\u6c7a\u3055\u308c\u308b\u5024\u306f\u30c7\u30fc\u30 ...@@ -140,7 +139,7 @@ syncrsimpl.valtores = \u89e3\u6c7a\u3055\u308c\u308b\u5024\u306f\u30c7\u30fc\u30
#WebRowSetXmlReader exception #WebRowSetXmlReader exception
wrsxmlreader.invalidcp = RowSet \u306e\u6700\u5f8c\u306b\u5230\u9054\u3057\u307e\u3057\u305f\u3002\u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u4f4d\u7f6e wrsxmlreader.invalidcp = RowSet \u306e\u6700\u5f8c\u306b\u5230\u9054\u3057\u307e\u3057\u305f\u3002\u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u4f4d\u7f6e
wrsxmlreader.readxml = readXML : {0} wrsxmlreader.readxml = readXML : {0}
wrsxmlreader.parseerr = ** \u69cb\u6587\u89e3\u6790\u30a8\u30e9\u30fc wrsxmlreader.parseerr = ** \u89e3\u6790\u30a8\u30e9\u30fc : {0} , \u884c : {1} , URI : {2}
#WebRowSetXmlWriter exceptions #WebRowSetXmlWriter exceptions
wrsxmlwriter.ioex = IOException : {0} wrsxmlwriter.ioex = IOException : {0}
...@@ -151,17 +150,16 @@ wsrxmlwriter.notproper = \u9069\u5207\u306a\u578b\u3067\u306f\u3042\u308a\u307e\ ...@@ -151,17 +150,16 @@ wsrxmlwriter.notproper = \u9069\u5207\u306a\u578b\u3067\u306f\u3042\u308a\u307e\
#XmlReaderContentHandler exceptions #XmlReaderContentHandler exceptions
xmlrch.errmap = Map \u8a2d\u5b9a\u30a8\u30e9\u30fc : {0} xmlrch.errmap = Map \u8a2d\u5b9a\u30a8\u30e9\u30fc : {0}
xmlrch.errmetadata = \u30e1\u30bf\u30c7\u30fc\u30bf\u8a2d\u5b9a\u30a8\u30e9\u30fc : {0} xmlrch.errmetadata = \u30e1\u30bf\u30c7\u30fc\u30bf\u8a2d\u5b9a\u30a8\u30e9\u30fc : {0}
xmlrch.errinsert = \u5024\u306e\u633f\u5165\u30a8\u30e9\u30fc : {0} xmlrch.errinsertval = \u5024\u306e\u633f\u5165\u30a8\u30e9\u30fc : {0}
xmlrch.errconstr = \u884c\u306e\u751f\u6210\u30a8\u30e9\u30fc : {0} xmlrch.errconstr = \u884c\u306e\u751f\u6210\u30a8\u30e9\u30fc : {0}
xmlrch.errdel = \u884c\u306e\u524a\u9664\u30a8\u30e9\u30fc : {0} xmlrch.errdel = \u884c\u306e\u524a\u9664\u30a8\u30e9\u30fc : {0}
xmlrch.errinsert = \u633f\u5165\u884c\u306e\u751f\u6210\u30a8\u30e9\u30fc : {0}
xmlrch.errinsdel = insdel \u884c\u306e\u751f\u6210\u30a8\u30e9\u30fc : {0} xmlrch.errinsdel = insdel \u884c\u306e\u751f\u6210\u30a8\u30e9\u30fc : {0}
xmlrch.errupdate = \u66f4\u65b0\u884c\u306e\u751f\u6210\u30a8\u30e9\u30fc : {0} xmlrch.errupdate = \u66f4\u65b0\u884c\u306e\u751f\u6210\u30a8\u30e9\u30fc : {0}
xmlrch.errupdrow = \u884c\u306e\u66f4\u65b0\u30a8\u30e9\u30fc: {0} xmlrch.errupdrow = \u884c\u306e\u66f4\u65b0\u30a8\u30e9\u30fc : {0}
xmlrch.chars = \u6587\u5b57 : xmlrch.chars = \u6587\u5b57 :
xmlrch.badvalue = \u4e0d\u6b63\u306a\u5024 ; null \u306b\u3067\u304d\u306a\u3044\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc xmlrch.badvalue = \u4e0d\u6b63\u306a\u5024 ; null \u306b\u3067\u304d\u306a\u3044\u30d7\u30ed\u30d1\u30c6\u30a3
xmlrch.badvalue1 = \u4e0d\u6b63\u306a\u5024 ; null \u306b\u3067\u304d\u306a\u3044\u30e1\u30bf\u30c7\u30fc\u30bf xmlrch.badvalue1 = \u4e0d\u6b63\u306a\u5024 ; null \u306b\u3067\u304d\u306a\u3044\u30e1\u30bf\u30c7\u30fc\u30bf
xmlrch.warning = ** \u8b66\u544a xmlrch.warning = ** \u8b66\u544a : {0} , \u884c : {1} , URI : {2}
#RIOptimisticProvider Exceptions #RIOptimisticProvider Exceptions
riop.locking = \u30ed\u30c3\u30af\u306e\u5206\u985e\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 riop.locking = \u30ed\u30c3\u30af\u306e\u5206\u985e\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
......
# #
# Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
...@@ -60,7 +60,6 @@ cachedrowsetimpl.movetoins1 = moveToInsertRow: \uba54\ud0c0 \ub370\uc774\ud130\u ...@@ -60,7 +60,6 @@ cachedrowsetimpl.movetoins1 = moveToInsertRow: \uba54\ud0c0 \ub370\uc774\ud130\u
cachedrowsetimpl.movetoins2 = moveToInsertRow: \uc798\ubabb\ub41c \uc5f4 \uac1c\uc218\uc785\ub2c8\ub2e4. cachedrowsetimpl.movetoins2 = moveToInsertRow: \uc798\ubabb\ub41c \uc5f4 \uac1c\uc218\uc785\ub2c8\ub2e4.
cachedrowsetimpl.tablename = \ud14c\uc774\ube14 \uc774\ub984\uc740 \ub110\uc77c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. cachedrowsetimpl.tablename = \ud14c\uc774\ube14 \uc774\ub984\uc740 \ub110\uc77c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
cachedrowsetimpl.keycols = \uc798\ubabb\ub41c \ud0a4 \uc5f4\uc785\ub2c8\ub2e4. cachedrowsetimpl.keycols = \uc798\ubabb\ub41c \ud0a4 \uc5f4\uc785\ub2c8\ub2e4.
cachedrowsetimpl.invalidcol = \uc798\ubabb\ub41c \uc5f4 \uc0c9\uc778\uc785\ub2c8\ub2e4.
cachedrowsetimpl.opnotsupp = \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uc791\uc5c5\uc785\ub2c8\ub2e4. cachedrowsetimpl.opnotsupp = \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uc791\uc5c5\uc785\ub2c8\ub2e4.
cachedrowsetimpl.matchcols = \uc77c\uce58 \uc5f4\uc774 \uc124\uc815\ub41c \uc5f4\uacfc \uac19\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. cachedrowsetimpl.matchcols = \uc77c\uce58 \uc5f4\uc774 \uc124\uc815\ub41c \uc5f4\uacfc \uac19\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
cachedrowsetimpl.setmatchcols = \uc77c\uce58 \uc5f4\uc744 \uc124\uc815\ud55c \ub2e4\uc74c\uc5d0 \uac00\uc838\uc624\uc2ed\uc2dc\uc624. cachedrowsetimpl.setmatchcols = \uc77c\uce58 \uc5f4\uc744 \uc124\uc815\ud55c \ub2e4\uc74c\uc5d0 \uac00\uc838\uc624\uc2ed\uc2dc\uc624.
...@@ -76,8 +75,8 @@ cachedrowsetimpl.pagesize = \ud398\uc774\uc9c0 \ud06c\uae30\ub294 0\ubcf4\ub2e4 ...@@ -76,8 +75,8 @@ cachedrowsetimpl.pagesize = \ud398\uc774\uc9c0 \ud06c\uae30\ub294 0\ubcf4\ub2e4
cachedrowsetimpl.pagesize1 = \ud398\uc774\uc9c0 \ud06c\uae30\ub294 maxRows\ubcf4\ub2e4 \ud074 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. cachedrowsetimpl.pagesize1 = \ud398\uc774\uc9c0 \ud06c\uae30\ub294 maxRows\ubcf4\ub2e4 \ud074 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
cachedrowsetimpl.fwdonly = ResultSet\ub294 \uc804\ub2ec \uc804\uc6a9\uc785\ub2c8\ub2e4. cachedrowsetimpl.fwdonly = ResultSet\ub294 \uc804\ub2ec \uc804\uc6a9\uc785\ub2c8\ub2e4.
cachedrowsetimpl.type = \uc720\ud615: {0} cachedrowsetimpl.type = \uc720\ud615: {0}
cachedrowsetimpl.opnotysupp = \uc791\uc5c5\uc774 \uc544\uc9c1 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. cachedrowsetimpl.opnotysupp = \uc791\uc5c5\uc774 \uc544\uc9c1 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc74c
cachedrowsetimpl.featnotsupp = \uae30\ub2a5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. cachedrowsetimpl.featnotsupp = \uae30\ub2a5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc74c
# WebRowSetImpl exceptions # WebRowSetImpl exceptions
webrowsetimpl.nullhash = WebRowSetImpl \uc778\uc2a4\ud134\uc2a4\ub97c \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uad6c\uc131\uc790\uc5d0 \ub110 Hashtable\uc774 \uc81c\uacf5\ub418\uc5c8\uc2b5\ub2c8\ub2e4. webrowsetimpl.nullhash = WebRowSetImpl \uc778\uc2a4\ud134\uc2a4\ub97c \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uad6c\uc131\uc790\uc5d0 \ub110 Hashtable\uc774 \uc81c\uacf5\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
...@@ -97,7 +96,7 @@ joinrowsetimpl.notdefined = \uc815\uc758\ub41c \uacb0\ud569 \uc720\ud615\uc774 \ ...@@ -97,7 +96,7 @@ joinrowsetimpl.notdefined = \uc815\uc758\ub41c \uacb0\ud569 \uc720\ud615\uc774 \
joinrowsetimpl.notsupported = \uc774 \uacb0\ud569 \uc720\ud615\uc740 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. joinrowsetimpl.notsupported = \uc774 \uacb0\ud569 \uc720\ud615\uc740 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
joinrowsetimpl.initerror = JoinRowSet \ucd08\uae30\ud654 \uc624\ub958 joinrowsetimpl.initerror = JoinRowSet \ucd08\uae30\ud654 \uc624\ub958
joinrowsetimpl.genericerr = \uc77c\ubc18 joinrowset \ucd08\uae30 \uc624\ub958 joinrowsetimpl.genericerr = \uc77c\ubc18 joinrowset \ucd08\uae30 \uc624\ub958
joinrowsetimpl.emptyrowset = \uc774 JoinRowSet\uc5d0 \ube48 rowset\uc744 \ucd94\uac00\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. joinrowsetimpl.emptyrowset = \ube48 rowset\uc744 \uc774 JoinRowSet\uc5d0 \ucd94\uac00\ud560 \uc218 \uc5c6\uc74c
#JdbcRowSetImpl exceptions #JdbcRowSetImpl exceptions
jdbcrowsetimpl.invalstate = \uc798\ubabb\ub41c \uc0c1\ud0dc\uc785\ub2c8\ub2e4. jdbcrowsetimpl.invalstate = \uc798\ubabb\ub41c \uc0c1\ud0dc\uc785\ub2c8\ub2e4.
...@@ -111,22 +110,22 @@ jdbcrowsetimpl.unsetmatch = \uc124\uc815 \ud574\uc81c\ud560 \uc5f4\uc774 \uc124\ ...@@ -111,22 +110,22 @@ jdbcrowsetimpl.unsetmatch = \uc124\uc815 \ud574\uc81c\ud560 \uc5f4\uc774 \uc124\
jdbcrowsetimpl.usecolname = \uc5f4 \uc774\ub984\uc744 unsetMatchColumn\uc758 \uc778\uc218\ub85c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624. jdbcrowsetimpl.usecolname = \uc5f4 \uc774\ub984\uc744 unsetMatchColumn\uc758 \uc778\uc218\ub85c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624.
jdbcrowsetimpl.usecolid = \uc5f4 ID\ub97c unsetMatchColumn\uc758 \uc778\uc218\ub85c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624. jdbcrowsetimpl.usecolid = \uc5f4 ID\ub97c unsetMatchColumn\uc758 \uc778\uc218\ub85c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624.
jdbcrowsetimpl.resnotupd = ResultSet\uc740 \uc5c5\ub370\uc774\ud2b8\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. jdbcrowsetimpl.resnotupd = ResultSet\uc740 \uc5c5\ub370\uc774\ud2b8\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
jdbcrowsetimpl.opnotysupp = \uc791\uc5c5\uc774 \uc544\uc9c1 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. jdbcrowsetimpl.opnotysupp = \uc791\uc5c5\uc774 \uc544\uc9c1 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc74c
jdbcrowsetimpl.featnotsupp = \uae30\ub2a5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. jdbcrowsetimpl.featnotsupp = \uae30\ub2a5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc74c
#CachedRowSetReader exceptions #CachedRowSetReader exceptions
crsreader.connect = (JNDI) \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. crsreader.connect = (JNDI) \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
crsreader.paramtype = \ub9e4\uac1c \ubcc0\uc218 \uc720\ud615\uc744 \ucd94\ub860\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. crsreader.paramtype = \ub9e4\uac1c \ubcc0\uc218 \uc720\ud615\uc744 \ucd94\ub860\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
crsreader.connecterr = RowSetReader \ub0b4\ubd80 \uc624\ub958: \uc5f0\uacb0 \ub610\ub294 \uba85\ub839\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. crsreader.connecterr = RowSetReader\uc758 \ub0b4\ubd80 \uc624\ub958: \uc5f0\uacb0 \ub610\ub294 \uba85\ub839\uc774 \uc5c6\uc74c
crsreader.datedetected = \ub0a0\uc9dc\uac00 \uac10\uc9c0\ub418\uc5c8\uc2b5\ub2c8\ub2e4. crsreader.datedetected = \ub0a0\uc9dc\uac00 \uac10\uc9c0\ub428
crsreader.caldetected = \ub2ec\ub825\uc774 \uac10\uc9c0\ub418\uc5c8\uc2b5\ub2c8\ub2e4. crsreader.caldetected = \ub2ec\ub825\uc774 \uac10\uc9c0\ub428
#CachedRowSetWriter exceptions #CachedRowSetWriter exceptions
crswriter.connect = \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. crswriter.connect = \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
crswriter.tname = writeData\uc5d0\uc11c \ud14c\uc774\ube14 \uc774\ub984\uc744 \ud655\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. crswriter.tname = writeData\uc5d0\uc11c \ud14c\uc774\ube14 \uc774\ub984\uc744 \ud655\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
crswriter.params1 = params1\uc758 \uac12: {0} crswriter.params1 = params1\uc758 \uac12: {0}
crswriter.params2 = params2\uc758 \uac12: {0} crswriter.params2 = params2\uc758 \uac12: {0}
crswriter.conflictsno = \ub3d9\uae30\ud654\ud558\ub294 \ub3d9\uc548 \ucda9\ub3cc\ud569\ub2c8\ub2e4. crswriter.conflictsno = \ub3d9\uae30\ud654\ud558\ub294 \ub3d9\uc548 \ucda9\ub3cc\ud568
#InsertRow exceptions #InsertRow exceptions
insertrow.novalue = \uac12\uc774 \uc0bd\uc785\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. insertrow.novalue = \uac12\uc774 \uc0bd\uc785\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
...@@ -140,7 +139,7 @@ syncrsimpl.valtores = \ud655\uc778\ud560 \uac12\uc774 \ub370\uc774\ud130\ubca0\u ...@@ -140,7 +139,7 @@ syncrsimpl.valtores = \ud655\uc778\ud560 \uac12\uc774 \ub370\uc774\ud130\ubca0\u
#WebRowSetXmlReader exception #WebRowSetXmlReader exception
wrsxmlreader.invalidcp = RowSet\uc758 \ub05d\uc5d0 \ub3c4\ub2ec\ud588\uc2b5\ub2c8\ub2e4. \uc798\ubabb\ub41c \ucee4\uc11c \uc704\uce58\uc785\ub2c8\ub2e4. wrsxmlreader.invalidcp = RowSet\uc758 \ub05d\uc5d0 \ub3c4\ub2ec\ud588\uc2b5\ub2c8\ub2e4. \uc798\ubabb\ub41c \ucee4\uc11c \uc704\uce58\uc785\ub2c8\ub2e4.
wrsxmlreader.readxml = readXML: {0} wrsxmlreader.readxml = readXML: {0}
wrsxmlreader.parseerr = ** \uad6c\ubb38 \ubd84\uc11d \uc624\ub958 wrsxmlreader.parseerr = ** \uad6c\ubb38 \ubd84\uc11d \uc624\ub958 : {0} , \ud589 : {1} , uri : {2}
#WebRowSetXmlWriter exceptions #WebRowSetXmlWriter exceptions
wrsxmlwriter.ioex = IOException: {0} wrsxmlwriter.ioex = IOException: {0}
...@@ -151,17 +150,16 @@ wsrxmlwriter.notproper = \uc62c\ubc14\ub978 \uc720\ud615\uc774 \uc544\ub2d9\ub2c ...@@ -151,17 +150,16 @@ wsrxmlwriter.notproper = \uc62c\ubc14\ub978 \uc720\ud615\uc774 \uc544\ub2d9\ub2c
#XmlReaderContentHandler exceptions #XmlReaderContentHandler exceptions
xmlrch.errmap = \ub9e4\ud551\uc744 \uc124\uc815\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} xmlrch.errmap = \ub9e4\ud551\uc744 \uc124\uc815\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0}
xmlrch.errmetadata = \uba54\ud0c0\ub370\uc774\ud130\ub97c \uc124\uc815\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} xmlrch.errmetadata = \uba54\ud0c0\ub370\uc774\ud130\ub97c \uc124\uc815\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0}
xmlrch.errinsert = \ub2e4\uc74c \uac12\uc744 \uc0bd\uc785\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd : {0} xmlrch.errinsertval = \ub2e4\uc74c \uac12\uc744 \uc0bd\uc785\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd : {0}
xmlrch.errconstr = \ud589\uc744 \ub9cc\ub4dc\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} xmlrch.errconstr = \ud589\uc744 \ub9cc\ub4dc\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0}
xmlrch.errdel = \ud589\uc744 \uc81c\uac70\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} xmlrch.errdel = \ud589\uc744 \uc81c\uac70\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0}
xmlrch.errinsert = insert \ud589\uc744 \ub9cc\ub4dc\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0}
xmlrch.errinsdel = insdel \ud589\uc744 \ub9cc\ub4dc\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} xmlrch.errinsdel = insdel \ud589\uc744 \ub9cc\ub4dc\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0}
xmlrch.errupdate = update \ud589\uc744 \ub9cc\ub4dc\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0} xmlrch.errupdate = update \ud589\uc744 \ub9cc\ub4dc\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd: {0}
xmlrch.errupdrow = \ud589 \uc5c5\ub370\uc774\ud2b8 \uc624\ub958: {0} xmlrch.errupdrow = \ub2e4\uc74c \ud589\uc744 \uc5c5\ub370\uc774\ud2b8\ud558\ub294 \uc911 \uc624\ub958 \ubc1c\uc0dd : {0}
xmlrch.chars = \ubb38\uc790: xmlrch.chars = \ubb38\uc790:
xmlrch.badvalue = \uc798\ubabb\ub41c \uac12; \ub110\uc77c \uc218 \uc5c6\ub294 \ub4f1\ub85d \uc815\ubcf4 xmlrch.badvalue = \uc798\ubabb\ub41c \uac12; \ub110\uc77c \uc218 \uc5c6\ub294 \ub4f1\ub85d \uc815\ubcf4
xmlrch.badvalue1 = \uc798\ubabb\ub41c \uac12; \ub110\uc77c \uc218 \uc5c6\ub294 \uba54\ud0c0\ub370\uc774\ud130 xmlrch.badvalue1 = \uc798\ubabb\ub41c \uac12; \ub110\uc77c \uc218 \uc5c6\ub294 \uba54\ud0c0\ub370\uc774\ud130
xmlrch.warning = ** \uacbd\uace0 xmlrch.warning = ** \uacbd\uace0 : {0} , \ud589 : {1} , uri : {2}
#RIOptimisticProvider Exceptions #RIOptimisticProvider Exceptions
riop.locking = \ub4f1\uae09 \uc7a0\uae08\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. riop.locking = \ub4f1\uae09 \uc7a0\uae08\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
......
#
# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
# CacheRowSetImpl exceptions
cachedrowsetimpl.populate = Objeto ResultSet inv\u00e1lido fornecido para preencher o m\u00e9todo
cachedrowsetimpl.invalidp = Fornecedor de persist\u00eancias inv\u00e1lido gerado
cachedrowsetimpl.nullhash = N\u00e3o \u00e9 poss\u00edvel instanciar a inst\u00e2ncia CachedRowSetImpl. Hashtable nulo fornecido ao construtor
cachedrowsetimpl.invalidop = Opera\u00e7\u00e3o inv\u00e1lida durante a inser\u00e7\u00e3o de linha
cachedrowsetimpl.accfailed = acceptChanges falho
cachedrowsetimpl.invalidcp = Posi\u00e7\u00e3o inv\u00e1lida do cursor
cachedrowsetimpl.illegalop = Opera\u00e7\u00e3o ilegal em linha n\u00e3o inserida
cachedrowsetimpl.clonefail = Clone falho: {0}
cachedrowsetimpl.invalidcol = \u00cdndice de coluna inv\u00e1lido
cachedrowsetimpl.invalcolnm = Nome de coluna inv\u00e1lido
cachedrowsetimpl.boolfail = getBoolen falhou no valor ( {0} ) na coluna {1}
cachedrowsetimpl.bytefail = getByte falhou no valor ( {0} ) na coluna {1}
cachedrowsetimpl.shortfail = getShort falhou no valor ( {0} ) na coluna {1}
cachedrowsetimpl.intfail = getInt falhou no valor ( {0} ) na coluna {1}
cachedrowsetimpl.longfail = getLong falhou no valor ( {0} ) na coluna {1}
cachedrowsetimpl.floatfail = getFloat falhou no valor ( {0} ) na coluna {1}
cachedrowsetimpl.doublefail = getDouble falhou no valor ( {0} ) na coluna {1}
cachedrowsetimpl.dtypemismt = Tipo de dados incompat\u00edvel
cachedrowsetimpl.datefail = getDate falhou no valor ( {0} ) na coluna {1} sem convers\u00e3o dispon\u00edvel
cachedrowsetimpl.timefail = getTime falhou no valor ( {0} ) na coluna {1} sem convers\u00e3o dispon\u00edvel
cachedrowsetimpl.posupdate = Atualiza\u00e7\u00f5es posicionadas n\u00e3o suportadas
cachedrowsetimpl.unableins = N\u00e3o \u00e9 poss\u00edvel instanciar: {0}
cachedrowsetimpl.beforefirst = beforeFirst : posi\u00e7\u00e3o inv\u00e1lida do cursor
cachedrowsetimpl.first = First : opera\u00e7\u00e3o inv\u00e1lida do cursor
cachedrowsetimpl.last = last : TYPE_FORWARD_ONLY
cachedrowsetimpl.absolute = absolute : posi\u00e7\u00e3o inv\u00e1lida do cursor
cachedrowsetimpl.relative = relative : posi\u00e7\u00e3o inv\u00e1lida do cursor
cachedrowsetimpl.asciistream = leitura falha do fluxo ascii
cachedrowsetimpl.binstream = leitura falha em fluxo bin\u00e1rio
cachedrowsetimpl.failedins = Falha ao inserir linha
cachedrowsetimpl.updateins = updateRow chamado durante a inser\u00e7\u00e3o de linha
cachedrowsetimpl.movetoins = moveToInsertRow : CONCUR_READ_ONLY
cachedrowsetimpl.movetoins1 = moveToInsertRow : sem metadados
cachedrowsetimpl.movetoins2 = moveToInsertRow : n\u00famero de colunas inv\u00e1lido
cachedrowsetimpl.tablename = O nome da tabela n\u00e3o pode ser nulo
cachedrowsetimpl.keycols = Colunas de chaves inv\u00e1lidas
cachedrowsetimpl.invalidcol = \u00cdndice de coluna inv\u00e1lido
cachedrowsetimpl.opnotsupp = Opera\u00e7\u00e3o n\u00e3o suportada pelo banco de dados
cachedrowsetimpl.matchcols = As colunas correspondentes n\u00e3o s\u00e3o iguais \u00e0s colunas definidas
cachedrowsetimpl.setmatchcols = Definir colunas correspondentes antes de obt\u00ea-las
cachedrowsetimpl.matchcols1 = As colunas correspondentes devem ser maior do que 0
cachedrowsetimpl.matchcols2 = As colunas correspondentes devem ser sequ\u00eancias vazias ou nulas
cachedrowsetimpl.unsetmatch = As colunas n\u00e3o definidas n\u00e3o s\u00e3o iguais \u00e0s colunas definidas
cachedrowsetimpl.unsetmatch1 = Usar o nome da coluna como argumento para unsetMatchColumn
cachedrowsetimpl.unsetmatch2 = Usar o ID da coluna como argumento para unsetMatchColumn
cachedrowsetimpl.numrows = O n\u00famero de linhas \u00e9 menor do que zero ou menor do que o tamanho obtido
cachedrowsetimpl.startpos = A posi\u00e7\u00e3o de in\u00edcio n\u00e3o pode ser negativa
cachedrowsetimpl.nextpage = Preencher dados antes de chamar
cachedrowsetimpl.pagesize = O tamanho da p\u00e1gina n\u00e3o pode ser menor do que zero
cachedrowsetimpl.pagesize1 = O tamanho da p\u00e1gina n\u00e3o pode ser maior do que maxRows
cachedrowsetimpl.fwdonly = ResultSet \u00e9 somente para frente
cachedrowsetimpl.type = O tipo \u00e9 : {0}
cachedrowsetimpl.opnotysupp = Opera\u00e7\u00e3o ainda n\u00e3o suportada
cachedrowsetimpl.featnotsupp = Recurso n\u00e3o suportado
# WebRowSetImpl exceptions
webrowsetimpl.nullhash = N\u00e3o \u00e9 poss\u00edvel instanciar a inst\u00e2ncia WebRowSetImpl. Hashtable nulo fornecido ao construtor
webrowsetimpl.invalidwr = Gravador inv\u00e1lido
webrowsetimpl.invalidrd = Leitor inv\u00e1lido
#FilteredRowSetImpl exceptions
filteredrowsetimpl.relative = relative : opera\u00e7\u00e3o inv\u00e1lida do cursor
filteredrowsetimpl.absolute = absolute : opera\u00e7\u00e3o inv\u00e1lida do cursor
filteredrowsetimpl.notallowed = Este valor n\u00e3o \u00e9 permitido no filtro
#JoinRowSetImpl exceptions
joinrowsetimpl.notinstance = N\u00e3o \u00e9 uma inst\u00e2ncia do conjunto de linhas
joinrowsetimpl.matchnotset = Coluna correspondente n\u00e3o definida para jun\u00e7\u00e3o
joinrowsetimpl.numnotequal = N\u00famero de elementos no conjunto de linhas diferente da coluna correspondente
joinrowsetimpl.notdefined = N\u00e3o \u00e9 um tipo definido de jun\u00e7\u00e3o
joinrowsetimpl.notsupported = Este tipo de jun\u00e7\u00e3o n\u00e3o \u00e9 suportada
joinrowsetimpl.initerror = Erro de inicializa\u00e7\u00e3o do JoinRowSet
joinrowsetimpl.genericerr = Erro inicial de joinrowset gen\u00e9rico
joinrowsetimpl.emptyrowset = O conjunto de linha vazio n\u00e3o pode ser adicionado a este JoinRowSet
#JdbcRowSetImpl exceptions
jdbcrowsetimpl.invalstate = Estado inv\u00e1lido
jdbcrowsetimpl.connect = N\u00e3o \u00e9 poss\u00edvel conectar JdbcRowSet (connect) a JNDI
jdbcrowsetimpl.paramtype = N\u00e3o \u00e9 poss\u00edvel deduzir o tipo de par\u00e2metro
jdbcrowsetimpl.matchcols = As colunas correspondentes n\u00e3o s\u00e3o iguais \u00e0s colunas definidas
jdbcrowsetimpl.setmatchcols = Definir as colunas correspondentes antes de obt\u00ea-las
jdbcrowsetimpl.matchcols1 = As colunas correspondentes devem ser maior do que 0
jdbcrowsetimpl.matchcols2 = As colunas correspondentes n\u00e3o podem ser sequ\u00eancias vazias ou nulas
jdbcrowsetimpl.unsetmatch = As colunas n\u00e3o definidas n\u00e3o s\u00e3o iguais \u00e0s colunas definidas
jdbcrowsetimpl.usecolname = Usar o nome da coluna como argumento para unsetMatchColumn
jdbcrowsetimpl.usecolid = Usar o ID da coluna como argumento para unsetMatchColumn
jdbcrowsetimpl.resnotupd = ResultSet n\u00e3o \u00e9 atualiz\u00e1vel
jdbcrowsetimpl.opnotysupp = Opera\u00e7\u00e3o ainda n\u00e3o suportada
jdbcrowsetimpl.featnotsupp = Recurso n\u00e3o suportado
#CachedRowSetReader exceptions
crsreader.connect = (JNDI) N\u00e3o \u00e9 poss\u00edvel conectar
crsreader.paramtype = N\u00e3o \u00e9 poss\u00edvel deduzir o tipo de par\u00e2metro
crsreader.connecterr = Erro interno no RowSetReader: sem conex\u00e3o ou comando
crsreader.datedetected = Data detectada
crsreader.caldetected = Calend\u00e1rio detectado
#CachedRowSetWriter exceptions
crswriter.connect = N\u00e3o \u00e9 poss\u00edvel obter a conex\u00e3o
crswriter.tname = writeData n\u00e3o pode determinar o nome da tabela
crswriter.params1 = Valor de params1 : {0}
crswriter.params2 = Valor de params2 : {0}
crswriter.conflictsno = conflitos durante a sincroniza\u00e7\u00e3o
#InsertRow exceptions
insertrow.novalue = Nenhum valor foi inserido
#SyncResolverImpl exceptions
syncrsimpl.indexval = Valor de \u00edndice fora do intervalo
syncrsimpl.noconflict = Est\u00e1 coluna n\u00e3o est\u00e1 em conflito
syncrsimpl.syncnotpos = A sincroniza\u00e7\u00e3o n\u00e3o \u00e9 poss\u00edvel
syncrsimpl.valtores = O valor a ser decidido pode estar no banco de dados ou no conjunto de linhas armazenado em cache
#WebRowSetXmlReader exception
wrsxmlreader.invalidcp = Fim de RowSet atingido. Posi\u00e7\u00e3o inv\u00e1lida do cursor
wrsxmlreader.readxml = readXML : {0}
wrsxmlreader.parseerr = ** Analisando erro : {0} , linha : {1} , uri : {2}
#WebRowSetXmlWriter exceptions
wrsxmlwriter.ioex = IOException : {0}
wrsxmlwriter.sqlex = SQLException : {0}
wrsxmlwriter.failedwrite = Falha ao gravar valor
wsrxmlwriter.notproper = N\u00e3o \u00e9 um tipo adequado
#XmlReaderContentHandler exceptions
xmlrch.errmap = Erro ao definir mapa : {0}
xmlrch.errmetadata = Erro ao definir metadados : {0}
xmlrch.errinsertval = Erro ao inserir valores : {0}
xmlrch.errconstr = Erro ao construir linha : {0}
xmlrch.errdel = Erro ao excluir linha : {0}
xmlrch.errinsert = Erro ao construir linha de inser\u00e7\u00e3o : {0}
xmlrch.errinsdel = Erro ao construir linha insdel : {0}
xmlrch.errupdate = Erro ao construir linha de atualiza\u00e7\u00e3o : {0}
xmlrch.errupdrow = Erro ao atualizar linha : {0}
xmlrch.chars = caracteres :
xmlrch.badvalue = Valor incorreto ; propriedade n\u00e3o anul\u00e1vel
xmlrch.badvalue1 = Valor incorreto ; metadado n\u00e3o anul\u00e1vel
xmlrch.warning = ** Aviso : {0} , linha : {1} , uri : {2}
#RIOptimisticProvider Exceptions
riop.locking = O bloqueio de classifica\u00e7\u00e3o n\u00e3o \u00e9 suportado
#RIXMLProvider exceptions
rixml.unsupp = N\u00e3o suportado com RIXMLProvider
# #
# Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
...@@ -60,7 +60,6 @@ cachedrowsetimpl.movetoins1 = moveToInsertRow: inga metadata ...@@ -60,7 +60,6 @@ cachedrowsetimpl.movetoins1 = moveToInsertRow: inga metadata
cachedrowsetimpl.movetoins2 = moveToInsertRow: ogiltigt antal kolumner cachedrowsetimpl.movetoins2 = moveToInsertRow: ogiltigt antal kolumner
cachedrowsetimpl.tablename = Tabellnamnet kan inte vara tomt cachedrowsetimpl.tablename = Tabellnamnet kan inte vara tomt
cachedrowsetimpl.keycols = Ogiltiga nyckelkolumner cachedrowsetimpl.keycols = Ogiltiga nyckelkolumner
cachedrowsetimpl.invalidcol = Kolumnindexet \u00e4r ogiltigt
cachedrowsetimpl.opnotsupp = Databasen har inte st\u00f6d f\u00f6r denna \u00e5tg\u00e4rd cachedrowsetimpl.opnotsupp = Databasen har inte st\u00f6d f\u00f6r denna \u00e5tg\u00e4rd
cachedrowsetimpl.matchcols = Matchningskolumnerna \u00e4r inte samma som de som st\u00e4llts in cachedrowsetimpl.matchcols = Matchningskolumnerna \u00e4r inte samma som de som st\u00e4llts in
cachedrowsetimpl.setmatchcols = St\u00e4ll in matchningskolumnerna innan du h\u00e4mtar dem cachedrowsetimpl.setmatchcols = St\u00e4ll in matchningskolumnerna innan du h\u00e4mtar dem
...@@ -76,8 +75,8 @@ cachedrowsetimpl.pagesize = Sidstorleken f\u00e5r inte understiga noll ...@@ -76,8 +75,8 @@ cachedrowsetimpl.pagesize = Sidstorleken f\u00e5r inte understiga noll
cachedrowsetimpl.pagesize1 = Sidstorleken f\u00e5r inte \u00f6verstiga maxRows cachedrowsetimpl.pagesize1 = Sidstorleken f\u00e5r inte \u00f6verstiga maxRows
cachedrowsetimpl.fwdonly = ResultSet kan endast g\u00e5 fram\u00e5t cachedrowsetimpl.fwdonly = ResultSet kan endast g\u00e5 fram\u00e5t
cachedrowsetimpl.type = Typ: {0} cachedrowsetimpl.type = Typ: {0}
cachedrowsetimpl.opnotysupp = Det finns \u00e4nnu inte st\u00f6d f\u00f6r \u00e5tg\u00e4rden cachedrowsetimpl.opnotysupp = Det finns \u00e4nnu inget st\u00f6d f\u00f6r denna \u00e5tg\u00e4rd
cachedrowsetimpl.featnotsupp = Funktionen st\u00f6ds inte cachedrowsetimpl.featnotsupp = Det finns inget st\u00f6d f\u00f6r denna funktion
# WebRowSetImpl exceptions # WebRowSetImpl exceptions
webrowsetimpl.nullhash = Det g\u00e5r inte att skapa instansen WebRowSetImpl. Tom hashtabell skickades till konstrukt\u00f6r. webrowsetimpl.nullhash = Det g\u00e5r inte att skapa instansen WebRowSetImpl. Tom hashtabell skickades till konstrukt\u00f6r.
...@@ -97,7 +96,7 @@ joinrowsetimpl.notdefined = Detta \u00e4r inte n\u00e5gon definierad kopplingsty ...@@ -97,7 +96,7 @@ joinrowsetimpl.notdefined = Detta \u00e4r inte n\u00e5gon definierad kopplingsty
joinrowsetimpl.notsupported = Det finns inget st\u00f6d f\u00f6r denna kopplingstyp joinrowsetimpl.notsupported = Det finns inget st\u00f6d f\u00f6r denna kopplingstyp
joinrowsetimpl.initerror = Initieringsfel f\u00f6r JoinRowSet joinrowsetimpl.initerror = Initieringsfel f\u00f6r JoinRowSet
joinrowsetimpl.genericerr = Allm\u00e4nt initieringsfel f\u00f6r JoinRowSet joinrowsetimpl.genericerr = Allm\u00e4nt initieringsfel f\u00f6r JoinRowSet
joinrowsetimpl.emptyrowset = Det g\u00e5r inte att l\u00e4gga till tom rowset i denna JoinRowSet joinrowsetimpl.emptyrowset = Tomma radupps\u00e4ttningar kan inte l\u00e4ggas till i denna JoinRowSet
#JdbcRowSetImpl exceptions #JdbcRowSetImpl exceptions
jdbcrowsetimpl.invalstate = Ogiltig status jdbcrowsetimpl.invalstate = Ogiltig status
...@@ -111,22 +110,22 @@ jdbcrowsetimpl.unsetmatch = Kolumnerna som \u00e5terst\u00e4lls \u00e4r inte sam ...@@ -111,22 +110,22 @@ jdbcrowsetimpl.unsetmatch = Kolumnerna som \u00e5terst\u00e4lls \u00e4r inte sam
jdbcrowsetimpl.usecolname = Anv\u00e4nd kolumnnamn som argument f\u00f6r unsetMatchColumn jdbcrowsetimpl.usecolname = Anv\u00e4nd kolumnnamn som argument f\u00f6r unsetMatchColumn
jdbcrowsetimpl.usecolid = Anv\u00e4nd kolumnn-id som argument f\u00f6r unsetMatchColumn jdbcrowsetimpl.usecolid = Anv\u00e4nd kolumnn-id som argument f\u00f6r unsetMatchColumn
jdbcrowsetimpl.resnotupd = ResultSet \u00e4r inte uppdateringsbart jdbcrowsetimpl.resnotupd = ResultSet \u00e4r inte uppdateringsbart
jdbcrowsetimpl.opnotysupp = Det finns \u00e4nnu inte st\u00f6d f\u00f6r \u00e5tg\u00e4rden jdbcrowsetimpl.opnotysupp = Det finns \u00e4nnu inget st\u00f6d f\u00f6r denna \u00e5tg\u00e4rd
jdbcrowsetimpl.featnotsupp = Funktionen st\u00f6ds inte jdbcrowsetimpl.featnotsupp = Det finns inget st\u00f6d f\u00f6r denna funktion
#CachedRowSetReader exceptions #CachedRowSetReader exceptions
crsreader.connect = (JNDI) kan inte anslutas crsreader.connect = (JNDI) kan inte anslutas
crsreader.paramtype = Det g\u00e5r inte att fastst\u00e4lla parametertypen crsreader.paramtype = Det g\u00e5r inte att fastst\u00e4lla parametertypen
crsreader.connecterr = Internfel i RowSetReader: ingen anslutning eller inget kommando crsreader.connecterr = Internt fel i RowSetReader: ingen anslutning eller inget kommando
crsreader.datedetected = Ett datum uppt\u00e4cktes crsreader.datedetected = Ett datum har identifierats
crsreader.caldetected = En kalender uppt\u00e4cktes crsreader.caldetected = En kalender har identifierats
#CachedRowSetWriter exceptions #CachedRowSetWriter exceptions
crswriter.connect = Det g\u00e5r inte att uppr\u00e4tta n\u00e5gon anslutning crswriter.connect = Det g\u00e5r inte att uppr\u00e4tta n\u00e5gon anslutning
crswriter.tname = writeData kan inte fastst\u00e4lla tabellnamnet crswriter.tname = writeData kan inte fastst\u00e4lla tabellnamnet
crswriter.params1 = Parameterv\u00e4rde1: {0} crswriter.params1 = Parameterv\u00e4rde1: {0}
crswriter.params2 = Parameterv\u00e4rde2: {0} crswriter.params2 = Parameterv\u00e4rde2: {0}
crswriter.conflictsno = konflikter uppstod vid synkronisering crswriter.conflictsno = konflikter under synkronisering
#InsertRow exceptions #InsertRow exceptions
insertrow.novalue = Inget v\u00e4rde har infogats insertrow.novalue = Inget v\u00e4rde har infogats
...@@ -140,7 +139,7 @@ syncrsimpl.valtores = V\u00e4rdet som ska analyseras kan antingen finnas i datab ...@@ -140,7 +139,7 @@ syncrsimpl.valtores = V\u00e4rdet som ska analyseras kan antingen finnas i datab
#WebRowSetXmlReader exception #WebRowSetXmlReader exception
wrsxmlreader.invalidcp = Slutet p\u00e5 RowSet har n\u00e5tts. Mark\u00f6rpositionen \u00e4r ogiltig. wrsxmlreader.invalidcp = Slutet p\u00e5 RowSet har n\u00e5tts. Mark\u00f6rpositionen \u00e4r ogiltig.
wrsxmlreader.readxml = readXML: {0} wrsxmlreader.readxml = readXML: {0}
wrsxmlreader.parseerr = ** Tolkningsfel wrsxmlreader.parseerr = ** Tolkningsfel: {0}, rad: {1}, URI: {2}
#WebRowSetXmlWriter exceptions #WebRowSetXmlWriter exceptions
wrsxmlwriter.ioex = IOException: {0} wrsxmlwriter.ioex = IOException: {0}
...@@ -151,17 +150,16 @@ wsrxmlwriter.notproper = Ingen riktig typ ...@@ -151,17 +150,16 @@ wsrxmlwriter.notproper = Ingen riktig typ
#XmlReaderContentHandler exceptions #XmlReaderContentHandler exceptions
xmlrch.errmap = Ett fel uppstod vid inst\u00e4llningen av f\u00f6ljande bild: {0} xmlrch.errmap = Ett fel uppstod vid inst\u00e4llningen av f\u00f6ljande bild: {0}
xmlrch.errmetadata = Ett fel uppstod vid inst\u00e4llningen av f\u00f6ljande metadata: {0} xmlrch.errmetadata = Ett fel uppstod vid inst\u00e4llningen av f\u00f6ljande metadata: {0}
xmlrch.errinsert = Ett fel uppstod n\u00e4r f\u00f6ljande v\u00e4rden skulle infogas: {0} xmlrch.errinsertval = Ett fel uppstod n\u00e4r f\u00f6ljande v\u00e4rden skulle infogas: {0}
xmlrch.errconstr = Ett fel uppstod n\u00e4r f\u00f6ljande rad skulle skapas: {0} xmlrch.errconstr = Ett fel uppstod n\u00e4r f\u00f6ljande rad skulle skapas: {0}
xmlrch.errdel = Ett fel uppstod n\u00e4r f\u00f6ljande rad skulle raderas: {0} xmlrch.errdel = Ett fel uppstod n\u00e4r f\u00f6ljande rad skulle raderas: {0}
xmlrch.errinsert = Ett fel uppstod n\u00e4r f\u00f6ljande infogningsrad skulle skapas: {0}
xmlrch.errinsdel = Ett fel uppstod n\u00e4r raden insdel skulle skapas: {0} xmlrch.errinsdel = Ett fel uppstod n\u00e4r raden insdel skulle skapas: {0}
xmlrch.errupdate = Ett fel uppstod n\u00e4r f\u00f6ljande uppdateringsrad skulle skapas: {0} xmlrch.errupdate = Ett fel uppstod n\u00e4r f\u00f6ljande uppdateringsrad skulle skapas: {0}
xmlrch.errupdrow = Det gick inte att uppdatera raden: {0} xmlrch.errupdrow = Ett fel uppstod n\u00e4r f\u00f6ljande rad skulle uppdateras: {0}
xmlrch.chars = tecken: xmlrch.chars = tecken:
xmlrch.badvalue = Felaktigt v\u00e4rde; egenskapen kan inte ha ett tomt v\u00e4rde xmlrch.badvalue = Felaktigt v\u00e4rde; egenskapen kan inte ha ett tomt v\u00e4rde
xmlrch.badvalue1 = Felaktigt v\u00e4rde; metadatan kan inte ha ett tomt v\u00e4rde xmlrch.badvalue1 = Felaktigt v\u00e4rde; metadatan kan inte ha ett tomt v\u00e4rde
xmlrch.warning = ** Varning! xmlrch.warning = ** Varning! {0}, rad: {1}, URI: {2}
#RIOptimisticProvider Exceptions #RIOptimisticProvider Exceptions
riop.locking = Det finns inte st\u00f6d f\u00f6r denna l\u00e5sningsklassifikation riop.locking = Det finns inte st\u00f6d f\u00f6r denna l\u00e5sningsklassifikation
......
# #
# Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
...@@ -60,7 +60,6 @@ cachedrowsetimpl.movetoins1 = moveToInsertRow: \u65e0\u5143\u6570\u636e ...@@ -60,7 +60,6 @@ cachedrowsetimpl.movetoins1 = moveToInsertRow: \u65e0\u5143\u6570\u636e
cachedrowsetimpl.movetoins2 = moveToInsertRow: \u5217\u6570\u65e0\u6548 cachedrowsetimpl.movetoins2 = moveToInsertRow: \u5217\u6570\u65e0\u6548
cachedrowsetimpl.tablename = \u8868\u540d\u4e0d\u80fd\u4e3a Null cachedrowsetimpl.tablename = \u8868\u540d\u4e0d\u80fd\u4e3a Null
cachedrowsetimpl.keycols = \u952e\u5217\u65e0\u6548 cachedrowsetimpl.keycols = \u952e\u5217\u65e0\u6548
cachedrowsetimpl.invalidcol = \u5217\u7d22\u5f15\u65e0\u6548
cachedrowsetimpl.opnotsupp = \u64cd\u4f5c\u4e0d\u53d7\u6570\u636e\u5e93\u652f\u6301 cachedrowsetimpl.opnotsupp = \u64cd\u4f5c\u4e0d\u53d7\u6570\u636e\u5e93\u652f\u6301
cachedrowsetimpl.matchcols = \u5339\u914d\u5217\u4e0e\u8bbe\u7f6e\u7684\u90a3\u4e9b\u5339\u914d\u5217\u4e0d\u540c cachedrowsetimpl.matchcols = \u5339\u914d\u5217\u4e0e\u8bbe\u7f6e\u7684\u90a3\u4e9b\u5339\u914d\u5217\u4e0d\u540c
cachedrowsetimpl.setmatchcols = \u5728\u83b7\u53d6\u5339\u914d\u5217\u4e4b\u524d\u5148\u8bbe\u7f6e\u5339\u914d\u5217 cachedrowsetimpl.setmatchcols = \u5728\u83b7\u53d6\u5339\u914d\u5217\u4e4b\u524d\u5148\u8bbe\u7f6e\u5339\u914d\u5217
...@@ -76,8 +75,8 @@ cachedrowsetimpl.pagesize = \u9875\u9762\u5927\u5c0f\u4e0d\u80fd\u5c0f\u4e8e\u96 ...@@ -76,8 +75,8 @@ cachedrowsetimpl.pagesize = \u9875\u9762\u5927\u5c0f\u4e0d\u80fd\u5c0f\u4e8e\u96
cachedrowsetimpl.pagesize1 = \u9875\u9762\u5927\u5c0f\u4e0d\u80fd\u5927\u4e8e maxRows cachedrowsetimpl.pagesize1 = \u9875\u9762\u5927\u5c0f\u4e0d\u80fd\u5927\u4e8e maxRows
cachedrowsetimpl.fwdonly = ResultSet \u7684\u7c7b\u578b\u4e3a\u4ec5\u5411\u524d\u7c7b\u578b cachedrowsetimpl.fwdonly = ResultSet \u7684\u7c7b\u578b\u4e3a\u4ec5\u5411\u524d\u7c7b\u578b
cachedrowsetimpl.type = \u7c7b\u578b\u4e3a: {0} cachedrowsetimpl.type = \u7c7b\u578b\u4e3a: {0}
cachedrowsetimpl.opnotysupp = \u5c1a\u4e0d\u652f\u6301\u64cd\u4f5c cachedrowsetimpl.opnotysupp = \u5c1a\u4e0d\u652f\u6301\u7684\u64cd\u4f5c
cachedrowsetimpl.featnotsupp = \u4e0d\u652f\u6301\u529f\u80fd cachedrowsetimpl.featnotsupp = \u5c1a\u4e0d\u652f\u6301\u7684\u529f\u80fd
# WebRowSetImpl exceptions # WebRowSetImpl exceptions
webrowsetimpl.nullhash = \u65e0\u6cd5\u5b9e\u4f8b\u5316 WebRowSetImpl \u5b9e\u4f8b\u3002\u63d0\u4f9b\u7ed9\u6784\u9020\u51fd\u6570\u7684 Hashtable \u4e3a Null webrowsetimpl.nullhash = \u65e0\u6cd5\u5b9e\u4f8b\u5316 WebRowSetImpl \u5b9e\u4f8b\u3002\u63d0\u4f9b\u7ed9\u6784\u9020\u51fd\u6570\u7684 Hashtable \u4e3a Null
...@@ -97,7 +96,7 @@ joinrowsetimpl.notdefined = \u8fd9\u4e0d\u662f\u5b9a\u4e49\u7684\u8fde\u63a5\u7c ...@@ -97,7 +96,7 @@ joinrowsetimpl.notdefined = \u8fd9\u4e0d\u662f\u5b9a\u4e49\u7684\u8fde\u63a5\u7c
joinrowsetimpl.notsupported = \u4e0d\u652f\u6301\u6b64\u8fde\u63a5\u7c7b\u578b joinrowsetimpl.notsupported = \u4e0d\u652f\u6301\u6b64\u8fde\u63a5\u7c7b\u578b
joinrowsetimpl.initerror = JoinRowSet \u521d\u59cb\u5316\u9519\u8bef joinrowsetimpl.initerror = JoinRowSet \u521d\u59cb\u5316\u9519\u8bef
joinrowsetimpl.genericerr = \u4e00\u822c JoinRowSet \u521d\u59cb\u5316\u9519\u8bef joinrowsetimpl.genericerr = \u4e00\u822c JoinRowSet \u521d\u59cb\u5316\u9519\u8bef
joinrowsetimpl.emptyrowset = \u65e0\u6cd5\u5c06\u7a7a\u7684 rowset \u6dfb\u52a0\u5230\u6b64 JoinRowSet joinrowsetimpl.emptyrowset = \u65e0\u6cd5\u5c06\u7a7a RowSet \u6dfb\u52a0\u5230\u6b64 JoinRowSet
#JdbcRowSetImpl exceptions #JdbcRowSetImpl exceptions
jdbcrowsetimpl.invalstate = \u72b6\u6001\u65e0\u6548 jdbcrowsetimpl.invalstate = \u72b6\u6001\u65e0\u6548
...@@ -111,13 +110,13 @@ jdbcrowsetimpl.unsetmatch = \u8981\u590d\u539f\u7684\u5217\u4e0e\u8bbe\u7f6e\u76 ...@@ -111,13 +110,13 @@ jdbcrowsetimpl.unsetmatch = \u8981\u590d\u539f\u7684\u5217\u4e0e\u8bbe\u7f6e\u76
jdbcrowsetimpl.usecolname = \u4f7f\u7528\u5217\u540d\u4f5c\u4e3a unsetMatchColumn \u7684\u53c2\u6570 jdbcrowsetimpl.usecolname = \u4f7f\u7528\u5217\u540d\u4f5c\u4e3a unsetMatchColumn \u7684\u53c2\u6570
jdbcrowsetimpl.usecolid = \u4f7f\u7528\u5217 ID \u4f5c\u4e3a unsetMatchColumn \u7684\u53c2\u6570 jdbcrowsetimpl.usecolid = \u4f7f\u7528\u5217 ID \u4f5c\u4e3a unsetMatchColumn \u7684\u53c2\u6570
jdbcrowsetimpl.resnotupd = ResultSet \u4e0d\u53ef\u66f4\u65b0 jdbcrowsetimpl.resnotupd = ResultSet \u4e0d\u53ef\u66f4\u65b0
jdbcrowsetimpl.opnotysupp = \u5c1a\u4e0d\u652f\u6301\u64cd\u4f5c jdbcrowsetimpl.opnotysupp = \u5c1a\u4e0d\u652f\u6301\u7684\u64cd\u4f5c
jdbcrowsetimpl.featnotsupp = \u4e0d\u652f\u6301\u529f\u80fd jdbcrowsetimpl.featnotsupp = \u5c1a\u4e0d\u652f\u6301\u7684\u529f\u80fd
#CachedRowSetReader exceptions #CachedRowSetReader exceptions
crsreader.connect = (JNDI) \u65e0\u6cd5\u8fde\u63a5 crsreader.connect = (JNDI) \u65e0\u6cd5\u8fde\u63a5
crsreader.paramtype = \u65e0\u6cd5\u63a8\u65ad\u53c2\u6570\u7c7b\u578b crsreader.paramtype = \u65e0\u6cd5\u63a8\u65ad\u53c2\u6570\u7c7b\u578b
crsreader.connecterr = RowSetReader \u53d1\u751f\u5185\u90e8\u9519\u8bef\uff1a\u6ca1\u6709\u8fde\u63a5\u6216\u547d\u4ee4 crsreader.connecterr = RowSetReader \u4e2d\u51fa\u73b0\u5185\u90e8\u9519\u8bef\uff1a\u65e0\u8fde\u63a5\u6216\u547d\u4ee4
crsreader.datedetected = \u68c0\u6d4b\u5230\u65e5\u671f crsreader.datedetected = \u68c0\u6d4b\u5230\u65e5\u671f
crsreader.caldetected = \u68c0\u6d4b\u5230\u65e5\u5386 crsreader.caldetected = \u68c0\u6d4b\u5230\u65e5\u5386
...@@ -126,7 +125,7 @@ crswriter.connect = \u65e0\u6cd5\u8fdb\u884c\u8fde\u63a5 ...@@ -126,7 +125,7 @@ crswriter.connect = \u65e0\u6cd5\u8fdb\u884c\u8fde\u63a5
crswriter.tname = writeData \u65e0\u6cd5\u786e\u5b9a\u8868\u540d crswriter.tname = writeData \u65e0\u6cd5\u786e\u5b9a\u8868\u540d
crswriter.params1 = params1 \u7684\u503c: {0} crswriter.params1 = params1 \u7684\u503c: {0}
crswriter.params2 = params2 \u7684\u503c: {0} crswriter.params2 = params2 \u7684\u503c: {0}
crswriter.conflictsno = \u540c\u6b65\u65f6\u53d1\u751f\u51b2\u7a81 crswriter.conflictsno = \u540c\u6b65\u5316\u65f6\u53d1\u751f\u51b2\u7a81
#InsertRow exceptions #InsertRow exceptions
insertrow.novalue = \u5c1a\u672a\u63d2\u5165\u4efb\u4f55\u503c insertrow.novalue = \u5c1a\u672a\u63d2\u5165\u4efb\u4f55\u503c
...@@ -140,7 +139,7 @@ syncrsimpl.valtores = \u8981\u89e3\u6790\u7684\u503c\u53ef\u4ee5\u5728\u6570\u63 ...@@ -140,7 +139,7 @@ syncrsimpl.valtores = \u8981\u89e3\u6790\u7684\u503c\u53ef\u4ee5\u5728\u6570\u63
#WebRowSetXmlReader exception #WebRowSetXmlReader exception
wrsxmlreader.invalidcp = \u5df2\u5230\u8fbe RowSet \u7684\u7ed3\u5c3e\u3002\u5149\u6807\u4f4d\u7f6e\u65e0\u6548 wrsxmlreader.invalidcp = \u5df2\u5230\u8fbe RowSet \u7684\u7ed3\u5c3e\u3002\u5149\u6807\u4f4d\u7f6e\u65e0\u6548
wrsxmlreader.readxml = readXML: {0} wrsxmlreader.readxml = readXML: {0}
wrsxmlreader.parseerr = ** \u8bed\u6cd5\u89e3\u6790\u9519\u8bef wrsxmlreader.parseerr = ** \u8bed\u6cd5\u89e3\u6790\u9519\u8bef: {0}\uff0c\u884c: {1}\uff0cURI: {2}
#WebRowSetXmlWriter exceptions #WebRowSetXmlWriter exceptions
wrsxmlwriter.ioex = IOException: {0} wrsxmlwriter.ioex = IOException: {0}
...@@ -151,17 +150,16 @@ wsrxmlwriter.notproper = \u7c7b\u578b\u4e0d\u6b63\u786e ...@@ -151,17 +150,16 @@ wsrxmlwriter.notproper = \u7c7b\u578b\u4e0d\u6b63\u786e
#XmlReaderContentHandler exceptions #XmlReaderContentHandler exceptions
xmlrch.errmap = \u8bbe\u7f6e\u6620\u5c04\u65f6\u51fa\u9519: {0} xmlrch.errmap = \u8bbe\u7f6e\u6620\u5c04\u65f6\u51fa\u9519: {0}
xmlrch.errmetadata = \u8bbe\u7f6e\u5143\u6570\u636e\u65f6\u51fa\u9519: {0} xmlrch.errmetadata = \u8bbe\u7f6e\u5143\u6570\u636e\u65f6\u51fa\u9519: {0}
xmlrch.errinsert = \u63d2\u5165\u503c\u65f6\u51fa\u9519: {0} xmlrch.errinsertval = \u63d2\u5165\u503c\u65f6\u51fa\u9519: {0}
xmlrch.errconstr = \u6784\u9020\u884c\u65f6\u51fa\u9519: {0} xmlrch.errconstr = \u6784\u9020\u884c\u65f6\u51fa\u9519: {0}
xmlrch.errdel = \u5220\u9664\u884c\u65f6\u51fa\u9519: {0} xmlrch.errdel = \u5220\u9664\u884c\u65f6\u51fa\u9519: {0}
xmlrch.errinsert = \u6784\u9020\u63d2\u5165\u884c\u65f6\u51fa\u9519: {0}
xmlrch.errinsdel = \u6784\u9020 insdel \u884c\u65f6\u51fa\u9519: {0} xmlrch.errinsdel = \u6784\u9020 insdel \u884c\u65f6\u51fa\u9519: {0}
xmlrch.errupdate = \u6784\u9020\u66f4\u65b0\u884c\u65f6\u51fa\u9519: {0} xmlrch.errupdate = \u6784\u9020\u66f4\u65b0\u884c\u65f6\u51fa\u9519: {0}
xmlrch.errupdrow = \u66f4\u65b0\u884c\u65f6\u51fa\u9519\uff1a{0} xmlrch.errupdrow = \u66f4\u65b0\u884c\u65f6\u51fa\u9519: {0}
xmlrch.chars = \u5b57\u7b26: xmlrch.chars = \u5b57\u7b26:
xmlrch.badvalue = \u503c\u9519\u8bef\uff1b\u5c5e\u6027\u4e0d\u53ef\u4e3a Null xmlrch.badvalue = \u503c\u9519\u8bef\uff1b\u5c5e\u6027\u4e0d\u53ef\u4e3a Null
xmlrch.badvalue1 = \u503c\u9519\u8bef\uff1b\u5143\u6570\u636e\u4e0d\u53ef\u4e3a Null xmlrch.badvalue1 = \u503c\u9519\u8bef\uff1b\u5143\u6570\u636e\u4e0d\u53ef\u4e3a Null
xmlrch.warning = ** \u8b66\u544a xmlrch.warning = ** \u8b66\u544a: {0}\uff0c\u884c: {1}\uff0cURI: {2}
#RIOptimisticProvider Exceptions #RIOptimisticProvider Exceptions
riop.locking = \u4e0d\u652f\u6301\u9501\u5b9a\u5206\u7c7b riop.locking = \u4e0d\u652f\u6301\u9501\u5b9a\u5206\u7c7b
......
# #
# Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
...@@ -60,7 +60,6 @@ cachedrowsetimpl.movetoins1 = moveToInsertRow\uff1a\u6c92\u6709\u5143\u8cc7\u659 ...@@ -60,7 +60,6 @@ cachedrowsetimpl.movetoins1 = moveToInsertRow\uff1a\u6c92\u6709\u5143\u8cc7\u659
cachedrowsetimpl.movetoins2 = moveToInsertRow\uff1a\u6b04\u6578\u7121\u6548 cachedrowsetimpl.movetoins2 = moveToInsertRow\uff1a\u6b04\u6578\u7121\u6548
cachedrowsetimpl.tablename = \u8868\u540d\u7a31\u4e0d\u80fd\u70ba\u7a7a cachedrowsetimpl.tablename = \u8868\u540d\u7a31\u4e0d\u80fd\u70ba\u7a7a
cachedrowsetimpl.keycols = \u95dc\u9375\u6b04\u7121\u6548 cachedrowsetimpl.keycols = \u95dc\u9375\u6b04\u7121\u6548
cachedrowsetimpl.invalidcol = \u6b04\u7d22\u5f15\u7121\u6548
cachedrowsetimpl.opnotsupp = \u8cc7\u6599\u5eab\u4e0d\u652f\u63f4\u4f5c\u696d cachedrowsetimpl.opnotsupp = \u8cc7\u6599\u5eab\u4e0d\u652f\u63f4\u4f5c\u696d
cachedrowsetimpl.matchcols = \u5339\u914d\u6b04\u548c\u8a2d\u5b9a\u7684\u6b04\u4e0d\u540c cachedrowsetimpl.matchcols = \u5339\u914d\u6b04\u548c\u8a2d\u5b9a\u7684\u6b04\u4e0d\u540c
cachedrowsetimpl.setmatchcols = \u5728\u53d6\u5f97\u5339\u914d\u6b04\u4e4b\u524d\u8a2d\u5b9a\u5b83\u5011 cachedrowsetimpl.setmatchcols = \u5728\u53d6\u5f97\u5339\u914d\u6b04\u4e4b\u524d\u8a2d\u5b9a\u5b83\u5011
...@@ -76,8 +75,8 @@ cachedrowsetimpl.pagesize = \u9801\u9762\u5927\u5c0f\u4e0d\u80fd\u5c0f\u65bc\u96 ...@@ -76,8 +75,8 @@ cachedrowsetimpl.pagesize = \u9801\u9762\u5927\u5c0f\u4e0d\u80fd\u5c0f\u65bc\u96
cachedrowsetimpl.pagesize1 = \u9801\u9762\u5927\u5c0f\u4e0d\u80fd\u5927\u65bc maxRows cachedrowsetimpl.pagesize1 = \u9801\u9762\u5927\u5c0f\u4e0d\u80fd\u5927\u65bc maxRows
cachedrowsetimpl.fwdonly = ResultSet \u53ea\u80fd\u5411\u524d\u9032\u884c cachedrowsetimpl.fwdonly = ResultSet \u53ea\u80fd\u5411\u524d\u9032\u884c
cachedrowsetimpl.type = \u985e\u578b\u662f\uff1a{0} cachedrowsetimpl.type = \u985e\u578b\u662f\uff1a{0}
cachedrowsetimpl.opnotysupp = \u5c1a\u672a\u652f\u63f4\u6b64\u4f5c\u696d cachedrowsetimpl.opnotysupp = \u5c1a\u4e0d\u652f\u63f4\u8a72\u4f5c\u696d
cachedrowsetimpl.featnotsupp = \u4e0d\u652f\u63f4\u6b64\u529f\u80fd cachedrowsetimpl.featnotsupp = \u4e0d\u652f\u63f4\u8a72\u529f\u80fd
# WebRowSetImpl exceptions # WebRowSetImpl exceptions
webrowsetimpl.nullhash = \u7121\u6cd5\u5275\u8a2d WebRowSetImpl \u5be6\u4f8b\u3002\u70ba\u5efa\u69cb\u5b50\u63d0\u4f9b\u7684 Hashtable \u70ba\u7a7a webrowsetimpl.nullhash = \u7121\u6cd5\u5275\u8a2d WebRowSetImpl \u5be6\u4f8b\u3002\u70ba\u5efa\u69cb\u5b50\u63d0\u4f9b\u7684 Hashtable \u70ba\u7a7a
...@@ -97,7 +96,7 @@ joinrowsetimpl.notdefined = \u9019\u4e0d\u662f\u9023\u7d50\u7684\u5df2\u5b9a\u7f ...@@ -97,7 +96,7 @@ joinrowsetimpl.notdefined = \u9019\u4e0d\u662f\u9023\u7d50\u7684\u5df2\u5b9a\u7f
joinrowsetimpl.notsupported = \u4e0d\u652f\u63f4\u6b64\u985e\u9023\u7d50 joinrowsetimpl.notsupported = \u4e0d\u652f\u63f4\u6b64\u985e\u9023\u7d50
joinrowsetimpl.initerror = JoinRowSet \u521d\u59cb\u5316\u932f\u8aa4 joinrowsetimpl.initerror = JoinRowSet \u521d\u59cb\u5316\u932f\u8aa4
joinrowsetimpl.genericerr = \u5e38\u898f\u7684 joinrowset \u521d\u59cb\u5316\u932f\u8aa4 joinrowsetimpl.genericerr = \u5e38\u898f\u7684 joinrowset \u521d\u59cb\u5316\u932f\u8aa4
joinrowsetimpl.emptyrowset = \u4e0d\u53ef\u5c07\u7a7a\u767d\u7684 rowset \u589e\u52a0\u81f3\u6b64 JoinRowSet joinrowsetimpl.emptyrowset = \u7121\u6cd5\u5c07\u7a7a rowset \u65b0\u589e\u81f3\u6b64 JoinRowSet
#JdbcRowSetImpl exceptions #JdbcRowSetImpl exceptions
jdbcrowsetimpl.invalstate = \u72c0\u614b\u7121\u6548 jdbcrowsetimpl.invalstate = \u72c0\u614b\u7121\u6548
...@@ -111,13 +110,13 @@ jdbcrowsetimpl.unsetmatch = \u672a\u8a2d\u5b9a\u7684\u6b04\u548c\u8a2d\u5b9a\u76 ...@@ -111,13 +110,13 @@ jdbcrowsetimpl.unsetmatch = \u672a\u8a2d\u5b9a\u7684\u6b04\u548c\u8a2d\u5b9a\u76
jdbcrowsetimpl.usecolname = \u4f7f\u7528\u6b04\u540d\u505a\u70ba unsetMatchColumn \u7684\u5f15\u6578 jdbcrowsetimpl.usecolname = \u4f7f\u7528\u6b04\u540d\u505a\u70ba unsetMatchColumn \u7684\u5f15\u6578
jdbcrowsetimpl.usecolid = \u4f7f\u7528\u6b04 ID \u505a\u70ba unsetMatchColumn \u7684\u5f15\u6578 jdbcrowsetimpl.usecolid = \u4f7f\u7528\u6b04 ID \u505a\u70ba unsetMatchColumn \u7684\u5f15\u6578
jdbcrowsetimpl.resnotupd = ResultSet \u4e0d\u53ef\u66f4\u65b0 jdbcrowsetimpl.resnotupd = ResultSet \u4e0d\u53ef\u66f4\u65b0
jdbcrowsetimpl.opnotysupp = \u5c1a\u672a\u652f\u63f4\u6b64\u4f5c\u696d jdbcrowsetimpl.opnotysupp = \u5c1a\u4e0d\u652f\u63f4\u8a72\u4f5c\u696d
jdbcrowsetimpl.featnotsupp = \u4e0d\u652f\u63f4\u6b64\u529f\u80fd jdbcrowsetimpl.featnotsupp = \u4e0d\u652f\u63f4\u8a72\u529f\u80fd
#CachedRowSetReader exceptions #CachedRowSetReader exceptions
crsreader.connect = (JNDI) \u7121\u6cd5\u9023\u7dda crsreader.connect = (JNDI) \u7121\u6cd5\u9023\u7dda
crsreader.paramtype = \u7121\u6cd5\u63a8\u65b7\u53c3\u6578\u985e\u578b crsreader.paramtype = \u7121\u6cd5\u63a8\u65b7\u53c3\u6578\u985e\u578b
crsreader.connecterr = RowSetReader \u767c\u751f\u5167\u90e8\u932f\u8aa4\uff1a\u6c92\u6709\u9023\u7dda\u6216\u6307\u4ee4 crsreader.connecterr = RowSetReader \u4e2d\u51fa\u73fe\u5167\u90e8\u932f\u8aa4\ufe30\u7121\u9023\u7dda\u6216\u6307\u4ee4
crsreader.datedetected = \u5075\u6e2c\u5230\u65e5\u671f crsreader.datedetected = \u5075\u6e2c\u5230\u65e5\u671f
crsreader.caldetected = \u5075\u6e2c\u5230\u884c\u4e8b\u66c6 crsreader.caldetected = \u5075\u6e2c\u5230\u884c\u4e8b\u66c6
...@@ -140,7 +139,7 @@ syncrsimpl.valtores = \u8981\u89e3\u6790\u7684\u503c\u53ef\u4f4d\u65bc\u8cc7\u65 ...@@ -140,7 +139,7 @@ syncrsimpl.valtores = \u8981\u89e3\u6790\u7684\u503c\u53ef\u4f4d\u65bc\u8cc7\u65
#WebRowSetXmlReader exception #WebRowSetXmlReader exception
wrsxmlreader.invalidcp = \u5df2\u5230\u9054 RowSet \u672b\u5c3e\u3002\u6e38\u6a19\u4f4d\u7f6e\u7121\u6548 wrsxmlreader.invalidcp = \u5df2\u5230\u9054 RowSet \u672b\u5c3e\u3002\u6e38\u6a19\u4f4d\u7f6e\u7121\u6548
wrsxmlreader.readxml = readXML\uff1a{0} wrsxmlreader.readxml = readXML\uff1a{0}
wrsxmlreader.parseerr = ** \u5256\u6790\u932f\u8aa4 wrsxmlreader.parseerr = ** \u5256\u6790\u932f\u8aa4: {0}\uff0c\u884c: {1}\uff0curi: {2}
#WebRowSetXmlWriter exceptions #WebRowSetXmlWriter exceptions
wrsxmlwriter.ioex = IOException\uff1a{0} wrsxmlwriter.ioex = IOException\uff1a{0}
...@@ -151,17 +150,16 @@ wsrxmlwriter.notproper = \u4e0d\u662f\u6b63\u78ba\u985e\u578b ...@@ -151,17 +150,16 @@ wsrxmlwriter.notproper = \u4e0d\u662f\u6b63\u78ba\u985e\u578b
#XmlReaderContentHandler exceptions #XmlReaderContentHandler exceptions
xmlrch.errmap = \u8a2d\u5b9a\u5c0d\u6620\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} xmlrch.errmap = \u8a2d\u5b9a\u5c0d\u6620\u6642\u767c\u751f\u932f\u8aa4\uff1a{0}
xmlrch.errmetadata = \u8a2d\u5b9a\u5143\u8cc7\u6599\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} xmlrch.errmetadata = \u8a2d\u5b9a\u5143\u8cc7\u6599\u6642\u767c\u751f\u932f\u8aa4\uff1a{0}
xmlrch.errinsert = \u63d2\u5165\u503c\u6642\u767c\u751f\u932f\u8aa4: {0} xmlrch.errinsertval = \u63d2\u5165\u503c\u6642\u767c\u751f\u932f\u8aa4: {0}
xmlrch.errconstr = \u5efa\u69cb\u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} xmlrch.errconstr = \u5efa\u69cb\u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0}
xmlrch.errdel = \u522a\u9664\u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} xmlrch.errdel = \u522a\u9664\u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0}
xmlrch.errinsert = \u5efa\u69cb\u63d2\u5165\u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0}
xmlrch.errinsdel = \u5efa\u69cb insdel \u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} xmlrch.errinsdel = \u5efa\u69cb insdel \u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0}
xmlrch.errupdate = \u5efa\u69cb\u66f4\u65b0\u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0} xmlrch.errupdate = \u5efa\u69cb\u66f4\u65b0\u5217\u6642\u767c\u751f\u932f\u8aa4\uff1a{0}
xmlrch.errupdrow = \u66f4\u65b0\u5217\u6642\u767c\u751f\u932f\u8aa4: {0} xmlrch.errupdrow = \u66f4\u65b0\u5217\u6642\u767c\u751f\u932f\u8aa4: {0}
xmlrch.chars = \u5b57\u5143\uff1a xmlrch.chars = \u5b57\u5143\uff1a
xmlrch.badvalue = \u932f\u8aa4\u7684\u503c\uff1b\u7279\u6027\u4e0d\u80fd\u70ba\u7a7a xmlrch.badvalue = \u932f\u8aa4\u7684\u503c\uff1b\u7279\u6027\u4e0d\u80fd\u70ba\u7a7a
xmlrch.badvalue1 = \u932f\u8aa4\u7684\u503c\uff1b\u5143\u8cc7\u6599\u4e0d\u80fd\u70ba\u7a7a xmlrch.badvalue1 = \u932f\u8aa4\u7684\u503c\uff1b\u5143\u8cc7\u6599\u4e0d\u80fd\u70ba\u7a7a
xmlrch.warning = ** \u8b66\u544a xmlrch.warning = ** \u8b66\u544a: {0}\uff0c\u884c: {1}\uff0curi: {2}
#RIOptimisticProvider Exceptions #RIOptimisticProvider Exceptions
riop.locking = \u4e0d\u652f\u63f4\u9396\u5b9a\u5206\u985e riop.locking = \u4e0d\u652f\u63f4\u9396\u5b9a\u5206\u985e
......
...@@ -67,7 +67,7 @@ FileChooser.updateButtonText=\u66f4\u65b0(U) ...@@ -67,7 +67,7 @@ FileChooser.updateButtonText=\u66f4\u65b0(U)
FileChooser.updateButtonMnemonic=85 FileChooser.updateButtonMnemonic=85
FileChooser.helpButtonText=\u30d8\u30eb\u30d7(H) FileChooser.helpButtonText=\u30d8\u30eb\u30d7(H)
FileChooser.helpButtonMnemonic=72 FileChooser.helpButtonMnemonic=72
FileChooser.directoryOpenButtonText=\u958b\u304f(O) FileChooser.directoryOpenButtonText=\u958b\u304f
FileChooser.directoryOpenButtonMnemonic=79 FileChooser.directoryOpenButtonMnemonic=79
# File Size Units # File Size Units
......
...@@ -67,7 +67,7 @@ FileChooser.updateButtonText=\uc5c5\ub370\uc774\ud2b8(U) ...@@ -67,7 +67,7 @@ FileChooser.updateButtonText=\uc5c5\ub370\uc774\ud2b8(U)
FileChooser.updateButtonMnemonic=85 FileChooser.updateButtonMnemonic=85
FileChooser.helpButtonText=\ub3c4\uc6c0\ub9d0(H) FileChooser.helpButtonText=\ub3c4\uc6c0\ub9d0(H)
FileChooser.helpButtonMnemonic=72 FileChooser.helpButtonMnemonic=72
FileChooser.directoryOpenButtonText=\uc5f4\uae30(O) FileChooser.directoryOpenButtonText=\uc5f4\uae30
FileChooser.directoryOpenButtonMnemonic=79 FileChooser.directoryOpenButtonMnemonic=79
# File Size Units # File Size Units
......
# This properties file is used to create a PropertyResourceBundle
# It contains Locale specific strings used in Swing
# Currently, the following components need this for support:
#
# ColorChooser
# FileChooser
# OptionPane
#
# When this file is read in, the strings are put into the
# defaults table. This is an implementation detail of the current
# workings of Swing. DO NOT DEPEND ON THIS.
# This may change in future versions of Swing as we improve localization
# support.
#
# MNEMONIC NOTE:
# Many of strings in this file are used by widgets that have a
# mnemonic, for example:
# ColorChooser.rgbNameText=RGB
# ColorChooser.rgbMnemonic=71
# ColorChooser.rgbDisplayedMnemonicIndex=1
# Indicates that the tab in the ColorChooser for RGB colors will have
# the text 'RGB', further the mnemonic character will be 'g' and that
# a decoration will be provided under the 'G'. This will typically
# look like: RGB
# -
# 71 corresponds to the decimal value of the VK constant defined
# in java/awt/KeyEvent.java. VK_G is defined as:
#
# public static final int VK_G = 0x47;
#
# 0x47 is a hex number and needs to be converted to decimal.
# A simple way to calculate this for a-z is to add 64 to the index of
# the letter in the alphabet. As 'a' is in the 1st letter the mnemonic
# for 'a' is 65, 'b' is 66...
#
# The xxDisplayedMnemonicIndex is used to indicate the index of the
# character that should be underlined in the String, with 0
# corresponding to the first character in the String.
#
# One important thing to remember is that the mnemonic MUST exist in
# the String, if it does not exist you should add text that makes it
# exist. This will typically take the form 'XXXX (M)' where M is the
# character for the mnemonic.
#
# @author Steve Wilson
############ FILE CHOOSER STRINGS #############
FileChooser.fileDescriptionText=Arquivo gen\u00e9rico
FileChooser.directoryDescriptionText=Diret\u00f3rio
FileChooser.newFolderErrorText=Erro ao criar nova pasta
FileChooser.newFolderErrorSeparator= :
FileChooser.acceptAllFileFilterText=Todos os arquivos
FileChooser.cancelButtonText=Cancelar
FileChooser.cancelButtonMnemonic=67
FileChooser.saveButtonText=Salvar
FileChooser.saveButtonMnemonic=83
FileChooser.openButtonText=Abrir
FileChooser.openButtonMnemonic=79
FileChooser.saveDialogTitleText=Salvar
FileChooser.openDialogTitleText=Abrir
FileChooser.updateButtonText=Atualizar
FileChooser.updateButtonMnemonic=85
FileChooser.helpButtonText=Ajuda
FileChooser.helpButtonMnemonic=72
FileChooser.directoryOpenButtonText=Abrir
FileChooser.directoryOpenButtonMnemonic=79
# File Size Units
FileChooser.fileSizeKiloBytes={0} KB
FileChooser.fileSizeMegaBytes={0} MB
FileChooser.fileSizeGigaBytes={0} GB
# These strings are platform dependent not look and feel dependent.
FileChooser.win32.newFolder=Nova pasta
FileChooser.win32.newFolder.subsequent=Nova pasta ({0})
FileChooser.other.newFolder=NewFolder
FileChooser.other.newFolder.subsequent=NewFolder.{0}
## file chooser tooltips ###
FileChooser.cancelButtonToolTipText=Anular caixa de di\u00e1logo do seletor de arquivos
FileChooser.saveButtonToolTipText=Salvar arquivo selecionado
FileChooser.openButtonToolTipText=Abrir arquivo selecionado
FileChooser.updateButtonToolTipText=Atualizar lista de diret\u00f3rios
FileChooser.helpButtonToolTipText=Ajuda do FileChooser
FileChooser.directoryOpenButtonToolTipText=Abrir diret\u00f3rio selecionado
############ COLOR CHOOSER STRINGS #############
ColorChooser.previewText=Visualizar
ColorChooser.okText=OK
ColorChooser.cancelText=Cancelar
ColorChooser.resetText=Redefinir
# VK_XXX constant for 'ColorChooser.resetText' button to make mnemonic
ColorChooser.resetMnemonic=82
ColorChooser.sampleText=Texto de amostra Texto de amostra
ColorChooser.swatchesNameText=Amostras
ColorChooser.swatchesMnemonic=83
ColorChooser.swatchesDisplayedMnemonicIndex=0
ColorChooser.swatchesRecentText=Recente:
ColorChooser.hsbNameText=HSB
# Each of the ColorChooser types can define a mnemonic, as a KeyEvent.VK_XXX
# constant, and an index into the text to render the mnemonic as. The
# mnemonic is xxxMnemonic and the index of the character to underline is
# xxxDisplayedMnemonicIndex.
ColorChooser.hsbMnemonic=72
ColorChooser.hsbDisplayedMnemonicIndex=0
ColorChooser.hsbHueText=H
ColorChooser.hsbSaturationText=S
ColorChooser.hsbBrightnessText=B
ColorChooser.hsbRedText=R
ColorChooser.hsbGreenText=G
ColorChooser.hsbBlueText=B
ColorChooser.rgbNameText=RGB
ColorChooser.rgbMnemonic=71
ColorChooser.rgbDisplayedMnemonicIndex=1
ColorChooser.rgbRedText=Vermelho
ColorChooser.rgbRedMnemonic=68
ColorChooser.rgbGreenText=Verde
ColorChooser.rgbGreenMnemonic=78
ColorChooser.rgbBlueText=Azul
ColorChooser.rgbBlueMnemonic=66
############ OPTION PANE STRINGS #############
# Mnemonic keys correspond to KeyEvent.VK_XXX constant
# We only define mnemonics for YES/NO, but for completeness you can
# define mnemonics for any of the buttons.
OptionPane.yesButtonText=Sim
OptionPane.yesButtonMnemonic=89
OptionPane.noButtonText=N\u00e3o
OptionPane.noButtonMnemonic=78
OptionPane.okButtonText=OK
OptionPane.okButtonMnemonic=0
OptionPane.cancelButtonText=Cancelar
OptionPane.cancelButtonMnemonic=0
OptionPane.titleText=Selecionar uma op\u00e7\u00e3o
# Title for the dialog for the showInputDialog methods. Only used if
# the developer uses one of the variants that doesn't take a title.
OptionPane.inputDialogTitle=Entrada
# Title for the dialog for the showMessageDialog methods. Only used if
# the developer uses one of the variants that doesn't take a title.
OptionPane.messageDialogTitle=Mensagem
############ Printing Dialog Strings ############
PrintingDialog.titleProgressText=Impress\u00e3o
PrintingDialog.titleAbortingText=Impress\u00e3o (Anulando)
PrintingDialog.contentInitialText=Impress\u00e3o em andamento...
# The following string will be formatted by a MessageFormat
# and {0} will be replaced by page number being printed
PrintingDialog.contentProgressText=P\u00e1gina imprimida {0}...
PrintingDialog.contentAbortingText=Anulando impress\u00e3o...
PrintingDialog.abortButtonText=Anular
PrintingDialog.abortButtonMnemonic=65
PrintingDialog.abortButtonDisplayedMnemonicIndex=0
PrintingDialog.abortButtonToolTipText=Anular impress\u00e3o
############ Internal Frame Strings ############
InternalFrame.iconButtonToolTip=Minimizar
InternalFrame.maxButtonToolTip=Maximizar
InternalFrame.restoreButtonToolTip=Restaurar
InternalFrame.closeButtonToolTip=Fechar
############ Internal Frame Title Pane Strings ############
InternalFrameTitlePane.restoreButtonText=Restaurar
InternalFrameTitlePane.moveButtonText=Mover
InternalFrameTitlePane.sizeButtonText=Tamanho
InternalFrameTitlePane.minimizeButtonText=Minimizar
InternalFrameTitlePane.maximizeButtonText=Maximizar
InternalFrameTitlePane.closeButtonText=Fechar
############ Text strings #############
# Used for html forms
FormView.submitButtonText=Enviar consulta
FormView.resetButtonText=Redefinir
FormView.browseFileButtonText=Explorar...
############ Abstract Document Strings ############
AbstractDocument.styleChangeText=altera\u00e7\u00e3o de estilo
AbstractDocument.additionText=adi\u00e7\u00e3o
AbstractDocument.deletionText=exclus\u00e3o
AbstractDocument.undoText=Desfazer
AbstractDocument.redoText=Refazer
############ Abstract Button Strings ############
AbstractButton.clickText=clicar
############ Abstract Undoable Edit Strings ############
AbstractUndoableEdit.undoText=Desfazer
AbstractUndoableEdit.redoText=Refazer
############ Combo Box Strings ############
ComboBox.togglePopupText=togglePopup
############ Progress Monitor Strings ############
ProgressMonitor.progressText=Progresso...
############ Split Pane Strings ############
SplitPane.leftButtonText=bot\u00e3o esquerdo
SplitPane.rightButtonText=bot\u00e3o direito
# Used for Isindex
IsindexView.prompt=Trata-se de um \u00edndice pesquis\u00e1vel. Insira as palavras-chave de pesquisa:
############ InternalFrameTitlePane Strings ############
InternalFrameTitlePane.iconifyButtonAccessibleName=Iconificar
InternalFrameTitlePane.maximizeButtonAccessibleName=Maximizar
InternalFrameTitlePane.closeButtonAccessibleName=Fechar
...@@ -67,7 +67,7 @@ FileChooser.updateButtonText=\u66f4\u65b0(U) ...@@ -67,7 +67,7 @@ FileChooser.updateButtonText=\u66f4\u65b0(U)
FileChooser.updateButtonMnemonic=85 FileChooser.updateButtonMnemonic=85
FileChooser.helpButtonText=\u5e2e\u52a9(H) FileChooser.helpButtonText=\u5e2e\u52a9(H)
FileChooser.helpButtonMnemonic=72 FileChooser.helpButtonMnemonic=72
FileChooser.directoryOpenButtonText=\u6253\u5f00(O) FileChooser.directoryOpenButtonText=\u6253\u5f00
FileChooser.directoryOpenButtonMnemonic=79 FileChooser.directoryOpenButtonMnemonic=79
# File Size Units # File Size Units
......
...@@ -67,7 +67,7 @@ FileChooser.updateButtonText=\u66f4\u65b0(U) ...@@ -67,7 +67,7 @@ FileChooser.updateButtonText=\u66f4\u65b0(U)
FileChooser.updateButtonMnemonic=85 FileChooser.updateButtonMnemonic=85
FileChooser.helpButtonText=\u8aaa\u660e(H) FileChooser.helpButtonText=\u8aaa\u660e(H)
FileChooser.helpButtonMnemonic=72 FileChooser.helpButtonMnemonic=72
FileChooser.directoryOpenButtonText=\u958b\u555f(O) FileChooser.directoryOpenButtonText=\u958b\u555f
FileChooser.directoryOpenButtonMnemonic=79 FileChooser.directoryOpenButtonMnemonic=79
# File Size Units # File Size Units
......
...@@ -33,9 +33,9 @@ FileChooser.newFolderActionLabelText=Neuer Ordner ...@@ -33,9 +33,9 @@ FileChooser.newFolderActionLabelText=Neuer Ordner
FileChooser.listViewButtonToolTipText=Liste FileChooser.listViewButtonToolTipText=Liste
FileChooser.listViewButtonAccessibleName=Liste FileChooser.listViewButtonAccessibleName=Liste
FileChooser.listViewActionLabelText=Liste FileChooser.listViewActionLabelText=Liste
FileChooser.detailsViewButtonToolTipText=Einzelheiten FileChooser.detailsViewButtonToolTipText=Details
FileChooser.detailsViewButtonAccessibleName=Einzelheiten FileChooser.detailsViewButtonAccessibleName=Details
FileChooser.detailsViewActionLabelText=Einzelheiten FileChooser.detailsViewActionLabelText=Details
FileChooser.refreshActionLabelText=Aktualisieren FileChooser.refreshActionLabelText=Aktualisieren
FileChooser.viewMenuLabelText=Ansicht FileChooser.viewMenuLabelText=Ansicht
FileChooser.fileNameHeaderText=Dateiname FileChooser.fileNameHeaderText=Dateiname
......
# This properties file is used to create a PropertyResourceBundle
# It contains Locale specific strings used be the Metal Look and Feel.
# Currently, the following components need this for support:
#
# FileChooser
#
# When this file is read in, the strings are put into the
# defaults table. This is an implementation detail of the current
# workings of Swing. DO NOT DEPEND ON THIS.
# This may change in future versions of Swing as we improve localization
# support.
#
# Refer to the note in basic.properties for a description as to what
# the mnemonics correspond to and how to calculate them.
#
# @author Steve Wilson
############ FILE CHOOSER STRINGS #############
FileChooser.lookInLabelText=Consultar em:
FileChooser.saveInLabelText=Salvar em:
FileChooser.fileNameLabelText=Nome de arquivo:
FileChooser.filesOfTypeLabelText=Arquivos de tipo:
FileChooser.upFolderToolTipText=Um n\u00edvel acima
FileChooser.upFolderAccessibleName=Acima
FileChooser.homeFolderToolTipText=In\u00edcio
FileChooser.homeFolderAccessibleName=In\u00edcio
FileChooser.newFolderToolTipText=Criar nova pasta
FileChooser.newFolderAccessibleName=Nova pasta
FileChooser.newFolderActionLabelText=Nova pasta
FileChooser.listViewButtonToolTipText=Lista
FileChooser.listViewButtonAccessibleName=Lista
FileChooser.listViewActionLabelText=Lista
FileChooser.detailsViewButtonToolTipText=Detalhes
FileChooser.detailsViewButtonAccessibleName=Detalhes
FileChooser.detailsViewActionLabelText=Detalhes
FileChooser.refreshActionLabelText=Atualizar
FileChooser.viewMenuLabelText=Exibir
FileChooser.fileNameHeaderText=Nome
FileChooser.fileSizeHeaderText=Tamanho
FileChooser.fileTypeHeaderText=Tipo
FileChooser.fileDateHeaderText=Modificado
FileChooser.fileAttrHeaderText=Atributos
############ Used by MetalTitlePane if rendering window decorations############
# All mnemonics are KeyEvent.VK_XXX as integers
MetalTitlePane.restoreTitle=Restaurar
MetalTitlePane.restoreMnemonic=82
MetalTitlePane.iconifyTitle=Minimizar
MetalTitlePane.iconifyMnemonic=69
MetalTitlePane.maximizeTitle=Maximizar
MetalTitlePane.maximizeMnemonic=88
MetalTitlePane.closeTitle=Fechar
MetalTitlePane.closeMnemonic=67
...@@ -28,8 +28,8 @@ FileChooser.newFolderToolTipText=Neuen Ordner erstellen ...@@ -28,8 +28,8 @@ FileChooser.newFolderToolTipText=Neuen Ordner erstellen
FileChooser.newFolderAccessibleName=Neuer Ordner FileChooser.newFolderAccessibleName=Neuer Ordner
FileChooser.listViewButtonToolTipText=Liste FileChooser.listViewButtonToolTipText=Liste
FileChooser.listViewButtonAccessibleName=Liste FileChooser.listViewButtonAccessibleName=Liste
FileChooser.detailsViewButtonToolTipText=Einzelheiten FileChooser.detailsViewButtonToolTipText=Details
FileChooser.detailsViewButtonAccessibleName=Einzelheiten FileChooser.detailsViewButtonAccessibleName=Details
FileChooser.fileNameHeaderText=Dateiname FileChooser.fileNameHeaderText=Dateiname
FileChooser.fileSizeHeaderText=Gr\u00f6\u00dfe FileChooser.fileSizeHeaderText=Gr\u00f6\u00dfe
FileChooser.fileTypeHeaderText=Typ FileChooser.fileTypeHeaderText=Typ
......
# This properties file is used to create a PropertyResourceBundle
# It contains Locale specific strings used be the Synth Look and Feel.
# Currently, the following components need this for support:
#
# FileChooser
#
# When this file is read in, the strings are put into the
# defaults table. This is an implementation detail of the current
# workings of Swing. DO NOT DEPEND ON THIS.
# This may change in future versions of Swing as we improve localization
# support.
#
# @author Steve Wilson
############ FILE CHOOSER STRINGS #############
FileChooser.lookInLabelText=Consultar em:
FileChooser.saveInLabelText=Salvar em:
FileChooser.fileNameLabelText=Nome de arquivo:
FileChooser.filesOfTypeLabelText=Arquivos de tipo:
FileChooser.upFolderToolTipText=Um n\u00edvel acima
FileChooser.upFolderAccessibleName=Acima
FileChooser.homeFolderToolTipText=In\u00edcio
FileChooser.homeFolderAccessibleName=In\u00edcio
FileChooser.newFolderToolTipText=Criar nova pasta
FileChooser.newFolderAccessibleName=Nova pasta
FileChooser.newFolderActionLabelText=Nova pasta
FileChooser.listViewButtonToolTipText=Lista
FileChooser.listViewButtonAccessibleName=Lista
FileChooser.listViewActionLabelText=Lista
FileChooser.detailsViewButtonToolTipText=Detalhes
FileChooser.detailsViewButtonAccessibleName=Detalhes
FileChooser.detailsViewActionLabelText=Detalhes
FileChooser.refreshActionLabelText=Atualizar
FileChooser.viewMenuLabelText=Exibir
FileChooser.fileNameHeaderText=Nome
FileChooser.fileSizeHeaderText=Tamanho
FileChooser.fileTypeHeaderText=Tipo
FileChooser.fileDateHeaderText=Modificado
FileChooser.fileAttrHeaderText=Atributos
...@@ -35,18 +35,18 @@ socket_attaching.host = VM \u306b\u63a5\u7d9a\u3059\u308b\u30de\u30b7\u30f3\u540 ...@@ -35,18 +35,18 @@ socket_attaching.host = VM \u306b\u63a5\u7d9a\u3059\u308b\u30de\u30b7\u30f3\u540
socket_attaching.host.label = \u30db\u30b9\u30c8 socket_attaching.host.label = \u30db\u30b9\u30c8
socket_attaching.port = VM \u306b\u63a5\u7d9a\u3059\u308b\u30dd\u30fc\u30c8\u756a\u53f7 socket_attaching.port = VM \u306b\u63a5\u7d9a\u3059\u308b\u30dd\u30fc\u30c8\u756a\u53f7
socket_attaching.port.label = \u30dd\u30fc\u30c8 socket_attaching.port.label = \u30dd\u30fc\u30c8
socket_attaching.description = \u30bd\u30b1\u30c3\u30c8\u3067\u305d\u306e\u4ed6\u306e VM \u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002 socket_attaching.description = \u30bd\u30b1\u30c3\u30c8\u3067\u305d\u306e\u4ed6\u306e VM \u306b\u63a5\u7d9a\u3057\u307e\u3059
socket_listening.localaddr = \u30ea\u30b9\u30ca\u30fc\u306e\u30d0\u30a4\u30f3\u30c9\u5148\u30ed\u30fc\u30ab\u30eb\u30a2\u30c9\u30ec\u30b9 socket_listening.localaddr = \u30ea\u30b9\u30ca\u30fc\u306e\u30d0\u30a4\u30f3\u30c9\u5148\u30ed\u30fc\u30ab\u30eb\u30a2\u30c9\u30ec\u30b9
socket_listening.localaddr.label = \u30ed\u30fc\u30ab\u30eb\u30a2\u30c9\u30ec\u30b9 socket_listening.localaddr.label = \u30ed\u30fc\u30ab\u30eb\u30a2\u30c9\u30ec\u30b9
socket_listening.port = VM \u3078\u306e\u63a5\u7d9a\u3092\u5f85\u6a5f\u3059\u308b\u30dd\u30fc\u30c8\u756a\u53f7 socket_listening.port = VM \u3078\u306e\u63a5\u7d9a\u3092\u5f85\u6a5f\u3059\u308b\u30dd\u30fc\u30c8\u756a\u53f7
socket_listening.port.label = \u30dd\u30fc\u30c8 socket_listening.port.label = \u30dd\u30fc\u30c8
socket_listening.description = \u305d\u306e\u4ed6\u306e VM \u306b\u3088\u308a\u958b\u59cb\u3055\u308c\u308b\u30bd\u30b1\u30c3\u30c8\u63a5\u7d9a\u3092\u53d7\u3051\u5165\u308c\u307e\u3059\u3002 socket_listening.description = \u305d\u306e\u4ed6\u306e VM \u306b\u3088\u308a\u958b\u59cb\u3055\u308c\u308b\u30bd\u30b1\u30c3\u30c8\u63a5\u7d9a\u3092\u53d7\u3051\u5165\u308c\u307e\u3059
memory_attaching.name = VM \u3078\u306e\u63a5\u7d9a\u306b\u4f7f\u7528\u3055\u308c\u308b\u5171\u6709\u30e1\u30e2\u30ea\u9818\u57df\u540d memory_attaching.name = VM \u3078\u306e\u63a5\u7d9a\u306b\u4f7f\u7528\u3055\u308c\u308b\u5171\u6709\u30e1\u30e2\u30ea\u9818\u57df\u540d
memory_attaching.name.label = \u540d\u524d memory_attaching.name.label = \u540d\u524d
memory_attaching.description = \u5171\u6709\u30e1\u30e2\u30ea\u3067\u305d\u306e\u4ed6\u306e VM \u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002 memory_attaching.description = \u5171\u6709\u30e1\u30e2\u30ea\u3067\u305d\u306e\u4ed6\u306e VM \u306b\u63a5\u7d9a\u3057\u307e\u3059
memory_listening.name = VM \u3078\u306e\u63a5\u7d9a\u3092\u5f85\u6a5f\u3059\u308b\u305f\u3081\u306e\u5171\u6709\u30e1\u30e2\u30ea\u9818\u57df\u540d memory_listening.name = VM \u3078\u306e\u63a5\u7d9a\u3092\u5f85\u6a5f\u3059\u308b\u305f\u3081\u306e\u5171\u6709\u30e1\u30e2\u30ea\u9818\u57df\u540d
memory_listening.name.label = \u540d\u524d memory_listening.name.label = \u540d\u524d
memory_listening.description = \u305d\u306e\u4ed6\u306e VM \u306b\u3088\u308a\u958b\u59cb\u3055\u308c\u308b\u5171\u6709\u30e1\u30e2\u30ea\u63a5\u7d9a\u3092\u53d7\u3051\u5165\u308c\u307e\u3059\u3002 memory_listening.description = \u305d\u306e\u4ed6\u306e VM \u306b\u3088\u308a\u958b\u59cb\u3055\u308c\u308b\u5171\u6709\u30e1\u30e2\u30ea\u63a5\u7d9a\u3092\u53d7\u3051\u5165\u308c\u307e\u3059
process_attaching.description = \u30c7\u30d0\u30c3\u30b0\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u306b\u30d7\u30ed\u30bb\u30b9 ID (pid) \u3092\u4f7f\u3063\u3066\u63a5\u7d9a\u3057\u307e\u3059 process_attaching.description = \u30c7\u30d0\u30c3\u30b0\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u306b\u30d7\u30ed\u30bb\u30b9 ID (pid) \u3092\u4f7f\u3063\u3066\u63a5\u7d9a\u3057\u307e\u3059
process_attaching.pid = pid process_attaching.pid = pid
process_attaching.pid.label = \u30c7\u30d0\u30c3\u30b0\u3059\u308b\u30d7\u30ed\u30bb\u30b9 ID (pid) process_attaching.pid.label = \u30c7\u30d0\u30c3\u30b0\u3059\u308b\u30d7\u30ed\u30bb\u30b9 ID (pid)
...@@ -565,7 +565,7 @@ public class Dialog extends Window { ...@@ -565,7 +565,7 @@ public class Dialog extends Window {
* @since 1.6 * @since 1.6
*/ */
public Dialog(Window owner) { public Dialog(Window owner) {
this(owner, null, ModalityType.MODELESS); this(owner, "", ModalityType.MODELESS);
} }
/** /**
...@@ -624,7 +624,7 @@ public class Dialog extends Window { ...@@ -624,7 +624,7 @@ public class Dialog extends Window {
* @since 1.6 * @since 1.6
*/ */
public Dialog(Window owner, ModalityType modalityType) { public Dialog(Window owner, ModalityType modalityType) {
this(owner, null, modalityType); this(owner, "", modalityType);
} }
/** /**
......
...@@ -30,15 +30,15 @@ package java.awt; ...@@ -30,15 +30,15 @@ package java.awt;
* <p> * <p>
* Objects that implement this interface are created with the * Objects that implement this interface are created with the
* {@link EventQueue#createSecondaryLoop} method. The interface * {@link EventQueue#createSecondaryLoop} method. The interface
* provides two methods, {@link enter} and {@link exit}, * provides two methods, {@link #enter} and {@link #exit},
* which can be used to start and stop the event loop. * which can be used to start and stop the event loop.
* <p> * <p>
* When the {@link enter} method is called, the current * When the {@link #enter} method is called, the current
* thread is blocked until the loop is terminated by the * thread is blocked until the loop is terminated by the
* {@link exit} method. Also, a new event loop is started * {@link #exit} method. Also, a new event loop is started
* on the event dispatch thread, which may or may not be * on the event dispatch thread, which may or may not be
* the current thread. The loop can be terminated on any * the current thread. The loop can be terminated on any
* thread by calling its {@link exit} method. After the * thread by calling its {@link #exit} method. After the
* loop is terminated, the {@code SecondaryLoop} object can * loop is terminated, the {@code SecondaryLoop} object can
* be reused to run a new nested event loop. * be reused to run a new nested event loop.
* <p> * <p>
...@@ -102,7 +102,7 @@ public interface SecondaryLoop { ...@@ -102,7 +102,7 @@ public interface SecondaryLoop {
* <p> * <p>
* This method can be called by any thread including the event * This method can be called by any thread including the event
* dispatch thread. This thread will be blocked until the {@link * dispatch thread. This thread will be blocked until the {@link
* exit} method is called or the loop is terminated. A new * #exit} method is called or the loop is terminated. A new
* secondary loop will be created on the event dispatch thread * secondary loop will be created on the event dispatch thread
* for dispatching events in either case. * for dispatching events in either case.
* <p> * <p>
...@@ -123,23 +123,23 @@ public interface SecondaryLoop { ...@@ -123,23 +123,23 @@ public interface SecondaryLoop {
/** /**
* Unblocks the execution of the thread blocked by the {@link * Unblocks the execution of the thread blocked by the {@link
* enter} method and exits the secondary loop. * #enter} method and exits the secondary loop.
* <p> * <p>
* This method resumes the thread that called the {@link enter} * This method resumes the thread that called the {@link #enter}
* method and exits the secondary loop that was created when * method and exits the secondary loop that was created when
* the {@link enter} method was invoked. * the {@link #enter} method was invoked.
* <p> * <p>
* Note that if any other secondary loop is started while this * Note that if any other secondary loop is started while this
* loop is running, the blocked thread will not resume execution * loop is running, the blocked thread will not resume execution
* until the nested loop is terminated. * until the nested loop is terminated.
* <p> * <p>
* If this secondary loop has not been started with the {@link * If this secondary loop has not been started with the {@link
* enter} method, or this secondary loop has already finished * #enter} method, or this secondary loop has already finished
* with the {@link exit} method, this method returns {@code * with the {@link #exit} method, this method returns {@code
* false}, otherwise {@code true} is returned. * false}, otherwise {@code true} is returned.
* *
* @return {@code true} if this loop was previously started and * @return {@code true} if this loop was previously started and
* has not yet been finished with the {@link exit} method, * has not yet been finished with the {@link #exit} method,
* {@code false} otherwise * {@code false} otherwise
*/ */
public boolean exit(); public boolean exit();
......
...@@ -26,40 +26,45 @@ ...@@ -26,40 +26,45 @@
package java.dyn; package java.dyn;
import sun.dyn.*; import sun.dyn.*;
import sun.dyn.empty.Empty;
import sun.misc.Unsafe;
import java.util.Collection; import java.util.Collection;
/** /**
* A {@code CallSite} is a holder for a variable {@link MethodHandle}, * A {@code CallSite} is a holder for a variable {@link MethodHandle},
* which is called its {@code target}. * which is called its {@code target}.
* Every call to a {@code CallSite} is delegated to the site's current target. * An {@code invokedynamic} instruction linked to a {@code CallSite} delegates
* all calls to the site's current target.
* A {@code CallSite} may be associated with several {@code invokedynamic}
* instructions, or it may be "free floating", associated with none.
* In any case, it may be invoked through an associated method handle
* called its {@linkplain #dynamicInvoker dynamic invoker}.
* <p> * <p>
* A call site is initially created in an <em>unlinked</em> state, * {@code CallSite} is an abstract class which does not allow
* which is distinguished by a null target variable. * direct subclassing by users. It has three immediate,
* Before the call site may be invoked (and before certain other * concrete subclasses that may be either instantiated or subclassed.
* operations are attempted), the call site must be linked to * <ul>
* a non-null target. * <li>If a mutable target is not required, an {@code invokedynamic} instruction
* may be permanently bound by means of a {@linkplain ConstantCallSite constant call site}.
* <li>If a mutable target is required which has volatile variable semantics,
* because updates to the target must be immediately and reliably witnessed by other threads,
* a {@linkplain VolatileCallSite volatile call site} may be used.
* <li>Otherwise, if a mutable target is required,
* a {@linkplain MutableCallSite mutable call site} may be used.
* </ul>
* <p> * <p>
* A call site may be <em>relinked</em> by changing its target. * A non-constant call site may be <em>relinked</em> by changing its target.
* The new target must be non-null and must have the same * The new target must have the same {@linkplain MethodHandle#type() type}
* {@linkplain MethodHandle#type() type}
* as the previous target. * as the previous target.
* Thus, though a call site can be relinked to a series of * Thus, though a call site can be relinked to a series of
* successive targets, it cannot change its type. * successive targets, it cannot change its type.
* <p> * <p>
* Linkage happens once in the lifetime of any given {@code CallSite} object.
* Because of call site invalidation, this linkage can be repeated for
* a single {@code invokedynamic} instruction, with multiple {@code CallSite} objects.
* When a {@code CallSite} is unlinked from an {@code invokedynamic} instruction,
* the instruction is reset so that it is no longer associated with
* the {@code CallSite} object, but the {@code CallSite} does not change
* state.
* <p>
* Here is a sample use of call sites and bootstrap methods which links every * Here is a sample use of call sites and bootstrap methods which links every
* dynamic call site to print its arguments: * dynamic call site to print its arguments:
<blockquote><pre><!-- see indy-demo/src/PrintArgsDemo.java --> <blockquote><pre><!-- see indy-demo/src/PrintArgsDemo.java -->
&#064;BootstrapMethod(value=PrintArgsDemo.class, name="bootstrapDynamic")
static void test() throws Throwable { static void test() throws Throwable {
InvokeDynamic.baz("baz arg", 2, 3.14); // THE FOLLOWING LINE IS PSEUDOCODE FOR A JVM INSTRUCTION
InvokeDynamic[#bootstrapDynamic].baz("baz arg", 2, 3.14);
} }
private static void printArgs(Object... args) { private static void printArgs(Object... args) {
System.out.println(java.util.Arrays.deepToString(args)); System.out.println(java.util.Arrays.deepToString(args));
...@@ -71,16 +76,15 @@ static { ...@@ -71,16 +76,15 @@ static {
printArgs = lookup.findStatic(thisClass, printArgs = lookup.findStatic(thisClass,
"printArgs", MethodType.methodType(void.class, Object[].class)); "printArgs", MethodType.methodType(void.class, Object[].class));
} }
private static CallSite bootstrapDynamic(Class caller, String name, MethodType type) { private static CallSite bootstrapDynamic(MethodHandles.Lookup caller, String name, MethodType type) {
// ignore caller and name, but match the type: // ignore caller and name, but match the type:
return new CallSite(MethodHandles.collectArguments(printArgs, type)); return new ConstantCallSite(MethodHandles.collectArguments(printArgs, type));
} }
</pre></blockquote> </pre></blockquote>
* @author John Rose, JSR 292 EG * @author John Rose, JSR 292 EG
*/ */
public class CallSite abstract
implements MethodHandleProvider public class CallSite {
{
private static final Access IMPL_TOKEN = Access.getToken(); private static final Access IMPL_TOKEN = Access.getToken();
// Fields used only by the JVM. Do not use or change. // Fields used only by the JVM. Do not use or change.
...@@ -88,61 +92,47 @@ public class CallSite ...@@ -88,61 +92,47 @@ public class CallSite
private int vmindex; // supplied by the JVM (BCI within calling method) private int vmindex; // supplied by the JVM (BCI within calling method)
// The actual payload of this call site: // The actual payload of this call site:
private MethodHandle target; /*package-private*/
MethodHandle target;
// Remove this field for PFD and delete deprecated methods: // Remove this field for PFD and delete deprecated methods:
private MemberName calleeNameRemoveForPFD; private MemberName calleeNameRemoveForPFD;
/** /**
* Make a blank call site object. * Make a blank call site object with the given method type.
* Before it is returned from a bootstrap method, this {@code CallSite} object * An initial target method is supplied which will throw
* must be provided with * an {@link IllegalStateException} if called.
* a target method via a call to {@link CallSite#setTarget(MethodHandle) setTarget}, * <p>
* or by a subclass override of {@link CallSite#initialTarget(Class,String,MethodType) initialTarget}. * Before this {@code CallSite} object is returned from a bootstrap method,
* it is usually provided with a more useful target method,
* via a call to {@link CallSite#setTarget(MethodHandle) setTarget}.
* @throws NullPointerException if the proposed type is null
*/ */
public CallSite() { /*package-private*/
CallSite(MethodType type) {
target = MethodHandles.invokers(type).uninitializedCallSite();
} }
/** /**
* Make a blank call site object, possibly equipped with an initial target method handle. * Make a blank call site object, possibly equipped with an initial target method handle.
* The initial target reference may be null, in which case the {@code CallSite} object * @param target the method handle which will be the initial target of the call site
* must be provided with a target method via a call to {@link CallSite#setTarget}, * @throws NullPointerException if the proposed target is null
* or by a subclass override of {@link CallSite#initialTarget}.
* @param target the method handle which will be the initial target of the call site, or null if there is none yet
*/ */
public CallSite(MethodHandle target) { /*package-private*/
CallSite(MethodHandle target) {
target.type(); // null check
this.target = target; this.target = target;
} }
/** @deprecated transitional form defined in EDR but removed in PFD */ /**
public CallSite(Class<?> caller, String name, MethodType type) { * Report the type of this call site's target.
this.calleeNameRemoveForPFD = new MemberName(caller, name, type); * Although targets may change, the call site's type can never change.
} * The {@code setTarget} method enforces this invariant by refusing any new target that does
/** @deprecated transitional form defined in EDR but removed in PFD */ * not have the previous target's type.
public Class<?> callerClass() { * @return the type of the current target, which is also the type of any future target
MemberName callee = this.calleeNameRemoveForPFD;
return callee == null ? null : callee.getDeclaringClass();
}
/** @deprecated transitional form defined in EDR but removed in PFD */
public String name() {
MemberName callee = this.calleeNameRemoveForPFD;
return callee == null ? null : callee.getName();
}
/** @deprecated transitional form defined in EDR but removed in PFD */
public MethodType type() {
MemberName callee = this.calleeNameRemoveForPFD;
return callee == null ? (target == null ? null : target.type()) : callee.getMethodType();
}
/** @deprecated transitional form defined in EDR but removed in PFD */
protected MethodHandle initialTarget() {
return initialTarget(callerClass(), name(), type());
}
/** Report if the JVM has linked this {@code CallSite} object to a dynamic call site instruction.
* Once it is linked, it is never unlinked.
*/ */
private boolean isLinked() { public MethodType type() {
return vmmethod != null; return target.type();
} }
/** Called from JVM (or low-level Java code) after the BSM returns the newly created CallSite. /** Called from JVM (or low-level Java code) after the BSM returns the newly created CallSite.
...@@ -152,68 +142,66 @@ public class CallSite ...@@ -152,68 +142,66 @@ public class CallSite
MethodType type, MethodType type,
MemberName callerMethod, MemberName callerMethod,
int callerBCI) { int callerBCI) {
if (this.isLinked()) { if (this.vmmethod != null) {
// FIXME
throw new InvokeDynamicBootstrapError("call site has already been linked to an invokedynamic instruction"); throw new InvokeDynamicBootstrapError("call site has already been linked to an invokedynamic instruction");
} }
MethodHandle target = this.target; if (!this.type().equals(type)) {
if (target == null) {
this.target = target = this.initialTarget(callerMethod.getDeclaringClass(), name, type);
}
if (!target.type().equals(type)) {
throw wrongTargetType(target, type); throw wrongTargetType(target, type);
} }
this.vmindex = callerBCI; this.vmindex = callerBCI;
this.vmmethod = callerMethod; this.vmmethod = callerMethod;
assert(this.isLinked());
} }
/** /**
* Just after a call site is created by a bootstrap method handle, * Report the current linkage state of the call site, a value which may change over time.
* if the target has not been initialized by the factory method itself,
* the method {@code initialTarget} is called to produce an initial
* non-null target. (Live call sites must never have null targets.)
* <p>
* The arguments are the same as those passed to the bootstrap method.
* Thus, a bootstrap method is free to ignore the arguments and simply
* create a "blank" {@code CallSite} object of an appropriate subclass.
* <p> * <p>
* If the bootstrap method itself does not initialize the call site, * If a {@code CallSite} object is returned
* this method must be overridden, because it just raises an * from the bootstrap method of the {@code invokedynamic} instruction,
* {@code InvokeDynamicBootstrapError}, which in turn causes the * the {@code CallSite} is permanently bound to that instruction.
* linkage of the {@code invokedynamic} instruction to terminate * When the {@code invokedynamic} instruction is executed, the target method
* abnormally. * of its associated call site object is invoked directly.
* @deprecated transitional form defined in EDR but removed in PFD * It is as if the instruction calls {@code getTarget} and then
*/ * calls {@link MethodHandle#invokeExact invokeExact} on the result.
protected MethodHandle initialTarget(Class<?> callerClass, String name, MethodType type) {
throw new InvokeDynamicBootstrapError("target must be initialized before call site is linked: "+name+type);
}
/**
* Report the current linkage state of the call site. (This is mutable.)
* The value may not be null after the {@code CallSite} object is returned
* from the bootstrap method of the {@code invokedynamic} instruction.
* When an {@code invokedynamic} instruction is executed, the target method
* of its associated {@code call site} object is invoked directly,
* as if via {@link MethodHandle}{@code .invoke}.
* <p> * <p>
* The interactions of {@code getTarget} with memory are the same * Unless specified differently by a subclass,
* the interactions of {@code getTarget} with memory are the same
* as of a read from an ordinary variable, such as an array element or a * as of a read from an ordinary variable, such as an array element or a
* non-volatile, non-final field. * non-volatile, non-final field.
* <p> * <p>
* In particular, the current thread may choose to reuse the result * In particular, the current thread may choose to reuse the result
* of a previous read of the target from memory, and may fail to see * of a previous read of the target from memory, and may fail to see
* a recent update to the target by another thread. * a recent update to the target by another thread.
* @return the current linkage state of the call site * <p>
* In a {@linkplain ConstantCallSite constant call site}, the {@code getTarget} method behaves
* like a read from a {@code final} field of the {@code CallSite}.
* <p>
* In a {@linkplain VolatileCallSite volatile call site}, the {@code getTarget} method behaves
* like a read from a {@code volatile} field of the {@code CallSite}.
* <p>
* This method may not be overridden by application code.
* @return the current linkage state of the call site, its target method handle
* @see ConstantCallSite
* @see VolatileCallSite
* @see #setTarget * @see #setTarget
*/ */
public MethodHandle getTarget() { public final MethodHandle getTarget() {
return getTarget0();
}
/**
* Privileged implementations can override this to force final or volatile semantics on getTarget.
*/
/*package-private*/
MethodHandle getTarget0() {
return target; return target;
} }
/** /**
* Set the target method of this call site. * Set the target method of this call site.
* <p> * <p>
* The interactions of {@code setTarget} with memory are the same * Unless a subclass of CallSite documents otherwise,
* the interactions of {@code setTarget} with memory are the same
* as of a write to an ordinary variable, such as an array element or a * as of a write to an ordinary variable, such as an array element or a
* non-volatile, non-final field. * non-volatile, non-final field.
* <p> * <p>
...@@ -224,43 +212,32 @@ public class CallSite ...@@ -224,43 +212,32 @@ public class CallSite
* at any given call site. * at any given call site.
* @param newTarget the new target * @param newTarget the new target
* @throws NullPointerException if the proposed new target is null * @throws NullPointerException if the proposed new target is null
* @throws WrongMethodTypeException if the call site is linked and the proposed new target * @throws WrongMethodTypeException if the proposed new target
* has a method type that differs from the previous target * has a method type that differs from the previous target
* @throws UnsupportedOperationException if the call site is
* in fact a {@link ConstantCallSite}
*/ */
public void setTarget(MethodHandle newTarget) { public void setTarget(MethodHandle newTarget) {
MethodType newType = newTarget.type(); // null check! checkTargetChange(this.target, newTarget);
MethodHandle oldTarget = this.target; setTargetNormal(newTarget);
if (oldTarget == null) {
// CallSite is not yet linked.
assert(!isLinked());
this.target = newTarget; // might be null!
return;
} }
void checkTargetChange(MethodHandle oldTarget, MethodHandle newTarget) {
MethodType oldType = oldTarget.type(); MethodType oldType = oldTarget.type();
if (!newTarget.type().equals(oldType)) MethodType newType = newTarget.type(); // null check!
if (!newType.equals(oldType))
throw wrongTargetType(newTarget, oldType); throw wrongTargetType(newTarget, oldType);
if (oldTarget != newTarget)
CallSiteImpl.setCallSiteTarget(IMPL_TOKEN, this, newTarget);
} }
private static WrongMethodTypeException wrongTargetType(MethodHandle target, MethodType type) { private static WrongMethodTypeException wrongTargetType(MethodHandle target, MethodType type) {
return new WrongMethodTypeException(String.valueOf(target)+target.type()+" should be of type "+type); return new WrongMethodTypeException(String.valueOf(target)+" should be of type "+type);
}
/** Produce a printed representation that displays information about this call site
* that may be useful to the human reader.
*/
@Override
public String toString() {
return "CallSite"+(target == null ? "" : target.type());
} }
/** /**
* <em>PROVISIONAL API, WORK IN PROGRESS:</em>
* Produce a method handle equivalent to an invokedynamic instruction * Produce a method handle equivalent to an invokedynamic instruction
* which has been linked to this call site. * which has been linked to this call site.
* <p>If this call site is a {@link ConstantCallSite}, this method * <p>If this call site is a {@linkplain ConstantCallSite constant call site},
* simply returns the call site's target, since that will not change. * this method simply returns the call site's target, since that will never change.
* <p>Otherwise, this method is equivalent to the following code: * <p>Otherwise, this method is equivalent to the following code:
* <p><blockquote><pre> * <p><blockquote><pre>
* MethodHandle getTarget, invoker, result; * MethodHandle getTarget, invoker, result;
...@@ -271,8 +248,9 @@ public class CallSite ...@@ -271,8 +248,9 @@ public class CallSite
* @return a method handle which always invokes this call site's current target * @return a method handle which always invokes this call site's current target
*/ */
public final MethodHandle dynamicInvoker() { public final MethodHandle dynamicInvoker() {
if (this instanceof ConstantCallSite) if (this instanceof ConstantCallSite) {
return getTarget(); // will not change dynamically return getTarget0(); // will not change dynamically
}
MethodHandle getTarget = MethodHandleImpl.bindReceiver(IMPL_TOKEN, GET_TARGET, this); MethodHandle getTarget = MethodHandleImpl.bindReceiver(IMPL_TOKEN, GET_TARGET, this);
MethodHandle invoker = MethodHandles.exactInvoker(this.type()); MethodHandle invoker = MethodHandles.exactInvoker(this.type());
return MethodHandles.foldArguments(invoker, getTarget); return MethodHandles.foldArguments(invoker, getTarget);
...@@ -287,9 +265,34 @@ public class CallSite ...@@ -287,9 +265,34 @@ public class CallSite
} }
} }
/** Implementation of {@link MethodHandleProvider} which returns {@code this.dynamicInvoker()}. */ /** This guy is rolled into the default target if a MethodType is supplied to the constructor. */
public final MethodHandle asMethodHandle() { return dynamicInvoker(); } /*package-private*/
static Empty uninitializedCallSite() {
throw new IllegalStateException("uninitialized call site");
}
// unsafe stuff:
private static final Unsafe unsafe = Unsafe.getUnsafe();
private static final long TARGET_OFFSET;
static {
try {
TARGET_OFFSET = unsafe.objectFieldOffset(CallSite.class.getDeclaredField("target"));
} catch (Exception ex) { throw new Error(ex); }
}
/** Implementation of {@link MethodHandleProvider}, which returns {@code this.dynamicInvoker().asType(type)}. */ /*package-private*/
public final MethodHandle asMethodHandle(MethodType type) { return dynamicInvoker().asType(type); } void setTargetNormal(MethodHandle newTarget) {
target = newTarget;
//CallSiteImpl.setCallSiteTarget(IMPL_TOKEN, this, newTarget);
}
/*package-private*/
MethodHandle getTargetVolatile() {
return (MethodHandle) unsafe.getObjectVolatile(this, TARGET_OFFSET);
}
/*package-private*/
void setTargetVolatile(MethodHandle newTarget) {
unsafe.putObjectVolatile(this, TARGET_OFFSET, newTarget);
//CallSiteImpl.setCallSiteTarget(IMPL_TOKEN, this, newTarget);
}
} }
...@@ -28,44 +28,78 @@ package java.dyn; ...@@ -28,44 +28,78 @@ package java.dyn;
import java.util.WeakHashMap; import java.util.WeakHashMap;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.lang.reflect.UndeclaredThrowableException;
/** /**
* Lazily associate a computed value with (potentially) every class. * Lazily associate a computed value with (potentially) every class.
* @author John Rose, JSR 292 EG * @author John Rose, JSR 292 EG
*/ */
public abstract class ClassValue<T> { public class ClassValue<T> {
/** /**
* Compute the given class's derived value for this {@code ClassValue}. * Compute the given class's derived value for this {@code ClassValue}.
* <p> * <p>
* This method will be invoked within the first thread that accesses * This method will be invoked within the first thread that accesses
* the value with the {@link #get}. * the value with the {@link #get get} method.
* <p> * <p>
* Normally, this method is invoked at most once per class, * Normally, this method is invoked at most once per class,
* but it may be invoked again in case of subsequent invocations * but it may be invoked again if there has been a call to
* of {@link #remove} followed by {@link #get}. * {@link #remove remove}.
* <p>
* If there is no override from a subclass, this method returns
* the result of applying the {@code ClassValue}'s {@code computeValue}
* method handle, which was supplied at construction time.
* *
* @return the computed value for this thread-local * @return the newly computed value associated with this {@code ClassValue}, for the given class or interface
* @throws UndeclaredThrowableException if the {@code computeValue} method handle invocation throws something other than a {@code RuntimeException} or {@code Error}
* @throws UnsupportedOperationException if the {@code computeValue} method handle is null (subclasses must override)
*/ */
protected abstract T computeValue(Class<?> type); protected T computeValue(Class<?> type) {
if (computeValue == null)
return null;
try {
return (T) (Object) computeValue.invokeGeneric(type);
} catch (Throwable ex) {
if (ex instanceof Error) throw (Error) ex;
if (ex instanceof RuntimeException) throw (RuntimeException) ex;
throw new UndeclaredThrowableException(ex);
}
}
private final MethodHandle computeValue;
/** /**
* Creates a new class value. * Creates a new class value.
* Subclasses which use this constructor must override
* the {@link #computeValue computeValue} method,
* since the default {@code computeValue} method requires a method handle,
* which this constructor does not provide.
*/ */
protected ClassValue() { protected ClassValue() {
this.computeValue = null;
}
/**
* Creates a new class value, whose {@link #computeValue computeValue} method
* will return the result of {@code computeValue.invokeGeneric(type)}.
* @throws NullPointerException if the method handle parameter is null
*/
public ClassValue(MethodHandle computeValue) {
computeValue.getClass(); // trigger NPE if null
this.computeValue = computeValue;
} }
/** /**
* Returns the value for the given class. * Returns the value for the given class.
* If no value has yet been computed, it is obtained by * If no value has yet been computed, it is obtained by
* by an invocation of the {@link #computeValue} method. * by an invocation of the {@link #computeValue computeValue} method.
* <p> * <p>
* The actual installation of the value on the class * The actual installation of the value on the class
* is performed while the class's synchronization lock * is performed atomically.
* is held. At that point, if racing threads have * At that point, if racing threads have
* computed values, one is chosen, and returned to * computed values, one is chosen, and returned to
* all the racing threads. * all the racing threads.
* *
* @return the current thread's value of this thread-local * @return the current value associated with this {@code ClassValue}, for the given class or interface
*/ */
public T get(Class<?> type) { public T get(Class<?> type) {
ClassValueMap map = getMap(type); ClassValueMap map = getMap(type);
...@@ -81,9 +115,16 @@ public abstract class ClassValue<T> { ...@@ -81,9 +115,16 @@ public abstract class ClassValue<T> {
/** /**
* Removes the associated value for the given class. * Removes the associated value for the given class.
* If this value is subsequently {@linkplain #get read} for the same class, * If this value is subsequently {@linkplain #get read} for the same class,
* its value will be reinitialized by invoking its {@link #computeValue} method. * its value will be reinitialized by invoking its {@link #computeValue computeValue} method.
* This may result in an additional invocation of the * This may result in an additional invocation of the
* {@code computeValue} method for the given class. * {@code computeValue computeValue} method for the given class.
* <p>
* If racing threads perform a combination of {@code get} and {@code remove} calls,
* the calls are serialized.
* A value produced by a call to {@code computeValue} will be discarded, if
* the corresponding {@code get} call was followed by a {@code remove} call
* before the {@code computeValue} could complete.
* In such a case, the {@code get} call will re-invoke {@code computeValue}.
*/ */
public void remove(Class<?> type) { public void remove(Class<?> type) {
ClassValueMap map = getMap(type); ClassValueMap map = getMap(type);
...@@ -118,6 +159,7 @@ public abstract class ClassValue<T> { ...@@ -118,6 +159,7 @@ public abstract class ClassValue<T> {
// Warm up the table with a null entry. // Warm up the table with a null entry.
map.preInitializeEntry(this); map.preInitializeEntry(this);
} }
STORE_BARRIER.lazySet(0);
// All stores pending from table expansion are completed. // All stores pending from table expansion are completed.
synchronized (map) { synchronized (map) {
value = (T) map.initializeEntry(this, value); value = (T) map.initializeEntry(this, value);
......
...@@ -27,17 +27,21 @@ package java.dyn; ...@@ -27,17 +27,21 @@ package java.dyn;
/** /**
* A {@code ConstantCallSite} is a {@link CallSite} whose target is permanent, and can never be changed. * A {@code ConstantCallSite} is a {@link CallSite} whose target is permanent, and can never be changed.
* The only way to relink an {@code invokedynamic} instruction bound to a {@code ConstantCallSite} is * An {@code invokedynamic} instruction linked to a {@code ConstantCallSite} is permanently
* to invalidate the instruction as a whole. * bound to the call site's target.
* @author John Rose, JSR 292 EG * @author John Rose, JSR 292 EG
*/ */
public class ConstantCallSite extends CallSite { public class ConstantCallSite extends CallSite {
/** Create a call site with a permanent target. */ /** Create a call site with a permanent target.
* @throws NullPointerException if the proposed target is null
*/
public ConstantCallSite(MethodHandle target) { public ConstantCallSite(MethodHandle target) {
super(target); super(target);
} }
/** Throw an {@link IllegalArgumentException}, because this kind of call site cannot change its target. */ /**
* Throw an {@link UnsupportedOperationException}, because this kind of call site cannot change its target.
*/
@Override public final void setTarget(MethodHandle ignore) { @Override public final void setTarget(MethodHandle ignore) {
throw new IllegalArgumentException("ConstantCallSite"); throw new UnsupportedOperationException("ConstantCallSite");
} }
} }
/* /*
* Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -26,55 +26,8 @@ ...@@ -26,55 +26,8 @@
package java.dyn; package java.dyn;
/** /**
* {@code InvokeDynamic} is a class with neither methods nor instances, * This is a place-holder class. Some HotSpot implementations need to see it.
* which serves only as a syntactic marker in Java source code for
* an {@code invokedynamic} instruction.
* (See <a href="package-summary.html#jvm_mods">the package information</a> for specifics on this instruction.)
* <p>
* The {@code invokedynamic} instruction is incomplete without a target method.
* The target method is a property of the reified {@linkplain CallSite call site object}
* which is linked to each active {@code invokedynamic} instruction.
* The call site object is initially produced by a
* {@linkplain BootstrapMethod bootstrap method}
* associated with the class whose bytecodes include the dynamic call site.
* <p>
* The type {@code InvokeDynamic} has no particular meaning as a
* class or interface supertype, or an object type; it can never be instantiated.
* Logically, it denotes a source of all dynamically typed methods.
* It may be viewed as a pure syntactic marker of static calls.
* It may be imported for ease of use.
* <p>
* Here are some examples:
<blockquote><pre><!-- see indy-demo/src/JavaDocExamples.java -->
&#064;BootstrapMethod(value=Here.class, name="bootstrapDynamic")
static void example() throws Throwable {
Object x; String s; int i;
x = InvokeDynamic.greet("world"); // greet(Ljava/lang/String;)Ljava/lang/Object;
s = (String) InvokeDynamic.hail(x); // hail(Ljava/lang/Object;)Ljava/lang/String;
InvokeDynamic.cogito(); // cogito()V
i = (int) InvokeDynamic.#"op:+"(2, 3); // "op:+"(II)I
}
static MethodHandle bootstrapDynamic(Class caller, String name, MethodType type) { ... }
</pre></blockquote>
* Each of the above calls generates a single invokedynamic instruction
* with the name-and-type descriptors indicated in the comments.
* <p>
* The argument types are taken directly from the actual arguments,
* while the return type corresponds to the target of the assignment.
* (Currently, the return type must be given as a false type parameter.
* This type parameter is an irregular use of the generic type syntax,
* and is likely to change in favor of a convention based on target typing.)
* <p>
* The final example uses a special syntax for uttering non-Java names.
* Any name legal to the JVM may be given between the double quotes.
* <p>
* None of these calls is complete without a bootstrap method,
* which must be declared for the enclosing class or method.
* @author John Rose, JSR 292 EG
*/ */
@MethodHandle.PolymorphicSignature final class InvokeDynamic {
public final class InvokeDynamic {
private InvokeDynamic() { throw new InternalError(); } // do not instantiate private InvokeDynamic() { throw new InternalError(); } // do not instantiate
// no statically defined static methods
} }
...@@ -67,4 +67,16 @@ public class InvokeDynamicBootstrapError extends LinkageError { ...@@ -67,4 +67,16 @@ public class InvokeDynamicBootstrapError extends LinkageError {
public InvokeDynamicBootstrapError(String s, Throwable cause) { public InvokeDynamicBootstrapError(String s, Throwable cause) {
super(s, cause); super(s, cause);
} }
/**
* Constructs a {@code InvokeDynamicBootstrapError} with the specified
* cause.
*
* @param cause the cause, may be {@code null}.
*/
public InvokeDynamicBootstrapError(Throwable cause) {
// cf. Throwable(Throwable cause) constructor.
super(cause == null ? null : cause.toString());
initCause(cause);
}
} }
...@@ -29,15 +29,16 @@ import java.dyn.MethodHandles.Lookup; ...@@ -29,15 +29,16 @@ import java.dyn.MethodHandles.Lookup;
import java.util.WeakHashMap; import java.util.WeakHashMap;
import sun.dyn.Access; import sun.dyn.Access;
import sun.dyn.MethodHandleImpl; import sun.dyn.MethodHandleImpl;
import sun.dyn.util.VerifyAccess;
import sun.reflect.Reflection; import sun.reflect.Reflection;
import static sun.dyn.util.VerifyAccess.checkBootstrapPrivilege;
import static sun.dyn.MemberName.newIllegalArgumentException; import static sun.dyn.MemberName.newIllegalArgumentException;
/** /**
* This class consists exclusively of static methods that control * <em>CLASS WILL BE REMOVED FOR PFD:</em>
* the linkage of {@code invokedynamic} instructions, and specifically * Static routines for controlling invokedynamic behavior.
* their reification as {@link CallSite} objects. * Replaced by non-static APIs.
* @author John Rose, JSR 292 EG * @author John Rose, JSR 292 EG
* @deprecated This class will be removed in the Public Final Draft.
*/ */
public class Linkage { public class Linkage {
private static final Access IMPL_TOKEN = Access.getToken(); private static final Access IMPL_TOKEN = Access.getToken();
...@@ -45,68 +46,24 @@ public class Linkage { ...@@ -45,68 +46,24 @@ public class Linkage {
private Linkage() {} // do not instantiate private Linkage() {} // do not instantiate
/** /**
* <em>PROVISIONAL API, WORK IN PROGRESS:</em> * <em>METHOD WILL BE REMOVED FOR PFD:</em>
* Register a <em>bootstrap method</em> to use when linking dynamic call sites within * Register a <em>bootstrap method</em> to use when linking dynamic call sites within
* a given caller class. * a given caller class.
* <p> * @deprecated Use @{@link BootstrapMethod} annotations instead.
* A bootstrap method must be a method handle with a return type of {@link CallSite}
* and the following arguments:
* <ul>
* <li>the class containing the {@code invokedynamic} instruction, for which the bootstrap method was registered
* <li>the name of the method being invoked (a {@link String})
* <li>the type of the method being invoked (a {@link MethodType})
* </ul>
* The bootstrap method acts as a factory method which accepts the given arguments
* and returns a {@code CallSite} object (possibly of a subclass of {@code CallSite}).
* <p>
* The registration must take place exactly once, either before the class has begun
* being initialized, or from within the class's static initializer.
* Registration will fail with an exception if any of the following conditions hold:
* <ul>
* <li>The immediate caller of this method is in a different package than the given caller class,
* and there is a security manager, and its {@code checkPermission} call throws
* when passed {@link LinkagePermission}("registerBootstrapMethod",callerClass).
* <li>The given caller class already has a bootstrap method registered.
* <li>The given caller class is already fully initialized.
* <li>The given caller class is in the process of initialization, in another thread.
* </ul>
* Because of these rules, a class may install its own bootstrap method in
* a static initializer.
* @param callerClass a class that may have {@code invokedynamic} sites
* @param bootstrapMethod the method to use to bootstrap all such sites
* @exception IllegalArgumentException if the class argument is null or
* a primitive class, or if the bootstrap method is the wrong type
* @exception IllegalStateException if the class already has a bootstrap
* method, or if the its static initializer has already run
* or is already running in another thread
* @exception SecurityException if there is a security manager installed,
* and a {@link LinkagePermission} check fails for "registerBootstrapMethod"
* @deprecated Use @{@link BootstrapMethod} annotations instead
*/ */
public static public static
void registerBootstrapMethod(Class callerClass, MethodHandle bootstrapMethod) { void registerBootstrapMethod(Class callerClass, MethodHandle bootstrapMethod) {
Class callc = Reflection.getCallerClass(2); Class callc = Reflection.getCallerClass(2);
checkBootstrapPrivilege(callc, callerClass, "registerBootstrapMethod"); if (callc != null && !VerifyAccess.isSamePackage(callerClass, callc))
checkBSM(bootstrapMethod); throw new IllegalArgumentException("cannot set bootstrap method on "+callerClass);
MethodHandleImpl.registerBootstrap(IMPL_TOKEN, callerClass, bootstrapMethod); MethodHandleImpl.registerBootstrap(IMPL_TOKEN, callerClass, bootstrapMethod);
} }
static private void checkBSM(MethodHandle mh) {
if (mh == null) throw newIllegalArgumentException("null bootstrap method");
if (mh.type() == BOOTSTRAP_METHOD_TYPE) return;
throw new WrongMethodTypeException(mh.toString());
}
/** /**
* <em>PROVISIONAL API, WORK IN PROGRESS:</em> * <em>METHOD WILL BE REMOVED FOR PFD:</em>
* Simplified version of {@code registerBootstrapMethod} for self-registration, * Simplified version of {@code registerBootstrapMethod} for self-registration,
* to be called from a static initializer. * to be called from a static initializer.
* Finds a static method of the required type in the * @deprecated Use @{@link BootstrapMethod} annotations instead.
* given runtime class, and installs it on the caller class.
* @throws NoSuchMethodException if there is no such method
* @throws IllegalStateException if the caller class's static initializer
* has already run, or is already running in another thread
* @deprecated Use @{@link BootstrapMethod} annotations instead
*/ */
public static public static
void registerBootstrapMethod(Class<?> runtime, String name) { void registerBootstrapMethod(Class<?> runtime, String name) {
...@@ -115,15 +72,9 @@ public class Linkage { ...@@ -115,15 +72,9 @@ public class Linkage {
} }
/** /**
* <em>PROVISIONAL API, WORK IN PROGRESS:</em> * <em>METHOD WILL BE REMOVED FOR PFD:</em>
* Simplified version of {@code registerBootstrapMethod} for self-registration, * Simplified version of {@code registerBootstrapMethod} for self-registration,
* to be called from a static initializer. * @deprecated Use @{@link BootstrapMethod} annotations instead.
* Finds a static method of the required type in the
* caller class itself, and installs it on the caller class.
* @throws IllegalArgumentException if there is no such method
* @throws IllegalStateException if the caller class's static initializer
* has already run, or is already running in another thread
* @deprecated Use @{@link BootstrapMethod} annotations instead
*/ */
public static public static
void registerBootstrapMethod(String name) { void registerBootstrapMethod(String name) {
...@@ -140,82 +91,33 @@ public class Linkage { ...@@ -140,82 +91,33 @@ public class Linkage {
} catch (NoAccessException ex) { } catch (NoAccessException ex) {
throw new IllegalArgumentException("no such bootstrap method in "+runtime+": "+name, ex); throw new IllegalArgumentException("no such bootstrap method in "+runtime+": "+name, ex);
} }
checkBSM(bootstrapMethod);
MethodHandleImpl.registerBootstrap(IMPL_TOKEN, callerClass, bootstrapMethod); MethodHandleImpl.registerBootstrap(IMPL_TOKEN, callerClass, bootstrapMethod);
} }
/** private static final MethodType BOOTSTRAP_METHOD_TYPE
* <em>PROVISIONAL API, WORK IN PROGRESS:</em>
* Report the bootstrap method registered for a given caller class.
* Returns null if the class has never yet registered a bootstrap method.
* Only callers privileged to set the bootstrap method may inquire
* about it, because a bootstrap method is potentially a back-door entry
* point into its class.
* @exception IllegalArgumentException if the argument is null or
* a primitive class
* @exception SecurityException if there is a security manager installed,
* and the immediate caller of this method is not in the same
* package as the caller class
* and a {@link LinkagePermission} check fails for "getBootstrapMethod"
* @deprecated
*/
public static
MethodHandle getBootstrapMethod(Class callerClass) {
Class callc = Reflection.getCallerClass(2);
checkBootstrapPrivilege(callc, callerClass, "getBootstrapMethod");
return MethodHandleImpl.getBootstrap(IMPL_TOKEN, callerClass);
}
/**
* <em>PROVISIONAL API, WORK IN PROGRESS:</em>
* The type of any bootstrap method is a three-argument method
* {@code (Class, String, MethodType)} returning a {@code CallSite}.
*/
public static final MethodType BOOTSTRAP_METHOD_TYPE
= MethodType.methodType(CallSite.class, = MethodType.methodType(CallSite.class,
Class.class, String.class, MethodType.class); Class.class, String.class, MethodType.class);
/** /**
* <em>PROVISIONAL API, WORK IN PROGRESS:</em> * <em>METHOD WILL BE REMOVED FOR PFD:</em>
* Invalidate all <code>invokedynamic</code> call sites everywhere. * Invalidate all <code>invokedynamic</code> call sites everywhere.
* <p> * @deprecated Use {@linkplain CallSite#setTarget call site target setting}
* When this method returns, every <code>invokedynamic</code> instruction * and {@link VolatileCallSite#invalidateAll call site invalidation} instead.
* will invoke its bootstrap method on next call.
* <p>
* It is unspecified whether call sites already known to the Java
* code will continue to be associated with <code>invokedynamic</code>
* instructions. If any call site is still so associated, its
* {@link CallSite#getTarget()} method is guaranteed to return null
* the invalidation operation completes.
* <p>
* Invalidation operations are likely to be slow. Use them sparingly.
*/ */
public static public static
Object invalidateAll() { Object invalidateAll() {
SecurityManager security = System.getSecurityManager(); throw new UnsupportedOperationException();
if (security != null) {
security.checkPermission(new LinkagePermission("invalidateAll"));
}
throw new UnsupportedOperationException("NYI");
} }
/** /**
* <em>PROVISIONAL API, WORK IN PROGRESS:</em> * <em>METHOD WILL BE REMOVED FOR PFD:</em>
* Invalidate all {@code invokedynamic} call sites in the bytecodes * Invalidate all {@code invokedynamic} call sites in the bytecodes
* of any methods of the given class. * of any methods of the given class.
* <p> * @deprecated Use {@linkplain CallSite#setTarget call site target setting}
* When this method returns, every matching <code>invokedynamic</code> * and {@link VolatileCallSite#invalidateAll call site invalidation} instead.
* instruction will invoke its bootstrap method on next call.
* <p>
* For additional semantics of call site invalidation,
* see {@link #invalidateAll()}.
*/ */
public static public static
Object invalidateCallerClass(Class<?> callerClass) { Object invalidateCallerClass(Class<?> callerClass) {
SecurityManager security = System.getSecurityManager(); throw new UnsupportedOperationException();
if (security != null) {
security.checkPermission(new LinkagePermission("invalidateAll", callerClass));
}
throw new UnsupportedOperationException("NYI");
} }
} }
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package java.dyn;
import java.security.*;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.StringTokenizer;
/**
* <em>PROVISIONAL API, WORK IN PROGRESS:</em>
* This class is for managing runtime permission checking for
* operations performed by methods in the {@link Linkage} class.
* Like a {@link RuntimePermission}, on which it is modeled,
* a {@code LinkagePermission} contains a target name but
* no actions list; you either have the named permission
* or you don't.
* <p>
* The following table lists all the possible {@code LinkagePermission} target names,
* and for each provides a description of what the permission allows
* and a discussion of the risks of granting code the permission.
* <p>
*
* <table border=1 cellpadding=5 summary="permission target name,
* what the target allows,and associated risks">
* <tr>
* <th>Permission Target Name</th>
* <th>What the Permission Allows</th>
* <th>Risks of Allowing this Permission</th>
* </tr>
*
* <tr>
* <td>invalidateAll</td>
* <td>Force the relinking of invokedynamic call sites everywhere.</td>
* <td>This could allow an attacker to slow down the system,
* or perhaps expose timing bugs in a dynamic language implementations,
* by forcing redundant relinking operations.</td>
* </tr>
*
*
* <tr>
* <td>invalidateCallerClass.{class name}</td>
* <td>Force the relinking of invokedynamic call sites in the given class.</td>
* <td>See {@code invalidateAll}.</td>
* </tr>
* </table>
* <p>ISSUE: Is this still needed?
*
* @see java.lang.RuntimePermission
* @see java.lang.SecurityManager
*
* @author John Rose, JSR 292 EG
*/
public final class LinkagePermission extends BasicPermission {
private static final long serialVersionUID = 292L;
/**
* Create a new LinkagePermission with the given name.
* The name is the symbolic name of the LinkagePermission, such as
* "invalidateCallerClass.*", etc. An asterisk
* may appear at the end of the name, following a ".", or by itself, to
* signify a wildcard match.
*
* @param name the name of the LinkagePermission
*/
public LinkagePermission(String name) {
super(name);
}
/**
* Create a new LinkagePermission with the given name on the given class.
* Equivalent to {@code LinkagePermission(name+"."+clazz.getName())}.
*
* @param name the name of the LinkagePermission
* @param clazz the class affected by the permission
*/
public LinkagePermission(String name, Class<?> clazz) {
super(name + "." + clazz.getName());
}
}
/*
* Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package java.dyn;
/**
* An interface for an object to provide a target {@linkplain MethodHandle method handle} to a {@code invokedynamic} instruction.
* There are many function-like objects in various Java APIs.
* This interface provides a standard way for such function-like objects to be bound
* to a dynamic call site, by providing a view of their behavior in the form of a low-level method handle.
* <p>
* The type {@link MethodHandle} is a concrete class whose implementation
* hierarchy (if any) may be tightly coupled to the underlying JVM implementation.
* It cannot also serve as a base type for user-defined functional APIs.
* For this reason, {@code MethodHandle} cannot be subclassed to add new
* behavior to method handles. But this interface can be used to provide
* a link between a user-defined function and the {@code invokedynamic}
* instruction and the method handle API.
*/
public interface MethodHandleProvider {
/** Produce a method handle which will serve as a behavioral proxy for the current object.
* The type and invocation behavior of the proxy method handle are user-defined,
* and should have some relation to the intended meaning of the original object itself.
* <p>
* The current object may have a changeable behavior.
* For example, {@link CallSite} has a {@code setTarget} method which changes its invocation.
* In such a case, it is <em>incorrect</em> for {@code asMethodHandle} to return
* a method handle whose behavior may diverge from that of the current object.
* Rather, the returned method handle must stably and permanently access
* the behavior of the current object, even if that behavior is changeable.
* <p>
* The reference identity of the proxy method handle is not guaranteed to
* have any particular relation to the reference identity of the object.
* In particular, several objects with the same intended meaning could
* share a common method handle, or the same object could return different
* method handles at different times. In the latter case, the different
* method handles should have the same type and invocation behavior,
* and be usable from any thread at any time.
* In particular, if a MethodHandleProvider is bound to an <code>invokedynamic</code>
* call site, the proxy method handle extracted at the time of binding
* will be used for an unlimited time, until the call site is rebound.
* <p>
* The type {@link MethodHandle} itself implements {@code MethodHandleProvider}, and
* for this method simply returns {@code this}.
*/
public MethodHandle asMethodHandle();
/** Produce a method handle of a given type which will serve as a behavioral proxy for the current object.
* As for the no-argument version {@link #asMethodHandle()}, the invocation behavior of the
* proxy method handle is user-defined. But the type must be the given type,
* or else a {@link WrongMethodTypeException} must be thrown.
* <p>
* If the current object somehow represents a variadic or overloaded behavior,
* the method handle returned for a given type might represent only a subset of
* the current object's repertoire of behaviors, which correspond to that type.
*/
public MethodHandle asMethodHandle(MethodType type) throws WrongMethodTypeException;
}
...@@ -56,21 +56,33 @@ import static sun.dyn.MemberName.newIllegalArgumentException; ...@@ -56,21 +56,33 @@ import static sun.dyn.MemberName.newIllegalArgumentException;
* <p> * <p>
* This type can be created only by factory methods. * This type can be created only by factory methods.
* All factory methods may cache values, though caching is not guaranteed. * All factory methods may cache values, though caching is not guaranteed.
* Some factory methods are static, while others are virtual methods which
* modify precursor method types, e.g., by changing a selected parameter.
* <p>
* Factory methods which operate on groups of parameter types
* are systematically presented in two versions, so that both Java arrays and
* Java lists can be used to work with groups of parameter types.
* The query methods {@code parameterArray} and {@code parameterList}
* also provide a choice between arrays and lists.
* <p> * <p>
* {@code MethodType} objects are sometimes derived from bytecode instructions * {@code MethodType} objects are sometimes derived from bytecode instructions
* such as {@code invokedynamic}, specifically from the type descriptor strings associated * such as {@code invokedynamic}, specifically from the type descriptor strings associated
* with the instructions in a class file's constant pool. * with the instructions in a class file's constant pool.
* When this occurs, any classes named in the descriptor strings must be loaded.
* (But they need not be initialized.)
* This loading may occur at any time before the {@code MethodType} object is first derived.
* <p> * <p>
* Like classes and strings, method types can be represented directly * Like classes and strings, method types can also be represented directly
* in a class file's constant pool as constants to be loaded by {@code ldc} bytecodes. * in a class file's constant pool as constants. The may be loaded by an {@code ldc}
* Loading such a constant causes its component classes to be loaded as necessary. * instruction which refers to a suitable {@code CONSTANT_MethodType} constant pool entry.
* The entry refers to a {@code CONSTANT_Utf8} spelling for the descriptor string.
* For more details, see the <a href="package-summary.html#mtcon">package summary</a>.
* <p>
* When the JVM materializes a {@code MethodType} from a descriptor string,
* all classes named in the descriptor must be accessible, and will be loaded.
* (But the classes need not be initialized, as is the case with a {@code CONSTANT_Class}.)
* This loading may occur at any time before the {@code MethodType} object is first derived.
* @author John Rose, JSR 292 EG * @author John Rose, JSR 292 EG
*/ */
public final public final
class MethodType implements java.lang.reflect.Type { class MethodType {
private final Class<?> rtype; private final Class<?> rtype;
private final Class<?>[] ptypes; private final Class<?>[] ptypes;
private MethodTypeForm form; // erased form, plus cached data about primitives private MethodTypeForm form; // erased form, plus cached data about primitives
...@@ -119,7 +131,7 @@ class MethodType implements java.lang.reflect.Type { ...@@ -119,7 +131,7 @@ class MethodType implements java.lang.reflect.Type {
for (Class<?> ptype : ptypes) { for (Class<?> ptype : ptypes) {
ptype.equals(ptype); // null check ptype.equals(ptype); // null check
if (ptype == void.class) if (ptype == void.class)
throw newIllegalArgumentException("void parameter: "+this); throw newIllegalArgumentException("parameter type cannot be void");
} }
} }
...@@ -139,10 +151,6 @@ class MethodType implements java.lang.reflect.Type { ...@@ -139,10 +151,6 @@ class MethodType implements java.lang.reflect.Type {
MethodType methodType(Class<?> rtype, Class<?>[] ptypes) { MethodType methodType(Class<?> rtype, Class<?>[] ptypes) {
return makeImpl(rtype, ptypes, false); return makeImpl(rtype, ptypes, false);
} }
@Deprecated public static
MethodType make(Class<?> rtype, Class<?>[] ptypes) {
return methodType(rtype, ptypes);
}
/** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}. */ /** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}. */
public static public static
...@@ -150,10 +158,6 @@ class MethodType implements java.lang.reflect.Type { ...@@ -150,10 +158,6 @@ class MethodType implements java.lang.reflect.Type {
boolean notrust = false; // random List impl. could return evil ptypes array boolean notrust = false; // random List impl. could return evil ptypes array
return makeImpl(rtype, ptypes.toArray(NO_PTYPES), notrust); return makeImpl(rtype, ptypes.toArray(NO_PTYPES), notrust);
} }
@Deprecated public static
MethodType make(Class<?> rtype, List<? extends Class<?>> ptypes) {
return methodType(rtype, ptypes);
}
/** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}. /** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}.
* The leading parameter type is prepended to the remaining array. * The leading parameter type is prepended to the remaining array.
...@@ -165,10 +169,6 @@ class MethodType implements java.lang.reflect.Type { ...@@ -165,10 +169,6 @@ class MethodType implements java.lang.reflect.Type {
System.arraycopy(ptypes, 0, ptypes1, 1, ptypes.length); System.arraycopy(ptypes, 0, ptypes1, 1, ptypes.length);
return makeImpl(rtype, ptypes1, true); return makeImpl(rtype, ptypes1, true);
} }
@Deprecated public static
MethodType make(Class<?> rtype, Class<?> ptype0, Class<?>... ptypes) {
return methodType(rtype, ptype0, ptypes);
}
/** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}. /** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}.
* The resulting method has no parameter types. * The resulting method has no parameter types.
...@@ -177,10 +177,6 @@ class MethodType implements java.lang.reflect.Type { ...@@ -177,10 +177,6 @@ class MethodType implements java.lang.reflect.Type {
MethodType methodType(Class<?> rtype) { MethodType methodType(Class<?> rtype) {
return makeImpl(rtype, NO_PTYPES, true); return makeImpl(rtype, NO_PTYPES, true);
} }
@Deprecated public static
MethodType make(Class<?> rtype) {
return methodType(rtype);
}
/** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}. /** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}.
* The resulting method has the single given parameter type. * The resulting method has the single given parameter type.
...@@ -189,10 +185,6 @@ class MethodType implements java.lang.reflect.Type { ...@@ -189,10 +185,6 @@ class MethodType implements java.lang.reflect.Type {
MethodType methodType(Class<?> rtype, Class<?> ptype0) { MethodType methodType(Class<?> rtype, Class<?> ptype0) {
return makeImpl(rtype, new Class<?>[]{ ptype0 }, true); return makeImpl(rtype, new Class<?>[]{ ptype0 }, true);
} }
@Deprecated public static
MethodType make(Class<?> rtype, Class<?> ptype0) {
return methodType(rtype, ptype0);
}
/** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}. /** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}.
* The resulting method has the same parameter types as {@code ptypes}, * The resulting method has the same parameter types as {@code ptypes},
...@@ -202,10 +194,6 @@ class MethodType implements java.lang.reflect.Type { ...@@ -202,10 +194,6 @@ class MethodType implements java.lang.reflect.Type {
MethodType methodType(Class<?> rtype, MethodType ptypes) { MethodType methodType(Class<?> rtype, MethodType ptypes) {
return makeImpl(rtype, ptypes.ptypes, true); return makeImpl(rtype, ptypes.ptypes, true);
} }
@Deprecated public static
MethodType make(Class<?> rtype, MethodType ptypes) {
return methodType(rtype, ptypes);
}
/** /**
* Sole factory method to find or create an interned method type. * Sole factory method to find or create an interned method type.
...@@ -275,10 +263,6 @@ class MethodType implements java.lang.reflect.Type { ...@@ -275,10 +263,6 @@ class MethodType implements java.lang.reflect.Type {
} }
return mt; return mt;
} }
@Deprecated public static
MethodType makeGeneric(int objectArgCount, boolean varargs) {
return genericMethodType(objectArgCount, varargs);
}
/** /**
* All parameters and the return type will be Object. * All parameters and the return type will be Object.
...@@ -290,10 +274,6 @@ class MethodType implements java.lang.reflect.Type { ...@@ -290,10 +274,6 @@ class MethodType implements java.lang.reflect.Type {
MethodType genericMethodType(int objectArgCount) { MethodType genericMethodType(int objectArgCount) {
return genericMethodType(objectArgCount, false); return genericMethodType(objectArgCount, false);
} }
@Deprecated public static
MethodType makeGeneric(int objectArgCount) {
return genericMethodType(objectArgCount);
}
/** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}. /** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}.
* @param num the index (zero-based) of the parameter type to change * @param num the index (zero-based) of the parameter type to change
...@@ -307,18 +287,6 @@ class MethodType implements java.lang.reflect.Type { ...@@ -307,18 +287,6 @@ class MethodType implements java.lang.reflect.Type {
return makeImpl(rtype, nptypes, true); return makeImpl(rtype, nptypes, true);
} }
/** Convenience method for {@link #insertParameterTypes}.
* @deprecated Use {@link #insertParameterTypes} instead.
*/
@Deprecated
public MethodType insertParameterType(int num, Class<?> nptype) {
int len = ptypes.length;
Class<?>[] nptypes = Arrays.copyOfRange(ptypes, 0, len+1);
System.arraycopy(nptypes, num, nptypes, num+1, len-num);
nptypes[num] = nptype;
return makeImpl(rtype, nptypes, true);
}
/** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}. /** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}.
* @param num the position (zero-based) of the inserted parameter type(s) * @param num the position (zero-based) of the inserted parameter type(s)
* @param ptypesToInsert zero or more a new parameter types to insert into the parameter list * @param ptypesToInsert zero or more a new parameter types to insert into the parameter list
...@@ -336,6 +304,22 @@ class MethodType implements java.lang.reflect.Type { ...@@ -336,6 +304,22 @@ class MethodType implements java.lang.reflect.Type {
return makeImpl(rtype, nptypes, true); return makeImpl(rtype, nptypes, true);
} }
/** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}.
* @param ptypesToInsert zero or more a new parameter types to insert after the end of the parameter list
* @return the same type, except with the selected parameter(s) appended
*/
public MethodType appendParameterTypes(Class<?>... ptypesToInsert) {
return insertParameterTypes(parameterCount(), ptypesToInsert);
}
/** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}.
* @param ptypesToInsert zero or more a new parameter types to insert after the end of the parameter list
* @return the same type, except with the selected parameter(s) appended
*/
public MethodType appendParameterTypes(List<Class<?>> ptypesToInsert) {
return insertParameterTypes(parameterCount(), ptypesToInsert);
}
/** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}. /** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}.
* @param num the position (zero-based) of the inserted parameter type(s) * @param num the position (zero-based) of the inserted parameter type(s)
* @param ptypesToInsert zero or more a new parameter types to insert into the parameter list * @param ptypesToInsert zero or more a new parameter types to insert into the parameter list
...@@ -377,14 +361,6 @@ class MethodType implements java.lang.reflect.Type { ...@@ -377,14 +361,6 @@ class MethodType implements java.lang.reflect.Type {
return makeImpl(rtype, nptypes, true); return makeImpl(rtype, nptypes, true);
} }
/** Convenience method for {@link #dropParameterTypes}.
* @deprecated Use {@link #dropParameterTypes} instead.
*/
@Deprecated
public MethodType dropParameterType(int num) {
return dropParameterTypes(num, num+1);
}
/** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}. /** Convenience method for {@link #methodType(java.lang.Class, java.lang.Class[])}.
* @param nrtype a return parameter type to replace the old one with * @param nrtype a return parameter type to replace the old one with
* @return the same type, except with the return type change * @return the same type, except with the return type change
...@@ -552,7 +528,9 @@ class MethodType implements java.lang.reflect.Type { ...@@ -552,7 +528,9 @@ class MethodType implements java.lang.reflect.Type {
* parenthesis enclosed, comma separated list of type names, * parenthesis enclosed, comma separated list of type names,
* followed immediately by the return type. * followed immediately by the return type.
* <p> * <p>
* If a type name is array, it the base type followed * Each type is represented by its
* {@link java.lang.Class#getSimpleName simple name}.
* If a type name name is array, it the base type followed
* by [], rather than the Class.getName of the array type. * by [], rather than the Class.getName of the array type.
*/ */
@Override @Override
...@@ -561,35 +539,13 @@ class MethodType implements java.lang.reflect.Type { ...@@ -561,35 +539,13 @@ class MethodType implements java.lang.reflect.Type {
sb.append("("); sb.append("(");
for (int i = 0; i < ptypes.length; i++) { for (int i = 0; i < ptypes.length; i++) {
if (i > 0) sb.append(","); if (i > 0) sb.append(",");
putName(sb, ptypes[i]); sb.append(ptypes[i].getSimpleName());
} }
sb.append(")"); sb.append(")");
putName(sb, rtype); sb.append(rtype.getSimpleName());
return sb.toString(); return sb.toString();
} }
static void putName(StringBuilder sb, Class<?> cls) {
int brackets = 0;
while (cls.isArray()) {
cls = cls.getComponentType();
brackets++;
}
String n = cls.getName();
/*
if (n.startsWith("java.lang.")) {
String nb = n.substring("java.lang.".length());
if (nb.indexOf('.') < 0) n = nb;
} else if (n.indexOf('.') < 0) {
n = "."+n; // anonymous package
}
*/
sb.append(n);
while (brackets > 0) {
sb.append("[]");
brackets--;
}
}
/// Queries which have to do with the bytecode architecture /// Queries which have to do with the bytecode architecture
/** The number of JVM stack slots required to invoke a method /** The number of JVM stack slots required to invoke a method
...@@ -690,14 +646,4 @@ class MethodType implements java.lang.reflect.Type { ...@@ -690,14 +646,4 @@ class MethodType implements java.lang.reflect.Type {
public String toMethodDescriptorString() { public String toMethodDescriptorString() {
return BytecodeDescriptor.unparse(this); return BytecodeDescriptor.unparse(this);
} }
/** Temporary alias for toMethodDescriptorString; delete after M3. */
public String toBytecodeString() {
return toMethodDescriptorString();
}
/** Temporary alias for fromMethodDescriptorString; delete after M3. */
public static MethodType fromBytecodeString(String descriptor, ClassLoader loader)
throws IllegalArgumentException, TypeNotPresentException {
return fromMethodDescriptorString(descriptor, loader);
}
} }
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package java.dyn;
import sun.dyn.*;
import sun.dyn.empty.Empty;
import java.util.concurrent.atomic.AtomicInteger;
/**
* A {@code MutableCallSite} is a {@link CallSite} whose target variable
* behaves like an ordinary field.
* An {@code invokedynamic} instruction linked to a {@code MutableCallSite} delegates
* all calls to the site's current target.
* The {@linkplain CallSite#dynamicInvoker dynamic invoker} of a mutable call site
* also delegates each call to the site's current target.
* <p>
* Here is an example of a mutable call site which introduces a
* state variable into a method handle chain.
* <blockquote><pre>
MutableCallSite name = new MutableCallSite(MethodType.methodType(String.class));
MethodHandle MH_name = name.dynamicInvoker();
MethodType MT_str2 = MethodType.methodType(String.class, String.class);
MethodHandle MH_upcase = MethodHandles.lookup()
.findVirtual(String.class, "toUpperCase", MT_str2);
MethodHandle worker1 = MethodHandles.filterReturnValue(MH_name, MH_upcase);
name.setTarget(MethodHandles.constant(String.class, "Rocky"));
assertEquals("ROCKY", (String) worker1.invokeExact());
name.setTarget(MethodHandles.constant(String.class, "Fred"));
assertEquals("FRED", (String) worker1.invokeExact());
// (mutation can be continued indefinitely)
* </pre></blockquote>
* <p>
* The same call site may be used in several places at once.
* <blockquote><pre>
MethodHandle MH_dear = MethodHandles.lookup()
.findVirtual(String.class, "concat", MT_str2).bindTo(", dear?");
MethodHandle worker2 = MethodHandles.filterReturnValue(MH_name, MH_dear);
assertEquals("Fred, dear?", (String) worker2.invokeExact());
name.setTarget(MethodHandles.constant(String.class, "Wilma"));
assertEquals("WILMA", (String) worker1.invokeExact());
assertEquals("Wilma, dear?", (String) worker2.invokeExact());
* </pre></blockquote>
* <p>
* <em>Non-synchronization of target values:</em>
* A write to a mutable call site's target does not force other threads
* to become aware of the updated value. Threads which do not perform
* suitable synchronization actions relative to the updated call site
* may cache the old target value and delay their use of the new target
* value indefinitely.
* (This is a normal consequence of the Java Memory Model as applied
* to object fields.)
* <p>
* The {@link #sync sync} operation provides a way to force threads
* to accept a new target value, even if there is no other synchronization.
* <p>
* For target values which will be frequently updated, consider using
* a {@linkplain VolatileCallSite volatile call site} instead.
* @author John Rose, JSR 292 EG
*/
public class MutableCallSite extends CallSite {
/**
* Make a blank call site object with the given method type.
* An initial target method is supplied which will throw
* an {@link IllegalStateException} if called.
* <p>
* Before this {@code CallSite} object is returned from a bootstrap method,
* it is usually provided with a more useful target method,
* via a call to {@link CallSite#setTarget(MethodHandle) setTarget}.
* @throws NullPointerException if the proposed type is null
*/
public MutableCallSite(MethodType type) {
super(type);
}
/**
* Make a blank call site object, possibly equipped with an initial target method handle.
* @param target the method handle which will be the initial target of the call site
* @throws NullPointerException if the proposed target is null
*/
public MutableCallSite(MethodHandle target) {
super(target);
}
/**
* Perform a synchronization operation on each call site in the given array,
* forcing all other threads to throw away any cached values previously
* loaded from the target of any of the call sites.
* <p>
* This operation does not reverse any calls that have already started
* on an old target value.
* (Java supports {@linkplain java.lang.Object#wait() forward time travel} only.)
* <p>
* The overall effect is to force all future readers of each call site's target
* to accept the most recently stored value.
* ("Most recently" is reckoned relative to the {@code sync} itself.)
* Conversely, the {@code sync} call may block until all readers have
* (somehow) decached all previous versions of each call site's target.
* <p>
* To avoid race conditions, calls to {@code setTarget} and {@code sync}
* should generally be performed under some sort of mutual exclusion.
* Note that reader threads may observe an updated target as early
* as the {@code setTarget} call that install the value
* (and before the {@code sync} that confirms the value).
* On the other hand, reader threads may observe previous versions of
* the target until the {@code sync} call returns
* (and after the {@code setTarget} that attempts to convey the updated version).
* <p>
* In terms of the Java Memory Model, this operation performs a synchronization
* action which is comparable in effect to the writing of a volatile variable
* by the current thread, and an eventual volatile read by every other thread
* that may access one of the affected call sites.
* <p>
* The following effects are apparent, for each individual call site {@code S}:
* <ul>
* <li>A new volatile variable {@code V} is created, and written by the current thread.
* As defined by the JMM, this write is a global synchronization event.
* <li>As is normal with thread-local ordering of write events,
* every action already performed by the current thread is
* taken to happen before the volatile write to {@code V}.
* (In some implementations, this means that the current thread
* performs a global release operation.)
* <li>Specifically, the write to the current target of {@code S} is
* taken to happen before the volatile write to {@code V}.
* <li>The volatile write to {@code V} is placed
* (in an implementation specific manner)
* in the global synchronization order.
* <li>Consider an arbitrary thread {@code T} (other than the current thread).
* If {@code T} executes a synchronization action {@code A}
* after the volatile write to {@code V} (in the global synchronization order),
* it is therefore required to see either the current target
* of {@code S}, or a later write to that target,
* if it executes a read on the target of {@code S}.
* (This constraint is called "synchronization-order consistency".)
* <li>The JMM specifically allows optimizing compilers to elide
* reads or writes of variables that are known to be useless.
* Such elided reads and writes have no effect on the happens-before
* relation. Regardless of this fact, the volatile {@code V}
* will not be elided, even though its written value is
* indeterminate and its read value is not used.
* </ul>
* Because of the last point, the implementation behaves as if a
* volatile read of {@code V} were performed by {@code T}
* immediately after its action {@code A}. In the local ordering
* of actions in {@code T}, this read happens before any future
* read of the target of {@code S}. It is as if the
* implementation arbitrarily picked a read of {@code S}'s target
* by {@code T}, and forced a read of {@code V} to precede it,
* thereby ensuring communication of the new target value.
* <p>
* As long as the constraints of the Java Memory Model are obeyed,
* implementations may delay the completion of a {@code sync}
* operation while other threads ({@code T} above) continue to
* use previous values of {@code S}'s target.
* However, implementations are (as always) encouraged to avoid
* livelock, and to eventually require all threads to take account
* of the updated target.
* <p>
* This operation is likely to be expensive and should be used sparingly.
* If possible, it should be buffered for batch processing on sets of call sites.
* <p style="font-size:smaller;">
* (This is a static method on a set of call sites, not a
* virtual method on a single call site, for performance reasons.
* Some implementations may incur a large fixed overhead cost
* for processing one or more synchronization operations,
* but a small incremental cost for each additional call site.
* In any case, this operation is likely to be costly, since
* other threads may have to be somehow interrupted
* in order to make them notice the updated target value.
* However, it may be observed that a single call to synchronize
* several sites has the same formal effect as many calls,
* each on just one of the sites.)
* <p>
* Simple implementations of {@code MutableCallSite} may use
* a volatile variable for the target of a mutable call site.
* In such an implementation, the {@code sync} method can be a no-op,
* and yet it will conform to the JMM behavior documented above.
*/
public static void sync(MutableCallSite[] sites) {
STORE_BARRIER.lazySet(0);
// FIXME: NYI
}
private static final AtomicInteger STORE_BARRIER = new AtomicInteger();
}
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package java.dyn;
/**
* <p>
* A {@code Switcher} is an object which can publish state transitions to other threads.
* A switcher is initially in the <em>valid</em> state, but may at any time be
* changed to the <em>invalid</em> state. Invalidation cannot be reversed.
* <p>
* A single switcher may be used to create any number of guarded method handle pairs.
* Each guarded pair is wrapped in a new method handle {@code M},
* which is permanently associated with the switcher that created it.
* Each pair consists of a target {@code T} and a fallback {@code F}.
* While the switcher is valid, invocations to {@code M} are delegated to {@code T}.
* After it is invalidated, invocations are delegated to {@code F}.
* <p>
* Invalidation is global and immediate, as if the switcher contained a
* volatile boolean variable consulted on every call to {@code M}.
* The invalidation is also permanent, which means the switcher
* can change state only once.
* <p>
* Here is an example of a switcher in action:
* <blockquote><pre>
MethodType MT_str2 = MethodType.methodType(String.class, String.class);
MethodHandle MH_strcat = MethodHandles.lookup()
.findVirtual(String.class, "concat", MT_str2);
Switcher switcher = new Switcher();
// the following steps may be repeated to re-use the same switcher:
MethodHandle worker1 = strcat;
MethodHandle worker2 = MethodHandles.permuteArguments(strcat, MT_str2, 1, 0);
MethodHandle worker = switcher.guardWithTest(worker1, worker2);
assertEquals("method", (String) worker.invokeExact("met", "hod"));
switcher.invalidate();
assertEquals("hodmet", (String) worker.invokeExact("met", "hod"));
* </pre></blockquote>
* <p>
* <em>Implementation Note:</em>
* A switcher behaves as if implemented on top of {@link MutableCallSite},
* approximately as follows:
* <blockquote><pre>
public class Switcher {
private static final MethodHandle
K_true = MethodHandles.constant(boolean.class, true),
K_false = MethodHandles.constant(boolean.class, false);
private final MutableCallSite mcs;
private final MethodHandle mcsInvoker;
public Switcher() {
this.mcs = new MutableCallSite(K_true);
this.mcsInvoker = mcs.dynamicInvoker();
}
public MethodHandle guardWithTest(
MethodHandle target, MethodHandle fallback) {
// Note: mcsInvoker is of type boolean().
// Target and fallback may take any arguments, but must have the same type.
return MethodHandles.guardWithTest(this.mcsInvoker, target, fallback);
}
public static void invalidateAll(Switcher[] switchers) {
List<MutableCallSite> mcss = new ArrayList<>();
for (Switcher s : switchers) mcss.add(s.mcs);
for (MutableCallSite mcs : mcss) mcs.setTarget(K_false);
MutableCallSite.sync(mcss.toArray(new MutableCallSite[0]));
}
}
* </pre></blockquote>
* @author Remi Forax, JSR 292 EG
*/
public class Switcher {
private static final MethodHandle
K_true = MethodHandles.constant(boolean.class, true),
K_false = MethodHandles.constant(boolean.class, false);
private final MutableCallSite mcs;
private final MethodHandle mcsInvoker;
/** Create a switcher. */
public Switcher() {
this.mcs = new MutableCallSite(K_true);
this.mcsInvoker = mcs.dynamicInvoker();
}
/**
* Return a method handle which always delegates either to the target or the fallback.
* The method handle will delegate to the target exactly as long as the switcher is valid.
* After that, it will permanently delegate to the fallback.
* <p>
* The target and fallback must be of exactly the same method type,
* and the resulting combined method handle will also be of this type.
* @see MethodHandles#guardWithTest
*/
public MethodHandle guardWithTest(MethodHandle target, MethodHandle fallback) {
if (mcs.getTarget() == K_false)
return fallback; // already invalid
return MethodHandles.guardWithTest(mcsInvoker, target, fallback);
}
/** Set all of the given switchers into the invalid state. */
public static void invalidateAll(Switcher[] switchers) {
MutableCallSite[] sites = new MutableCallSite[switchers.length];
int fillp = 0;
for (Switcher switcher : switchers) {
sites[fillp++] = switcher.mcs;
switcher.mcs.setTarget(K_false);
}
MutableCallSite.sync(sites);
}
}
...@@ -25,58 +25,55 @@ ...@@ -25,58 +25,55 @@
package java.dyn; package java.dyn;
import java.lang.annotation.*; import java.util.List;
/** /**
* Annotation on InvokeDynamic method calls which requests the JVM to use a specific * A {@code VolatileCallSite} is a {@link CallSite} whose target acts like a volatile variable.
* <a href="package-summary.html#bsm">bootstrap method</a> * An {@code invokedynamic} instruction linked to a {@code VolatileCallSite} sees updates
* to link the call. This annotation is not retained as such in the class file, * to its call site target immediately, even if the update occurs in another thread.
* but is transformed into a constant-pool entry for the invokedynamic instruction which * There may be a performance penalty for such tight coupling between threads.
* specifies the desired bootstrap method.
* <p> * <p>
* If only the <code>value</code> is given, it must name a subclass of {@link CallSite} * Unlike {@code MutableCallSite}, there is no
* with a constructor which accepts a class, string, and method type. * {@linkplain MutableCallSite#sync sync operation} on volatile
* If the <code>value</code> and <code>name</code> are both given, there must be * call sites, since every write to a volatile variable is implicitly
* a static method in the given class of the given name which accepts a class, string, * synchronized with reader threads.
* and method type, and returns a reference coercible to {@link CallSite}.
* <p>
* This annotation can be placed either on the return type of a single {@link InvokeDynamic}
* call (see examples) or else it can be placed on an enclosing class or method, where it
* determines a default bootstrap method for any {@link InvokeDynamic} calls which are not
* specifically annotated with a bootstrap method.
* Every {@link InvokeDynamic} call must be given a bootstrap method.
* <p>
* Examples:
<blockquote><pre>
&#064;BootstrapMethod(value=MyLanguageRuntime.class, name="bootstrapDynamic")
String x = (String) InvokeDynamic.greet();
//BSM => MyLanguageRuntime.bootstrapDynamic(Here.class, "greet", methodType(String.class))
&#064;BootstrapMethod(MyCallSite.class)
void example() throws Throwable {
InvokeDynamic.greet();
//BSM => new MyCallSite(Here.class, "greet", methodType(void.class))
}
</pre></blockquote>
* <p> * <p>
* In other respects, a {@code VolatileCallSite} is interchangeable
* with {@code MutableCallSite}.
* @see MutableCallSite
* @author John Rose, JSR 292 EG
*/ */
@Target({ElementType.TYPE_USE, public class VolatileCallSite extends CallSite {
// For defaulting every indy site within a class or method; cf. @SuppressWarnings: /** Create a call site with a volatile target.
ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR * The initial target is set to a method handle
}) * of the given type which will throw {@code IllegalStateException}.
@Retention(RetentionPolicy.SOURCE) * @throws NullPointerException if the proposed type is null
public @interface BootstrapMethod { */
/** The class containing the bootstrap method. */ public VolatileCallSite(MethodType type) {
Class<?> value(); super(type);
}
/** The name of the bootstrap method. /** Create a call site with a volatile target.
* If this is the empty string, an instance of the bootstrap class is created, * The target is set to the given value.
* and a constructor is invoked. * @throws NullPointerException if the proposed target is null
* Otherwise, there must be a static method of the required name.
*/ */
String name() default ""; // empty string denotes a constructor with 'new' public VolatileCallSite(MethodHandle target) {
super(target);
}
/** Internal override to nominally final getTarget. */
@Override
MethodHandle getTarget0() {
return getTargetVolatile();
}
/** The argument types of the bootstrap method, as passed out by the JVM. /**
* There is usually no reason to override the default. * Set the target method of this call site, as a volatile variable.
* Has the same effect as {@link CallSite#setTarget CallSite.setTarget}, with the additional
* effects associated with volatiles, in the Java Memory Model.
*/ */
Class<?>[] arguments() default {Class.class, String.class, MethodType.class}; @Override public void setTarget(MethodHandle newTarget) {
checkTargetChange(getTargetVolatile(), newTarget);
setTargetVolatile(newTarget);
}
} }
...@@ -6370,15 +6370,15 @@ class Character implements java.io.Serializable, Comparable<Character> { ...@@ -6370,15 +6370,15 @@ class Character implements java.io.Serializable, Comparable<Character> {
* This method returns <code>true</code> for the following five * This method returns <code>true</code> for the following five
* characters only: * characters only:
* <table> * <table>
* <tr><td><code>'\t'</code></td> <td><code>'&#92;u0009'</code></td> * <tr><td><code>'\t'</code></td> <td><code>U+0009</code></td>
* <td><code>HORIZONTAL TABULATION</code></td></tr> * <td><code>HORIZONTAL TABULATION</code></td></tr>
* <tr><td><code>'\n'</code></td> <td><code>'&#92;u000A'</code></td> * <tr><td><code>'\n'</code></td> <td><code>U+000A</code></td>
* <td><code>NEW LINE</code></td></tr> * <td><code>NEW LINE</code></td></tr>
* <tr><td><code>'\f'</code></td> <td><code>'&#92;u000C'</code></td> * <tr><td><code>'\f'</code></td> <td><code>U+000C</code></td>
* <td><code>FORM FEED</code></td></tr> * <td><code>FORM FEED</code></td></tr>
* <tr><td><code>'\r'</code></td> <td><code>'&#92;u000D'</code></td> * <tr><td><code>'\r'</code></td> <td><code>U+000D</code></td>
* <td><code>CARRIAGE RETURN</code></td></tr> * <td><code>CARRIAGE RETURN</code></td></tr>
* <tr><td><code>'&nbsp;'</code></td> <td><code>'&#92;u0020'</code></td> * <tr><td><code>'&nbsp;'</code></td> <td><code>U+0020</code></td>
* <td><code>SPACE</code></td></tr> * <td><code>SPACE</code></td></tr>
* </table> * </table>
* *
...@@ -6462,15 +6462,15 @@ class Character implements java.io.Serializable, Comparable<Character> { ...@@ -6462,15 +6462,15 @@ class Character implements java.io.Serializable, Comparable<Character> {
* <code>LINE_SEPARATOR</code>, or <code>PARAGRAPH_SEPARATOR</code>) * <code>LINE_SEPARATOR</code>, or <code>PARAGRAPH_SEPARATOR</code>)
* but is not also a non-breaking space (<code>'&#92;u00A0'</code>, * but is not also a non-breaking space (<code>'&#92;u00A0'</code>,
* <code>'&#92;u2007'</code>, <code>'&#92;u202F'</code>). * <code>'&#92;u2007'</code>, <code>'&#92;u202F'</code>).
* <li> It is <code>'&#92;u0009'</code>, HORIZONTAL TABULATION. * <li> It is <code>'&#92;t'</code>, U+0009 HORIZONTAL TABULATION.
* <li> It is <code>'&#92;u000A'</code>, LINE FEED. * <li> It is <code>'&#92;n'</code>, U+000A LINE FEED.
* <li> It is <code>'&#92;u000B'</code>, VERTICAL TABULATION. * <li> It is <code>'&#92;u000B'</code>, U+000B VERTICAL TABULATION.
* <li> It is <code>'&#92;u000C'</code>, FORM FEED. * <li> It is <code>'&#92;f'</code>, U+000C FORM FEED.
* <li> It is <code>'&#92;u000D'</code>, CARRIAGE RETURN. * <li> It is <code>'&#92;r'</code>, U+000D CARRIAGE RETURN.
* <li> It is <code>'&#92;u001C'</code>, FILE SEPARATOR. * <li> It is <code>'&#92;u001C'</code>, U+001C FILE SEPARATOR.
* <li> It is <code>'&#92;u001D'</code>, GROUP SEPARATOR. * <li> It is <code>'&#92;u001D'</code>, U+001D GROUP SEPARATOR.
* <li> It is <code>'&#92;u001E'</code>, RECORD SEPARATOR. * <li> It is <code>'&#92;u001E'</code>, U+001E RECORD SEPARATOR.
* <li> It is <code>'&#92;u001F'</code>, UNIT SEPARATOR. * <li> It is <code>'&#92;u001F'</code>, U+001F UNIT SEPARATOR.
* </ul> * </ul>
* *
* <p><b>Note:</b> This method cannot handle <a * <p><b>Note:</b> This method cannot handle <a
...@@ -6498,15 +6498,15 @@ class Character implements java.io.Serializable, Comparable<Character> { ...@@ -6498,15 +6498,15 @@ class Character implements java.io.Serializable, Comparable<Character> {
* {@link #LINE_SEPARATOR}, or {@link #PARAGRAPH_SEPARATOR}) * {@link #LINE_SEPARATOR}, or {@link #PARAGRAPH_SEPARATOR})
* but is not also a non-breaking space (<code>'&#92;u00A0'</code>, * but is not also a non-breaking space (<code>'&#92;u00A0'</code>,
* <code>'&#92;u2007'</code>, <code>'&#92;u202F'</code>). * <code>'&#92;u2007'</code>, <code>'&#92;u202F'</code>).
* <li> It is <code>'&#92;u0009'</code>, HORIZONTAL TABULATION. * <li> It is <code>'&#92;t'</code>, U+0009 HORIZONTAL TABULATION.
* <li> It is <code>'&#92;u000A'</code>, LINE FEED. * <li> It is <code>'&#92;n'</code>, U+000A LINE FEED.
* <li> It is <code>'&#92;u000B'</code>, VERTICAL TABULATION. * <li> It is <code>'&#92;u000B'</code>, U+000B VERTICAL TABULATION.
* <li> It is <code>'&#92;u000C'</code>, FORM FEED. * <li> It is <code>'&#92;f'</code>, U+000C FORM FEED.
* <li> It is <code>'&#92;u000D'</code>, CARRIAGE RETURN. * <li> It is <code>'&#92;r'</code>, U+000D CARRIAGE RETURN.
* <li> It is <code>'&#92;u001C'</code>, FILE SEPARATOR. * <li> It is <code>'&#92;u001C'</code>, U+001C FILE SEPARATOR.
* <li> It is <code>'&#92;u001D'</code>, GROUP SEPARATOR. * <li> It is <code>'&#92;u001D'</code>, U+001D GROUP SEPARATOR.
* <li> It is <code>'&#92;u001E'</code>, RECORD SEPARATOR. * <li> It is <code>'&#92;u001E'</code>, U+001E RECORD SEPARATOR.
* <li> It is <code>'&#92;u001F'</code>, UNIT SEPARATOR. * <li> It is <code>'&#92;u001F'</code>, U+001F UNIT SEPARATOR.
* </ul> * </ul>
* <p> * <p>
* *
......
...@@ -79,9 +79,13 @@ import sun.text.normalizer.NormalizerBase; ...@@ -79,9 +79,13 @@ import sun.text.normalizer.NormalizerBase;
* <pre> * <pre>
* *
* String testString = "This is a test"; * String testString = "This is a test";
* RuleBasedCollator ruleBasedCollator = (RuleBasedCollator)Collator.getInstance(); * Collator col = Collator.getInstance();
* if (col instanceof RuleBasedCollator) {
* RuleBasedCollator ruleBasedCollator = (RuleBasedCollator)col;
* CollationElementIterator collationElementIterator = ruleBasedCollator.getCollationElementIterator(testString); * CollationElementIterator collationElementIterator = ruleBasedCollator.getCollationElementIterator(testString);
* int primaryOrder = CollationElementIterator.primaryOrder(collationElementIterator.next()); * int primaryOrder = CollationElementIterator.primaryOrder(collationElementIterator.next());
* :
* }
* </pre> * </pre>
* </blockquote> * </blockquote>
* *
...@@ -93,6 +97,10 @@ import sun.text.normalizer.NormalizerBase; ...@@ -93,6 +97,10 @@ import sun.text.normalizer.NormalizerBase;
* is its primary order; the next 8 bits is the secondary order and the * is its primary order; the next 8 bits is the secondary order and the
* last 8 bits is the tertiary order. * last 8 bits is the tertiary order.
* *
* <p><b>Note:</b> <code>CollationElementIterator</code> is a part of
* <code>RuleBasedCollator</code> implementation. It is only usable
* with <code>RuleBasedCollator</code> instances.
*
* @see Collator * @see Collator
* @see RuleBasedCollator * @see RuleBasedCollator
* @author Helena Shih, Laura Werner, Richard Gillam * @author Helena Shih, Laura Werner, Richard Gillam
......
/* /*
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -180,11 +180,15 @@ import java.util.Locale; ...@@ -180,11 +180,15 @@ import java.util.Locale;
* *
* <p><strong>Examples</strong> * <p><strong>Examples</strong>
* <p>Simple: "&lt; a &lt; b &lt; c &lt; d" * <p>Simple: "&lt; a &lt; b &lt; c &lt; d"
* <p>Norwegian: "&lt; a,A&lt; b,B&lt; c,C&lt; d,D&lt; e,E&lt; f,F&lt; g,G&lt; h,H&lt; i,I&lt; j,J * <p>Norwegian: "&lt; a, A &lt; b, B &lt; c, C &lt; d, D &lt; e, E &lt; f, F
* &lt; k,K&lt; l,L&lt; m,M&lt; n,N&lt; o,O&lt; p,P&lt; q,Q&lt; r,R&lt; s,S&lt; t,T * &lt; g, G &lt; h, H &lt; i, I &lt; j, J &lt; k, K &lt; l, L
* &lt; u,U&lt; v,V&lt; w,W&lt; x,X&lt; y,Y&lt; z,Z * &lt; m, M &lt; n, N &lt; o, O &lt; p, P &lt; q, Q &lt; r, R
* &lt; &#92;u00E5=a&#92;u030A,&#92;u00C5=A&#92;u030A * &lt; s, S &lt; t, T &lt; u, U &lt; v, V &lt; w, W &lt; x, X
* ;aa,AA&lt; &#92;u00E6,&#92;u00C6&lt; &#92;u00F8,&#92;u00D8" * &lt; y, Y &lt; z, Z
* &lt; &#92;u00E6, &#92;u00C6
* &lt; &#92;u00F8, &#92;u00D8
* &lt; &#92;u00E5 = a&#92;u030A, &#92;u00C5 = A&#92;u030A;
* aa, AA"
* *
* <p> * <p>
* To create a <code>RuleBasedCollator</code> object with specialized * To create a <code>RuleBasedCollator</code> object with specialized
...@@ -199,11 +203,14 @@ import java.util.Locale; ...@@ -199,11 +203,14 @@ import java.util.Locale;
* Or: * Or:
* <blockquote> * <blockquote>
* <pre> * <pre>
* String Norwegian = "&lt; a,A&lt; b,B&lt; c,C&lt; d,D&lt; e,E&lt; f,F&lt; g,G&lt; h,H&lt; i,I&lt; j,J" + * String Norwegian = "&lt; a, A &lt; b, B &lt; c, C &lt; d, D &lt; e, E &lt; f, F &lt; g, G &lt; h, H &lt; i, I" +
* "&lt; k,K&lt; l,L&lt; m,M&lt; n,N&lt; o,O&lt; p,P&lt; q,Q&lt; r,R&lt; s,S&lt; t,T" + * "&lt; j, J &lt; k, K &lt; l, L &lt; m, M &lt; n, N &lt; o, O &lt; p, P &lt; q, Q &lt; r, R" +
* "&lt; u,U&lt; v,V&lt; w,W&lt; x,X&lt; y,Y&lt; z,Z" + * "&lt; s, S &lt; t, T &lt; u, U &lt; v, V &lt; w, W &lt; x, X &lt; y, Y &lt; z, Z" +
* "&lt; &#92;u00E5=a&#92;u030A,&#92;u00C5=A&#92;u030A" + * "&lt; &#92;u00E6, &#92;u00C6" + // Latin letter ae & AE
* ";aa,AA&lt; &#92;u00E6,&#92;u00C6&lt; &#92;u00F8,&#92;u00D8"; * "&lt; &#92;u00F8, &#92;u00D8" + // Latin letter o & O with stroke
* "&lt; &#92;u00E5 = a&#92;u030A," + // Latin letter a with ring above
* " &#92;u00C5 = A&#92;u030A;" + // Latin letter A with ring above
* " aa, AA";
* RuleBasedCollator myNorwegian = new RuleBasedCollator(Norwegian); * RuleBasedCollator myNorwegian = new RuleBasedCollator(Norwegian);
* </pre> * </pre>
* </blockquote> * </blockquote>
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册