Packageorg.granite.tide
Classpublic class Tide
InheritanceTide Inheritance flash.events.EventDispatcher
SubclassesCdi, Ejb, Seam, Spring

Tide is the base implementation of the Tide application manager singleton



Public Properties
 PropertyDefined by
  busy : Boolean = false
Tide
  currentModulePrefix : String
Tide
  destination : String
[read-only] RemoteObject destination used
Tide
  disconnected : Boolean = false
Tide
  showBusyCursor : Boolean = true
[static]
Tide
Protected Properties
 PropertyDefined by
  _ro : RemoteObject = null
Tide
  ro : RemoteObject
[read-only]
Tide
  _roInitialize : RemoteObject = null
Tide
  roInitialize : RemoteObject
[read-only]
Tide
  _rosByDestination : Dictionary
Tide
Public Methods
 MethodDefined by
  
Tide(destination:String)
Tide
  
addComponent(name:String, type:Class, inConversation:Boolean = false, autoCreate:Boolean = true, restrict:int, overrideIfPresent:Boolean = true):void
Register a Tide component with a specified definition and scan dynamic dependency injections
Tide
  
addComponentFromInstance(instance:Object, name:String, inConversation:Boolean = false):void
Register a Tide component from an existing instance
Tide
  
addComponents(types:Array):void
Register many Tide components at once The component definitions are scanned from annotations
Tide
  
addComponentWithFactory(name:String, type:Class, properties:Object, inConversation:Boolean = false, autoCreate:Boolean = true, restrict:int, overrideIfPresent:Boolean = true):void
Register a Tide component with static dependency injections Dynamic dependency injections are also scanned
Tide
  
addContextEventListener(type:String, handler:Function = null, remote:Boolean = false):void
Add a context listener for a particular event type
Tide
  
addEventObserver(eventType:String, componentName:String, methodName:String, remote:Boolean = false, create:Boolean = true, localOnly:Boolean = true):void
Register an event observer
Tide
  
addExceptionHandler(handlerClass:Class):void
Add an exception handler class The class should implement IExceptionHandler
Tide
  
addModule(module:Object, appDomain:ApplicationDomain = null):void
Register a Tide module
Tide
  
addPlugin(plugin:ITidePlugin):void
Register a plugin instance
Tide
  
Notify the framework that it should wait for a async operation before effectively logging out.
Tide
  
[static] Internal method to determine current application in both Flex 3 and Flex 4
Tide
  
getComponentRemoteSync(name:String):int
Return the remote synchronization type of the component
Tide
  
getComponentRestrict(name:String):int
Return the security restriction of the component
Tide
  
getComponentScope(name:String):int
Returns the scope of a component
Tide
  
getContext(contextId:String = null, parentContextId:String = null, create:Boolean = true):BaseContext
Return a context from its id
Tide
  
getInstance(destination:String = null, tideClass:Class = null):Tide
[static] Factory for current instance Tide singleton
Tide
  
getManagedInstance(component:Object):Array
Tide
  
getRemoteObject(componentName:String):RemoteObject
Returns the internal RemoteObject used for a particular component name
Tide
  
initApplication(autoRegisterUIComponents:Boolean = true):void
Init the Tide application
Tide
  
internalNameForTypedComponent(name:String):String
[static]
Tide
  
isComponent(name:String):Boolean
Checks a name is a registered Tide component
Tide
  
isComponentAutoCreate(name:String):Boolean
Returns the creation policy of a component
Tide
  
isComponentDefaultProxy(name:String):Boolean
Return the proxy status of the component
Tide
  
isComponentGlobal(name:String):Boolean
Return if the specific component is defined as global (not in a namespace)
Tide
  
isComponentInConversation(name:String):Boolean
Returns the scope of a component
Tide
  
isComponentInEvent(name:String):Boolean
Returns the scope of a component
Tide
  
isComponentInSession(name:String):Boolean
Returns the scope of a component
Tide
  
isComponentRestrict(name:String):Boolean
Return the security restriction of the component
Tide
  
isSubcontext(name:String):Boolean
Checks a name is a registered Tide subcontext
Tide
  
processInterceptors(message:IMessage, before:Boolean):void
Tide
  
removeComponent(name:String):void
Unregister a Tide component and destroys all instances
Tide
  
