com.vaadin.server
Class AbstractClientConnector

java.lang.Object
  extended by com.vaadin.server.AbstractClientConnector
All Implemented Interfaces:
MethodEventSource, ClientConnector, RpcTarget, com.vaadin.shared.Connector, java.io.Serializable
Direct Known Subclasses:
AbstractComponent, AbstractExtension

public abstract class AbstractClientConnector
extends java.lang.Object
implements ClientConnector, MethodEventSource

An abstract base class for ClientConnector implementations. This class provides all the basic functionality required for connectors.

Since:
7.0.0
Author:
Vaadin Ltd
See Also:
Serialized Form

Constructor Summary
AbstractClientConnector()
           
 
Method Summary
protected  void addExtension(Extension extension)
          Add an extension to this connector.
 void addListener(java.lang.Class<?> eventType, java.lang.Object target, java.lang.reflect.Method method)
          Deprecated. The EventRouter will be replaced by an EventRouter which does not use reflection in Vaadin 7.0.0. See #8640.
 void addListener(java.lang.Class<?> eventType, java.lang.Object target, java.lang.String methodName)
          Deprecated. The EventRouter will be replaced by an EventRouter which does not use reflection in Vaadin 7.0.0. See #8640.
protected  void addListener(java.lang.String eventIdentifier, java.lang.Class<?> eventType, java.lang.Object target, java.lang.reflect.Method method)
          Deprecated. The EventRouter will be replaced by an EventRouter which does not use reflection in Vaadin 7.0.0. See #8640.
protected  void addMethodInvocationToQueue(java.lang.String interfaceName, java.lang.reflect.Method method, java.lang.Object[] parameters)
          For internal use: adds a method invocation to the pending RPC call queue.
 void attach()
          Notifies the connector that it is connected to an application.
 void beforeClientResponse(boolean initial)
          Called before the shared state and RPC invocations are sent to the client.
protected  com.vaadin.shared.communication.SharedState createState()
          Creates the shared state bean to be used in server to client communication.
 void detach()
          Notifies the component that it is detached from the application.
 org.json.JSONObject encodeState()
          Called by the framework to encode the state to a JSONObject.
protected  void fireEvent(java.util.EventObject event)
          Sends the event to all listeners.
static java.lang.Iterable<ClientConnector> getAllChildrenIterable(ClientConnector connector)
          Get an Iterable for iterating over all child connectors, including both extensions and child components.
 java.lang.String getConnectorId()
           
 java.util.Collection<Extension> getExtensions()
          Get a read-only collection of all extensions attached to this connector.
 java.util.Collection<?> getListeners(java.lang.Class<?> eventType)
          Returns all listeners that are registered for the given event type or one of its subclasses.
 ClientConnector getParent()
           
protected  Resource getResource(java.lang.String key)
          Gets a resource defined using setResource(String, Resource) with the corresponding key.
 RpcManager getRpcManager(java.lang.Class<?> rpcInterface)
          Returns the RPC manager instance to use when receiving calls for an RPC interface.
protected
<T extends com.vaadin.shared.communication.ClientRpc>
T
getRpcProxy(java.lang.Class<T> rpcInterface)
          Returns an RPC proxy for a given server to client RPC interface for this component.
protected  VaadinServiceSession getSession()
          Finds the VaadinServiceSession to which this connector belongs.
protected  com.vaadin.shared.communication.SharedState getState()
           
 java.lang.Class<? extends com.vaadin.shared.communication.SharedState> getStateType()
          Returns the type of the shared state for this connector
 UI getUI()
          Finds a UI ancestor of this connector.
 boolean handleConnectorRequest(VaadinRequest request, VaadinResponse response, java.lang.String path)
          Handle a request directed to this connector.
protected  boolean hasListeners(java.lang.Class<?> eventType)
          Checks if the given Component.Event type is listened for this component.
 boolean isConnectorEnabled()
          Checks if the communicator is enabled.
 void markAsDirty()
          Marks that this connector's state might have changed.
 void markAsDirtyRecursive()
          Causes this connector and all connectors below it to be marked as dirty.
protected
<T extends com.vaadin.shared.communication.ServerRpc>
void
registerRpc(T implementation)
          Registers an RPC interface implementation for this component.
