org.apache.cayenne.remote
Class ClientChannel

java.lang.Object
  extended by org.apache.cayenne.remote.ClientChannel
All Implemented Interfaces:
DataChannel

public class ClientChannel
extends Object
implements DataChannel

A DataChannel implementation that accesses a remote server via a ClientConnection.

Since:
1.2

Field Summary
protected  boolean channelEventsEnabled
           
protected  ClientConnection connection
           
protected  GraphDiffCompressor diffCompressor
           
protected  EntityResolver entityResolver
           
protected  EventManager eventManager
           
 
Fields inherited from interface org.apache.cayenne.DataChannel
FLUSH_CASCADE_SYNC, FLUSH_NOCASCADE_SYNC, GRAPH_CHANGED_SUBJECT, GRAPH_FLUSHED_SUBJECT, GRAPH_ROLLEDBACK_SUBJECT, ROLLBACK_CASCADE_SYNC
 
Constructor Summary
ClientChannel(ClientConnection connection)
          Creates a new channel accessing remote server via provided connection.
ClientChannel(ClientConnection connection, boolean channelEventsEnabled)
           
ClientChannel(ClientConnection connection, boolean channelEventsEnabled, EventManager eventManager)
           
ClientChannel(ClientConnection connection, boolean channelEventsEnabled, EventManager eventManager, boolean remoteEventsOptional)
           
 
Method Summary
 EntityResolver getEntityResolver()
          Returns EntityResolver obtained from the server.
 EventManager getEventManager()
          Returns an EventManager associated with this channel.
 QueryResponse onQuery(ObjectContext context, Query query)
          Executes a query, using provided context to register persistent objects if query returns any objects.
 GraphDiff onSync(ObjectContext originatingContext, GraphDiff changes, int syncType)
          Processes synchronization request from a child ObjectContext, returning a GraphDiff that describes changes to objects made on the receiving end as a result of syncronization.
protected  Object send(ClientMessage message, Class<?> resultClass)
          Sends a message via connector, getting a result as an instance of a specific class.
protected  boolean setupRemoteChannelListener()
          Starts up an EventBridge to listen for remote updates.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

connection

protected ClientConnection connection

eventManager

protected EventManager eventManager

entityResolver

protected EntityResolver entityResolver

channelEventsEnabled

protected boolean channelEventsEnabled

diffCompressor

protected GraphDiffCompressor diffCompressor
Constructor Detail

ClientChannel

public ClientChannel(ClientConnection connection)
Creates a new channel accessing remote server via provided connection. Channel created using this constructor will post no events of its own and provide its users with a multithreaded EventManager.


ClientChannel

public ClientChannel(ClientConnection connection,
                     boolean channelEventsEnabled)

ClientChannel

public ClientChannel(ClientConnection connection,
                     boolean channelEventsEnabled,
                     EventManager eventManager)
              throws CayenneRuntimeException
Throws:
CayenneRuntimeException

ClientChannel

public ClientChannel(ClientConnection connection,
                     boolean channelEventsEnabled,
                     EventManager eventManager,
                     boolean remoteEventsOptional)
              throws CayenneRuntimeException
Parameters:
remoteEventsOptional - if true, failure to start an EventBridge will not result in an exception.
Throws:
CayenneRuntimeException
Since:
3.0
Method Detail

getEventManager

public EventManager getEventManager()
Description copied from interface: DataChannel
Returns an EventManager associated with this channel. Channel may return null if EventManager is not available for any reason.

Specified by:
getEventManager in interface DataChannel

onQuery

public QueryResponse onQuery(ObjectContext context,
                             Query query)
Description copied from interface: DataChannel
Executes a query, using provided context to register persistent objects if query returns any objects.

Specified by:
onQuery in interface DataChannel
Parameters:
context - an ObjectContext that originated the query, used to register result objects.
Returns:
a generic response object that encapsulates result of the execution.

onSync

public GraphDiff onSync(ObjectContext originatingContext,
                        GraphDiff changes,
                        int syncType)
Description copied from interface: DataChannel
Processes synchronization request from a child ObjectContext, returning a GraphDiff that describes changes to objects made on the receiving end as a result of syncronization.

Specified by:
onSync in interface DataChannel
Parameters:
originatingContext - an ObjectContext that initiated the sync. Can be null.
changes - diff from the context that initiated the sync.
syncType - One of DataChannel.FLUSH_NOCASCADE_SYNC, DataChannel.FLUSH_CASCADE_SYNC, DataChannel.ROLLBACK_CASCADE_SYNC.

getEntityResolver

public EntityResolver getEntityResolver()
Returns EntityResolver obtained from the server. On first access, this method sends a message to the server to retrieve the EntityResolver. On subsequent calls locally cached resolver is used.

Specified by:
getEntityResolver in interface DataChannel

setupRemoteChannelListener

protected boolean setupRemoteChannelListener()
                                      throws CayenneRuntimeException
Starts up an EventBridge to listen for remote updates. Returns true if the listener was setup, false if not. False can be returned if the underlying connection doesn't support events of if there is no EventManager available.

Throws:
CayenneRuntimeException

send

protected Object send(ClientMessage message,
                      Class<?> resultClass)
Sends a message via connector, getting a result as an instance of a specific class.

Throws:
CayenneRuntimeException - if an underlying connector exception occurred, or a result is not of expected type.


Copyright © 2001-2011 Apache Cayenne. All Rights Reserved.