java.lang.isolate
Class IsolateMessageVisitor

java.lang.Object
  |
  +--java.lang.isolate.IsolateMessageVisitor

public abstract class IsolateMessageVisitor
extends Object

An abstract utility class used to process an IsolateMessage containing arbitrary data via IsolateMessage.acceptVisitor. It is particularly useful if the data types are not known at the time the IsolateMessage arrives.

The default implementation for all visitor methods in this class is to throw an IllegalStateException. This class is extended by overriding the methods for the data types that are expected to be received and implementing the actual processing or dispatching behavior.

An IsolateMessage is processed or dispatched by passing a subclassed IsolateMessageVisitor instance to IsolateMessage.acceptVisitor.

The following example demonstrates usage, printing String and serialized object messages while allowing all other message types to result in an IllegalStateException.

 import java.lang.isolate.*;
 import java.io.IOException;

 public class UsageExample {
   public static class ReportingVisitor 
     extends IsolateMessageVisitor 
   {
     public void visitStringMessage(IsolateMessage im) 
     {
       System.out.println("received string: " + im.getString());
     }

     public void visitSerializableMessage(IsolateMessage im) 
       throws LinkSerializationException 
     {
       System.out.println("received serialized object: " 
         + im.getSerializable());
     }
   }

   // Receive and process a message from Link l
   public static void receiveAndPrintFrom(Link l) 
   {
     IsolateMessage im;

     try {
       im = l.receive();
     } catch (IOException e) {
       System.err.println("failed to receive isolate message: " + e);
       return;
     }

     try {
       im.acceptVisitor(new ReportingVisitor());
     } catch (IllegalStateException ise) {
       System.err.println("unexpected message: not a String or serializable object");
     } catch(LinkSerializationException lse) {
       System.err.println("failed to deserialize received object: " + lse.getCause());
     }
   }
 }

Since:
1.5

Constructor Summary
IsolateMessageVisitor()
           
 
Method Summary
 void visitByteArrayMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing a byte array.
 void visitByteBufferMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing a ByteBuffer.
 void visitCompositeMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing a CompositeMessage (IsolateMessage[]).
 void visitDatagramChannelMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing a DatagramChannel.
 void visitDatagramSocketMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing a DatagramSocket.
 void visitEmptyMessage()
          Visits the IsolateMessage.EMPTY_MESSAGE.
 void visitFileChannelMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing a FileChannel.
 void visitFileInputStreamMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing a FileInputStream.
 void visitFileOutputStreamMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing a FileOutputStream.
 void visitIsolateEventMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing an IsolateEvent.
 void visitIsolateMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing an Isolate.
 void visitLinkMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing a Link.
 void visitPipeSinkChannelMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing a Pipe.SinkChannel.
 void visitPipeSourceChannelMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing a Pipe.SourceChannel.
 void visitSerializableMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing a serialized object.
 void visitServerSocketChannelMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing a ServerSocketChannel.
 void visitServerSocketMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing a ServerSocket.
 void visitSocketChannelMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing a SocketChannel.
 void visitSocketMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing a Socket.
 void visitStringMessage(java.lang.isolate.IsolateMessage im)
          Visits an IsolateMessage containing a String.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

IsolateMessageVisitor

public IsolateMessageVisitor()
Method Detail

visitIsolateMessage

public void visitIsolateMessage(java.lang.isolate.IsolateMessage im)
Visits an IsolateMessage containing an Isolate.

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit an Isolate

visitLinkMessage

public void visitLinkMessage(java.lang.isolate.IsolateMessage im)
Visits an IsolateMessage containing a Link.

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit a Link

visitByteBufferMessage

public void visitByteBufferMessage(java.lang.isolate.IsolateMessage im)
Visits an IsolateMessage containing a ByteBuffer.

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit a ByteBuffer
This API element may not be present in some J2ME profiles.

visitByteArrayMessage

public void visitByteArrayMessage(java.lang.isolate.IsolateMessage im)
Visits an IsolateMessage containing a byte array.

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit a byte array

visitStringMessage

public void visitStringMessage(java.lang.isolate.IsolateMessage im)
Visits an IsolateMessage containing a String.

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit a String

visitSocketMessage

