提交 cf483398 编写于 作者: J jgodinez

Merge

......@@ -51,6 +51,7 @@ DEV_DOCS_URL-5 = http://java.sun.com/j2se/1.5.0/docs/index.html
DEV_DOCS_URL-6 = http://download.oracle.com/javase/6/docs/index.html
DEV_DOCS_URL-7 = http://download.oracle.com/javase/7/docs/index.html
DEV_DOCS_URL = $(DEV_DOCS_URL-$(JDK_MINOR_VERSION))
DOCS_BASE_URL = http://download.oracle.com/javase/7/docs
# Url to Java Language Spec
#JLS3_URL = http://java.sun.com/docs/books/jls/
......@@ -205,7 +206,13 @@ COMMON_JAVADOCFLAGS = \
-use \
-keywords \
$(ADDITIONAL_JAVADOCFLAGS)
ADDITIONAL_JAVADOCFLAGS =
ifdef OPENJDK
ADDITIONAL_JAVADOCFLAGS = \
-Xdocrootparent $(DOCS_BASE_URL)
else
ADDITIONAL_JAVADOCFLAGS =
endif
# Draft used for non-fcs documents
JDK_IS_FCS = false
......@@ -1142,56 +1149,6 @@ $(SCTPAPI_PACKAGES_FILE): $(DIRECTORY_CACHE) $(call PackageDependencies,$(SCTPAP
$(prep-target)
$(call PackageFilter,$(SCTPAPI_PKGS))
#############################################################
#
# tracingdocs
#
ALL_OTHER_TARGETS += tracingdocs
TRACING_DOCDIR := $(JRE_API_DOCSDIR)/tracing
TRACING2COREAPI := ../$(JDKJRE2COREAPI)
TRACING_DOCTITLE := Java$(TRADEMARK) Platform Tracing
TRACING_WINDOWTITLE := Platform Tracing
TRACING_HEADER := <strong>Platform Tracing</strong>
TRACING_BOTTOM := $(call CommonBottom,$(TRACING_FIRST_COPYRIGHT_YEAR))
# TRACING_PKGS is located in NON_CORE_PKGS.gmk
TRACING_INDEX_HTML = $(TRACING_DOCDIR)/index.html
TRACING_OPTIONS_FILE = $(DOCSTMPDIR)/tracing.options
TRACING_PACKAGES_FILE = $(DOCSTMPDIR)/tracing.packages
tracingdocs: $(TRACING_INDEX_HTML)
# Set relative location to core api document root
$(TRACING_INDEX_HTML): GET2DOCSDIR=$(TRACING2COREAPI)/..
# Run javadoc if the index file is out of date or missing
$(TRACING_INDEX_HTML): $(TRACING_OPTIONS_FILE) $(TRACING_PACKAGES_FILE)
$(prep-javadoc)
$(call JavadocSummary,$(TRACING_OPTIONS_FILE),$(TRACING_PACKAGES_FILE))
$(JAVADOC_CMD) $(JAVADOC_VM_MEMORY_FLAGS) -d $(@D) \
@$(TRACING_OPTIONS_FILE) @$(TRACING_PACKAGES_FILE)
# Create file with javadoc options in it
$(TRACING_OPTIONS_FILE):
$(prep-target)
@($(call OptionOnly,$(COMMON_JAVADOCFLAGS)) ; \
$(call OptionPair,-sourcepath,$(RELEASEDOCS_SOURCEPATH)) ; \
$(call OptionPair,-encoding,ascii) ; \
$(call OptionOnly,-nodeprecatedlist) ; \
$(call OptionPair,-doctitle,$(TRACING_DOCTITLE)) ; \
$(call OptionPair,-windowtitle,$(TRACING_WINDOWTITLE) $(DRAFT_WINTITLE));\
$(call OptionPair,-header,$(TRACING_HEADER)$(DRAFT_HEADER)) ; \
$(call OptionPair,-bottom,$(TRACING_BOTTOM)$(DRAFT_BOTTOM)) ; \
$(call OptionTrip,-linkoffline,$(TRACING2COREAPI),$(COREAPI_DOCSDIR)/); \
) >> $@
# Create a file with the package names in it
$(TRACING_PACKAGES_FILE): $(DIRECTORY_CACHE) $(call PackageDependencies,$(TRACING_PKGS))
$(prep-target)
$(call PackageFilter,$(TRACING_PKGS))
#############################################################
#
# Get a cache of all the directories
......
......@@ -88,9 +88,6 @@ SMARTCARDIO_PKGS = javax.smartcardio
SCTPAPI_PKGS = com.sun.nio.sctp
TRACING_PKGS = com.sun.tracing \
com.sun.tracing.dtrace
# non-core packages in rt.jar
NON_CORE_PKGS = $(DOMAPI_PKGS) \
$(MGMT_PKGS) \
......@@ -100,6 +97,5 @@ NON_CORE_PKGS = $(DOMAPI_PKGS) \
$(OLD_JSSE_PKGS) \
$(HTTPSERVER_PKGS) \
$(SMARTCARDIO_PKGS) \
$(TRACING_PKGS) \
$(SCTPAPI_PKGS)
......@@ -356,6 +356,7 @@ JAVA_JAVA_java = \
java/util/regex/Matcher.java \
java/util/regex/MatchResult.java \
java/util/regex/ASCII.java \
java/util/regex/UnicodeProp.java \
java/util/regex/PatternSyntaxException.java \
java/util/prefs/Preferences.java \
java/util/prefs/AbstractPreferences.java \
......
......@@ -345,30 +345,35 @@ $(GENSRCDIR)/java/lang/CharacterDataLatin1.java \
-template $(CHARACTERDATA)/CharacterDataLatin1.java.template \
-spec $(UNICODEDATA)/UnicodeData.txt \
-specialcasing $(UNICODEDATA)/SpecialCasing.txt \
-proplist $(UNICODEDATA)/PropList.txt \
-o $(GENSRCDIR)/java/lang/CharacterDataLatin1.java -string \
-usecharforbyte -latin1 8
$(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 0 \
-template $(CHARACTERDATA)/CharacterData00.java.template \
-spec $(UNICODEDATA)/UnicodeData.txt \
-specialcasing $(UNICODEDATA)/SpecialCasing.txt \
-proplist $(UNICODEDATA)/PropList.txt \
-o $(GENSRCDIR)/java/lang/CharacterData00.java -string \
-usecharforbyte 11 4 1
$(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 1 \
-template $(CHARACTERDATA)/CharacterData01.java.template \
-spec $(UNICODEDATA)/UnicodeData.txt \
-specialcasing $(UNICODEDATA)/SpecialCasing.txt \
-proplist $(UNICODEDATA)/PropList.txt \
-o $(GENSRCDIR)/java/lang/CharacterData01.java -string \
-usecharforbyte 11 4 1
$(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 2 \
-template $(CHARACTERDATA)/CharacterData02.java.template \
-spec $(UNICODEDATA)/UnicodeData.txt \
-specialcasing $(UNICODEDATA)/SpecialCasing.txt \
-proplist $(UNICODEDATA)/PropList.txt \
-o $(GENSRCDIR)/java/lang/CharacterData02.java -string \
-usecharforbyte 11 4 1
$(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 14 \
-template $(CHARACTERDATA)/CharacterData0E.java.template \
-spec $(UNICODEDATA)/UnicodeData.txt \
-specialcasing $(UNICODEDATA)/SpecialCasing.txt \
-proplist $(UNICODEDATA)/PropList.txt \
-o $(GENSRCDIR)/java/lang/CharacterData0E.java -string \
-usecharforbyte 11 4 1
......
......@@ -71,6 +71,7 @@ FILES_src = \
java/nio/charset/CoderMalfunctionError.java \
java/nio/charset/CodingErrorAction.java \
java/nio/charset/MalformedInputException.java \
java/nio/charset/StandardCharset.java \
java/nio/charset/UnmappableCharacterException.java \
\
java/nio/charset/spi/CharsetProvider.java \
......
......@@ -44,7 +44,6 @@ SUNWprivate_1.1 {
Java_sun_nio_ch_EPollArrayWrapper_interrupt;
Java_sun_nio_ch_EPollArrayWrapper_offsetofData;
Java_sun_nio_ch_EPollArrayWrapper_sizeofEPollEvent;
Java_sun_nio_ch_EPoll_init;
Java_sun_nio_ch_EPoll_eventSize;
Java_sun_nio_ch_EPoll_eventsOffset;
Java_sun_nio_ch_EPoll_dataOffset;
......@@ -129,7 +128,6 @@ SUNWprivate_1.1 {
Java_sun_nio_fs_GnomeFileTypeDetector_probeUsingGio;
Java_sun_nio_fs_GnomeFileTypeDetector_initializeGnomeVfs;
Java_sun_nio_fs_GnomeFileTypeDetector_probeUsingGnomeVfs;
Java_sun_nio_fs_LinuxWatchService_init;
Java_sun_nio_fs_LinuxWatchService_eventSize;
Java_sun_nio_fs_LinuxWatchService_eventOffsets;
Java_sun_nio_fs_LinuxWatchService_inotifyInit;
......
#
# Copyright (c) 1996, 2011 Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
......@@ -44,11 +44,9 @@ PROPS_SRC = $(TOPDIR)/src/share/lib/security/java.security-solaris
else # PLATFORM
# Register Microsoft CryptoAPI provider only on (non-64-bit) Windows platform.
# Register Microsoft CryptoAPI provider only on Windows platform.
ifeq ($(PLATFORM), windows)
ifneq ($(ARCH_DATA_MODEL), 64)
PROPS_SRC = $(TOPDIR)/src/share/lib/security/java.security-windows
endif
PROPS_SRC = $(TOPDIR)/src/share/lib/security/java.security-windows
endif
endif # PLATFORM
......
......@@ -2190,7 +2190,8 @@ JDWP "Java(tm) Debug Wire Protocol"
(Out
(byte eventKind "Event kind to request. "
"See <a href=\"#JDWP_EventKind\">JDWP.EventKind</a> "
"for a complete list of events that can be requested. "
"for a complete list of events that can be requested; "
"some events may require a capability in order to be requested. "
)
(byte suspendPolicy
"What threads are suspended when this event occurs? "
......@@ -2732,6 +2733,8 @@ JDWP "Java(tm) Debug Wire Protocol"
(Alt MonitorContendedEnter=JDWP.EventKind.MONITOR_CONTENDED_ENTER
"Notification that a thread in the target VM is attempting "
"to enter a monitor that is already acquired by another thread. "
"Requires canRequestMonitorEvents capability - see "
"<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>. "
"<p>Since JDWP version 1.6. "
(int requestID
......@@ -2743,6 +2746,8 @@ JDWP "Java(tm) Debug Wire Protocol"
(Alt MonitorContendedEntered=JDWP.EventKind.MONITOR_CONTENDED_ENTERED
"Notification of a thread in the target VM is entering a monitor "
"after waiting for it to be released by another thread. "
"Requires canRequestMonitorEvents capability - see "
"<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>. "
"<p>Since JDWP version 1.6. "
(int requestID
......@@ -2753,6 +2758,8 @@ JDWP "Java(tm) Debug Wire Protocol"
)
(Alt MonitorWait=JDWP.EventKind.MONITOR_WAIT
"Notification of a thread about to wait on a monitor object. "
"Requires canRequestMonitorEvents capability - see "
"<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>. "
"<p>Since JDWP version 1.6. "
(int requestID
......@@ -2764,6 +2771,8 @@ JDWP "Java(tm) Debug Wire Protocol"
)
(Alt MonitorWaited=JDWP.EventKind.MONITOR_WAITED
"Notification that a thread in the target VM has finished waiting on "
"Requires canRequestMonitorEvents capability - see "
"<a href=\"#JDWP_VirtualMachine_CapabilitiesNew\">CapabilitiesNew</a>. "
"a monitor object. "
"<p>Since JDWP version 1.6. "
......@@ -3050,9 +3059,9 @@ JDWP "Java(tm) Debug Wire Protocol"
(Constant METHOD_EXIT =41 )
(Constant METHOD_EXIT_WITH_RETURN_VALUE =42 )
(Constant MONITOR_CONTENDED_ENTER =43 )
(Constant MONITOR_CONTENDED_ENTERED =44 )
(Constant MONITOR_WAIT =45 )
(Constant MONITOR_WAITED =46 )
(Constant MONITOR_CONTENDED_ENTERED =44 )
(Constant MONITOR_WAIT =45 )
(Constant MONITOR_WAITED =46 )
(Constant VM_START =90 )
(Constant VM_INIT =90 "obsolete - was used in jvmdi")
(Constant VM_DEATH =99 )
......
......@@ -21,4 +21,4 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
tzdata2011e
tzdata2011g
......@@ -234,7 +234,21 @@ Rule Egypt 1989 only - May 6 1:00 1:00 S
Rule Egypt 1990 1994 - May 1 1:00 1:00 S
# IATA (after 1990) says transitions are at 0:00.
# Go with IATA starting in 1995, except correct 1995 entry from 09-30 to 09-29.
Rule Egypt 1995 max - Apr lastFri 0:00s 1:00 S
# From Alexander Krivenyshev (2011-04-20):
# "...Egypt's interim cabinet decided on Wednesday to cancel daylight
# saving time after a poll posted on its website showed the majority of
# Egyptians would approve the cancellation."
#
# Egypt to cancel daylight saving time
# <a href="http://www.almasryalyoum.com/en/node/407168">
# http://www.almasryalyoum.com/en/node/407168
# </a>
# or
# <a href="http://www.worldtimezone.com/dst_news/dst_news_egypt04.html">
# http://www.worldtimezone.com/dst_news/dst_news_egypt04.html
# </a>
Rule Egypt 1995 2010 - Apr lastFri 0:00s 1:00 S
Rule Egypt 1995 2005 - Sep lastThu 23:00s 0 -
# From Steffen Thorsen (2006-09-19):
# The Egyptian Gazette, issue 41,090 (2006-09-18), page 1, reports:
......@@ -335,7 +349,7 @@ Rule Egypt 2008 only - Aug lastThu 23:00s 0 -
Rule Egypt 2009 only - Aug 20 23:00s 0 -
Rule Egypt 2010 only - Aug 11 0:00 0 -
Rule Egypt 2010 only - Sep 10 0:00 1:00 S
Rule Egypt 2010 max - Sep lastThu 23:00s 0 -
Rule Egypt 2010 only - Sep lastThu 23:00s 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Africa/Cairo 2:05:00 - LMT 1900 Oct
......
......@@ -168,7 +168,7 @@
# A monument to Willett was unveiled on 1927-05-21, in an open space in
# a 45-acre wood near Chislehurst, Kent that was purchased by popular
# subscription and open to the public. On the south face of the monolith,
# designed by G. W. Miller, is the the William Willett Memorial Sundial,
# designed by G. W. Miller, is the...William Willett Memorial Sundial,
# which is permanently set to Summer Time.
# From Winston Churchill (1934-04-28):
......@@ -1808,7 +1808,7 @@ Zone Europe/Oslo 0:43:00 - LMT 1895 Jan 1
#
# All these events predate our cutoff date of 1970. Unless we can
# come up with more definitive info about the timekeeping during the
# war years it's probably best just do do the following for now:
# war years it's probably best just do...the following for now:
Link Europe/Oslo Arctic/Longyearbyen
# Poland
......
......@@ -767,7 +767,7 @@ Zone America/La_Paz -4:32:36 - LMT 1890
#
# As a result of the above Decree I believe the America/Rio_Branco
# timezone shall be modified from UTC-5 to UTC-4 and a new timezone shall
# be created to represent the the west side of the Para State. I
# be created to represent the...west side of the Para State. I
# suggest this new timezone be called Santarem as the most
# important/populated city in the affected area.
#
......@@ -1365,6 +1365,24 @@ Zone Pacific/Galapagos -5:58:24 - LMT 1931 # Puerto Baquerizo Moreno
# For now, we'll just record the time in Stanley, since we have no
# better info.
# From Steffen Thorsen (2011-04-01):
# The Falkland Islands will not turn back clocks this winter, but stay on
# daylight saving time.
#
# One source:
# <a href="http://www.falklandnews.com/public/story.cfm?get=5914&source=3">
# http://www.falklandnews.com/public/story.cfm?get=5914&source=3
# </a>
#
# We have gotten this confirmed by a clerk of the legislative assembly:
# Normally the clocks revert to Local Mean Time (UTC/GMT -4 hours) on the
# third Sunday of April at 0200hrs and advance to Summer Time (UTC/GMT -3
# hours) on the first Sunday of September at 0200hrs.
#
# IMPORTANT NOTE: During 2011, on a trial basis, the Falkland Islands
# will not revert to local mean time, but clocks will remain on Summer
# time (UTC/GMT - 3 hours) throughout the whole of 2011. Any long term
# change to local time following the trial period will be notified.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Falk 1937 1938 - Sep lastSun 0:00 1:00 S
Rule Falk 1938 1942 - Mar Sun>=19 0:00 0 -
......@@ -1376,7 +1394,8 @@ Rule Falk 1984 1985 - Apr lastSun 0:00 0 -
Rule Falk 1984 only - Sep 16 0:00 1:00 S
Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 S
Rule Falk 1986 2000 - Apr Sun>=16 0:00 0 -
Rule Falk 2001 max - Apr Sun>=15 2:00 0 -
Rule Falk 2001 2010 - Apr Sun>=15 2:00 0 -
Rule Falk 2012 max - Apr Sun>=15 2:00 0 -
Rule Falk 2001 max - Sep Sun>=1 2:00 1:00 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Atlantic/Stanley -3:51:24 - LMT 1890
......
#
# Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
......@@ -52,12 +52,10 @@ ifeq ($(ARCH_DATA_MODEL), 64)
endif
endif
# Build Microsoft CryptoAPI provider only on (non-64-bit) Windows platform.
# Build Microsoft CryptoAPI provider only on Windows platform.
MSCAPI =
ifeq ($(PLATFORM), windows)
ifneq ($(ARCH_DATA_MODEL), 64)
MSCAPI = mscapi
endif
MSCAPI = mscapi
endif
# Build in-tree elliptic curve crypto provider only when
......
......@@ -73,11 +73,37 @@ class CharacterData00 extends CharacterData {
return props;
}
int getPropertiesEx(int ch) {
char offset = (char)ch;
int props = $$LookupEx(offset);
return props;
}
int getType(int ch) {
int props = getProperties(ch);
return (props & $$maskType);
}
boolean isOtherLowercase(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskOtherLowercase) != 0;
}
boolean isOtherUppercase(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskOtherUppercase) != 0;
}
boolean isOtherAlphabetic(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskOtherAlphabetic) != 0;
}
boolean isIdeographic(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskIdeographic) != 0;
}
boolean isJavaIdentifierStart(int ch) {
int props = getProperties(ch);
return ((props & $$maskIdentifierInfo) >= $$lowJavaStart);
......
......@@ -72,11 +72,37 @@ class CharacterData01 extends CharacterData {
return props;
}
int getPropertiesEx(int ch) {
char offset = (char)ch;
int props = $$LookupEx(offset);
return props;
}
int getType(int ch) {
int props = getProperties(ch);
return (props & $$maskType);
}
boolean isOtherLowercase(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskOtherLowercase) != 0;
}
boolean isOtherUppercase(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskOtherUppercase) != 0;
}
boolean isOtherAlphabetic(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskOtherAlphabetic) != 0;
}
boolean isIdeographic(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskIdeographic) != 0;
}
boolean isJavaIdentifierStart(int ch) {
int props = getProperties(ch);
return ((props & $$maskIdentifierInfo) >= $$lowJavaStart);
......
......@@ -66,11 +66,37 @@ class CharacterData02 extends CharacterData {
*/
int getProperties(int ch) {
char offset = (char)ch;
char offset = (char)ch;
int props = $$Lookup(offset);
return props;
}
int getPropertiesEx(int ch) {
char offset = (char)ch;
int props = $$LookupEx(offset);
return props;
}
boolean isOtherLowercase(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskOtherLowercase) != 0;
}
boolean isOtherUppercase(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskOtherUppercase) != 0;
}
boolean isOtherAlphabetic(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskOtherAlphabetic) != 0;
}
boolean isIdeographic(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskIdeographic) != 0;
}
int getType(int ch) {
int props = getProperties(ch);
return (props & $$maskType);
......
......@@ -66,11 +66,37 @@ class CharacterData0E extends CharacterData {
*/
int getProperties(int ch) {
char offset = (char)ch;
char offset = (char)ch;
int props = $$Lookup(offset);
return props;
}
int getPropertiesEx(int ch) {
char offset = (char)ch;
int props = $$LookupEx(offset);
return props;
}
boolean isOtherLowercase(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskOtherLowercase) != 0;
}
boolean isOtherUppercase(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskOtherUppercase) != 0;
}
boolean isOtherAlphabetic(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskOtherAlphabetic) != 0;
}
boolean isIdeographic(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskIdeographic) != 0;
}
int getType(int ch) {
int props = getProperties(ch);
return (props & $$maskType);
......
......@@ -67,11 +67,37 @@ class CharacterDataLatin1 extends CharacterData {
*/
int getProperties(int ch) {
char offset = (char)ch;
char offset = (char)ch;
int props = $$Lookup(offset);
return props;
}
int getPropertiesEx(int ch) {
char offset = (char)ch;
int props = $$LookupEx(offset);
return props;
}
boolean isOtherLowercase(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskOtherLowercase) != 0;
}
boolean isOtherUppercase(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskOtherUppercase) != 0;
}
boolean isOtherAlphabetic(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskOtherAlphabetic) != 0;
}
boolean isIdeographic(int ch) {
int props = getPropertiesEx(ch);
return (props & $$maskIdeographic) != 0;
}
int getType(int ch) {
int props = getProperties(ch);
return (props & $$maskType);
......
此差异已折叠。
/*
* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
......@@ -34,6 +33,7 @@ import java.io.PrintWriter;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.File;
import java.util.List;
import build.tools.generatecharacter.CharacterName;
......@@ -68,18 +68,17 @@ public class GenerateCharacter {
final static boolean DEBUG = false;
final static int MAX_UNICODE_VALUE = 0xFFFF;
final static String commandMarker = "$$";
static String ROOT = "";
static String DefaultUnicodeSpecFileName = ROOT + "UnicodeData.txt";
static String DefaultSpecialCasingFileName = ROOT + "SpecialCasing.txt";
static String DefaultPropListFileName = ROOT + "PropList.txt";
static String DefaultJavaTemplateFileName = ROOT + "Character.java.template";
static String DefaultJavaOutputFileName = ROOT + "Character.java";
static String DefaultCTemplateFileName = ROOT + "Character.c.template";
static String DefaultCOutputFileName = ROOT + "Character.c";
static String CharacterDataClassName = "CharacterData";
static int plane = 0;
static int plane = 0;
/* The overall idea is that, in the generated Character class source code,
most character property data is stored in a special multi-level table whose
......@@ -105,7 +104,11 @@ public class GenerateCharacter {
entries are short rather than byte).
*/
/* The character properties are currently encoded into 32 bits in the following manner:
/* The character properties are currently encoded into A (32 bits)and B (16 bits)
two parts.
A: the low 32 bits are defined in the following manner:
1 bit Mirrored property.
4 bits Bidirectional category (see below) (unused if -nobidi switch specified)
9 bits A signed offset used for converting case .
......@@ -148,6 +151,14 @@ public class GenerateCharacter {
will produce the desired numeric value.
5 bits The digit offset (see description of previous field)
5 bits Character type (see below)
B: the high 16 bits are defined as:
1 bit Other_Lowercase property
1 bit Other_Uppercase property
1 bit Other_Alphabetic property
1 bit Other_Math property
1 bit Ideographic property
1 bit Noncharacter codepoint property
*/
......@@ -173,9 +184,22 @@ public class GenerateCharacter {
// case offset are 9 bits
maskCase = 0x01FF,
shiftBidi = 27, maskBidi = 0x78000000,
shiftMirrored = 31, maskMirrored = 0x80000000,
shiftMirrored = 31, //maskMirrored = 0x80000000,
shiftPlane = 16, maskPlane = 0xFF0000;
// maskMirrored needs to be long, if up 16-bit
private static final long maskMirrored = 0x80000000L;
// bit masks identify the 16-bit priperty field described above, in B
// table
private static final long
maskOtherLowercase = 0x100000000L,
maskOtherUppercase = 0x200000000L,
maskOtherAlphabetic = 0x400000000L,
maskOtherMath = 0x800000000L,
maskIdeographic = 0x1000000000L,
maskNoncharacterCP = 0x2000000000L;
// Can compare masked values with these to determine
// numeric or lexical types.
public static int
......@@ -258,7 +282,7 @@ public class GenerateCharacter {
* The specification file is assumed to contain its data in sorted order by
* character code; as a result, the array passed as an argument to this method
* has its components in the same sorted order, with one entry for each defined
* Unicode character or character range. (A range is indicated by two consecutive
* Unicode character or character range. (A range is indicated by two consecutive
* entries, such that the name of the first entry begins with "<" and ends with
* "First>" and the second entry begins with "<" and ends with "Last>".) This is
* therefore a sparse representation of the character property data.
......@@ -282,7 +306,8 @@ public class GenerateCharacter {
* @see GenerateCharacter#buildOne
*/
static long[] buildMap(UnicodeSpec[] data, SpecialCaseMap[] specialMaps) {
static long[] buildMap(UnicodeSpec[] data, SpecialCaseMap[] specialMaps, PropList propList)
{
long[] result;
if (bLatin1 == true) {
result = new long[256];
......@@ -290,13 +315,13 @@ public class GenerateCharacter {
result = new long[1<<16];
}
int k=0;
int codePoint = plane<<16;
int codePoint = plane<<16;
UnicodeSpec nonCharSpec = new UnicodeSpec();
for (int j = 0; j < data.length && k < result.length; j++) {
if (data[j].codePoint == codePoint) {
result[k] = buildOne(codePoint, data[j], specialMaps);
++k;
++codePoint;
++codePoint;
}
else if(data[j].codePoint > codePoint) {
if (data[j].name.endsWith("Last>")) {
......@@ -304,7 +329,7 @@ public class GenerateCharacter {
while (codePoint < data[j].codePoint && k < result.length) {
result[k] = buildOne(codePoint, data[j], specialMaps);
++k;
++codePoint;
++codePoint;
}
}
else {
......@@ -312,15 +337,14 @@ public class GenerateCharacter {
while (codePoint < data[j].codePoint && k < result.length) {
result[k] = buildOne(codePoint, nonCharSpec, specialMaps);
++k;
++codePoint;
++codePoint;
}
}
k = data[j].codePoint & 0xFFFF;
codePoint = data[j].codePoint;
codePoint = data[j].codePoint;
result[k] = buildOne(codePoint, data[j], specialMaps);
++k;
++codePoint;
++codePoint;
}
else {
System.out.println("An error has occured during spec mapping.");
......@@ -333,8 +357,17 @@ public class GenerateCharacter {
while (k < result.length) {
result[k] = buildOne(codePoint, nonCharSpec, specialMaps);
++k;
++codePoint;
++codePoint;
}
// now add all extra supported properties from PropList, to the
// upper 16-bit
addExProp(result, propList, "Other_Lowercase", maskOtherLowercase);
addExProp(result, propList, "Other_Uppercase", maskOtherUppercase);
addExProp(result, propList, "Other_Alphabetic", maskOtherAlphabetic);
addExProp(result, propList, "Ideographic", maskIdeographic);
//addExProp(result, propList, "Other_Math", maskOtherMath);
//addExProp(result, propList, "Noncharacter_CodePoint", maskNoncharacterCP);
return result;
}
......@@ -381,15 +414,15 @@ public class GenerateCharacter {
// record the general category
resultA |= us.generalCategory;
// record the numeric properties
NUMERIC: {
// record the numeric properties
NUMERIC: {
STRANGE: {
int val = 0;
// c is A-Z
// c is A-Z
if ((c >= 0x0041) && (c <= 0x005A)) {
val = c - 0x0041;
resultA |= valueJavaSupradecimal;
// c is a-z
// c is a-z
} else if ((c >= 0x0061) && (c <= 0x007A)) {
val = c - 0x0061;
resultA |= valueJavaSupradecimal;
......@@ -428,7 +461,7 @@ public class GenerateCharacter {
resultA |= valueStrangeNumeric;
} // end NUMERIC
// record case mapping
// record case mapping
int offset = 0;
// might have a 1:M mapping
int specialMap = SpecialCaseMap.find(c, specialCaseMaps);
......@@ -458,12 +491,12 @@ public class GenerateCharacter {
}
}
if ((us.hasTitleMap() && us.titleMap != us.upperMap) ||
(bHasUpper && us.hasLowerMap())) {
(bHasUpper && us.hasLowerMap())) {
resultA |= maskTitleCase;
}
if (bHasUpper && !us.hasLowerMap() && !us.hasTitleMap() && verbose) {
System.out.println("Warning: Character " + hex4(c) + " has upper but " +
"no title case; Java won't know this");
System.out.println("Warning: Character " + hex4(c) + " has upper but " +
"no title case; Java won't know this");
}
if (offset < minOffsetSeen) minOffsetSeen = offset;
if (offset > maxOffsetSeen) maxOffsetSeen = offset;
......@@ -475,8 +508,7 @@ public class GenerateCharacter {
}
resultA |= ((offset & maskCase) << shiftCaseOffset);
// record lexical info about this character
// record lexical info about this character
if (us.generalCategory == UnicodeSpec.LOWERCASE_LETTER
|| us.generalCategory == UnicodeSpec.UPPERCASE_LETTER
|| us.generalCategory == UnicodeSpec.TITLECASE_LETTER
......@@ -539,6 +571,16 @@ public class GenerateCharacter {
return resultA;
}
static void addExProp(long[] map, PropList propList, String prop, long mask) {
List<Integer> cps = propList.codepoints(prop);
if (cps != null) {
for (Integer cp : cps) {
if (cp < map.length)
map[cp] |= mask;
}
}
}
/**
* This is the heart of the table compression strategy. The inputs are a map
* and a number of bits (size). The map is simply an array of long integer values;
......@@ -645,8 +687,8 @@ OUTER: for (int i = 0; i < n; i += m) {
*/
static void generateCharacterClass(String theTemplateFileName,
String theOutputFileName)
throws FileNotFoundException, IOException {
String theOutputFileName)
throws FileNotFoundException, IOException {
BufferedReader in = new BufferedReader(new FileReader(theTemplateFileName));
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(theOutputFileName)));
out.println(commentStart +
......@@ -719,6 +761,9 @@ OUTER: for (int i = 0; i < n; i += m) {
if (x.length() >= 9 && x.substring(0, 7).equals("Lookup(") &&
x.substring(x.length()-1).equals(")") )
return genAccess("A", x.substring(7, x.length()-1), (identifiers ? 2 : 32));
if (x.length() >= 11 && x.substring(0, 9).equals("LookupEx(") &&
x.substring(x.length()-1).equals(")") )
return genAccess("B", x.substring(9, x.length()-1), 16);
if (x.equals("shiftType")) return Long.toString(shiftType);
if (x.equals("shiftIdentifierInfo")) return Long.toString(shiftIdentifierInfo);
if (x.equals("maskIdentifierInfo")) return "0x" + hex8(maskIdentifierInfo);
......@@ -731,6 +776,10 @@ OUTER: for (int i = 0; i < n; i += m) {
if (x.equals("maskLowerCase")) return "0x" + hex8(maskLowerCase);
if (x.equals("maskUpperCase")) return "0x" + hex8(maskUpperCase);
if (x.equals("maskTitleCase")) return "0x" + hex8(maskTitleCase);
if (x.equals("maskOtherLowercase")) return "0x" + hex4(maskOtherLowercase >> 32);
if (x.equals("maskOtherUppercase")) return "0x" + hex4(maskOtherUppercase >> 32);
if (x.equals("maskOtherAlphabetic")) return "0x" + hex4(maskOtherAlphabetic >> 32);
if (x.equals("maskIdeographic")) return "0x" + hex4(maskIdeographic >> 32);
if (x.equals("valueIgnorable")) return "0x" + hex8(valueIgnorable);
if (x.equals("valueJavaUnicodeStart")) return "0x" + hex8(valueJavaUnicodeStart);
if (x.equals("valueJavaOnlyStart")) return "0x" + hex8(valueJavaOnlyStart);
......@@ -899,7 +948,7 @@ OUTER: for (int i = 0; i < n; i += m) {
// If we ever need more than 32 bits to represent the character properties,
// then a table "B" may be needed as well.
// genTable(result, "B", tables[n - 1], 32, 16, sizes[n - 1], false, 0, true, true, false);
genTable(result, "B", tables[n - 1], 32, 16, sizes[n - 1], false, 0, true, true, false);
totalBytes += ((((tables[n - 1].length * (identifiers ? 2 : 32)) + 31) >> 5) << 2);
result.append(commentStart);
......@@ -1080,9 +1129,9 @@ OUTER: for (int i = 0; i < n; i += m) {
*/
static void genTable(StringBuffer result, String name,
long[] table, int extract, int bits, int size,
boolean preshifted, int shift, boolean hexFormat,
boolean properties, boolean hexComment) {
long[] table, int extract, int bits, int size,
boolean preshifted, int shift, boolean hexFormat,
boolean properties, boolean hexComment) {
String atype = bits == 1 ? (Csyntax ? "unsigned long" : "int") :
bits == 2 ? (Csyntax ? "unsigned long" : "int") :
......@@ -1137,7 +1186,12 @@ OUTER: for (int i = 0; i < n; i += m) {
char ch = '\u0000';
int charsPerEntry = -entriesPerChar;
for (int j=0; j<table.length; ++j) {
long entry = table[j] >> extract;
//long entry = table[j] >> extract;
long entry;
if ("A".equals(name))
entry = (table[j] & 0xffffffffL) >> extract;
else
entry = (table[j] >> extract);
if (shiftEntries) entry <<= shift;
if (entry >= (1L << bits)) {
FAIL("Entry too big");
......@@ -1549,6 +1603,7 @@ OUTER: for (int i = 0; i < n; i += m) {
static String OutputFileName = null;
static String UnicodeSpecFileName = null; // liu
static String SpecialCasingFileName = null;
static String PropListFileName = null;
static boolean useCharForByte = false;
static int[] sizes;
static int bins = 0; // liu; if > 0, then perform search
......@@ -1668,20 +1723,28 @@ OUTER: for (int i = 0; i < n; i += m) {
SpecialCasingFileName = args[++j];
}
}
else if (args[j].equals("-plane")) {
if (j == args.length -1) {
FAIL("Plane number missing after -plane");
}
else {
plane = Integer.parseInt(args[++j]);
}
if (plane > 0) {
bLatin1 = false;
}
}
else if ("-usecharforbyte".equals(args[j])) {
useCharForByte = true;
}
else if (args[j].equals("-proplist")) {
if (j == args.length -1) {
FAIL("File name missing after -proplist");
}
else {
PropListFileName = args[++j];
}
}
else if (args[j].equals("-plane")) {
if (j == args.length -1) {
FAIL("Plane number missing after -plane");
}
else {
plane = Integer.parseInt(args[++j]);
}
if (plane > 0) {
bLatin1 = false;
}
}
else if ("-usecharforbyte".equals(args[j])) {
useCharForByte = true;
}
else if (args[j].equals("-latin1")) {
bLatin1 = true;
plane = 0;
......@@ -1728,6 +1791,10 @@ OUTER: for (int i = 0; i < n; i += m) {
SpecialCasingFileName = DefaultSpecialCasingFileName;
desc.append(" [-specialcasing " + SpecialCasingFileName + ']');
}
if (PropListFileName == null) {
PropListFileName = DefaultPropListFileName;
desc.append(" [-proplist " + PropListFileName + ']');
}
if (TemplateFileName == null) {
TemplateFileName = (Csyntax ? DefaultCTemplateFileName
: DefaultJavaTemplateFileName);
......@@ -1877,12 +1944,13 @@ OUTER: for (int i = 0; i < n; i += m) {
try {
UnicodeSpec[] data = UnicodeSpec.readSpecFile(new File(UnicodeSpecFileName), plane);
specialCaseMaps = SpecialCaseMap.readSpecFile(new File(SpecialCasingFileName), plane);
PropList propList = PropList.readSpecFile(new File(PropListFileName), plane);
if (verbose) {
System.out.println(data.length + " items read from Unicode spec file " + UnicodeSpecFileName); // liu
}
long[] map = buildMap(data, specialCaseMaps);
long[] map = buildMap(data, specialCaseMaps, propList);
if (verbose) {
System.err.println("Completed building of initial map");
}
......
/*
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* 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 build.tools.generatecharacter;
import java.util.regex.*;
import java.util.*;
import java.io.*;
/**
* A PropList object contains the lists of code points that have
* the same Unicode property defined in PropList.txt
*
* @author Xueming Shen
*/
public class PropList {
public static PropList readSpecFile(File file, int plane)
throws IOException
{
return new PropList(file, plane);
}
public List<Integer> codepoints(String name) {
return propMap.get(name);
}
public Set<String> names() {
return propMap.keySet();
}
private Map<String, ArrayList<Integer>> propMap =
new LinkedHashMap<String, ArrayList<Integer>>();
private PropList(File file, int plane) throws IOException {
int i, j;
BufferedReader sbfr = new BufferedReader(new FileReader(file));
Matcher m = Pattern.compile("(\\p{XDigit}+)(?:\\.{2}(\\p{XDigit}+))?\\s*;\\s+(\\w+)\\s+#.*").matcher("");
String line = null;
int lineNo = 0;
while ((line = sbfr.readLine()) != null) {
lineNo++;
if (line.length() <= 1 || line.charAt(0) == '#') {
continue;
}
m.reset(line);
if (m.matches()) {
int start = Integer.parseInt(m.group(1), 16);
if ((start >> 16) != plane)
continue;
int end = (m.group(2)==null)?start
:Integer.parseInt(m.group(2), 16);
String name = m.group(3);
start &= 0xffff;
end &= 0xffff;
ArrayList<Integer> list = propMap.get(name);
if (list == null) {
list = new ArrayList<Integer>();
propMap.put(name, list);
}
while (start <= end)
list.add(start++);
} else {
System.out.printf("Warning: Unrecognized line %d <%s>%n", lineNo, line);
}
}
sbfr.close();
//for (String name: propMap.keySet()) {
// System.out.printf("%s %d%n", name, propMap.get(name).size());
//}
}
public static void main(String[] args) throws IOException {
readSpecFile(new File(args[0]), Integer.decode(args[1]));
}
}
......@@ -1666,7 +1666,7 @@ public class CachedRowSetImpl extends BaseRowSet implements RowSet, RowSetIntern
*/
protected void removeCurrentRow() {
((Row)getCurrentRow()).setDeleted();
rvh.remove(cursorPos);
rvh.remove(cursorPos - 1);
--numRows;
}
......@@ -6349,7 +6349,6 @@ public class CachedRowSetImpl extends BaseRowSet implements RowSet, RowSetIntern
// this can happen if deleted rows are being shown
if (row.getDeleted() == true) {
removeCurrentRow();
--numRows;
}
}
......
/*
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -395,7 +395,13 @@ public class Krb5LoginModule implements LoginModule {
private boolean succeeded = false;
private boolean commitSucceeded = false;
private String username;
// Encryption keys calculated from password. Assigned when storekey == true
// and useKeyTab == false (or true but not found)
private EncryptionKey[] encKeys = null;
KeyTab ktab = null;
private Credentials cred = null;
private PrincipalName principal = null;
......@@ -663,28 +669,49 @@ public class Krb5LoginModule implements LoginModule {
(krb5PrincName.toString(),
PrincipalName.KRB_NT_PRINCIPAL);
}
/*
* Before dynamic KeyTab support (6894072), here we check if
* the keytab contains keys for the principal. If no, keytab
* will not be used and password is prompted for.
*
* After 6894072, we normally don't check it, and expect the
* keys can be populated until a real connection is made. The
* check is still done when isInitiator == true, where the keys
* will be used right now.
*
* Probably tricky relations:
*
* useKeyTab is config flag, but when it's true but the ktab
* does not contains keys for principal, we would use password
* and keep the flag unchanged (for reuse?). In this method,
* we use (ktab != null) to check whether keytab is used.
* After this method (and when storeKey == true), we use
* (encKeys == null) to check.
*/
if (useKeyTab) {
encKeys =
EncryptionKey.acquireSecretKeys(principal, keyTabName);
if (debug) {
if (encKeys != null)
System.out.println
("principal's key obtained from the keytab");
else
System.out.println
("Key for the principal " +
principal +
" not available in " +
((keyTabName == null) ?
"default key tab" : keyTabName));
ktab = (keyTabName == null)
? KeyTab.getInstance()
: KeyTab.getInstance(new File(keyTabName));
if (isInitiator) {
if (Krb5Util.keysFromJavaxKeyTab(ktab, principal).length
== 0) {
ktab = null;
if (debug) {
System.out.println
("Key for the principal " +
principal +
" not available in " +
((keyTabName == null) ?
"default key tab" : keyTabName));
}
}
}
}
KrbAsReqBuilder builder;
// We can't get the key from the keytab so prompt
if (encKeys == null) {
if (ktab == null) {
promptForPass(getPasswdFromSharedState);
builder = new KrbAsReqBuilder(principal, password);
if (isInitiator) {
......@@ -693,9 +720,13 @@ public class Krb5LoginModule implements LoginModule {
// updated with PA info
cred = builder.action().getCreds();
}
encKeys = builder.getKeys();
if (storeKey) {
encKeys = builder.getKeys();
// When encKeys is empty, the login actually fails.
// For compatibility, exception is thrown in commit().
}
} else {
builder = new KrbAsReqBuilder(principal, encKeys);
builder = new KrbAsReqBuilder(principal, ktab);
if (isInitiator) {
cred = builder.action().getCreds();
}
......@@ -705,10 +736,15 @@ public class Krb5LoginModule implements LoginModule {
if (debug) {
System.out.println("principal is " + principal);
HexDumpEncoder hd = new HexDumpEncoder();
for (int i = 0; i < encKeys.length; i++) {
System.out.println("EncryptionKey: keyType=" +
encKeys[i].getEType() + " keyBytes (hex dump)=" +
hd.encodeBuffer(encKeys[i].getBytes()));
if (ktab != null) {
System.out.println("Will use keytab");
} else if (storeKey) {
for (int i = 0; i < encKeys.length; i++) {
System.out.println("EncryptionKey: keyType=" +
encKeys[i].getEType() +
" keyBytes (hex dump)=" +
hd.encodeBuffer(encKeys[i].getBytes()));
}
}
}
......@@ -989,8 +1025,8 @@ public class Krb5LoginModule implements LoginModule {
kerbTicket = Krb5Util.credsToTicket(cred);
}
if (storeKey) {
if (encKeys == null || encKeys.length <= 0) {
if (storeKey && encKeys != null) {
if (encKeys.length == 0) {
succeeded = false;
throw new LoginException("Null Server Key ");
}
......@@ -1006,10 +1042,11 @@ public class Krb5LoginModule implements LoginModule {
}
}
// Let us add the kerbClientPrinc,kerbTicket and kerbKey (if
// Let us add the kerbClientPrinc,kerbTicket and KeyTab/KerbKey (if
// storeKey is true)
if (!princSet.contains(kerbClientPrinc))
if (!princSet.contains(kerbClientPrinc)) {
princSet.add(kerbClientPrinc);
}
// add the TGT
if (kerbTicket != null) {
......@@ -1018,19 +1055,29 @@ public class Krb5LoginModule implements LoginModule {
}
if (storeKey) {
for (int i = 0; i < kerbKeys.length; i++) {
if (!privCredSet.contains(kerbKeys[i])) {
privCredSet.add(kerbKeys[i]);
if (encKeys == null) {
if (!privCredSet.contains(ktab)) {
privCredSet.add(ktab);
// Compatibility; also add keys to privCredSet
for (KerberosKey key: ktab.getKeys(kerbClientPrinc)) {
privCredSet.add(new Krb5Util.KeysFromKeyTab(key));
}
}
encKeys[i].destroy();
encKeys[i] = null;
if (debug) {
System.out.println("Added server's key"
+ kerbKeys[i]);
System.out.println("\t\t[Krb5LoginModule] " +
"added Krb5Principal " +
kerbClientPrinc.toString()
+ " to Subject");
} else {
for (int i = 0; i < kerbKeys.length; i ++) {
if (!privCredSet.contains(kerbKeys[i])) {
privCredSet.add(kerbKeys[i]);
}
encKeys[i].destroy();
encKeys[i] = null;
if (debug) {
System.out.println("Added server's key"
+ kerbKeys[i]);
System.out.println("\t\t[Krb5LoginModule] " +
"added Krb5Principal " +
kerbClientPrinc.toString()
+ " to Subject");
}
}
}
}
......@@ -1106,7 +1153,8 @@ public class Krb5LoginModule implements LoginModule {
while (it.hasNext()) {
Object o = it.next();
if (o instanceof KerberosTicket ||
o instanceof KerberosKey) {
o instanceof KerberosKey ||
o instanceof KeyTab) {
it.remove();
}
}
......@@ -1161,6 +1209,7 @@ public class Krb5LoginModule implements LoginModule {
} else {
// remove temp results for the next try
encKeys = null;
ktab = null;
principal = null;
}
username = null;
......
......@@ -26,7 +26,6 @@
package com.sun.tools.example.debug.bdi;
import com.sun.jdi.*;
import com.sun.jdi.request.*;
public class AccessWatchpointSpec extends WatchpointSpec {
......@@ -38,6 +37,7 @@ public class AccessWatchpointSpec extends WatchpointSpec {
/**
* The 'refType' is known to match.
*/
@Override
void resolve(ReferenceType refType) throws InvalidTypeException,
NoSuchFieldException {
if (!(refType instanceof ClassType)) {
......@@ -51,6 +51,7 @@ public class AccessWatchpointSpec extends WatchpointSpec {
.createAccessWatchpointRequest(field));
}
@Override
public boolean equals(Object obj) {
return (obj instanceof AccessWatchpointSpec) && super.equals(obj);
}
......
......@@ -27,6 +27,9 @@ package com.sun.tools.example.debug.bdi;
public class AmbiguousMethodException extends Exception
{
private static final long serialVersionUID = 7793370943251707514L;
public AmbiguousMethodException()
{
super();
......
......@@ -25,30 +25,33 @@
package com.sun.tools.example.debug.bdi;
import com.sun.jdi.request.*;
public abstract class BreakpointSpec extends EventRequestSpec {
BreakpointSpec(EventRequestSpecList specs, ReferenceTypeSpec refSpec) {
super(specs, refSpec);
}
@Override
void notifySet(SpecListener listener, SpecEvent evt) {
listener.breakpointSet(evt);
}
@Override
void notifyDeferred(SpecListener listener, SpecEvent evt) {
listener.breakpointDeferred(evt);
}
@Override
void notifyResolved(SpecListener listener, SpecEvent evt) {
listener.breakpointResolved(evt);
}
@Override
void notifyDeleted(SpecListener listener, SpecEvent evt) {
listener.breakpointDeleted(evt);
}
@Override
void notifyError(SpecListener listener, SpecErrorEvent evt) {
listener.breakpointError(evt);
}
......
......@@ -43,10 +43,6 @@ class ChildSession extends Session {
private BufferedReader out;
private BufferedReader err;
private InputWriter inputWriter;
private OutputReader outputReader;
private OutputReader errorReader;
private InputListener input;
private OutputListener output;
private OutputListener error;
......@@ -84,6 +80,7 @@ class ChildSession extends Session {
this.error = error;
}
@Override
public boolean attach() {
if (!connectToVMProcess()) {
......@@ -131,6 +128,7 @@ class ChildSession extends Session {
return true;
}
@Override
public void detach() {
//### debug
......@@ -242,10 +240,7 @@ class ChildSession extends Session {
this.diagnostics = diagnostics;
}
public void quit() {
running = false;
}
@Override
public void run() {
try {
int count;
......@@ -254,6 +249,7 @@ class ChildSession extends Session {
// Run in Swing event dispatcher thread.
final String chars = new String(buffer, 0, count);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
output.putString(chars);
}
......@@ -264,6 +260,7 @@ class ChildSession extends Session {
} catch (IOException e) {
// Run in Swing event dispatcher thread.
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
diagnostics.putString("IO error reading " +
streamName +
......@@ -288,11 +285,7 @@ class ChildSession extends Session {
this.input = input;
}
public void quit() {
//### Won't have much effect if blocked on input!
running = false;
}
@Override
public void run() {
String line;
while (running) {
......
......@@ -25,4 +25,7 @@
package com.sun.tools.example.debug.bdi;
public class EvaluationException extends Exception {}
public class EvaluationException extends Exception {
private static final long serialVersionUID = 4947109680354951694L;
}
......@@ -25,8 +25,6 @@
package com.sun.tools.example.debug.bdi;
import java.util.*;
import com.sun.jdi.*;
import com.sun.jdi.request.EventRequest;
......
......@@ -26,11 +26,6 @@
package com.sun.tools.example.debug.bdi;
import com.sun.jdi.ReferenceType;
import com.sun.jdi.request.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
public class ExceptionSpec extends EventRequestSpec {
......@@ -45,22 +40,27 @@ public class ExceptionSpec extends EventRequestSpec {
this.notifyUncaught = notifyUncaught;
}
@Override
void notifySet(SpecListener listener, SpecEvent evt) {
listener.exceptionInterceptSet(evt);
}
@Override
void notifyDeferred(SpecListener listener, SpecEvent evt) {
listener.exceptionInterceptDeferred(evt);
}
@Override
void notifyResolved(SpecListener listener, SpecEvent evt) {
listener.exceptionInterceptResolved(evt);
}
@Override
void notifyDeleted(SpecListener listener, SpecEvent evt) {
listener.exceptionInterceptDeleted(evt);
}
@Override
void notifyError(SpecListener listener, SpecErrorEvent evt) {
listener.exceptionInterceptError(evt);
}
......@@ -68,16 +68,19 @@ public class ExceptionSpec extends EventRequestSpec {
/**
* The 'refType' is known to match.
*/
@Override
void resolve(ReferenceType refType) {
setRequest(refType.virtualMachine().eventRequestManager()
.createExceptionRequest(refType,
notifyCaught, notifyUncaught));
}
@Override
public int hashCode() {
return refSpec.hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj instanceof ExceptionSpec) {
ExceptionSpec es = (ExceptionSpec)obj;
......@@ -88,6 +91,7 @@ public class ExceptionSpec extends EventRequestSpec {
}
}
@Override
public String toString() {
StringBuffer buffer = new StringBuffer("exception catch ");
buffer.append(refSpec.toString());
......
......@@ -26,7 +26,6 @@
package com.sun.tools.example.debug.bdi;
import com.sun.jdi.*;
import com.sun.jdi.event.*;
import com.sun.jdi.request.*;
import com.sun.jdi.connect.*;
import com.sun.tools.example.debug.expr.ExpressionParser;
......@@ -56,7 +55,7 @@ public class ExecutionManager {
// Session Listeners
Vector<SessionListener> sessionListeners = new Vector<SessionListener>();
ArrayList<SessionListener> sessionListeners = new ArrayList<SessionListener>();
public void addSessionListener(SessionListener listener) {
sessionListeners.add(listener);
......@@ -68,7 +67,7 @@ public class ExecutionManager {
// Spec Listeners
Vector<SpecListener> specListeners = new Vector<SpecListener>();
ArrayList<SpecListener> specListeners = new ArrayList<SpecListener>();
public void addSpecListener(SpecListener cl) {
specListeners.add(cl);
......@@ -80,7 +79,7 @@ public class ExecutionManager {
// JDI Listeners
Vector<JDIListener> jdiListeners = new Vector<JDIListener>();
ArrayList<JDIListener> jdiListeners = new ArrayList<JDIListener>();
/**
* Adds a JDIListener
......@@ -105,50 +104,50 @@ public class ExecutionManager {
// App Echo Listeners
private Vector<OutputListener> appEchoListeners = new Vector<OutputListener>();
private ArrayList<OutputListener> appEchoListeners = new ArrayList<OutputListener>();
public void addApplicationEchoListener(OutputListener l) {
appEchoListeners.addElement(l);
appEchoListeners.add(l);
}
public void removeApplicationEchoListener(OutputListener l) {
appEchoListeners.removeElement(l);
appEchoListeners.remove(l);
}
// App Output Listeners
private Vector<OutputListener> appOutputListeners = new Vector<OutputListener>();
private ArrayList<OutputListener> appOutputListeners = new ArrayList<OutputListener>();
public void addApplicationOutputListener(OutputListener l) {
appOutputListeners.addElement(l);
appOutputListeners.add(l);
}
public void removeApplicationOutputListener(OutputListener l) {
appOutputListeners.removeElement(l);
appOutputListeners.remove(l);
}
// App Error Listeners
private Vector<OutputListener> appErrorListeners = new Vector<OutputListener>();
private ArrayList<OutputListener> appErrorListeners = new ArrayList<OutputListener>();
public void addApplicationErrorListener(OutputListener l) {
appErrorListeners.addElement(l);
appErrorListeners.add(l);
}
public void removeApplicationErrorListener(OutputListener l) {
appErrorListeners.removeElement(l);
appErrorListeners.remove(l);
}
// Diagnostic Listeners
private Vector<OutputListener> diagnosticsListeners = new Vector<OutputListener>();
private ArrayList<OutputListener> diagnosticsListeners = new ArrayList<OutputListener>();
public void addDiagnosticsListener(OutputListener l) {
diagnosticsListeners.addElement(l);
diagnosticsListeners.add(l);
}
public void removeDiagnosticsListener(OutputListener l) {
diagnosticsListeners.removeElement(l);
diagnosticsListeners.remove(l);
}
/////////// End Listener Registration //////////////
......@@ -159,7 +158,9 @@ public class ExecutionManager {
}
void ensureActiveSession() throws NoSessionException {
if (session == null) throw new NoSessionException();
if (session == null) {
throw new NoSessionException();
}
}
public EventRequestManager eventRequestManager() {
......@@ -293,6 +294,7 @@ public class ExecutionManager {
ensureActiveSession();
if (f != null) {
frameGetter = new ExpressionParser.GetFrame() {
@Override
public StackFrame get() /* throws IncompatibleThreadStateException */ {
return f;
}
......@@ -628,35 +630,35 @@ public class ExecutionManager {
*/
private void notifyInterrupted() {
Vector l = (Vector)sessionListeners.clone();
ArrayList<SessionListener> l = new ArrayList<SessionListener>(sessionListeners);
EventObject evt = new EventObject(this);
for (int i = 0; i < l.size(); i++) {
((SessionListener)l.elementAt(i)).sessionInterrupt(evt);
l.get(i).sessionInterrupt(evt);
}
}
private void notifyContinued() {
Vector l = (Vector)sessionListeners.clone();
ArrayList<SessionListener> l = new ArrayList<SessionListener>(sessionListeners);
EventObject evt = new EventObject(this);
for (int i = 0; i < l.size(); i++) {
((SessionListener)l.elementAt(i)).sessionContinue(evt);
l.get(i).sessionContinue(evt);
}
}
private void notifySessionStart() {
Vector l = (Vector)sessionListeners.clone();
ArrayList<SessionListener> l = new ArrayList<SessionListener>(sessionListeners);
EventObject evt = new EventObject(this);
for (int i = 0; i < l.size(); i++) {
((SessionListener)l.elementAt(i)).sessionStart(evt);
l.get(i).sessionStart(evt);
}
}
private void notifySessionDeath() {
/*** noop for now
Vector l = (Vector)sessionListeners.clone();
ArrayList<SessionListener> l = new ArrayList<SessionListener>(sessionListeners);
EventObject evt = new EventObject(this);
for (int i = 0; i < l.size(); i++) {
((SessionListener)l.elementAt(i)).sessionDeath(evt);
((SessionListener)l.get(i)).sessionDeath(evt);
}
****/
}
......@@ -684,6 +686,7 @@ public class ExecutionManager {
}
private InputListener appInput = new InputListener() {
@Override
public String getLine() {
// Don't allow reader to be interrupted -- catch and retry.
String line = null;
......@@ -703,6 +706,7 @@ public class ExecutionManager {
// Run in Swing event dispatcher thread.
final String input = line;
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
echoInputLine(input);
}
......@@ -714,37 +718,40 @@ public class ExecutionManager {
private static String newline = System.getProperty("line.separator");
private void echoInputLine(String line) {
Vector l = (Vector)appEchoListeners.clone();
ArrayList<OutputListener> l = new ArrayList<OutputListener>(appEchoListeners);
for (int i = 0; i < l.size(); i++) {
OutputListener ol = (OutputListener)l.elementAt(i);
OutputListener ol = l.get(i);
ol.putString(line);
ol.putString(newline);
}
}
private OutputListener appOutput = new OutputListener() {
@Override
public void putString(String string) {
Vector l = (Vector)appOutputListeners.clone();
ArrayList<OutputListener> l = new ArrayList<OutputListener>(appEchoListeners);
for (int i = 0; i < l.size(); i++) {
((OutputListener)l.elementAt(i)).putString(string);
l.get(i).putString(string);
}
}
};
private OutputListener appError = new OutputListener() {
@Override
public void putString(String string) {
Vector l = (Vector)appErrorListeners.clone();
ArrayList<OutputListener> l = new ArrayList<OutputListener>(appEchoListeners);
for (int i = 0; i < l.size(); i++) {
((OutputListener)l.elementAt(i)).putString(string);
l.get(i).putString(string);
}
}
};
private OutputListener diagnostics = new OutputListener() {
@Override
public void putString(String string) {
Vector l = (Vector)diagnosticsListeners.clone();
ArrayList<OutputListener> l = new ArrayList<OutputListener>(diagnosticsListeners);
for (int i = 0; i < l.size(); i++) {
((OutputListener)l.elementAt(i)).putString(string);
l.get(i).putString(string);
}
}
};
......
......@@ -25,4 +25,7 @@
package com.sun.tools.example.debug.bdi;
public class FrameIndexOutOfBoundsException extends IndexOutOfBoundsException {}
public class FrameIndexOutOfBoundsException extends IndexOutOfBoundsException {
private static final long serialVersionUID = -4870148107027371437L;
}
......@@ -28,8 +28,6 @@ package com.sun.tools.example.debug.bdi;
import com.sun.jdi.*;
import com.sun.jdi.event.*;
import java.util.*;
import com.sun.tools.example.debug.event.*;
import javax.swing.SwingUtilities;
......@@ -55,6 +53,7 @@ class JDIEventSource extends Thread {
this.queue = session.vm.eventQueue();
}
@Override
public void run() {
try {
runLoop();
......@@ -78,6 +77,7 @@ class JDIEventSource extends Thread {
//### Gross foul hackery!
private void dispatchEventSet(final AbstractEventSet es) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
boolean interrupted = es.suspendedAll();
es.notify(firstListener);
......@@ -117,54 +117,65 @@ class JDIEventSource extends Thread {
//### This is a Hack, deal with it
private class FirstListener implements JDIListener {
@Override
public void accessWatchpoint(AccessWatchpointEventSet e) {
session.runtime.validateThreadInfo();
wantInterrupt = true;
}
@Override
public void classPrepare(ClassPrepareEventSet e) {
wantInterrupt = false;
runtime.resolve(e.getReferenceType());
}
@Override
public void classUnload(ClassUnloadEventSet e) {
wantInterrupt = false;
}
@Override
public void exception(ExceptionEventSet e) {
wantInterrupt = true;
}
@Override
public void locationTrigger(LocationTriggerEventSet e) {
session.runtime.validateThreadInfo();
wantInterrupt = true;
}
@Override
public void modificationWatchpoint(ModificationWatchpointEventSet e) {
session.runtime.validateThreadInfo();
wantInterrupt = true;
}
@Override
public void threadDeath(ThreadDeathEventSet e) {
wantInterrupt = false;
}
@Override
public void threadStart(ThreadStartEventSet e) {
wantInterrupt = false;
}
@Override
public void vmDeath(VMDeathEventSet e) {
//### Should have some way to notify user
//### that VM died before the session ended.
wantInterrupt = false;
}
@Override
public void vmDisconnect(VMDisconnectEventSet e) {
//### Notify user?
wantInterrupt = false;
session.runtime.endSession();
}
@Override
public void vmStart(VMStartEventSet e) {
//### Do we need to do anything with it?
wantInterrupt = false;
......
......@@ -26,11 +26,7 @@
package com.sun.tools.example.debug.bdi;
import com.sun.jdi.*;
import com.sun.jdi.request.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
public class LineBreakpointSpec extends BreakpointSpec {
int lineNumber;
......@@ -44,6 +40,7 @@ public class LineBreakpointSpec extends BreakpointSpec {
/**
* The 'refType' is known to match.
*/
@Override
void resolve(ReferenceType refType) throws InvalidTypeException,
LineNotFoundException {
if (!(refType instanceof ClassType)) {
......@@ -81,10 +78,12 @@ public class LineBreakpointSpec extends BreakpointSpec {
return lineNumber;
}
@Override
public int hashCode() {
return refSpec.hashCode() + lineNumber;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof LineBreakpointSpec) {
LineBreakpointSpec breakpoint = (LineBreakpointSpec)obj;
......@@ -96,6 +95,7 @@ public class LineBreakpointSpec extends BreakpointSpec {
}
}
@Override
public String errorMessageFor(Exception e) {
if (e instanceof LineNotFoundException) {
return ("No code at line " + lineNumber() + " in " + refSpec);
......@@ -107,6 +107,7 @@ public class LineBreakpointSpec extends BreakpointSpec {
}
}
@Override
public String toString() {
StringBuffer buffer = new StringBuffer("breakpoint ");
buffer.append(refSpec.toString());
......
......@@ -27,6 +27,9 @@ package com.sun.tools.example.debug.bdi;
public class LineNotFoundException extends Exception
{
private static final long serialVersionUID = -5630418117861587582L;
public LineNotFoundException()
{
super();
......
......@@ -26,6 +26,9 @@
package com.sun.tools.example.debug.bdi;
class MalformedMemberNameException extends Exception {
private static final long serialVersionUID = -7726664097374844485L;
public MalformedMemberNameException() {
super();
}
......
......@@ -26,11 +26,8 @@
package com.sun.tools.example.debug.bdi;
import com.sun.jdi.*;
import com.sun.jdi.request.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
public class MethodBreakpointSpec extends BreakpointSpec {
String methodId;
......@@ -47,6 +44,7 @@ public class MethodBreakpointSpec extends BreakpointSpec {
/**
* The 'refType' is known to match.
*/
@Override
void resolve(ReferenceType refType) throws MalformedMemberNameException,
AmbiguousMethodException,
InvalidTypeException,
......@@ -80,12 +78,14 @@ public class MethodBreakpointSpec extends BreakpointSpec {
return methodArgs;
}
@Override
public int hashCode() {
return refSpec.hashCode() +
((methodId != null) ? methodId.hashCode() : 0) +
((methodArgs != null) ? methodArgs.hashCode() : 0);
}
@Override
public boolean equals(Object obj) {
if (obj instanceof MethodBreakpointSpec) {
MethodBreakpointSpec breakpoint = (MethodBreakpointSpec)obj;
......@@ -98,6 +98,7 @@ public class MethodBreakpointSpec extends BreakpointSpec {
}
}
@Override
public String errorMessageFor(Exception e) {
if (e instanceof AmbiguousMethodException) {
return ("Method " + methodName() + " is overloaded; specify arguments");
......@@ -114,6 +115,7 @@ public class MethodBreakpointSpec extends BreakpointSpec {
}
}
@Override
public String toString() {
StringBuffer buffer = new StringBuffer("breakpoint ");
buffer.append(refSpec.toString());
......@@ -257,7 +259,7 @@ public class MethodBreakpointSpec extends BreakpointSpec {
*/
if ((name.indexOf('.') == -1) || name.startsWith("*.")) {
try {
List refs = specs.runtime.findClassesMatchingPattern(name);
List<?> refs = specs.runtime.findClassesMatchingPattern(name);
if (refs.size() > 0) { //### ambiguity???
name = ((ReferenceType)(refs.get(0))).name();
}
......
......@@ -27,6 +27,8 @@ package com.sun.tools.example.debug.bdi;
public class MethodNotFoundException extends Exception
{
private static final long serialVersionUID = -2064968107599632609L;
public MethodNotFoundException()
{
super();
......
......@@ -26,7 +26,6 @@
package com.sun.tools.example.debug.bdi;
import com.sun.jdi.*;
import com.sun.jdi.request.*;
public class ModificationWatchpointSpec extends WatchpointSpec {
......@@ -38,6 +37,7 @@ public class ModificationWatchpointSpec extends WatchpointSpec {
/**
* The 'refType' is known to match.
*/
@Override
void resolve(ReferenceType refType) throws InvalidTypeException,
NoSuchFieldException {
if (!(refType instanceof ClassType)) {
......@@ -51,6 +51,7 @@ public class ModificationWatchpointSpec extends WatchpointSpec {
.createModificationWatchpointRequest(field));
}
@Override
public boolean equals(Object obj) {
return (obj instanceof ModificationWatchpointSpec) &&
super.equals(obj);
......
......@@ -25,4 +25,7 @@
package com.sun.tools.example.debug.bdi;
public class NoSessionException extends Exception {}
public class NoSessionException extends Exception {
private static final long serialVersionUID = -7324357828115128603L;
}
......@@ -25,4 +25,8 @@
package com.sun.tools.example.debug.bdi;
public class NoThreadException extends Exception {}
public class NoThreadException extends Exception {
private static final long serialVersionUID = 1846613539928921998L;
}
......@@ -47,6 +47,7 @@ class PatternReferenceTypeSpec implements ReferenceTypeSpec {
/**
* Does the specified ReferenceType match this spec.
*/
@Override
public boolean matches(ReferenceType refType) {
if (isWild) {
return refType.name().endsWith(classId);
......@@ -55,10 +56,12 @@ class PatternReferenceTypeSpec implements ReferenceTypeSpec {
}
}
@Override
public int hashCode() {
return classId.hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj instanceof PatternReferenceTypeSpec) {
PatternReferenceTypeSpec spec = (PatternReferenceTypeSpec)obj;
......@@ -89,6 +92,7 @@ class PatternReferenceTypeSpec implements ReferenceTypeSpec {
}
}
@Override
public String toString() {
return isWild? "*" + classId : classId;
}
......
......@@ -33,7 +33,9 @@ interface ReferenceTypeSpec {
*/
boolean matches(ReferenceType refType);
@Override
int hashCode();
@Override
boolean equals(Object obj);
}
......@@ -27,7 +27,6 @@ package com.sun.tools.example.debug.bdi;
import com.sun.jdi.VirtualMachine;
import com.sun.jdi.VMDisconnectedException;
import com.sun.jdi.event.EventSet;
/**
* Our repository of what we know about the state of one
......
......@@ -39,6 +39,7 @@ class SourceNameReferenceTypeSpec implements ReferenceTypeSpec {
/**
* Does the specified ReferenceType match this spec.
*/
@Override
public boolean matches(ReferenceType refType) {
try {
if (refType.sourceName().equals(sourceName)) {
......@@ -48,9 +49,6 @@ class SourceNameReferenceTypeSpec implements ReferenceTypeSpec {
return true;
} catch(AbsentInformationException exc) {
} catch(ObjectCollectedException exc) {
} catch(InvalidLineNumberException exc) {
// } catch(ClassNotPreparedException exc) {
// -- should not happen, so don't catch this ---
}
}
} catch(AbsentInformationException exc) {
......@@ -59,10 +57,12 @@ class SourceNameReferenceTypeSpec implements ReferenceTypeSpec {
return false;
}
@Override
public int hashCode() {
return sourceName.hashCode() + linenumber;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof SourceNameReferenceTypeSpec) {
SourceNameReferenceTypeSpec spec = (SourceNameReferenceTypeSpec)obj;
......@@ -74,6 +74,7 @@ class SourceNameReferenceTypeSpec implements ReferenceTypeSpec {
}
}
@Override
public String toString() {
return sourceName + "@" + linenumber;
}
......
......@@ -25,10 +25,9 @@
package com.sun.tools.example.debug.bdi;
import java.util.EventObject;
public class SpecErrorEvent extends SpecEvent {
private static final long serialVersionUID = 8162634387866409578L;
private Exception reason;
public SpecErrorEvent(EventRequestSpec eventRequestSpec,
......
......@@ -31,6 +31,7 @@ import com.sun.jdi.request.EventRequest;
public class SpecEvent extends EventObject {
private static final long serialVersionUID = 4820735456787276230L;
private EventRequestSpec eventRequestSpec;
public SpecEvent(EventRequestSpec eventRequestSpec) {
......
......@@ -26,7 +26,6 @@
package com.sun.tools.example.debug.bdi;
import com.sun.jdi.ThreadGroupReference;
import com.sun.jdi.ThreadReference;
import java.util.List;
import java.util.Stack;
import java.util.ArrayList;
......@@ -73,10 +72,12 @@ public class ThreadGroupIterator implements Iterator<ThreadGroupReference> {
}
}
@Override
public boolean hasNext() {
return !stack.isEmpty();
}
@Override
public ThreadGroupReference next() {
return nextThreadGroup();
}
......@@ -87,6 +88,7 @@ public class ThreadGroupIterator implements Iterator<ThreadGroupReference> {
return tg;
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
......
......@@ -26,9 +26,6 @@
package com.sun.tools.example.debug.bdi;
import com.sun.jdi.*;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
//### Should handle target VM death or connection failure cleanly.
......
......@@ -43,6 +43,7 @@ public class ThreadIterator implements Iterator<ThreadReference> {
tgi = new ThreadGroupIterator(tgl);
}
@Override
public boolean hasNext() {
while (it == null || !it.hasNext()) {
if (!tgi.hasNext()) {
......@@ -53,6 +54,7 @@ public class ThreadIterator implements Iterator<ThreadReference> {
return true;
}
@Override
public ThreadReference next() {
return it.next();
}
......@@ -61,6 +63,7 @@ public class ThreadIterator implements Iterator<ThreadReference> {
return next();
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
......
......@@ -26,9 +26,6 @@
package com.sun.tools.example.debug.bdi; //### does it belong here?
import com.sun.jdi.*;
import com.sun.tools.jdi.*;
import java.util.*;
import java.io.*;
public class Utils {
......
......@@ -25,4 +25,7 @@
package com.sun.tools.example.debug.bdi;
public class VMLaunchFailureException extends Exception {}
public class VMLaunchFailureException extends Exception {
private static final long serialVersionUID = -2439646729274310108L;
}
......@@ -25,4 +25,7 @@
package com.sun.tools.example.debug.bdi;
public class VMNotInterruptedException extends Exception {}
public class VMNotInterruptedException extends Exception {
private static final long serialVersionUID = 8111074582188765600L;
}
......@@ -25,9 +25,6 @@
package com.sun.tools.example.debug.bdi;
import com.sun.jdi.*;
import com.sun.jdi.request.*;
public abstract class WatchpointSpec extends EventRequestSpec {
final String fieldId;
......@@ -40,31 +37,38 @@ public abstract class WatchpointSpec extends EventRequestSpec {
// }
}
@Override
void notifySet(SpecListener listener, SpecEvent evt) {
listener.watchpointSet(evt);
}
@Override
void notifyDeferred(SpecListener listener, SpecEvent evt) {
listener.watchpointDeferred(evt);
}
@Override
void notifyResolved(SpecListener listener, SpecEvent evt) {
listener.watchpointResolved(evt);
}
@Override
void notifyDeleted(SpecListener listener, SpecEvent evt) {
listener.watchpointDeleted(evt);
}
@Override
void notifyError(SpecListener listener, SpecErrorEvent evt) {
listener.watchpointError(evt);
}
@Override
public int hashCode() {
return refSpec.hashCode() + fieldId.hashCode() +
getClass().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj instanceof WatchpointSpec) {
WatchpointSpec watchpoint = (WatchpointSpec)obj;
......@@ -77,6 +81,7 @@ public abstract class WatchpointSpec extends EventRequestSpec {
}
}
@Override
public String errorMessageFor(Exception e) {
if (e instanceof NoSuchFieldException) {
return ("No field " + fieldId + " in " + refSpec);
......
......@@ -33,6 +33,7 @@ import java.util.*;
public abstract class AbstractEventSet extends EventObject implements EventSet {
private static final long serialVersionUID = 2772717574222076977L;
private final EventSet jdiEventSet;
final Event oneEvent;
......@@ -81,6 +82,7 @@ public abstract class AbstractEventSet extends EventObject implements EventSet {
// Implement Mirror
@Override
public VirtualMachine virtualMachine() {
return jdiEventSet.virtualMachine();
}
......@@ -105,10 +107,12 @@ public abstract class AbstractEventSet extends EventObject implements EventSet {
return jdiEventSet.suspendPolicy();
}
@Override
public void resume() {
jdiEventSet.resume();
}
@Override
public int suspendPolicy() {
return jdiEventSet.suspendPolicy();
}
......@@ -128,6 +132,7 @@ public abstract class AbstractEventSet extends EventObject implements EventSet {
/**
* Return an iterator specific to {@link Event} objects.
*/
@Override
public EventIterator eventIterator() {
return jdiEventSet.eventIterator();
}
......@@ -142,6 +147,7 @@ public abstract class AbstractEventSet extends EventObject implements EventSet {
*
* @return the number of elements in this set (its cardinality).
*/
@Override
public int size() {
return jdiEventSet.size();
}
......@@ -151,6 +157,7 @@ public abstract class AbstractEventSet extends EventObject implements EventSet {
*
* @return <tt>true</tt> if this set contains no elements.
*/
@Override
public boolean isEmpty() {
return jdiEventSet.isEmpty();
}
......@@ -163,6 +170,7 @@ public abstract class AbstractEventSet extends EventObject implements EventSet {
*
* @return <tt>true</tt> if this set contains the specified element.
*/
@Override
public boolean contains(Object o) {
return jdiEventSet.contains(o);
}
......@@ -174,6 +182,7 @@ public abstract class AbstractEventSet extends EventObject implements EventSet {
*
* @return an iterator over the elements in this set.
*/
@Override
public Iterator<Event> iterator() {
return jdiEventSet.iterator();
}
......@@ -184,6 +193,7 @@ public abstract class AbstractEventSet extends EventObject implements EventSet {
*
* @return an array containing all of the elements in this set.
*/
@Override
public Object[] toArray() {
return jdiEventSet.toArray();
}
......@@ -202,6 +212,7 @@ public abstract class AbstractEventSet extends EventObject implements EventSet {
* @throws ArrayStoreException the runtime type of a is not a supertype
* of the runtime type of every element in this set.
*/
@Override
public <T> T[] toArray(T a[]) {
return jdiEventSet.toArray(a);
}
......@@ -217,6 +228,7 @@ public abstract class AbstractEventSet extends EventObject implements EventSet {
* @return <tt>true</tt> if this set contains all of the elements of the
* specified collection.
*/
@Override
public boolean containsAll(Collection<?> c) {
return jdiEventSet.containsAll(c);
}
......@@ -224,21 +236,27 @@ public abstract class AbstractEventSet extends EventObject implements EventSet {
// Make the rest of Set unmodifiable
@Override
public boolean add(Event e){
throw new UnsupportedOperationException();
}
@Override
public boolean remove(Object o) {
throw new UnsupportedOperationException();
}
@Override
public boolean addAll(Collection<? extends Event> coll) {
throw new UnsupportedOperationException();
}
@Override
public boolean removeAll(Collection<?> coll) {
throw new UnsupportedOperationException();
}
@Override
public boolean retainAll(Collection<?> coll) {
throw new UnsupportedOperationException();
}
@Override
public void clear() {
throw new UnsupportedOperationException();
}
......
......@@ -25,15 +25,17 @@
package com.sun.tools.example.debug.event;
import com.sun.jdi.*;
import com.sun.jdi.event.*;
public class AccessWatchpointEventSet extends WatchpointEventSet {
private static final long serialVersionUID = -2620394219156607673L;
AccessWatchpointEventSet(EventSet jdiEventSet) {
super(jdiEventSet);
}
@Override
public void notify(JDIListener listener) {
listener.accessWatchpoint(this);
}
......
......@@ -30,6 +30,8 @@ import com.sun.jdi.event.*;
public class ClassPrepareEventSet extends AbstractEventSet {
private static final long serialVersionUID = 5958493423581010491L;
ClassPrepareEventSet(EventSet jdiEventSet) {
super(jdiEventSet);
}
......@@ -55,6 +57,7 @@ public class ClassPrepareEventSet extends AbstractEventSet {
return ((ClassPrepareEvent)oneEvent).referenceType();
}
@Override
public void notify(JDIListener listener) {
listener.classPrepare(this);
}
......
......@@ -25,11 +25,12 @@
package com.sun.tools.example.debug.event;
import com.sun.jdi.*;
import com.sun.jdi.event.*;
public class ClassUnloadEventSet extends AbstractEventSet {
private static final long serialVersionUID = 8370341450345835866L;
ClassUnloadEventSet(EventSet jdiEventSet) {
super(jdiEventSet);
}
......@@ -48,6 +49,7 @@ public class ClassUnloadEventSet extends AbstractEventSet {
return ((ClassUnloadEvent)oneEvent).classSignature();
}
@Override
public void notify(JDIListener listener) {
listener.classUnload(this);
}
......
......@@ -30,6 +30,8 @@ import com.sun.jdi.event.*;
public class ExceptionEventSet extends LocatableEventSet {
private static final long serialVersionUID = 5328140167954640711L;
ExceptionEventSet(EventSet jdiEventSet) {
super(jdiEventSet);
}
......@@ -75,6 +77,7 @@ public class ExceptionEventSet extends LocatableEventSet {
return ((ExceptionEvent)oneEvent).catchLocation();
}
@Override
public void notify(JDIListener listener) {
listener.exception(this);
}
......
......@@ -33,36 +33,47 @@ package com.sun.tools.example.debug.event;
*/
public class JDIAdapter implements JDIListener {
@Override
public void accessWatchpoint(AccessWatchpointEventSet e) {
}
@Override
public void classPrepare(ClassPrepareEventSet e) {
}
@Override
public void classUnload(ClassUnloadEventSet e) {
}
@Override
public void exception(ExceptionEventSet e) {
}
@Override
public void locationTrigger(LocationTriggerEventSet e) {
}
@Override
public void modificationWatchpoint(ModificationWatchpointEventSet e) {
}
@Override
public void threadDeath(ThreadDeathEventSet e) {
}
@Override
public void threadStart(ThreadStartEventSet e) {
}
@Override
public void vmDeath(VMDeathEventSet e) {
}
@Override
public void vmDisconnect(VMDisconnectEventSet e) {
}
@Override
public void vmStart(VMStartEventSet e) {
}
......
......@@ -33,6 +33,8 @@ import com.sun.jdi.event.*;
*/
public abstract class LocatableEventSet extends AbstractEventSet {
private static final long serialVersionUID = 1027131209997915620L;
LocatableEventSet(EventSet jdiEventSet) {
super(jdiEventSet);
}
......
......@@ -25,15 +25,17 @@
package com.sun.tools.example.debug.event;
import com.sun.jdi.*;
import com.sun.jdi.event.*;
public class LocationTriggerEventSet extends LocatableEventSet {
private static final long serialVersionUID = -3674631710485872487L;
LocationTriggerEventSet(EventSet jdiEventSet) {
super(jdiEventSet);
}
@Override
public void notify(JDIListener listener) {
listener.locationTrigger(this);
}
......
......@@ -30,6 +30,8 @@ import com.sun.jdi.event.*;
public class ModificationWatchpointEventSet extends WatchpointEventSet {
private static final long serialVersionUID = -680889300856154719L;
ModificationWatchpointEventSet(EventSet jdiEventSet) {
super(jdiEventSet);
}
......@@ -42,6 +44,7 @@ public class ModificationWatchpointEventSet extends WatchpointEventSet {
return ((ModificationWatchpointEvent)oneEvent).valueToBe();
}
@Override
public void notify(JDIListener listener) {
listener.modificationWatchpoint(this);
}
......
......@@ -30,6 +30,8 @@ import com.sun.jdi.event.*;
public class ThreadDeathEventSet extends AbstractEventSet {
private static final long serialVersionUID = -8801604712308151331L;
ThreadDeathEventSet(EventSet jdiEventSet) {
super(jdiEventSet);
}
......@@ -44,6 +46,7 @@ public class ThreadDeathEventSet extends AbstractEventSet {
return ((ThreadDeathEvent)oneEvent).thread();
}
@Override
public void notify(JDIListener listener) {
listener.threadDeath(this);
}
......
......@@ -30,6 +30,8 @@ import com.sun.jdi.event.*;
public class ThreadStartEventSet extends AbstractEventSet {
private static final long serialVersionUID = -3802096132294933502L;
ThreadStartEventSet(EventSet jdiEventSet) {
super(jdiEventSet);
}
......@@ -44,6 +46,7 @@ public class ThreadStartEventSet extends AbstractEventSet {
return ((ThreadStartEvent)oneEvent).thread();
}
@Override
public void notify(JDIListener listener) {
listener.threadStart(this);
}
......
......@@ -29,10 +29,13 @@ import com.sun.jdi.event.*;
public class VMDeathEventSet extends AbstractEventSet {
private static final long serialVersionUID = 1163097303940092229L;
VMDeathEventSet(EventSet jdiEventSet) {
super(jdiEventSet);
}
@Override
public void notify(JDIListener listener) {
listener.vmDeath(this);
}
......
......@@ -29,10 +29,13 @@ import com.sun.jdi.event.*;
public class VMDisconnectEventSet extends AbstractEventSet {
private static final long serialVersionUID = 7968123152344675342L;
VMDisconnectEventSet(EventSet jdiEventSet) {
super(jdiEventSet);
}
@Override
public void notify(JDIListener listener) {
listener.vmDisconnect(this);
}
......
......@@ -30,6 +30,8 @@ import com.sun.jdi.event.*;
public class VMStartEventSet extends AbstractEventSet {
private static final long serialVersionUID = -3384957227835478191L;
VMStartEventSet(EventSet jdiEventSet) {
super(jdiEventSet);
}
......@@ -44,6 +46,7 @@ public class VMStartEventSet extends AbstractEventSet {
return ((VMStartEvent)oneEvent).thread();
}
@Override
public void notify(JDIListener listener) {
listener.vmStart(this);
}
......
......@@ -30,6 +30,8 @@ import com.sun.jdi.event.*;
public abstract class WatchpointEventSet extends LocatableEventSet {
private static final long serialVersionUID = 5606285209703845409L;
WatchpointEventSet(EventSet jdiEventSet) {
super(jdiEventSet);
}
......
......@@ -156,6 +156,7 @@ abstract class LValue {
return new LValueArrayElement(interiorGetValue(), index);
}
@Override
public String toString() {
try {
return interiorGetValue().toString();
......@@ -419,6 +420,7 @@ abstract class LValue {
this.var = var;
}
@Override
Value getValue() {
if (jdiValue == null) {
jdiValue = frame.getValue(var);
......@@ -426,12 +428,14 @@ abstract class LValue {
return jdiValue;
}
@Override
void setValue0(Value val) throws InvalidTypeException,
ClassNotLoadedException {
frame.setValue(var, val);
jdiValue = val;
}
@Override
void invokeWith(List<Value> arguments) throws ParseException {
throw new ParseException(var.name() + " is not a method");
}
......@@ -469,6 +473,7 @@ abstract class LValue {
}
}
@Override
Value getValue() throws InvocationException, InvalidTypeException,
ClassNotLoadedException, IncompatibleThreadStateException,
ParseException {
......@@ -485,6 +490,7 @@ abstract class LValue {
}
}
@Override
void setValue0(Value val) throws ParseException,
InvalidTypeException,
ClassNotLoadedException {
......@@ -495,6 +501,7 @@ abstract class LValue {
jdiValue = val;
}
@Override
void invokeWith(List<Value> arguments) throws ParseException {
if (matchingMethod != null) {
throw new ParseException("Invalid consecutive invocations");
......@@ -531,6 +538,7 @@ abstract class LValue {
}
}
@Override
Value getValue() throws InvocationException, InvalidTypeException,
ClassNotLoadedException, IncompatibleThreadStateException,
ParseException {
......@@ -548,6 +556,7 @@ abstract class LValue {
}
}
@Override
void setValue0(Value val)
throws ParseException, InvalidTypeException,
ClassNotLoadedException {
......@@ -562,6 +571,7 @@ abstract class LValue {
jdiValue = val;
}
@Override
void invokeWith(List<Value> arguments) throws ParseException {
if (matchingMethod != null) {
throw new ParseException("Invalid consecutive invocations");
......@@ -589,6 +599,7 @@ abstract class LValue {
this.arrayRef = value;
}
@Override
Value getValue() {
if (jdiValue == null) {
jdiValue = arrayRef.virtualMachine().mirrorOf(arrayRef.length());
......@@ -596,10 +607,12 @@ abstract class LValue {
return jdiValue;
}
@Override
void setValue0(Value value) throws ParseException {
throw new ParseException("Cannot set constant: " + value);
}
@Override
void invokeWith(List<Value> arguments) throws ParseException {
throw new ParseException("Array element is not a method");
}
......@@ -618,6 +631,7 @@ abstract class LValue {
this.index = index;
}
@Override
Value getValue() {
if (jdiValue == null) {
jdiValue = array.getValue(index);
......@@ -625,12 +639,14 @@ abstract class LValue {
return jdiValue;
}
@Override
void setValue0(Value val) throws InvalidTypeException,
ClassNotLoadedException {
array.setValue(index, val);
jdiValue = val;
}
@Override
void invokeWith(List<Value> arguments) throws ParseException {
throw new ParseException("Array element is not a method");
}
......@@ -643,6 +659,7 @@ abstract class LValue {
this.value = value;
}
@Override
Value getValue() {
if (jdiValue == null) {
jdiValue = value;
......@@ -650,10 +667,12 @@ abstract class LValue {
return jdiValue;
}
@Override
void setValue0(Value val) throws ParseException {
throw new ParseException("Cannot set constant: " + value);
}
@Override
void invokeWith(List<Value> arguments) throws ParseException {
throw new ParseException("Constant is not a method");
}
......
......@@ -37,6 +37,8 @@ package com.sun.tools.example.debug.expr;
*/
public class ParseException extends Exception {
private static final long serialVersionUID = 7978489144303647901L;
/**
* This constructor is used by the method "generateParseException"
* in the generated parser. Calling this constructor generates
......@@ -119,20 +121,21 @@ public class ParseException extends Exception {
* of the final stack trace, and hence the correct error message
* gets displayed.
*/
@Override
public String getMessage() {
if (!specialConstructor) {
return super.getMessage();
}
String expected = "";
int maxSize = 0;
for (int i = 0; i < expectedTokenSequences.length; i++) {
if (maxSize < expectedTokenSequences[i].length) {
maxSize = expectedTokenSequences[i].length;
for (int[] expectedTokenSequence : expectedTokenSequences) {
if (maxSize < expectedTokenSequence.length) {
maxSize = expectedTokenSequence.length;
}
for (int j = 0; j < expectedTokenSequences[i].length; j++) {
expected += tokenImage[expectedTokenSequences[i][j]] + " ";
for (int j = 0; j < expectedTokenSequence.length; j++) {
expected += tokenImage[expectedTokenSequence[j]] + " ";
}
if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
if (expectedTokenSequence[expectedTokenSequence.length - 1] != 0) {
expected += "...";
}
expected += eol + " ";
......@@ -140,7 +143,9 @@ public class ParseException extends Exception {
String retval = "Encountered \"";
Token tok = currentToken.next;
for (int i = 0; i < maxSize; i++) {
if (i != 0) retval += " ";
if (i != 0) {
retval += " ";
}
if (tok.kind == 0) {
retval += tokenImage[0];
break;
......
......@@ -78,6 +78,7 @@ public class Token {
/**
* Returns the image.
*/
@Override
public final String toString()
{
return image;
......
......@@ -32,6 +32,8 @@ public class TokenMgrError extends Error
* Ordinals for various reasons why an Error of this type can be thrown.
*/
private static final long serialVersionUID = -6236440836177601522L;
/**
* Lexical error occured.
*/
......@@ -136,6 +138,7 @@ public class TokenMgrError extends Error
*
* from this method for such cases in the release version of your parser.
*/
@Override
public String getMessage() {
return super.getMessage();
}
......
......@@ -29,12 +29,12 @@ import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import com.sun.jdi.*;
import com.sun.tools.example.debug.bdi.*;
public class ApplicationTool extends JPanel {
private Environment env;
private static final long serialVersionUID = 310966063293205714L;
private ExecutionManager runtime;
private TypeScript script;
......@@ -45,13 +45,13 @@ public class ApplicationTool extends JPanel {
super(new BorderLayout());
this.env = env;
this.runtime = env.getExecutionManager();
this.script = new TypeScript(PROMPT, false); // No implicit echo.
this.add(script);
script.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
runtime.sendLineToApplication(script.readln());
}
......
......@@ -25,12 +25,10 @@
package com.sun.tools.example.debug.gui;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
......@@ -40,6 +38,8 @@ import com.sun.tools.example.debug.bdi.*;
public class ClassTreeTool extends JPanel {
private static final long serialVersionUID = 526178912591739259L;
private Environment env;
private ExecutionManager runtime;
......@@ -49,7 +49,7 @@ public class ClassTreeTool extends JPanel {
private JTree tree;
private DefaultTreeModel treeModel;
private ClassTreeNode root;
private SearchPath sourcePath;
// private SearchPath sourcePath;
private CommandInterpreter interpreter;
......@@ -87,6 +87,7 @@ public class ClassTreeTool extends JPanel {
******/
MouseListener ml = new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int selRow = tree.getRowForLocation(e.getX(), e.getY());
TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
......@@ -121,6 +122,7 @@ public class ClassTreeTool extends JPanel {
// SessionListener
@Override
public void sessionStart(EventObject e) {
// Get system classes and any others loaded before attaching.
try {
......@@ -134,19 +136,24 @@ public class ClassTreeTool extends JPanel {
}
}
@Override
public void sessionInterrupt(EventObject e) {}
@Override
public void sessionContinue(EventObject e) {}
// JDIListener
@Override
public void classPrepare(ClassPrepareEventSet e) {
root.addClass(e.getReferenceType());
}
@Override
public void classUnload(ClassUnloadEventSet e) {
root.removeClass(e.getClassName());
}
@Override
public void vmDisconnect(VMDisconnectEventSet e) {
// Clear contents of this view.
root = createClassTree(HEADING);
......@@ -169,6 +176,7 @@ public class ClassTreeTool extends JPanel {
this.refTy = refTy;
}
@Override
public String toString() {
return name;
}
......@@ -185,6 +193,7 @@ public class ClassTreeTool extends JPanel {
return (refTy == null);
}
@Override
public boolean isLeaf() {
return !isPackage();
}
......
......@@ -29,8 +29,6 @@ import java.io.*;
import java.util.*;
import com.sun.jdi.*;
import com.sun.jdi.request.*;
import com.sun.tools.example.debug.bdi.*;
public class CommandInterpreter {
......@@ -93,9 +91,9 @@ public class CommandInterpreter {
try {
ThreadReference[] threads = threads();
long threadID = Long.parseLong(id, 16);
for (int i = 0; i < threads.length; i++) {
if (threads[i].uniqueID() == threadID) {
thread = threads[i];
for (ThreadReference thread2 : threads) {
if (thread2.uniqueID() == threadID) {
thread = thread2;
break;
}
}
......@@ -239,16 +237,18 @@ public class CommandInterpreter {
for (int i = 0 ; i < tlist.size() ; i++) {
ThreadReference thr = tlist.get(i);
int len = Utils.description(thr).length();
if (len > maxId)
if (len > maxId) {
maxId = len;
}
String name = thr.name();
int iDot = name.lastIndexOf('.');
if (iDot >= 0 && name.length() > iDot) {
name = name.substring(iDot + 1);
}
if (name.length() > maxName)
if (name.length() > maxName) {
maxName = name.length();
}
}
String maxNumString = String.valueOf(iThread + tlist.size());
int maxNumDigits = maxNumString.length();
for (int i = 0 ; i < tlist.size() ; i++) {
......@@ -616,7 +616,6 @@ public class CommandInterpreter {
int cnt = 1;
if (t.hasMoreTokens()) {
String idToken = t.nextToken();
int n;
try {
cnt = Integer.valueOf(idToken).intValue();
} catch (NumberFormatException e) {
......@@ -885,7 +884,6 @@ public class CommandInterpreter {
}
private void commandStop(StringTokenizer t) throws NoSessionException {
Location bploc;
String token;
if (!t.hasMoreTokens()) {
......
......@@ -40,6 +40,8 @@ import com.sun.tools.example.debug.event.*;
public class CommandTool extends JPanel {
private static final long serialVersionUID = 8613516856378346415L;
private Environment env;
private ContextManager context;
......@@ -68,6 +70,7 @@ public class CommandTool extends JPanel {
// Establish handler for incoming commands.
script.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
interpreter.executeCommand(script.readln());
}
......@@ -107,15 +110,17 @@ public class CommandTool extends JPanel {
// JDIListener
@Override
public void accessWatchpoint(AccessWatchpointEventSet e) {
setThread(e);
for (EventIterator it = e.eventIterator(); it.hasNext(); ) {
Event evt = it.nextEvent();
it.nextEvent();
diagnostics.putString("Watchpoint hit: " +
locationString(e));
}
}
@Override
public void classPrepare(ClassPrepareEventSet e) {
if (context.getVerboseFlag()) {
String name = e.getReferenceType().name();
......@@ -123,6 +128,7 @@ public class CommandTool extends JPanel {
}
}
@Override
public void classUnload(ClassUnloadEventSet e) {
if (context.getVerboseFlag()) {
diagnostics.putString("Class " + e.getClassName() +
......@@ -130,12 +136,14 @@ public class CommandTool extends JPanel {
}
}
@Override
public void exception(ExceptionEventSet e) {
setThread(e);
String name = e.getException().referenceType().name();
diagnostics.putString("Exception: " + name);
}
@Override
public void locationTrigger(LocationTriggerEventSet e) {
String locString = locationString(e);
setThread(e);
......@@ -155,15 +163,17 @@ public class CommandTool extends JPanel {
}
}
@Override
public void modificationWatchpoint(ModificationWatchpointEventSet e) {
setThread(e);
for (EventIterator it = e.eventIterator(); it.hasNext(); ) {
Event evt = it.nextEvent();
it.nextEvent();
diagnostics.putString("Watchpoint hit: " +
locationString(e));
}
}
@Override
public void threadDeath(ThreadDeathEventSet e) {
if (context.getVerboseFlag()) {
diagnostics.putString("Thread " + e.getThread() +
......@@ -171,6 +181,7 @@ public class CommandTool extends JPanel {
}
}
@Override
public void threadStart(ThreadStartEventSet e) {
if (context.getVerboseFlag()) {
diagnostics.putString("Thread " + e.getThread() +
......@@ -178,16 +189,19 @@ public class CommandTool extends JPanel {
}
}
@Override
public void vmDeath(VMDeathEventSet e) {
script.setPrompt(DEFAULT_CMD_PROMPT);
diagnostics.putString("VM exited");
}
@Override
public void vmDisconnect(VMDisconnectEventSet e) {
script.setPrompt(DEFAULT_CMD_PROMPT);
diagnostics.putString("Disconnected from VM");
}
@Override
public void vmStart(VMStartEventSet e) {
script.setPrompt(DEFAULT_CMD_PROMPT);
diagnostics.putString("VM started");
......@@ -195,14 +209,17 @@ public class CommandTool extends JPanel {
// SessionListener
@Override
public void sessionStart(EventObject e) {}
@Override
public void sessionInterrupt(EventObject e) {
Thread.yield(); // fetch output
diagnostics.putString("VM interrupted by user.");
script.setPrompt(DEFAULT_CMD_PROMPT);
}
@Override
public void sessionContinue(EventObject e) {
diagnostics.putString("Execution resumed.");
script.setPrompt(DEFAULT_CMD_PROMPT);
......@@ -210,23 +227,28 @@ public class CommandTool extends JPanel {
// SpecListener
@Override
public void breakpointSet(SpecEvent e) {
EventRequestSpec spec = e.getEventRequestSpec();
diagnostics.putString("Breakpoint set at " + spec + ".");
}
@Override
public void breakpointDeferred(SpecEvent e) {
EventRequestSpec spec = e.getEventRequestSpec();
diagnostics.putString("Breakpoint will be set at " +
spec + " when its class is loaded.");
}
@Override
public void breakpointDeleted(SpecEvent e) {
EventRequestSpec spec = e.getEventRequestSpec();
diagnostics.putString("Breakpoint at " + spec.toString() + " deleted.");
}
@Override
public void breakpointResolved(SpecEvent e) {
EventRequestSpec spec = e.getEventRequestSpec();
diagnostics.putString("Breakpoint resolved to " + spec.toString() + ".");
}
@Override
public void breakpointError(SpecErrorEvent e) {
EventRequestSpec spec = e.getEventRequestSpec();
diagnostics.putString("Deferred breakpoint at " +
......@@ -236,25 +258,35 @@ public class CommandTool extends JPanel {
//### Add info for watchpoints and exceptions
@Override
public void watchpointSet(SpecEvent e) {
}
@Override
public void watchpointDeferred(SpecEvent e) {
}
@Override
public void watchpointDeleted(SpecEvent e) {
}
@Override
public void watchpointResolved(SpecEvent e) {
}
@Override
public void watchpointError(SpecErrorEvent e) {
}
@Override
public void exceptionInterceptSet(SpecEvent e) {
}
@Override
public void exceptionInterceptDeferred(SpecEvent e) {
}
@Override
public void exceptionInterceptDeleted(SpecEvent e) {
}
@Override
public void exceptionInterceptResolved(SpecEvent e) {
}
@Override
public void exceptionInterceptError(SpecErrorEvent e) {
}
......@@ -263,6 +295,7 @@ public class CommandTool extends JPanel {
// If the user selects a new current thread or frame, update prompt.
@Override
public void currentFrameChanged(CurrentFrameChangedEvent e) {
// Update prompt only if affect thread is current.
ThreadReference thread = e.getThread();
......
......@@ -46,7 +46,7 @@ public class ContextManager {
private boolean verbose;
private Vector<ContextListener> contextListeners = new Vector<ContextListener>();
private ArrayList<ContextListener> contextListeners = new ArrayList<ContextListener>();
public ContextManager(Environment env) {
classManager = env.getClassManager();
......@@ -264,11 +264,11 @@ public class ContextManager {
private void notifyCurrentFrameChanged(ThreadInfo tinfo, int index,
boolean invalidate) {
Vector l = (Vector)contextListeners.clone();
ArrayList<ContextListener> l = new ArrayList<ContextListener>(contextListeners);
CurrentFrameChangedEvent evt =
new CurrentFrameChangedEvent(this, tinfo, index, invalidate);
for (int i = 0; i < l.size(); i++) {
((ContextListener)l.elementAt(i)).currentFrameChanged(evt);
l.get(i).currentFrameChanged(evt);
}
}
......@@ -277,28 +277,34 @@ public class ContextManager {
// SessionListener
@Override
public void sessionStart(EventObject e) {
invalidateCurrentThread();
}
@Override
public void sessionInterrupt(EventObject e) {
setCurrentThreadInvalidate(currentThread);
}
@Override
public void sessionContinue(EventObject e) {
invalidateCurrentThread();
}
// JDIListener
@Override
public void locationTrigger(LocationTriggerEventSet e) {
setCurrentThreadInvalidate(e.getThread());
}
@Override
public void exception(ExceptionEventSet e) {
setCurrentThreadInvalidate(e.getThread());
}
@Override
public void vmDisconnect(VMDisconnectEventSet e) {
invalidateCurrentThread();
}
......
......@@ -31,6 +31,7 @@ import java.util.EventObject;
public class CurrentFrameChangedEvent extends EventObject {
private static final long serialVersionUID = 4214479486546762179L;
private ThreadInfo tinfo;
private int index;
private boolean invalidate;
......
......@@ -26,8 +26,6 @@
package com.sun.tools.example.debug.gui;
import java.io.*;
import java.util.*;
import com.sun.jdi.*;
import com.sun.tools.example.debug.bdi.*;
......
......@@ -26,8 +26,6 @@
package com.sun.tools.example.debug.gui;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
......@@ -38,6 +36,7 @@ import com.sun.tools.example.debug.bdi.*;
public class GUI extends JPanel {
private static final long serialVersionUID = 3292463234530679091L;
private CommandTool cmdTool;
private ApplicationTool appTool;
//###HACK##
......@@ -87,7 +86,7 @@ public class GUI extends JPanel {
threadTreeTool = new ThreadTreeTool(env);
threadTreeTool.setPreferredSize(new java.awt.Dimension(200, 450));
JTabbedPane treePane = new JTabbedPane(JTabbedPane.BOTTOM);
JTabbedPane treePane = new JTabbedPane(SwingConstants.BOTTOM);
treePane.addTab("Source", null, sourceTreeTool);
treePane.addTab("Classes", null, classTreeTool);
treePane.addTab("Threads", null, threadTreeTool);
......@@ -139,12 +138,9 @@ public class GUI extends JPanel {
}
public static void main(String argv[]) {
String remote = null;
String clsName = "";
String progArgs = "";
String javaArgs = "";
boolean verbose = false; //### Not implemented.
final Environment env = new Environment();
JPanel mainPanel = new GUI(env);
......@@ -246,13 +242,14 @@ public class GUI extends JPanel {
frame.setContentPane(mainPanel);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
env.terminate();
}
});
frame.pack();
frame.show();
frame.setVisible(true);
}
......
......@@ -28,7 +28,6 @@ package com.sun.tools.example.debug.gui;
import java.io.File;
import java.util.Hashtable;
import java.util.Enumeration;
import javax.swing.*;
import javax.swing.filechooser.*;
//### Renamed from 'ExampleFileFilter.java' provided with Swing demos.
......@@ -93,8 +92,12 @@ public class JDBFileFilter extends FileFilter {
*/
public JDBFileFilter(String extension, String description) {
this();
if(extension!=null) addExtension(extension);
if(description!=null) setDescription(description);
if(extension!=null) {
addExtension(extension);
}
if(description!=null) {
setDescription(description);
}
}
/**
......@@ -120,11 +123,13 @@ public class JDBFileFilter extends FileFilter {
*/
public JDBFileFilter(String[] filters, String description) {
this();
for (int i = 0; i < filters.length; i++) {
for (String filter : filters) {
// add filters one by one
addExtension(filters[i]);
addExtension(filter);
}
if(description!=null) setDescription(description);
if(description!=null) {
setDescription(description);
}
}
/**
......@@ -136,6 +141,7 @@ public class JDBFileFilter extends FileFilter {
* @see #getExtension
* @see FileFilter#accepts
*/
@Override
public boolean accept(File f) {
if(f != null) {
if(f.isDirectory()) {
......@@ -196,6 +202,7 @@ public class JDBFileFilter extends FileFilter {
* @see isExtensionListInDescription
* @see FileFilter#getDescription
*/
@Override
public String getDescription() {
if(fullDescription == null) {
if(description == null || isExtensionListInDescription()) {
......
......@@ -31,7 +31,6 @@ import java.awt.event.*;
import java.util.Vector;
import java.util.List;
import com.sun.jdi.*;
import com.sun.tools.example.debug.bdi.*;
//### This is currently just a placeholder!
......@@ -57,6 +56,7 @@ class JDBMenuBar extends JMenuBar {
JMenuItem openItem = new JMenuItem("Open...", 'O');
openItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
openCommand();
}
......@@ -93,6 +93,7 @@ class JDBMenuBar extends JMenuBar {
JMenuItem monitorItem = new JMenuItem("Monitor Expression...", 'M');
monitorItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
monitorCommand();
}
......@@ -101,6 +102,7 @@ class JDBMenuBar extends JMenuBar {
JMenuItem unmonitorItem = new JMenuItem("Unmonitor Expression...");
unmonitorItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
unmonitorCommand();
}
......@@ -110,6 +112,7 @@ class JDBMenuBar extends JMenuBar {
JMenu breakpointMenu = new JMenu("Breakpoint");
JMenuItem stopItem = new JMenuItem("Stop in...", 'S');
stopItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
buildBreakpoint();
}
......@@ -176,6 +179,7 @@ class JDBMenuBar extends JMenuBar {
mi.setToolTipText(toolTip);
final String cmd = command;
mi.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
interpreter.executeCommand(cmd);
}
......
......@@ -26,10 +26,8 @@
package com.sun.tools.example.debug.gui;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import com.sun.jdi.*;
import com.sun.tools.example.debug.bdi.*;
class JDBToolBar extends JToolBar {
......@@ -92,6 +90,7 @@ class JDBToolBar extends JToolBar {
button.setToolTipText(toolTip);
final String cmd = command;
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
interpreter.executeCommand(cmd);
}
......
......@@ -29,18 +29,10 @@ import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.io.IOException;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
......@@ -98,6 +90,7 @@ class LaunchTool {
comp.add(panel);
}
@Override
String getText() {
return textField.getText();
}
......@@ -114,6 +107,7 @@ class LaunchTool {
comp.add(panel);
}
@Override
String getText() {
return ((Connector.BooleanArgument)arg)
.stringValueOf(check.getModel().isSelected());
......@@ -147,6 +141,7 @@ class LaunchTool {
final boolean[] oked = {false};
JPanel buttonPanel = okCancel( dialog, new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
if (radioGroup.getSelection() == null) {
JOptionPane.showMessageDialog(dialog,
......@@ -162,7 +157,7 @@ class LaunchTool {
} );
content.add(BorderLayout.SOUTH, buttonPanel);
dialog.pack();
dialog.show();
dialog.setVisible(true);
return oked[0] ?
modelToConnector.get(radioGroup.getSelection()) :
......@@ -178,7 +173,7 @@ class LaunchTool {
Container content = dialog.getContentPane();
JPanel guts = new JPanel();
Border etched = BorderFactory.createEtchedBorder();
Border titled = BorderFactory.createTitledBorder(etched,
BorderFactory.createTitledBorder(etched,
connector.description(),
TitledBorder.LEFT, TitledBorder.TOP);
guts.setBorder(etched);
......@@ -199,6 +194,7 @@ class LaunchTool {
content.add(guts);
JPanel buttonPanel = okCancel( dialog, new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
for (ArgRep ar : argReps) {
if (!ar.isSpecified()) {
......@@ -236,7 +232,7 @@ class LaunchTool {
} );
content.add(BorderLayout.SOUTH, buttonPanel);
dialog.pack();
dialog.show();
dialog.setVisible(true);
}
private JPanel okCancel(final JDialog dialog, ActionListener okListener) {
......@@ -247,6 +243,7 @@ class LaunchTool {
buttonPanel.add(cancel);
ok.addActionListener(okListener);
cancel.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
dialog.setVisible(false);
dialog.dispose();
......
......@@ -42,10 +42,12 @@ public class MonitorListModel extends AbstractListModel {
//### remove listeners on exit!
}
@Override
public Object getElementAt(int index) {
return monitors.get(index);
}
@Override
public int getSize() {
return monitors.size();
}
......@@ -70,7 +72,7 @@ public class MonitorListModel extends AbstractListModel {
return Collections.unmodifiableList(monitors);
}
public Iterator iterator() {
public Iterator<?> iterator() {
return monitors().iterator();
}
......@@ -80,7 +82,8 @@ public class MonitorListModel extends AbstractListModel {
private class MonitorListListener implements ContextListener {
public void currentFrameChanged(CurrentFrameChangedEvent e) {
@Override
public void currentFrameChanged(final CurrentFrameChangedEvent e) {
invalidate();
}
}
......
......@@ -25,15 +25,9 @@
package com.sun.tools.example.debug.gui;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import com.sun.jdi.*;
import com.sun.tools.example.debug.bdi.*;
import com.sun.tools.example.debug.expr.ExpressionParser;
......@@ -41,6 +35,7 @@ import com.sun.tools.example.debug.expr.ParseException;
public class MonitorTool extends JPanel {
private static final long serialVersionUID = -645235951031726647L;
private ExecutionManager runtime;
private ContextManager context;
......@@ -64,6 +59,7 @@ public class MonitorTool extends JPanel {
}
private class MonitorToolListener implements ListSelectionListener {
@Override
public void valueChanged(ListSelectionEvent e) {
int index = list.getSelectedIndex();
if (index != -1) {
......@@ -78,6 +74,7 @@ public class MonitorTool extends JPanel {
IncompatibleThreadStateException {
ExpressionParser.GetFrame frameGetter =
new ExpressionParser.GetFrame() {
@Override
public StackFrame get()
throws IncompatibleThreadStateException
{
......@@ -93,6 +90,7 @@ public class MonitorTool extends JPanel {
private class MonitorRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list,
Object value,
int index,
......
......@@ -58,8 +58,8 @@ public class SearchPath {
}
public File resolve(String relativeFileName) {
for (int i = 0; i < pathArray.length; i++) {
File path = new File(pathArray[i], relativeFileName);
for (String element : pathArray) {
File path = new File(element, relativeFileName);
if (path.exists()) {
return path;
}
......@@ -76,8 +76,8 @@ public class SearchPath {
// classpath is retained. This is the one that will be
// found if we later do a 'resolve'.
SortedSet<String> s = new TreeSet<String>(); // sorted, no duplicates
for (int i = 0; i < pathArray.length; i++) {
File path = new File(pathArray[i], relativeDirName);
for (String element : pathArray) {
File path = new File(element, relativeDirName);
if (path.exists()) {
String[] childArray = path.list(filter);
if (childArray != null) {
......
......@@ -25,22 +25,25 @@
package com.sun.tools.example.debug.gui;
import javax.swing.*;
import javax.swing.tree.*;
public class SingleLeafTreeSelectionModel extends DefaultTreeSelectionModel {
private static final long serialVersionUID = -7849105107888117679L;
SingleLeafTreeSelectionModel() {
super();
selectionMode = SINGLE_TREE_SELECTION;
}
@Override
public void setSelectionPath(TreePath path) {
if(((TreeNode)(path.getLastPathComponent())).isLeaf()) {
super.setSelectionPath(path);
}
}
@Override
public void setSelectionPaths(TreePath[] paths) {
// Only look at first path, as all others will be
// ignored anyway in single tree selection mode.
......@@ -49,12 +52,14 @@ public class SingleLeafTreeSelectionModel extends DefaultTreeSelectionModel {
}
}
@Override
public void addSelectionPath(TreePath path) {
if(((TreeNode)(path.getLastPathComponent())).isLeaf()) {
super.setSelectionPath(path);
}
}
@Override
public void addSelectionPaths(TreePath[] paths) {
// Only look at first path, as all others will be
// ignored anyway in single tree selection mode.
......
......@@ -31,7 +31,6 @@ import java.util.*;
import com.sun.jdi.*;
import com.sun.tools.example.debug.event.*;
import com.sun.tools.example.debug.bdi.*;
/**
* Manage the list of source files.
......@@ -45,7 +44,7 @@ public class SourceManager {
private List<SourceModel> sourceList;
private SearchPath sourcePath;
private Vector<SourceListener> sourceListeners = new Vector<SourceListener>();
private ArrayList<SourceListener> sourceListeners = new ArrayList<SourceListener>();
private Map<ReferenceType, SourceModel> classToSource = new HashMap<ReferenceType, SourceModel>();
......@@ -79,18 +78,18 @@ public class SourceManager {
}
public void addSourceListener(SourceListener l) {
sourceListeners.addElement(l);
sourceListeners.add(l);
}
public void removeSourceListener(SourceListener l) {
sourceListeners.removeElement(l);
sourceListeners.remove(l);
}
private void notifySourcepathChanged() {
Vector l = (Vector)sourceListeners.clone();
ArrayList<SourceListener> l = new ArrayList<SourceListener>(sourceListeners);
SourcepathChangedEvent evt = new SourcepathChangedEvent(this);
for (int i = 0; i < l.size(); i++) {
((SourceListener)l.elementAt(i)).sourcepathChanged(evt);
l.get(i).sourcepathChanged(evt);
}
}
......@@ -163,6 +162,7 @@ public class SourceManager {
private class SMClassListener extends JDIAdapter
implements JDIListener {
@Override
public void classPrepare(ClassPrepareEventSet e) {
ReferenceType refType = e.getReferenceType();
SourceModel sm = sourceForClass(refType);
......@@ -171,6 +171,7 @@ public class SourceManager {
}
}
@Override
public void classUnload(ClassUnloadEventSet e) {
//### iterate through looking for (e.getTypeName()).
//### then remove it.
......
......@@ -31,8 +31,6 @@ import java.util.*;
import com.sun.jdi.*;
import com.sun.jdi.request.*;
import com.sun.tools.example.debug.bdi.*;
import javax.swing.*;
/**
......@@ -101,6 +99,7 @@ public class SourceModel extends AbstractListModel {
// **** Implement ListModel *****
@Override
public Object getElementAt(int index) {
if (sourceLines == null) {
initialize();
......@@ -108,6 +107,7 @@ public class SourceModel extends AbstractListModel {
return sourceLines.get(index);
}
@Override
public int getSize() {
if (sourceLines == null) {
initialize();
......
......@@ -26,8 +26,6 @@
package com.sun.tools.example.debug.gui;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
......@@ -35,13 +33,12 @@ import javax.swing.*;
import com.sun.jdi.*;
import com.sun.jdi.request.*;
import com.sun.tools.example.debug.event.*;
import com.sun.tools.example.debug.bdi.*;
import java.util.List;
public class SourceTool extends JPanel {
private static final long serialVersionUID = -5461299294186395257L;
private Environment env;
private ExecutionManager runtime;
......@@ -99,6 +96,7 @@ public class SourceTool extends JPanel {
// ContextListener
@Override
public void currentFrameChanged(CurrentFrameChangedEvent e) {
showSourceContext(e.getThread(), e.getIndex());
}
......@@ -108,6 +106,7 @@ public class SourceTool extends JPanel {
// SourceListener
@Override
public void sourcepathChanged(SourcepathChangedEvent e) {
// Reload source view if its contents depend
// on the source path.
......@@ -120,12 +119,15 @@ public class SourceTool extends JPanel {
// SpecListener
@Override
public void breakpointSet(SpecEvent e) {
breakpointResolved(e);
}
@Override
public void breakpointDeferred(SpecEvent e) { }
@Override
public void breakpointDeleted(SpecEvent e) {
BreakpointRequest req = (BreakpointRequest)e.getEventRequest();
Location loc = req.location();
......@@ -139,6 +141,7 @@ public class SourceTool extends JPanel {
}
}
@Override
public void breakpointResolved(SpecEvent e) {
BreakpointRequest req = (BreakpointRequest)e.getEventRequest();
Location loc = req.location();
......@@ -150,29 +153,40 @@ public class SourceTool extends JPanel {
}
}
@Override
public void breakpointError(SpecErrorEvent e) {
breakpointDeleted(e);
}
@Override
public void watchpointSet(SpecEvent e) {
}
@Override
public void watchpointDeferred(SpecEvent e) {
}
@Override
public void watchpointDeleted(SpecEvent e) {
}
@Override
public void watchpointResolved(SpecEvent e) {
}
@Override
public void watchpointError(SpecErrorEvent e) {
}
@Override
public void exceptionInterceptSet(SpecEvent e) {
}
@Override
public void exceptionInterceptDeferred(SpecEvent e) {
}
@Override
public void exceptionInterceptDeleted(SpecEvent e) {
}
@Override
public void exceptionInterceptResolved(SpecEvent e) {
}
@Override
public void exceptionInterceptError(SpecErrorEvent e) {
}
}
......@@ -269,6 +283,7 @@ public class SourceTool extends JPanel {
private class SourceLineRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list,
Object value,
int index,
......@@ -301,6 +316,7 @@ public class SourceTool extends JPanel {
return this;
}
@Override
public Dimension getPreferredSize() {
Dimension dim = super.getPreferredSize();
return new Dimension(dim.width, dim.height-5);
......@@ -309,6 +325,7 @@ public class SourceTool extends JPanel {
}
private class STMouseListener extends MouseAdapter implements MouseListener {
@Override
public void mousePressed(MouseEvent e) {
if (e.isPopupTrigger()) {
showPopupMenu((Component)e.getSource(),
......@@ -316,6 +333,7 @@ public class SourceTool extends JPanel {
}
}
@Override
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
showPopupMenu((Component)e.getSource(),
......@@ -354,6 +372,7 @@ public class SourceTool extends JPanel {
private JMenuItem commandItem(String label, final String cmd) {
JMenuItem item = new JMenuItem(label);
item.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
interpreter.executeCommand(cmd);
}
......
......@@ -29,6 +29,8 @@ import java.util.EventObject;
public class SourcepathChangedEvent extends EventObject {
private static final long serialVersionUID = 8762169481005804121L;
public SourcepathChangedEvent(Object source) {
super(source);
}
......
......@@ -28,10 +28,10 @@ package com.sun.tools.example.debug.gui;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class TypeScript extends JPanel {
private static final long serialVersionUID = -983704841363534885L;
private JTextArea history;
private JTextField entry;
......@@ -41,7 +41,6 @@ public class TypeScript extends JPanel {
private JScrollBar historyHScrollBar;
private boolean echoInput = false;
private boolean nlPending = false;
private static String newline = System.getProperty("line.separator");
......
......@@ -25,7 +25,6 @@
package com.sun.tools.example.debug.gui;
import javax.swing.*;
import com.sun.tools.example.debug.bdi.OutputListener;
public class TypeScriptOutputListener implements OutputListener {
......@@ -42,10 +41,12 @@ public class TypeScriptOutputListener implements OutputListener {
this.appendNewline = appendNewline;
}
@Override
public void putString(String s) {
script.append(s);
if (appendNewline)
if (appendNewline) {
script.newline();
}
}
}
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册