removeContextEventListener(type:String, handler:Function):void
Unregister a context event listener
Tide
  
removeManagedInstance(component:Object):void
Tide
  
removeModule(module:Object):void
Unregister a Tide module
Tide
  
removeProxyDescriptor(name:*, value:*):void
Remove descriptor for proxy when value is no more a proxy
Tide
  
[static] Clear Tide singleton (should be used only for testing)
Tide
  
setComponentAutoCreate(name:String, autoCreate:Boolean):void
Define the creation policy of the component
Tide
  
setComponentCustomDescriptor(name:String, xmlDescriptor:XML):void
Define the custom XML descriptor for the component
Tide
  
setComponentGlobal(name:String, global:Boolean):void
Define if the component is defined as global (cannot be in a namespace/subcontext)
Tide
  
setComponentRemoteSync(name:String, remoteSync:int):void
Define the remote synchronization of the component If false, the component state will never be sent to the server
Tide
  
setComponentRestrict(name:String, restrict:int):void
Define the security restriction of the component If RESTRICT_YES, the component state will be cleared when user logs out Default value is RESTRICT_UNKNOWN meaning if will be inferred from server definition when possible
Tide
  
setComponentScope(name:String, scope:int):void
Define the scope of a component
Tide
  
setManagedInstance(component:Object, context:BaseContext, name:String):void
Tide
  
tryLogout():void
Try logout.
Tide
Protected Methods
 MethodDefined by
  
Resets Tide application (mainly used in test cases)
Tide
Public Constants
 ConstantDefined by
  CONTEXT_CREATE : String = "org.granite.tide.contextCreate"
[static]
Tide
  CONTEXT_DESTROY : String = "org.granite.tide.contextDestroy"
[static]
Tide
  CONTEXT_FAULT : String = "org.granite.tide.contextFault"
[static]
Tide
  CONTEXT_RESULT : String = "org.granite.tide.contextResult"
[static]
Tide
  CONVERSATION_PROPAGATION_TAG : String = "conversationPropagation"
[static]
Tide
  CONVERSATION_TAG : String = "conversationId"
[static]
Tide
  DEFAULT_CONTEXT : String = "__DEFAULT_CONTEXT__"
[static]
Tide
  IS_FIRST_CALL_TAG : String = "org.granite.tide.isFirstCall"
[static]
Tide
  IS_FIRST_CONVERSATION_CALL_TAG : String = "org.granite.tide.isFirstConversationCall"
[static]
Tide
  IS_LONG_RUNNING_CONVERSATION_TAG : String = "isLongRunningConversation"
[static]
Tide
  LOGGED_OUT : String = "org.granite.tide.loggedOut"
[static]
Tide
  LOGIN : String = "org.granite.tide.login"
[static]
Tide
  LOGOUT : String = "org.granite.tide.logout"
[static]
Tide
  PLUGIN_ADD_COMPONENT : String = "org.granite.tide.plugin.addComponent"
[static]
Tide
  PLUGIN_LOGIN_FAULT : String = "org.granite.tide.plugin.loginFault"
[static]
Tide
  PLUGIN_LOGIN_SUCCESS : String = "org.granite.tide.plugin.loginSuccess"
[static]
Tide
  PLUGIN_LOGOUT : String = "org.granite.tide.plugin.logout"
[static]
Tide
  PLUGIN_SET_CREDENTIALS : String = "org.granite.tide.plugin.setCredentials"
[static]
Tide
  QCN_BASECONTEXT : String = ""
[static]
Tide
  QCN_ICOMPONENT : String = ""
[static]
Tide
  QCN_IENTITY : String = ""
[static]
Tide
  QCN_ILIST : String = ""
[static]
Tide
  QCN_IUICOMPONENT : String = ""
[static]
Tide
  QCN_SUBCONTEXT : String = ""
[static]
Tide
  RESTRICT_NO : int = 1
[static]
Tide
  RESTRICT_UNKNOWN : int = 0
[static]
Tide
  RESTRICT_YES : int = 2
[static]
Tide
  SCOPE_CONVERSATION : int = 2
[static]
Tide
  SCOPE_EVENT : int = 3
[static]
Tide
  SCOPE_SESSION : int = 1
[static]
Tide
  SCOPE_UNKNOWN : int = 0
[static]
Tide
  SESSION_EXPIRED : String = "org.granite.tide.sessionExpired"
