JSR-121 Change Log
These are the changes to the specification since Community Review.
Note that some of these changes mention items that are not visible in the
draft specification. Special "@todo" and "@issue" tags are sometimes present
in the Expert Group's internal spec versions.
12/13/2002
-
Typos in FAQ
-
Hyperlink typos in has{Started,Exited,Terminated} method doc
-
IsolateEvent.ExitReason.UNCAUGHT_EXCEPT renamed UNCAUGHT_EXCEPTION
-
IsolateMessageDispatcher.shutDown renamed shutdown
-
Made IsolateDispatcher.Listener.receiveFailed signature consistent with
messageReceived
-
Removed J2ME optionality tag accidently added to IsolateMessage.getComposite
-
To avoid problems with J2ME's lack of the 1.4 J2SE exception chaining
feature, added getCause() methods to IsolateResourceError, IsolateStartupException,
and LinkSerializationException.
-
Corrected J2ME subset lists
12/12/2002
-
Added Isolate methods hasStarted and hasExited and renamed isTerminated
to hasTerminated
-
Renamed Isolate methods getContext to currentIsolateContext, getIOBindings
to currentIsolateIOBindings, and getIsolateMessages to currentIsolateStartMessages.
-
Clarified async Isolate.halt and exit semantics
-
Removed mistaken JNDI reference from isolate package doc.
-
Added caveat about additional permissions for Isolate.exit and halt (e.g.
"ExitVM" also needed to terminated current isolate)
-
Changed IsolatePermission(String,String) ctor 2nd param from "unused and
should be null" to "unused and ignored but null suggested".
-
Numerous fixes to doc of null constructor, factory and method parameters.
-
Acknowledgement list added to isolate package doc for posterity.
-
** IsolateMessage.newPipe*ChannelMessage need disclamier Added "platform
default provider" disclaimer to both.
-
** IsolateMessage.newFileChannelMessage need disclamier Added "platform
default provider" disclaimer
-
** IsolateEvent.ExitReason Made constructor private (had default, public
constructor)
-
** IsolateEvent.Type Made constructor private (had default, public constructor)
close on Link/LinkChannel indistinguishable:
-
Added doc to Link.getChannel
-
Added doc to LinkChannel class-level doc main" method on new isolate class
must be public:
-
Added 2x "public" to para in class-level doc Added 2x "public" to 1st para
of long constructor
-
IsolateEvent.equals() needs some polishing: Say object must be an IsolateEvent
with same "type" and same "source isolate"
-
IsolateMessageListener -> IsolateMessageDispatcher.Listener: One fixed
in IsolateMessageDispatcher class-level doc
-
Isolate.newEventLink need not say "either Isolate is terminated": changed
to "this Isolate is terminated"
-
Wrong method names on Pipe class Isolate stdio examples: Fixed. Also
fixed IsolateMessage constructor names for pipes.
-
Need NPE on newEventLink:
-
Added null entries in initial messages array:
-
Added IsolateMessage.EMPTY_MESSAGE is a singleton
-
Added IsolateMessageVisitor.visitEmptyMessage()
-
TransientPreferences override base methods that throw BackingStoreException?:
Added wrappers for keys, clear, childrenNames, nodeExists, removeNode,
flush, sync exportNode, and exportSubtree.
-
LinkSerializationException.j missing @params on constructors Added to both
constructors Removed bodies from constructors
-
IsolateStartupException.j missing @params on printRemoteStackTrace Added
@params and @throws NPE to both printRemoteStackTrace methods
-
* Expanded discussion of Selectors in the class-level javadoc for LinkChannel.
-
* Documented the use of OP_READ (resp. OP_WRITE) and isOpen to detect link
closure on the receiver (resp. sender) side of the link in the class-level
javadoc for LinkChannel.
-
* Added openLinkChannel, openEventLinkChannel, isSender and isReceiver
to LinkChannel allowing LinkChannels to be used independently of the corresponding
Link.
-
* Clarified correspondance between Links and LinkChannels in the class-
level javadoc for LinkChannel.
-
* Added the @return for LinkChannel.getLink.
-
* Documented the effect of serialization errors when sending composite
messages which contain serializable messages in the javadoc for Link.send.
-
* Emphasized that the contents of the message array supplied to IsolateMessage.newCompositeMessage
is copied on creation and no reference to the array is retained.
12/9/2002
-
FAQ updates
-
Cleanup javadoc tags
-
Improvements to spec "public review dress rehearsal" format
-
More fixes to J2ME subset doc
-
(the rest of these changes relate to IsolateMessageDispatcher)
-
<code></code> fixups
-
Put hyperlinks in the example code.
-
Note that add, remove, shutdown are reentrant and can be invoked by listener
callbacksFix minor bug in final example.
-
Note on add() that exceptions will cause receiveFailed to be invoked.
Spell out that link will be removed before callbacks are invoked.
-
Move this para to one before previous para.
-
Add <font></font> stuff to LinkChannel references in add() doc.
-
Note that an IllegalArgumentException will be thrown if given link is not
receivable on in current isolate (add())
-
Expand Listener class-doc to talk about exceptions.
-
Add IsolateMessageDispatcher parameter to Listener.messageReceived.
Makes it much easier to remove a link from a dispatcher in response to
a user-defined EOF token.
-
Expand doc for Listener.receiveFailed. Note that all checked and
run-time exceptions documented in Link.receive will be caught here.
-
Note that link will have been removed before callback is invoked.
12/8/2002
-
Spell checking/fixing make targets, first round of spelling corrections
-
ClosedLinkException.j: Tweak first sentence
-
ClosedLinkException.j: Replace list of occurances/causes with paras.
-
IsolateMessage.j: a/an fixes
-
IsolateMessageVisitor.j: <code></code> blocks
-
IsolateMessageVisitor.j: a/an fixes
-
IsolatePermission.j: Remove "Composite" from list of permission types Add
note a
-
bout send.Composite and receive.Composite not existing.
-
IsolateStartupException.j: Re-work main doc to be both local and remote
friendly.
-
IsolateStartupException.j: Fix longest constructor so @params match signature
-
Link.j: <code>Link</code> -> link (and vice-versa) fixups
-
Link.j: isSender @returns 'potentially' -> 'structurally'
-
Link.j: fix "must first be passed" para, include the creator (NEEDS WORK)
-
Link.j: Hyperlink "interruption" to Thread#interrupt
-
Link.j: Add 'system-provided' to IsolateEvent in Event Link description.
-
Link.j: "structurally able" -> "structurally allowed" on isSender/isReceiver
-
Link.j: Fix broken first sentence on send
-
Link.j: linkplain (vs. link) throwable cause
-
Link.j: Add composite message security check doc to send/recv
-
Link.j: isOpen: "non event links" -> "application links"
-
Link.j: fix broken event-link href
-
Link.j: newEventLink remove redundant "close if terminated" para
-
LinkChannel.j: <code></code>
-
LinkChannel.j: Re-write initial sentence of validOps based on superclass
doc
-
LinkChannel.j: Add SecurityException to send/recv
-
LinkSerializationException.j: Tweak first sentence.
-
LinkSerializationException.j: Add <code></code> around LinkSerializationException
-
TransientPreferences.j: Refer users to Preferences instead of AbstractPreferences
12/6/2002
-
Preprocessing fix for subset generation, a few subset doc fixes
-
Dropped "either but not both" LinkChannel blocking wording
-
Removed unused bitser.net collateral doc reference
-
Update doc to reflect IsolateEvent no longer being optional with J2ME
-
Removed "and its subclasses" from discussion of Link in package.ht.
-
Tweak Link description in package.ht because there is no longer asmall
number of IO classes supported.
-
Tweak RMI/CORBA para in Comms section in package.ht..
-
Commented out lots of text in the expanded rationale for links in package.ht.
-
Removed isolate enumeration from Security section in package.ht.
-
Removed several gratuitous " "s from package.ht
-
Fixed the <a name=foo></a> blocks to cover some text in package.ht
-
Fix bug in first example in Isolate.j
-
Add a bit of text introducing the subsections of the Isolate class-level
doc. Add a "context" doc sub-section to class-level doc.
-
Add missing ")" to Standard IO Redirection doc in Isolate.j
-
Fix bug in 1st example of stream redirection in Isolate.j
-
Fix bug in 2nd example of stream redirection in Isolate.j
-
Add hyperlinks to stdio redirection examples in Isolate.j
-
Add that main class can be on bootstrap or extension classpaths note in
Isolate long constructor doc
-
Add missing ) to long Isolate constructor para on stdio redirection
-
Add hyperlinks to Jar examples on isolate class doc
-
A couple "a IsolateMessage" -> "an IsolateMessage" in Isolate.j
-
Fix spelling of "avialable" in Isolate.start
-
Fix missing </code> on Isolate.start's @throws IllegalStateException
-
Change Link -> IsolateMessage is Isolate.getIOBindings @return doc
-
Isolate.newEventLink says an IsolateResourceError will be thrown in either
isolate is terminated, but Link.newEventLink throws ClosedLinkException
in that case. Switched Isolate.newEventLink to match.
-
Isolate.getContext: there are always some default values now (e.g., the
JNI one). 2nd para tweaked
-
Isolate.getContext: changed 'org.goodness.neatfeature' to 'org.apache.neatfeature'
-
Isolate.getContext: change "(node)" type in first table to "node", made
it a hyperlink to Preferences.node()
-
Isolate.getContext: reword first sentence of Impl-Specific preferences
-
Isolate.getContext: Inconsistent "-ing of preference keys. Always
quoted and <code></code>'d now.
-
Isolate.getContext: <emph></emph> is a Latex-ism, use <em></em>IsolateEvent.j:
lots of a/an fixes, some <code></code> fixes
-
IsolateEvent.j: Remove "make final" @todo, hidden constructor prevents
the problems just as cleanly.
-
IsolateEvent.j: Use "source Isolate" to more clearly differentiate the
isolate which is generating events from receiver and starter.
-
IsolateMessage.j: Missing <code></code> around IllegalStateException
in newIsolateMessage()
-
IsolateMessage.j: lots of a/an fixes (mostly "Creates a ..." / "wrap in
a ...")
-
IsolateMessage.j: newByteBufferMessage add text saying the contents of
the byte buffer will be transferred!
-
IsolateMessage.j: Tweaked the disclaimers on ServerSocket, Socket, DatagramSocket
to be a bit more precise.
-
IsolateMessage.j: newSerializableMessage rewritten before realizing that
Miles already did...
-
IsolateMessage.j: newSerializableMessage "received." -> "received message."
-
IsolateMessage.j: newCompositeMessage: no need to check un-started isolates,
as such IsolateMessages cannot be created in the first place.
-
IsolateMessage.j: acceptVisitor @param 'r' should be 'visitor'
-
IsolateMessage.j: clean up definition of equals
-
IsolateMessage.j: Remove trailing '.' at end of @throws clauses
-
IsolateMessage.j: Add many '@see newFooMessage' to getFoo methods
-
IsolateMessage.j: Add many '@see getFoo' to newFooMessage methods
-
IsolateMessage.j: a -> an in front of IllegalArgumentException
-
IsolateMessage.j: tweak example description
-
IsolateMessage.j: <code></code> missing on visitCompositeMessage
-
IsolateMessage.j: "Visit a" -> "Visit an" on newest methods
-
IsolateMessage.j: LinkMessage substitut-os on visitLinkMessage
-
IsolateMessageVisitor.j: <code></code> and a/an fixes
-
IsolateMessageVisitor.j: rename 'lm' param to 'im'
-
IsolatePermission.j: Shorten '{link type}' to '<i>{mtype}</i>' (its
shorter and the table has width problems).
-
IsolatePermission.j: Add missing types to send/recv table entries
-
IsolatePermission.j: Move the send/recv type text out of the table
-
IsolatePermission.j: Note that getIOBindings and getInitialMessages are
controlled by the "context" permission.
-
IsolatePermission.j: Fix bug in isolate constructor in first example
-
Rewrite of newSerializableMessage doc
12/4/2002
-
Fixed preprocessing problems, getting rid of implicit oring with the sed
scripts
-
Rewrote IsolateMessage.newSerializableMessage doc
-
Removed "not both" nonblocking part of LinkChannel reference in Link doc.
-
First round of changes to javadoc titles, date string
-
Changed "pronounced isolet" to just make it clear we're not idiots and
are using Isolate as a noun. Users can go look up the pronunciation.
-
Caption for bugeye diagram in isolate package doc
-
Nuked "nonessentials" stuff off bottom of package doc.
11/26/2002
-
Withdrew Isolate.getIsolates() while gathering more requirements related
to Aggregate management
-
Fixed doc bug added with 11/19 changes ("early out exceptions" w Link.send/receive)
-
Put single Link copy semantics statement in the Link.send doc, removed
a couple other mentions of this in other method doc
-
Fixed a few cases where the proposed LinkChannel APIs might have been interpreted
as part of the 121 spec
-
Refactored the spec source files and arranged for automatic building of
the proposed ME subet for CDC/FPv1.0. This allows for javadoc to be created
that only mentions the subset API elements and their doc and should have
no trace of APIs or doc mention of nio, preferences, or other functionality
not supported with CDC/FPv1.0.
11/19/2002
-
Added DatagramChannel, FileChannel, SocketChannel, ServerSocketChannel
to IsolateMessage and IsolateMessageVisitor.
-
Clarified JNI isolation discussion in isolate package doc
-
Renamed IsolateMessage.newIsolateMessage(Link) to newLinkMessage(Link)
to fix mistake put into 10/21 changes
11/7/2002
-
Backed out the REMOTE_CLOSE change, added an example of how applications
can send and handle an explicit "no more messages" token.
-
All exceptions due to closure are now be reported as ClosedLinkException
with a nested exception where appropriate (eg. async close, closed by interrupt).
-
Replaced IsolateMessageDispatcher.linkClosed() with receiveFailed(), which
reports all receive failure exceptions to the listener.
-
Clarified the various exceptions and under what circumstances they can
be thrown from send and receive, and how that relates to rendezvous and
message transfer.
-
Added newCompositeMessage() and getComposite() to IsolateMessage.
-
Dropped newBidirectionalLink(). "Unidirectional" links are now "Application"
links. There isn't a bidirectional link for these to contrast with any
more, and the new name emphasizes that event links are largely handled
by the implementation. Replaced the bidi-link example with one illustrating
passing pair of one-way links via a composite message.
-
Removed restriction on loopbacks (i.e. src isolate == dst isolate) on the
remaining link types.
10/21/2002
-
Class name changes (done by Pete S.):
-
LinkMessage renamed IsolateMessage
-
LinkMessageVisitor renamed IsolateMessageVisitor
-
LinkMessageDispatcher renamed IsolateMessageDispatcher
-
Brought Link.{send,receive} into line with NIO interruption semantics.
-
Added a Link.receive REMOTE_TOKEN (backed out in a subsequent change above).
-
LinkClosedException is no longer thrown by Link.send if the message being
sent contains a closed Socket, Link etc.
-
Link.{send,receive} are now declared to throw plain IOException.
-
Synced LinkChannel with the Link changes.
10/14/2002
-
Isolate.start() method changed to take an array of LinkMessage instead
of array of Link.
-
Updated examples in Link.java to show new LinkMessages
-
As in addition to Isolate.start() throwing IsolateStartupException there
can now be an underlying LinkSerializationException, doc'd that the latter
exception will be chained to the former if present.
-
Isolate.getLinks method changed to Isolate.GetLinkMessages.
10/12/2002
-
Document behavior of invoking LinkMessageDispatcher.remove in context of
a listener callback
-
Document behavior of invoking LinkMessageDispatcher.shutdown in context
of a listener callback.
-
Allow a listener to be registered with more than one dispatcher (just a
doc fix).
-
Indicate that exceptions in listeners will propogate out through the run()
method.
-
Indicate that if run() returns normally or due to an exception, it will
effectively "remove" all links (put them back into clean state).
-
Added LinkMessageDispatcher.Listener.linkClosed.
-
Document what happens when a link is closed, while registered with dispatcher
(the link is effecitvely "removed" after the linkClosed method is invoked;
linkClosed is invoked even if the link is closed before being added.).
-
Document that Link.close is legal to invoke on link while registered with
dispatcher (just to clarify the ownership of the link, anyone can legally
invoke close while the link is registered.)
10/10/2002-b
-
Added i/o redirection usage examples.
-
Finished doc of the 10/8 i/o bindings changes.
-
Added "experimental" preferences "java.lang.isolate.jni-isolatation"
and "java.lang.isolate.vm-isolatation" and additional usage detail to make
it clear that these preferences are set by the implementation.
10/10/2002-a
-
Added DatagramSocket, FileInputStream, FileOutputStream to LinkMessage
and LinkMessageVisitor
-
Removed inheritance of java.util.EventObject , readObject and writeObject
from IsolateEvent
10/8/2002
-
Added Isolate.getIoBindings
-
Changed Isolate "long constructor" signature to take three LinkMessage
parameters instead of an IsolateStreamBindings parameter.
-
Removed IsolateStreamBindings class.
10/5/2002
-
Removed all three static final ints (STARTING, EXITING, TERMINATED) from
IsolateEvent class
-
Added static inner class IsolateEvent.Type with three static factories
STARTING(), EXITING(), TERMINATED()
10/6/2002
-
The java.lang.isolate.AllocError class renamed to java.lang.isolate.IsolateResourceError
for more naming uniformity.
-
@issue added to java.nio.channels.LinkChannel proposed API suggesting throwing
ClosedChannelException instead of ClosedLinkException for send/recieive
methods. Requested by Sun internal review but still in discussion.*
-
Dropped @todo about considering factory methods for Isolate class.*
-
Fixed typo so Isolate.getLinks() requires "context" permission.
-
Removed parameter from convenience method Isolate.newEventLink() and spec'd
it to be equivalent to Link.newEventLink(this, Isolate.currentIsolate()).
-
Replaced the org.tullmann.mpisolate.currentpid example preference in the
Isolate.getContext() doc with something less provocative and fixed a typo.
-
Added method "public Isolate getStarter()" to IsolateEvent to allow retrieval
of a reference to the creating/starting isolate that caused a STARTING
event. Requested by Jan Vitek and Grzegorz Czajkowski with a use case documented
at the September 18, 2002 EG meeting.
-
Changed STOPPING state to EXITING to be consistent with the Isolate.exit(int)
method.
-
For EXITING state (formerly STOPPING), removed @issue about whether the
list is exhaustive.*
-
Removed @issue about a "shutdown hooks completed" bit for IsolateEvent.ExitReason.*
-
Removed @issue about reflection in IsolatePermission doc.*
-
Removed @todo about supporting timeout.*
-
Removed @todo about doc of multiple threads doing send/receive.*
-
Expanded @issue about needing to discuss thread interruption of LInk operations
with Mark Reinhold.*
-
Expanded @issue about TransientPreferences vis a vis user/system exposure
by adding Pat Tullmann's remarks.*
-
Added doc to Link.send() and isSender() to repeat the message from the
Link class doc that event links cannot be senders (i.e. impl sends, user
code doesn't)
-
Removed @todo about "events exactly once" and tacked on "independent of
number of therads" to the Link doc.
-
Changed Link.getChannel() to throw ClosedChannelException instead of IllegalStateException
for closed case and removed @todo.
-
Added @issue wondering if Link should implement Channel.**
-
Removed @todo to justify the "somewhat odd set of types" for LinkMessage.*
-
Removed @todo for CharBuffer.*
-
Removed @todo about LinkMessage.getSerializable() throwing IOException
with the expectation that such a message will be chained (embedded) by
a LinkSerializationException.*
-
Changed LinkMessageDispatcher.add() doc to make it more clear that a dispatcher
"owns" a link added to it and to try to clarify the situation where non-blocking
i/o is used by the dispatcher implementation.
-
Added @todo from Laurent Daynes "Shouldn't there be a method of LinkMessageDispatcher.listener
that the dispatcher should call when the listened link is closed ?" This
requires more discussion by the EG.*
-
Added doc to LinkMessageDispatcher.add/receive to say if the dispatcher
has terminated these methods are simply null operations.
-
Added doc to LinkMessageDispatcher.add to say a redundant add of the same
Link/Listener pair will be ignored.
Community Review Draft published 9/19/2002