public void visitSocketMessage(java.lang.isolate.IsolateMessage im)
Visits an IsolateMessage containing a Socket.

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit a Socket
This API element may not be present in some J2ME profiles.
This API element must be present with the following J2ME configurations, profiles, or optional packages:
FPv1.0

visitServerSocketMessage

public void visitServerSocketMessage(java.lang.isolate.IsolateMessage im)
Visits an IsolateMessage containing a ServerSocket.

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit a ServerSocket
This API element may not be present in some J2ME profiles.
This API element must be present with the following J2ME configurations, profiles, or optional packages:
FPv1.0

visitDatagramSocketMessage

public void visitDatagramSocketMessage(java.lang.isolate.IsolateMessage im)
Visits an IsolateMessage containing a DatagramSocket.

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit a DatagramSocket
This API element may not be present in some J2ME profiles.
This API element must be present with the following J2ME configurations, profiles, or optional packages:
FPv1.0

visitFileInputStreamMessage

public void visitFileInputStreamMessage(java.lang.isolate.IsolateMessage im)
Visits an IsolateMessage containing a FileInputStream.

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit a FileInputStream
This API element may not be present in some J2ME profiles.
This API element must be present with the following J2ME configurations, profiles, or optional packages:
CDCv1.0

visitFileOutputStreamMessage

public void visitFileOutputStreamMessage(java.lang.isolate.IsolateMessage im)
Visits an IsolateMessage containing a FileOutputStream.

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit a FileOutputStream
This API element may not be present in some J2ME profiles.
This API element must be present with the following J2ME configurations, profiles, or optional packages:
CDCv1.0

visitSerializableMessage

public void visitSerializableMessage(java.lang.isolate.IsolateMessage im)
                              throws LinkSerializationException
Visits an IsolateMessage containing a serialized object.

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit a serialized object
LinkSerializationException - if a Serialization error occurred
This API element may not be present in some J2ME profiles.
This API element must be present with the following J2ME configurations, profiles, or optional packages:
FPv1.0

visitPipeSourceChannelMessage

public void visitPipeSourceChannelMessage(java.lang.isolate.IsolateMessage im)
Visits an IsolateMessage containing a Pipe.SourceChannel.

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit a Pipe.SourceChannel
This API element may not be present in some J2ME profiles.

visitPipeSinkChannelMessage

public void visitPipeSinkChannelMessage(java.lang.isolate.IsolateMessage im)
Visits an IsolateMessage containing a Pipe.SinkChannel.

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit a Pipe.SinkChannel
This API element may not be present in some J2ME profiles.

visitIsolateEventMessage

public void visitIsolateEventMessage(java.lang.isolate.IsolateMessage im)
Visits an IsolateMessage containing an IsolateEvent.

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit a IsolateEvent

visitCompositeMessage

public void visitCompositeMessage(java.lang.isolate.IsolateMessage im)
Visits an IsolateMessage containing a CompositeMessage (IsolateMessage[]).

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit a CompositeMessage

visitSocketChannelMessage

public void visitSocketChannelMessage(java.lang.isolate.IsolateMessage im)
Visits an IsolateMessage containing a SocketChannel.

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit a SocketChannel
This API element may not be present in some J2ME profiles.

visitServerSocketChannelMessage

public void visitServerSocketChannelMessage(java.lang.isolate.IsolateMessage im)
Visits an IsolateMessage containing a ServerSocketChannel.

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit a ServerSocketChannel
This API element may not be present in some J2ME profiles.

visitDatagramChannelMessage

public void visitDatagramChannelMessage(java.lang.isolate.IsolateMessage im)
Visits an IsolateMessage containing a DatagramChannel.

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit a DatagramChannel
This API element may not be present in some J2ME profiles.

visitFileChannelMessage

public void visitFileChannelMessage(java.lang.isolate.IsolateMessage im)
Visits an IsolateMessage containing a FileChannel.

Parameters:
im - the containing IsolateMessage
Throws:
NullPointerException - if im is null
IllegalStateException - if this message visitor cannot visit a FileChannel
This API element may not be present in some J2ME profiles.

visitEmptyMessage

public void visitEmptyMessage()
Visits the IsolateMessage.EMPTY_MESSAGE.

Throws:
IllegalStateException - if this message visitor cannot visit the empty message