[static]
Tide
  STARTUP : String = "org.granite.tide.startup"
[static]
Tide
  SYNC_BIDIRECTIONAL : int = 2
[static]
Tide
  SYNC_NONE : int = 0
[static]
Tide
  SYNC_SERVER_TO_CLIENT : int = 1
[static]
Tide
  TYPED_IMPL_PREFIX : String = "__typedImpl__"
[static]
Tide
  TYPE_SUBCONTEXT : Type
[static]
Tide
  WAS_LONG_RUNNING_CONVERSATION_CREATED_TAG : String = "wasLongRunningConversationCreated"
[static]
Tide
  WAS_LONG_RUNNING_CONVERSATION_ENDED_TAG : String = "wasLongRunningConversationEnded"
[static]
Tide
  WINDOW_CLOSE : String = "globalNotifyWindowClose"
[static]
Tide
  WINDOW_CREATE : String = "globalNotifyWindowCreate"
[static]
Tide
Property detail
busyproperty
public var busy:Boolean = false
currentModulePrefixproperty 
currentModulePrefix:String  [read-write]

This property can be used as the source for data binding.

Implementation
    public function get currentModulePrefix():String
    public function set currentModulePrefix(value:String):void
destinationproperty 
destination:String  [read-only]

RemoteObject destination used

This property can be used as the source for data binding.

Implementation
    public function get destination():String
disconnectedproperty 
public var disconnected:Boolean = false
_roproperty 
protected var _ro:RemoteObject = null
roproperty 
ro:RemoteObject  [read-only]

This property can be used as the source for data binding.

Implementation
    protected function get ro():RemoteObject
_roInitializeproperty 
protected var _roInitialize:RemoteObject = null
roInitializeproperty 
roInitialize:RemoteObject  [read-only]

This property can be used as the source for data binding.

Implementation
    protected function get roInitialize():RemoteObject
_rosByDestinationproperty 
protected var _rosByDestination:Dictionary
showBusyCursorproperty 
public static var showBusyCursor:Boolean = true
Constructor detail
Tide()constructor
public function Tide(destination:String)Parameters
destination:String
Method detail
addComponent()method
public function addComponent(name:String, type:Class, inConversation:Boolean = false, autoCreate:Boolean = true, restrict:int, overrideIfPresent:Boolean = true):void

Register a Tide component with a specified definition and scan dynamic dependency injections

Parameters
name:String — component name
 
type:Class — component class
 
inConversation:Boolean (default = false) — true if the component is conversation-scoped
 
autoCreate:Boolean (default = true) — true if the component needs to be automatically instantiated
 
restrict:int — true if the component needs to be cleared when the user is not logged in
 
overrideIfPresent:Boolean (default = true) — allows to override an existing component definition (should normally only be used internally)
addComponentFromInstance()method 
public function addComponentFromInstance(instance:Object, name:String, inConversation:Boolean = false):void

Register a Tide component from an existing instance

Parameters
instance:Object — component instance
 
name:String — component name
 
inConversation:Boolean (default = false) — component class
addComponents()method 
public function addComponents(types:Array):void

Register many Tide components at once The component definitions are scanned from annotations

Parameters
types:Array — array of component classes
addComponentWithFactory()method 
public function addComponentWithFactory(name:String, type:Class, properties:Object, inConversation:Boolean = false, autoCreate:Boolean = true, restrict:int, overrideIfPresent:Boolean = true):void

Register a Tide component with static dependency injections Dynamic dependency injections are also scanned

Parameters
name:String — component name
 
type:Class — component class
 
properties:Object — a factory object containing values to inject in the component instance
 
inConversation:Boolean (default = false) — true if the component is conversation-scoped
 
autoCreate:Boolean (default = true) — true if the component needs to be automatically instantiated
 
restrict:int — true if the component needs to be cleared when the user is not logged in
 
overrideIfPresent:Boolean (default = true) — allows to override an existing component definition (should normally only be used internally)
addContextEventListener()method 
public function addContextEventListener(type:String, handler:Function = null, remote:Boolean = false):void

Add a context listener for a particular event type

Parameters
type:String — event type
 
handler:Function (default = null) — event handler
 