protected
<T> void
registerRpc(T implementation, java.lang.Class<T> rpcInterfaceType)
          Registers an RPC interface implementation for this component.
 void removeExtension(Extension extension)
          Remove an extension from this connector.
 void removeListener(java.lang.Class<?> eventType, java.lang.Object target)
          Removes all registered listeners matching the given parameters.
 void removeListener(java.lang.Class<?> eventType, java.lang.Object target, java.lang.reflect.Method method)
          Deprecated. The EventRouter will be replaced by an EventRouter which does not use reflection in Vaadin 7.0.0. See #8640.
 void removeListener(java.lang.Class<?> eventType, java.lang.Object target, java.lang.String methodName)
           Removes one registered listener method.
protected  void removeListener(java.lang.String eventIdentifier, java.lang.Class<?> eventType, java.lang.Object target)
          Removes all registered listeners matching the given parameters.
 void requestRepaint()
          Deprecated. As of 7.0.0, use markAsDirty() instead
 void requestRepaintAll()
          Deprecated. As of 7.0.0, use markAsDirtyRecursive() instead
 java.util.List<ClientMethodInvocation> retrievePendingRpcCalls()
          Returns the list of pending server to client RPC calls and clears the list.
 void setParent(ClientConnector parent)
          Sets the parent connector of the connector.
protected  void setResource(java.lang.String key, Resource resource)
          Registers a resource with this connector using the given key.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractClientConnector

public AbstractClientConnector()
Method Detail

requestRepaint

@Deprecated
public void requestRepaint()
Deprecated. As of 7.0.0, use markAsDirty() instead

Specified by:
requestRepaint in interface ClientConnector

markAsDirty

public void markAsDirty()
Description copied from interface: ClientConnector
Marks that this connector's state might have changed. When the framework is about to send new data to the client-side, it will run ClientConnector.beforeClientResponse(boolean) followed by ClientConnector.encodeState() for all connectors that are marked as dirty and send any updated state info to the client.

Specified by:
markAsDirty in interface ClientConnector

registerRpc

protected <T> void registerRpc(T implementation,
                               java.lang.Class<T> rpcInterfaceType)
Registers an RPC interface implementation for this component. A component can listen to multiple RPC interfaces, and subclasses can register additional implementations.

Parameters:
implementation - RPC interface implementation
rpcInterfaceType - RPC interface class for which the implementation should be registered
Since:
7.0

registerRpc

protected <T extends com.vaadin.shared.communication.ServerRpc> void registerRpc(T implementation)
Registers an RPC interface implementation for this component. A component can listen to multiple RPC interfaces, and subclasses can register additional implementations.

Parameters:
implementation - RPC interface implementation. Also used to deduce the type.
Since:
7.0

getState

protected com.vaadin.shared.communication.SharedState getState()

encodeState

public org.json.JSONObject encodeState()
                                throws org.json.JSONException
Description copied from interface: ClientConnector
Called by the framework to encode the state to a JSONObject. This is typically done by calling the static method AbstractCommunicationManager.encodeState(ClientConnector, SharedState) .

Specified by:
encodeState in interface ClientConnector
Returns:
a JSON object with the encoded connector state
Throws:
org.json.JSONException - if the state can not be encoded

createState

protected com.vaadin.shared.communication.SharedState createState()
Creates the shared state bean to be used in server to client communication.

By default a state object of the defined return type of getState() is created. Subclasses can override this method and return a new instance of the correct state class but this should rarely be necessary.

No configuration of the values of the state should be performed in createState().

Returns:
new shared state object
Since:
7.0

getStateType

public java.lang.Class<? extends com.vaadin.shared.communication.SharedState> getStateType()
Description copied from interface: ClientConnector
Returns the type of the shared state for this connector

Specified by:
getStateType in interface ClientConnector
Returns:
The type of the state. Must never return null.

getRpcProxy

protected <T extends com.vaadin.shared.communication.ClientRpc> T getRpcProxy(java.lang.Class<T> rpcInterface)
Returns an RPC proxy for a given server to client RPC interface for this component. TODO more javadoc, subclasses, ...

Parameters:
rpcInterface - RPC interface type
Since:
7.0

addMethodInvocationToQueue

protected void addMethodInvocationToQueue(java.lang.String interfaceName,
                                          java.lang.reflect.Method method,
                                          java.lang.Object[] parameters)
