Package com.vaadin.server
Class JsonPaintTarget
- java.lang.Object
-
- com.vaadin.server.JsonPaintTarget
-
- All Implemented Interfaces:
PaintTarget,Serializable
public class JsonPaintTarget extends Object implements PaintTarget
User Interface Description Language Target. TODO document better: role of this class, UIDL format, attributes, variables, etc.- Since:
- 5.0
- Author:
- Vaadin Ltd.
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.vaadin.server.PaintTarget
PaintTarget.PaintStatus
-
-
Constructor Summary
Constructors Constructor Description JsonPaintTarget(LegacyCommunicationManager manager, Writer outWriter, boolean cachingRequired)Creates a new JsonPaintTarget.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddAttribute(String name, boolean value)Adds a boolean attribute to component.voidaddAttribute(String name, double value)Adds a double attribute to component.voidaddAttribute(String name, float value)Adds a float attribute to component.voidaddAttribute(String name, int value)Adds a integer attribute to component.voidaddAttribute(String name, long value)Adds a long attribute to component.voidaddAttribute(String name, Resource value)Adds a resource attribute to component.voidaddAttribute(String name, Component value)Adds a Component type attribute.voidaddAttribute(String name, Object[] values)voidaddAttribute(String name, String value)Adds a string attribute to component.voidaddAttribute(String name, Map<?,?> value)TODOvoidaddCharacterData(String text)Adds CDATA node to target UIDL-tree.voidaddSection(String sectionTagName, String sectionData)Prints the single text section.voidaddText(String str)Prints XML-escaped text.voidaddUIDL(String xml)Adds XML directly to UIDL.voidaddUploadStreamVariable(VariableOwner owner, String name)Adds a upload stream type variable.voidaddVariable(VariableOwner owner, String name, boolean value)Adds a boolean type variable.voidaddVariable(VariableOwner owner, String name, double value)Adds a double type variable.voidaddVariable(VariableOwner owner, String name, float value)Adds a float type variable.voidaddVariable(VariableOwner owner, String name, int value)Adds a int type variable.voidaddVariable(VariableOwner owner, String name, long value)Adds a long type variable.voidaddVariable(VariableOwner owner, String name, StreamVariable value)Adds details aboutStreamVariableto the UIDL stream.voidaddVariable(VariableOwner owner, String name, Component value)Adds a Component type variable.voidaddVariable(VariableOwner owner, String name, String value)Adds a string type variable.voidaddVariable(VariableOwner owner, String name, String[] value)Adds a string array type variable.voidaddXMLSection(String sectionTagName, String sectionData, String namespace)Adds XML section with namespace.voidclose()Closes the paint target.voidendPaintable(Component paintable)Prints paintable element end tag.voidendTag(String tagName)Prints the element end tag.static StringescapeJSON(String s)Escapes the given string so it can safely be used as a JSON string.static StringescapeXML(String xml)Substitutes the XML sensitive characters with predefined XML entities.StringgetTag(ClientConnector clientConnector)StringgetUIDL()Gets the UIDL already printed to stream.Collection<Class<? extends ClientConnector>>getUsedClientConnectors()Set<Object>getUsedResources()booleanisFullRepaint()PaintTarget.PaintStatusstartPaintable(Component connector, String tagName)Prints element start tag of a paintable section.voidstartTag(String tagName)Prints element start tag.voidstartTag(String tagName, boolean isChildNode)Prints the element start tag.
-
-
-
Constructor Detail
-
JsonPaintTarget
public JsonPaintTarget(LegacyCommunicationManager manager, Writer outWriter, boolean cachingRequired) throws PaintException
Creates a new JsonPaintTarget.- Parameters:
manager-outWriter- A character-output stream.cachingRequired- true if this is not a full repaint, i.e. caches are to be used.- Throws:
PaintException- if the paint operation failed.
-
-
Method Detail
-
startTag
public void startTag(String tagName) throws PaintException
Description copied from interface:PaintTargetPrints element start tag.Todo: Checking of input values
- Specified by:
startTagin interfacePaintTarget- Parameters:
tagName- the name of the start tag.- Throws:
PaintException- if the paint operation failed.
-
startTag
public void startTag(String tagName, boolean isChildNode) throws PaintException
Prints the element start tag.Todo: Checking of input values- Parameters:
tagName- the name of the start tag.- Throws:
PaintException- if the paint operation failed.
-
endTag
public void endTag(String tagName) throws PaintException
Prints the element end tag. If the parent tag is closed before every child tag is closed an PaintException is raised.- Specified by:
endTagin interfacePaintTarget- Parameters:
tag- the name of the end tag.- Throws:
PaintException- if the paint operation failed.
-
escapeXML
public static String escapeXML(String xml)
Substitutes the XML sensitive characters with predefined XML entities.- Parameters:
xml- the String to be substituted.- Returns:
- A new string instance where all occurrences of XML sensitive characters are substituted with entities.
-
escapeJSON
public static String escapeJSON(String s)
Escapes the given string so it can safely be used as a JSON string.- Parameters:
s- The string to escape- Returns:
- Escaped version of the string
-
addText
public void addText(String str) throws PaintException
Prints XML-escaped text.- Specified by:
addTextin interfacePaintTarget- Parameters:
str-- Throws:
PaintException- if the paint operation failed.
-
addAttribute
public void addAttribute(String name, boolean value) throws PaintException
Description copied from interface:PaintTargetAdds a boolean attribute to component. Atributes must be added before any content is written.- Specified by:
addAttributein interfacePaintTarget- Parameters:
name- the Attribute name.value- the Attribute value.- Throws:
PaintException- if the paint operation failed.
-
addAttribute
public void addAttribute(String name, Resource value) throws PaintException
Description copied from interface:PaintTargetAdds a resource attribute to component. Atributes must be added before any content is written.- Specified by:
addAttributein interfacePaintTarget- Parameters:
name- the Attribute namevalue- the Attribute value- Throws:
PaintException- if the paint operation failed.
-
addAttribute
public void addAttribute(String name, int value) throws PaintException
Description copied from interface:PaintTargetAdds a integer attribute to component. Atributes must be added before any content is written.- Specified by:
addAttributein interfacePaintTarget- Parameters:
name- the Attribute name.value- the Attribute value.- Throws:
PaintException- if the paint operation failed.
-
addAttribute
public void addAttribute(String name, long value) throws PaintException
Description copied from interface:PaintTargetAdds a long attribute to component. Atributes must be added before any content is written.- Specified by:
addAttributein interfacePaintTarget- Parameters:
name- the Attribute name.value- the Attribute value.- Throws:
PaintException- if the paint operation failed.
-
addAttribute
public void addAttribute(String name, float value) throws PaintException
Description copied from interface:PaintTargetAdds a float attribute to component. Atributes must be added before any content is written.- Specified by:
addAttributein interfacePaintTarget- Parameters:
name- the Attribute name.value- the Attribute value.- Throws:
PaintException- if the paint operation failed.
-
addAttribute
public void addAttribute(String name, double value) throws PaintException
Description copied from interface:PaintTargetAdds a double attribute to component. Atributes must be added before any content is written.- Specified by:
addAttributein interfacePaintTarget- Parameters:
name- the Attribute name.value- the Attribute value.- Throws:
PaintException- if the paint operation failed.
-
addAttribute
public void addAttribute(String name, String value) throws PaintException
Description copied from interface:PaintTargetAdds a string attribute to component. Atributes must be added before any content is written.- Specified by:
addAttributein interfacePaintTarget- Parameters:
name- the Boolean attribute name.value- the Boolean attribute value.- Throws:
PaintException- if the paint operation failed.
-
addAttribute
public void addAttribute(String name, Component value) throws PaintException
Description copied from interface:PaintTargetAdds a Component type attribute. On client side the value will be a terminal specific reference to corresponding component on client side implementation.- Specified by:
addAttributein interfacePaintTarget- Parameters:
name- the name of the attributevalue- the Component to be referenced on client side- Throws:
PaintException
-
addAttribute
public void addAttribute(String name, Map<?,?> value) throws PaintException
Description copied from interface:PaintTargetTODO- Specified by:
addAttributein interfacePaintTarget- Throws:
PaintException
-
addAttribute
public void addAttribute(String name, Object[] values)
- Specified by:
addAttributein interfacePaintTarget
-
addVariable
public void addVariable(VariableOwner owner, String name, String value) throws PaintException
Description copied from interface:PaintTargetAdds a string type variable.- Specified by:
addVariablein interfacePaintTarget- Parameters:
owner- the Listener for variable changes.name- the Variable name.value- the Variable initial value.- Throws:
PaintException- if the paint operation failed.
-
addVariable
public void addVariable(VariableOwner owner, String name, Component value) throws PaintException
Description copied from interface:PaintTargetAdds a Component type variable. On client side the variable value will be a terminal specific reference to corresponding component on client side implementation. When updated from client side, terminal will map the client side component reference back to a corresponding server side reference.- Specified by:
addVariablein interfacePaintTarget- Parameters:
owner- the Listener for variable changesname- the name of the variablevalue- the initial value of the variable- Throws:
PaintException- if the paint oparation fails
-
addVariable
public void addVariable(VariableOwner owner, String name, int value) throws PaintException
Description copied from interface:PaintTargetAdds a int type variable.- Specified by:
addVariablein interfacePaintTarget- Parameters:
owner- the Listener for variable changes.name- the Variable name.value- the Variable initial value.- Throws:
PaintException- if the paint operation failed.
-
addVariable
public void addVariable(VariableOwner owner, String name, long value) throws PaintException
Description copied from interface:PaintTargetAdds a long type variable.- Specified by:
addVariablein interfacePaintTarget- Parameters:
owner- the Listener for variable changes.name- the Variable name.value- the Variable initial value.- Throws:
PaintException- if the paint operation failed.
-
addVariable
public void addVariable(VariableOwner owner, String name, float value) throws PaintException
Description copied from interface:PaintTargetAdds a float type variable.- Specified by:
addVariablein interfacePaintTarget- Parameters:
owner- the Listener for variable changes.name- the Variable name.value- the Variable initial value.- Throws:
PaintException- if the paint operation failed.
-
addVariable
public void addVariable(VariableOwner owner, String name, double value) throws PaintException
Description copied from interface:PaintTargetAdds a double type variable.- Specified by:
addVariablein interfacePaintTarget- Parameters:
owner- the Listener for variable changes.name- the Variable name.value- the Variable initial value.- Throws:
PaintException- if the paint operation failed.
-
addVariable
public void addVariable(VariableOwner owner, String name, boolean value) throws PaintException
Description copied from interface:PaintTargetAdds a boolean type variable.- Specified by:
addVariablein interfacePaintTarget- Parameters:
owner- the Listener for variable changes.name- the Variable name.value- the Variable initial value.- Throws:
PaintException- if the paint operation failed.
-
addVariable
public void addVariable(VariableOwner owner, String name, String[] value) throws PaintException
Description copied from interface:PaintTargetAdds a string array type variable.- Specified by:
addVariablein interfacePaintTarget- Parameters:
owner- the Listener for variable changes.name- the Variable name.value- the Variable initial value.- Throws:
PaintException- if the paint operation failed.
-
addUploadStreamVariable
public void addUploadStreamVariable(VariableOwner owner, String name) throws PaintException
Adds a upload stream type variable. TODO not converted for JSON- Specified by:
addUploadStreamVariablein interfacePaintTarget- Parameters:
owner- the Listener for variable changes.name- the Variable name.- Throws:
PaintException- if the paint operation failed.
-
addSection
public void addSection(String sectionTagName, String sectionData) throws PaintException
Prints the single text section. Prints full text section. The section data is escaped- Specified by:
addSectionin interfacePaintTarget- Parameters:
sectionTagName- the name of the tag.sectionData- the section data to be printed.- Throws:
PaintException- if the paint operation failed.
-
addUIDL
public void addUIDL(String xml) throws PaintException
Adds XML directly to UIDL.- Specified by:
addUIDLin interfacePaintTarget- Parameters:
xml- the Xml to be added.- Throws:
PaintException- if the paint operation failed.
-
addXMLSection
public void addXMLSection(String sectionTagName, String sectionData, String namespace) throws PaintException
Adds XML section with namespace.- Specified by:
addXMLSectionin interfacePaintTarget- Parameters:
sectionTagName- the name of the tag.sectionData- the section data.namespace- the namespace to be added.- Throws:
PaintException- if the paint operation failed.- See Also:
PaintTarget.addXMLSection(String, String, String)
-
getUIDL
public String getUIDL()
Gets the UIDL already printed to stream. Paint target must be closed before thegetUIDLcan be called.- Returns:
- the UIDL.
-
close
public void close() throws PaintExceptionCloses the paint target. Paint target must be closed before thegetUIDLcan be called. Subsequent attempts to write to paint target. If the target was already closed, call to this function is ignored. will generate an exception.- Throws:
PaintException- if the paint operation failed.
-
startPaintable
public PaintTarget.PaintStatus startPaintable(Component connector, String tagName) throws PaintException
Description copied from interface:PaintTargetPrints element start tag of a paintable section. Starts a paintable section using the given tag. The PaintTarget may implement a caching scheme, that checks the paintable has actually changed or can a cached version be used instead. This method should call the startTag method.If the
Componentis found in cache and this function returns true it may omit the content and close the tag, in which case cached content should be used.This method may also add only a reference to the paintable and queue the paintable to be painted separately.
Each paintable being painted should be closed by a matching
PaintTarget.endPaintable(Component)regardless of thePaintTarget.PaintStatusreturned.- Specified by:
startPaintablein interfacePaintTarget- Parameters:
connector- the paintable to start.tagName- the name of the start tag.- Returns:
PaintTarget.PaintStatus- ready to paint or already cached on the client (also used for sub paintables that are painted later separately)- Throws:
PaintException- if the paint operation failed.- See Also:
PaintTarget.startTag(String)
-
endPaintable
public void endPaintable(Component paintable) throws PaintException
Description copied from interface:PaintTargetPrints paintable element end tag. Calls toPaintTarget.startPaintable(Component, String)should be matched byPaintTarget.endPaintable(Component). If the parent tag is closed before every child tag is closed a PaintException is raised.- Specified by:
endPaintablein interfacePaintTarget- Parameters:
paintable- the paintable to close.- Throws:
PaintException- if the paint operation failed.
-
addCharacterData
public void addCharacterData(String text) throws PaintException
Description copied from interface:PaintTargetAdds CDATA node to target UIDL-tree.- Specified by:
addCharacterDatain interfacePaintTarget- Parameters:
text- the Character data to add- Throws:
PaintException- if the paint operation failed.
-
getTag
public String getTag(ClientConnector clientConnector)
- Specified by:
getTagin interfacePaintTarget- Returns:
- the "tag" string used in communication to present given
ClientConnectortype. Terminal may define how to present the connector.
-
getUsedClientConnectors
public Collection<Class<? extends ClientConnector>> getUsedClientConnectors()
-
addVariable
public void addVariable(VariableOwner owner, String name, StreamVariable value) throws PaintException
Description copied from interface:PaintTargetAdds details aboutStreamVariableto the UIDL stream. Eg. in web terminals Receivers are typically rendered for the client side as URLs, where the client side implementation can do an http post request.The urls in UIDL message may use Vaadin specific protocol. Before actually using the urls on the client side, they should be passed via
com.vaadin.client.ApplicationConnection#translateVaadinUri(String).Note that in current terminal implementation StreamVariables are cleaned from the terminal only when:
- a StreamVariable with same name replaces an old one
- the variable owner is no more attached
- the developer signals this by calling
StreamVariable.StreamingStartEvent.disposeStreamVariable()
- Specified by:
addVariablein interfacePaintTarget- Parameters:
owner- the ReceiverOwner that can track the progress of streaming to the given StreamVariablename- an identifying name for the StreamVariablevalue- the StreamVariable to paint- Throws:
PaintException- if the paint operation failed.
-
isFullRepaint
public boolean isFullRepaint()
- Specified by:
isFullRepaintin interfacePaintTarget- Returns:
- true if a full repaint has been requested. E.g. refresh in a browser window or such.
-
-