remote:Boolean (default = false) — true if the listener observes remote events
addEventObserver()method 
public function addEventObserver(eventType:String, componentName:String, methodName:String, remote:Boolean = false, create:Boolean = true, localOnly:Boolean = true):void

Register an event observer

Parameters
eventType:String — event type
 
componentName:String — name of observer component
 
methodName:String — name of observer method
 
remote:Boolean (default = false) — observer for remote events
 
create:Boolean (default = true) — target observer should be instantiated if not existent in context
 
localOnly:Boolean (default = true) — target observer listens only from events from its own context, not from events bubbled from inner contexts
addExceptionHandler()method 
public function addExceptionHandler(handlerClass:Class):void

Add an exception handler class The class should implement IExceptionHandler

Parameters
handlerClass:Class — handler class
addModule()method 
public function addModule(module:Object, appDomain:ApplicationDomain = null):void

Register a Tide module

Parameters
module:Object — the module class or instance
 
appDomain:ApplicationDomain (default = null) — the Flex application domain for modules loaded dynamically
addPlugin()method 
public function addPlugin(plugin:ITidePlugin):void

Register a plugin instance

Parameters
plugin:ITidePlugin — the plugin instance
checkWaitForLogout()method 
public function checkWaitForLogout():void

Notify the framework that it should wait for a async operation before effectively logging out. Only if a logout has been requested.

currentApplication()method 
public static function currentApplication():Object

Internal method to determine current application in both Flex 3 and Flex 4

Returns
Object — top level application
getComponentRemoteSync()method 
public function getComponentRemoteSync(name:String):int

Return the remote synchronization type of the component

Parameters
name:String — component name

Returns
int — remote synchronization type
getComponentRestrict()method 
public function getComponentRestrict(name:String):int

Return the security restriction of the component

Parameters
name:String — component name

Returns
int — security restriction
getComponentScope()method 
public function getComponentScope(name:String):int

Returns the scope of a component

Parameters
name:String — component name

Returns
int — component scope
getContext()method 
public function getContext(contextId:String = null, parentContextId:String = null, create:Boolean = true):BaseContext

Return a context from its id

Parameters
contextId:String (default = null) — context id
 
parentContextId:String (default = null) — should create when not existing
 
create:Boolean (default = true)

Returns
BaseContext — context
getInstance()method 
public static function getInstance(destination:String = null, tideClass:Class = null):Tide

Factory for current instance Tide singleton

Parameters
destination:String (default = null) — default destination (not used here)
 
tideClass:Class (default = null)

Returns
Tide — current singleton instance
getManagedInstance()method 
public function getManagedInstance(component:Object):ArrayParameters
component:Object

Returns
Array
getRemoteObject()method 
public function getRemoteObject(componentName:String):RemoteObject

Returns the internal RemoteObject used for a particular component name

Parameters
componentName:String — component name

Returns
RemoteObject — remote object instance
initApplication()method 
public function initApplication(autoRegisterUIComponents:Boolean = true):void

Init the Tide application

Parameters
autoRegisterUIComponents:Boolean (default = true) — enable automatic registration/unregistration of annotated UI components
internalNameForTypedComponent()method 
public static function internalNameForTypedComponent(name:String):StringParameters
name:String

Returns
String
isComponent()method 
public function isComponent(name:String):Boolean

Checks a name is a registered Tide component

Parameters
name:String — component name

Returns
Boolean — true if there is a component with this name
isComponentAutoCreate()method 
public function isComponentAutoCreate(name:String):Boolean

Returns the creation policy of a component

Parameters
name:String — component name

Returns
Boolean — true if automatic instantiation
isComponentDefaultProxy()method 
public function isComponentDefaultProxy(name:String):Boolean

Return the proxy status of the component

Parameters
name:String — component name

Returns
Boolean — true if the component is a default proxy
isComponentGlobal()method 
public function isComponentGlobal(name:String):Boolean

Return if the specific component is defined as global (not in a namespace)

Parameters
name:String — component name

Returns
Boolean
isComponentInConversation()method 
public function isComponentInConversation(name:String):Boolean

Returns the scope of a component

Parameters
name:String — component name

Returns
Boolean — true is conversation scoped
isComponentInEvent()method 
public function isComponentInEvent(name:String):Boolean

Returns the scope of a component

Parameters
name:String — component name

Returns
Boolean — true is event scoped
isComponentInSession()method 
public function isComponentInSession(name:String):Boolean