For internal use: adds a method invocation to the pending RPC call queue.

Parameters:
interfaceName - RPC interface name
method - RPC method
parameters - RPC all parameters
Since:
7.0

getRpcManager

public RpcManager getRpcManager(java.lang.Class<?> rpcInterface)
Description copied from interface: RpcTarget
Returns the RPC manager instance to use when receiving calls for an RPC interface.

Specified by:
getRpcManager in interface RpcTarget
Parameters:
rpcInterface - RPC interface for which a call was made
Returns:
RPC Manager handling calls for the interface
Since:
7.0
See Also:
RpcTarget.getRpcManager(Class)

retrievePendingRpcCalls

public java.util.List<ClientMethodInvocation> retrievePendingRpcCalls()
Description copied from interface: ClientConnector
Returns the list of pending server to client RPC calls and clears the list.

Specified by:
retrievePendingRpcCalls in interface ClientConnector
Returns:
an unmodifiable ordered list of pending server to client method calls (not null)

getConnectorId

public java.lang.String getConnectorId()
Specified by:
getConnectorId in interface com.vaadin.shared.Connector

getSession

protected VaadinServiceSession getSession()
Finds the VaadinServiceSession to which this connector belongs. If the connector has not been attached, null is returned.

Returns:
The connector's session, or null if not attached

getUI

public UI getUI()
Finds a UI ancestor of this connector. null is returned if no UI ancestor is found (typically because the connector is not attached to a proper hierarchy).

Specified by:
getUI in interface ClientConnector
Returns:
the UI ancestor of this connector, or null if none is found.

requestRepaintAll

@Deprecated
public void requestRepaintAll()
Deprecated. As of 7.0.0, use markAsDirtyRecursive() instead

Specified by:
requestRepaintAll in interface ClientConnector

markAsDirtyRecursive

public void markAsDirtyRecursive()
Description copied from interface: ClientConnector
Causes this connector and all connectors below it to be marked as dirty.

This should only be used in special cases, e.g when the state of a descendant depends on the state of an ancestor.

Specified by:
markAsDirtyRecursive in interface ClientConnector
See Also:
ClientConnector.markAsDirty()

getAllChildrenIterable

public static java.lang.Iterable<ClientConnector> getAllChildrenIterable(ClientConnector connector)
Get an Iterable for iterating over all child connectors, including both extensions and child components.

Parameters:
connector - the connector to get children for
Returns:
an Iterable giving all child connectors.

getExtensions

public java.util.Collection<Extension> getExtensions()
Description copied from interface: ClientConnector
Get a read-only collection of all extensions attached to this connector.

Specified by:
getExtensions in interface ClientConnector
Returns:
a collection of extensions

addExtension

protected void addExtension(Extension extension)
Add an extension to this connector. This method is protected to allow extensions to select which targets they can extend.

Parameters:
extension - the extension to add

removeExtension

public void removeExtension(Extension extension)
Description copied from interface: ClientConnector
Remove an extension from this connector.

Specified by:
removeExtension in interface ClientConnector
Parameters:
extension - the extension to remove.

setParent

public void setParent(ClientConnector parent)
Description copied from interface: ClientConnector
Sets the parent connector of the connector.

This method automatically calls ClientConnector.attach() if the connector becomes attached to the application, regardless of whether it was attached previously. Conversely, if the parent is null and the connector is attached to the application, ClientConnector.detach() is called for the connector.

This method is rarely called directly. One of the ComponentContainer.addComponent(Component) or addExtension(Extension) methods are normally used for adding connectors to a parent and they will call this method implicitly.

It is not possible to change the parent without first setting the parent to null.

Specified by:
setParent in interface ClientConnector
Parameters:
parent - the parent connector

getParent

public ClientConnector getParent()
Specified by:
getParent in interface ClientConnector
Specified by:
getParent in interface com.vaadin.shared.Connector

attach

public void attach()
Description copied from interface: ClientConnector
Notifies the connector that it is connected to an application.

The caller of this method is ClientConnector.setParent(ClientConnector) if the parent is itself already attached to the application. If not, the parent will call the ClientConnector.attach() for all its children when it is attached to the application. This method is always called before the connector's data is sent to the client-side for the first time.

The attachment logic is implemented in AbstractClientConnector.

Specified by:
attach in interface ClientConnector

detach