Returns the scope of a component

Parameters
name:String — component name

Returns
Boolean — true if session scoped
isComponentRestrict()method 
public function isComponentRestrict(name:String):Boolean

Return the security restriction of the component

Parameters
name:String — component name

Returns
Boolean — true if the component is restricted
isSubcontext()method 
public function isSubcontext(name:String):Boolean

Checks a name is a registered Tide subcontext

Parameters
name:String — component name

Returns
Boolean — true if there is a subcontext with this name
processInterceptors()method 
public function processInterceptors(message:IMessage, before:Boolean):voidParameters
message:IMessage
 
before:Boolean
removeComponent()method 
public function removeComponent(name:String):void

Unregister a Tide component and destroys all instances

Parameters
name:String — component name
removeContextEventListener()method 
public function removeContextEventListener(type:String, handler:Function):void

Unregister a context event listener

Parameters
type:String — event type
 
handler:Function — handler function
removeManagedInstance()method 
public function removeManagedInstance(component:Object):voidParameters
component:Object
removeModule()method 
public function removeModule(module:Object):void

Unregister a Tide module

Parameters
module:Object — the module class or instance
removeProxyDescriptor()method 
public function removeProxyDescriptor(name:*, value:*):void

Remove descriptor for proxy when value is no more a proxy

Parameters
name:* — component name
 
value:* — new value
resetApplication()method 
protected function resetApplication():void

Resets Tide application (mainly used in test cases)

resetInstance()method 
public static function resetInstance():void

Clear Tide singleton (should be used only for testing)

setComponentAutoCreate()method 
public function setComponentAutoCreate(name:String, autoCreate:Boolean):void

Define the creation policy of the component

Parameters
name:String — component name
 
autoCreate:Boolean — true if component should be automatically instantiated
setComponentCustomDescriptor()method 
public function setComponentCustomDescriptor(name:String, xmlDescriptor:XML):void

Define the custom XML descriptor for the component

Parameters
name:String — component name
 
xmlDescriptor:XML — XML descriptor
setComponentGlobal()method 
public function setComponentGlobal(name:String, global:Boolean):void

Define if the component is defined as global (cannot be in a namespace/subcontext)

Parameters
name:String — component name
 
global:Boolean — true if non component cannot be in a namespace/subcontext
setComponentRemoteSync()method 
public function setComponentRemoteSync(name:String, remoteSync:int):void

Define the remote synchronization of the component If false, the component state will never be sent to the server

Parameters
name:String — component name
 
remoteSync:int — type of synchronization with the remote component
setComponentRestrict()method 
public function setComponentRestrict(name:String, restrict:int):void

Define the security restriction of the component If RESTRICT_YES, the component state will be cleared when user logs out Default value is RESTRICT_UNKNOWN meaning if will be inferred from server definition when possible

Parameters
name:String — component name
 
restrict:int — RESTRICT_YES if the component is restricted, RESTRICT_NO if not
setComponentScope()method 
public function setComponentScope(name:String, scope:int):void

Define the scope of a component

Parameters
name:String — component name
 
scope:int — component scope (see SCOPE_xxx constants)
setManagedInstance()method 
public function setManagedInstance(component:Object, context:BaseContext, name:String):voidParameters
component:Object
 
context:BaseContext
 
name:String
tryLogout()method 
public function tryLogout():void

Try logout. Should be called after all remote operations on a component are finished. The effective logout is done when all remote operations on all components have been notified as finished.

Constant detail
CONTEXT_CREATEconstant
public static const CONTEXT_CREATE:String = "org.granite.tide.contextCreate"
CONTEXT_DESTROYconstant 
public static const CONTEXT_DESTROY:String = "org.granite.tide.contextDestroy"
CONTEXT_FAULTconstant 
public static const CONTEXT_FAULT:String = "org.granite.tide.contextFault"
CONTEXT_RESULTconstant 
public static const CONTEXT_RESULT:String = "org.granite.tide.contextResult"
CONVERSATION_PROPAGATION_TAGconstant 
public static const CONVERSATION_PROPAGATION_TAG:String = "conversationPropagation"
CONVERSATION_TAGconstant 
public static const CONVERSATION_TAG:String = "conversationId"
DEFAULT_CONTEXTconstant 
public static const DEFAULT_CONTEXT:String = "__DEFAULT_CONTEXT__"
IS_FIRST_CALL_TAGconstant 
public static const IS_FIRST_CALL_TAG:String = "org.granite.tide.isFirstCall"
IS_FIRST_CONVERSATION_CALL_TAGconstant 
public static const IS_FIRST_CONVERSATION_CALL_TAG:String = "org.granite.tide.isFirstConversationCall"
IS_LONG_RUNNING_CONVERSATION_TAGconstant 
public static const IS_LONG_RUNNING_CONVERSATION_TAG:String = "isLongRunningConversation"
LOGGED_OUTconstant 
public static const LOGGED_OUT:String = "org.granite.tide.loggedOut"
LOGINconstant 
public static const LOGIN:String = "org.granite.tide.login"
LOGOUTconstant 
public static const LOGOUT:String = "org.granite.tide.logout"
PLUGIN_ADD_COMPONENTconstant 
public static const PLUGIN_ADD_COMPONENT:String = "org.granite.tide.plugin.addComponent"
PLUGIN_LOGIN_FAULTconstant 
public static const PLUGIN_LOGIN_FAULT:String = "org.granite.tide.plugin.loginFault"
PLUGIN_LOGIN_SUCCESSconstant 
public static const PLUGIN_LOGIN_SUCCESS:String = "org.granite.tide.plugin.loginSuccess"
PLUGIN_LOGOUTconstant 
public static const PLUGIN_LOGOUT:String = "org.granite.tide.plugin.logout"
PLUGIN_SET_CREDENTIALSconstant 
public static const PLUGIN_SET_CREDENTIALS:String = "org.granite.tide.plugin.setCredentials"
QCN_BASECONTEXTconstant 
public static const QCN_BASECONTEXT:String = ""
QCN_ICOMPONENTconstant 
public static const QCN_ICOMPONENT:String = ""
QCN_IENTITYconstant 
public static const QCN_IENTITY:String = ""
QCN_ILISTconstant 
public static const QCN_ILIST:String = ""
QCN_IUICOMPONENTconstant 
public static const QCN_IUICOMPONENT:String = ""
QCN_SUBCONTEXTconstant 
public static const QCN_SUBCONTEXT:String = ""
RESTRICT_NOconstant 
public static const RESTRICT_NO:int = 1
RESTRICT_UNKNOWNconstant 
public static const RESTRICT_UNKNOWN:int = 0
RESTRICT_YESconstant 
public static const RESTRICT_YES:int = 2
SCOPE_CONVERSATIONconstant 
public static const SCOPE_CONVERSATION:int = 2
SCOPE_EVENTconstant 
public static const SCOPE_EVENT:int = 3
SCOPE_SESSIONconstant 
public static const SCOPE_SESSION:int = 1
SCOPE_UNKNOWNconstant 
public static const SCOPE_UNKNOWN:int = 0
SESSION_EXPIREDconstant 
public static const SESSION_EXPIRED:String = "org.granite.tide.sessionExpired"
STARTUPconstant 
public static const STARTUP:String = "org.granite.tide.startup"
SYNC_BIDIRECTIONALconstant 
public static const SYNC_BIDIRECTIONAL:int = 2
SYNC_NONEconstant 
public static const SYNC_NONE:int = 0
SYNC_SERVER_TO_CLIENTconstant 
public static const SYNC_SERVER_TO_CLIENT:int = 1
TYPED_IMPL_PREFIXconstant 
public static const TYPED_IMPL_PREFIX:String = "__typedImpl__"
TYPE_SUBCONTEXTconstant 
public static const TYPE_SUBCONTEXT:Type
WAS_LONG_RUNNING_CONVERSATION_CREATED_TAGconstant 
public static const WAS_LONG_RUNNING_CONVERSATION_CREATED_TAG:String = "wasLongRunningConversationCreated"
WAS_LONG_RUNNING_CONVERSATION_ENDED_TAGconstant 
public static const WAS_LONG_RUNNING_CONVERSATION_ENDED_TAG:String = "wasLongRunningConversationEnded"
WINDOW_CLOSEconstant 
public static const WINDOW_CLOSE:String = "globalNotifyWindowClose"
WINDOW_CREATEconstant 
public static const WINDOW_CREATE:String = "globalNotifyWindowCreate"