public void detach()
Notifies the component that it is detached from the application.

The caller of this method is ClientConnector.setParent(ClientConnector) if the parent is in the application. When the parent is detached from the application it is its response to call ClientConnector.detach() for all the children and to detach itself from the terminal.

The getSession() and getUI() methods might return null after this method is called.

Specified by:
detach in interface ClientConnector

isConnectorEnabled

public boolean isConnectorEnabled()
Description copied from interface: ClientConnector
Checks if the communicator is enabled. An enabled communicator is allowed to receive messages from its counter-part.

Specified by:
isConnectorEnabled in interface ClientConnector
Returns:
true if the connector can receive messages, false otherwise

beforeClientResponse

public void beforeClientResponse(boolean initial)
Description copied from interface: ClientConnector
Called before the shared state and RPC invocations are sent to the client. Gives the connector an opportunity to set computed/dynamic state values or to invoke last minute RPC methods depending on other component features.

This method must not alter the component hierarchy in any way. Calling ClientConnector.markAsDirty() from this method will have no effect.

Specified by:
beforeClientResponse in interface ClientConnector
Parameters:
initial - true if the client-side connector will be created and initialized after this method has been invoked. false if there is already an initialized client-side connector.

handleConnectorRequest

public boolean handleConnectorRequest(VaadinRequest request,
                                      VaadinResponse response,
                                      java.lang.String path)
                               throws java.io.IOException
Description copied from interface: ClientConnector
Handle a request directed to this connector. This can be used by connectors to dynamically generate a response and it is also used internally when serving ConnectorResources.

Requests to /APP/connector/[ui id]/[connector id]/ are routed to this method with the remaining part of the requested path available in the path parameter.

DynamicConnectorResource can be used to easily make an appropriate URL available to the client-side code.

Specified by:
handleConnectorRequest in interface ClientConnector
Parameters:
request - the request that should be handled
response - the response object to which the response should be written
path - the requested relative path
Returns:
true if the request has been handled, false if no response has been written.
Throws:
java.io.IOException - if there is a problem generating a response.

getResource

protected Resource getResource(java.lang.String key)
Gets a resource defined using setResource(String, Resource) with the corresponding key.

Parameters:
key - the string identifier of the resource
Returns:
a resource, or null if there's no resource associated with the given key
See Also:
setResource(String, Resource)

setResource

protected void setResource(java.lang.String key,
                           Resource resource)
Registers a resource with this connector using the given key. This will make the URL for retrieving the resource available to the client-side connector using com.vaadin.terminal.gwt.client.ui.AbstractConnector#getResourceUrl(String) with the same key.

Parameters:
key - the string key to associate the resource with
resource - the resource to set, or null to clear a previous association.

addListener

@Deprecated
protected void addListener(java.lang.String eventIdentifier,
                                      java.lang.Class<?> eventType,
                                      java.lang.Object target,
                                      java.lang.reflect.Method method)
Deprecated. The EventRouter will be replaced by an EventRouter which does not use reflection in Vaadin 7.0.0. See #8640.

Registers a new listener with the specified activation method to listen events generated by this component. If the activation method does not have any arguments the event object will not be passed to it when it's called.

This method additionally informs the event-api to route events with the given eventIdentifier to the components handleEvent function call.

For more information on the inheritable event mechanism see the com.vaadin.event package documentation.

Parameters:
eventIdentifier - the identifier of the event to listen for
eventType - the type of the listened event. Events of this type or its subclasses activate the listener.
target - the object instance who owns the activation method.
method - the activation method.
Since:
6.2

hasListeners

protected boolean hasListeners(java.lang.Class<?> eventType)
Checks if the given Component.Event type is listened for this component.

Parameters:
eventType - the event type to be checked
Returns:
true if a listener is registered for the given event type

removeListener

protected void removeListener(java.lang.String eventIdentifier,
                              java.lang.Class<?> eventType,
                              java.lang.Object target)
Removes all registered listeners matching the given parameters. Since this method receives the event type and the listener object as parameters, it will unregister all object's methods that are registered to listen to events of type eventType generated by this component.

This method additionally informs the event-api to stop routing events with the given eventIdentifier to the components handleEvent function call.

For more information on the inheritable event mechanism see the com.vaadin.event package documentation.

Parameters:
eventIdentifier - the identifier of the event to stop listening for
eventType - the exact event type the object listens to.
target - the target object that has registered to listen to events of type eventType with one or more methods.
Since:
6.2

addListener

@Deprecated
public void addListener(java.lang.Class<?> eventType,
                                   java.lang.Object target,
                                   java.lang.reflect.Method method)
Deprecated. The EventRouter will be replaced by an EventRouter which does not use reflection in Vaadin 7.0.0. See #8640.

Registers a new listener with the specified activation method to listen events generated by this component. If the activation method does not have any arguments the event object will not be passed to it when it's called.

For more information on the inheritable event mechanism see the com.vaadin.event package documentation.

Specified by:
addListener in interface MethodEventSource
Parameters:
eventType - the type of the listened event. Events of this type or its subclasses activate the listener.
target - the object instance who owns the activation method.
method - the activation method.

addListener

@Deprecated
public void addListener(java.lang.Class<?> eventType,
                                   java.lang.Object target,
                                   java.lang.String methodName)
Deprecated. The EventRouter will be replaced by an EventRouter which does not use reflection in Vaadin 7.0.0. See #8640.

Convenience method for registering a new listener with the specified activation method to listen events generated by this component. If the activation method does not have any arguments the event object will not be passed to it when it's called.

This version of addListener gets the name of the activation method as a parameter. The actual method is reflected from object, and unless exactly one match is found, java.lang.IllegalArgumentException is thrown.

For more information on the inheritable event mechanism see the com.vaadin.event package documentation.

Note: Using this method is discouraged because it cannot be checked during compilation. Use addListener(Class, Object, Method) or #addListener(com.vaadin.ui.Component.Listener) instead.

Specified by:
addListener in interface MethodEventSource
Parameters:
eventType - the type of the listened event. Events of this type or its subclasses activate the listener.
target - the object instance who owns the activation method.
methodName - the name of the activation method.

removeListener

public void removeListener(java.lang.Class<?> eventType,
                           java.lang.Object target)
Removes all registered listeners matching the given parameters. Since this method receives the event type and the listener object as parameters, it will unregister all object's methods that are registered to listen to events of type eventType generated by this component.

For more information on the inheritable event mechanism see the com.vaadin.event package documentation.

Specified by:
removeListener in interface MethodEventSource
Parameters:
eventType - the exact event type the object listens to.
target - the target object that has registered to listen to events of type eventType with one or more methods.

removeListener

@Deprecated
public void removeListener(java.lang.Class<?> eventType,
                                      java.lang.Object target,
                                      java.lang.reflect.Method method)
Deprecated. The EventRouter will be replaced by an EventRouter which does not use reflection in Vaadin 7.0.0. See #8640.

Removes one registered listener method. The given method owned by the given object will no longer be called when the specified events are generated by this component.

For more information on the inheritable event mechanism see the com.vaadin.event package documentation.

Specified by:
removeListener in interface MethodEventSource
Parameters:
eventType - the exact event type the object listens to.
target - target object that has registered to listen to events of type eventType with one or more methods.
method - the method owned by target that's registered to listen to events of type eventType.

removeListener

public void removeListener(java.lang.Class<?> eventType,
                           java.lang.Object target,
                           java.lang.String methodName)

Removes one registered listener method. The given method owned by the given object will no longer be called when the specified events are generated by this component.

This version of removeListener gets the name of the activation method as a parameter. The actual method is reflected from target, and unless exactly one match is found, java.lang.IllegalArgumentException is thrown.

For more information on the inheritable event mechanism see the com.vaadin.event package documentation.

Specified by:
removeListener in interface MethodEventSource
Parameters:
eventType - the exact event type the object listens to.
target - the target object that has registered to listen to events of type eventType with one or more methods.
methodName - the name of the method owned by target that's registered to listen to events of type eventType.

getListeners

public java.util.Collection<?> getListeners(java.lang.Class<?> eventType)
Returns all listeners that are registered for the given event type or one of its subclasses.

Parameters:
eventType - The type of event to return listeners for.
Returns:
A collection with all registered listeners. Empty if no listeners are found.

fireEvent

protected void fireEvent(java.util.EventObject event)
Sends the event to all listeners.

Parameters:
event - the Event to be sent to all listeners.


Copyright © 2000-2011 Vaadin Ltd. All Rights Reserved.