public interface Context<C extends Context> extends java.lang.Comparable<C>, EvaluationPoint
| Modifier and Type | Method and Description |
|---|---|
void |
accept(ContextVisitor visitor)
Accepts context visitor, i.e. calls visitor.visit(this).
|
void |
addActionDefinition(ActionDefinition def)
Add a new action definition to the context.
|
void |
addAlias(int entityType,
java.lang.String aliasName,
java.lang.String name) |
void |
addChild(C child)
Adds new child to the current context.
|
void |
addEventDefinition(EventDefinition def)
Adds event definition to this context.
|
boolean |
addEventListener(java.lang.String name,
ContextEventListener listener)
Adds listener of event with specified name.
|
boolean |
addEventListener(java.lang.String name,
ContextEventListener listener,
boolean weak)
Adds listener of event with specified name.
|
void |
addFunctionDefinition(FunctionDefinition def)
Adds function definition to this context.
|
void |
addVariableDefinition(VariableDefinition def)
Adds variable definition to this context.
|
DataTable |
callFunction(java.lang.String name)
Executes context function with specified
parameters and returns its output. |
DataTable |
callFunction(java.lang.String name,
CallerController caller)
Executes context function with specified
parameters and returns its output. |
DataTable |
callFunction(java.lang.String name,
CallerController caller,
DataTable parameters)
Executes context function with specified
parameters and returns its output. |
DataTable |
callFunction(java.lang.String name,
CallerController caller,
java.lang.Object... parameters)
Executes context function with specified
parameters and returns its output. |
DataTable |
callFunction(java.lang.String name,
CallerController caller,
RequestController request,
DataTable parameters)
Executes context function with specified
parameters and returns its output. |
DataTable |
callFunction(java.lang.String name,
DataTable parameters)
Executes context function with specified
parameters and returns its output. |
DataTable |
callFunction(java.lang.String name,
java.lang.Object... parameters)
Executes context function with specified
parameters and returns its output. |
void |
destroy(boolean moving)
Permanently destroys this context.
|
void |
destroyChild(C child,
boolean moving)
Permanently destroys child of current context.
|
Event |
fireEvent(java.lang.String name)
Fires context event.
|
Event |
fireEvent(java.lang.String name,
CallerController caller)
Fires context event.
|
Event |
fireEvent(java.lang.String name,
CallerController caller,
DataTable data)
Fires context event.
|
Event |
fireEvent(java.lang.String name,
DataTable data)
Fires context event.
|
Event |
fireEvent(java.lang.String name,
DataTable data,
int level,
java.lang.Long id,
java.util.Date creationtime,
java.lang.Integer listener,
CallerController caller,
FireEventRequestController request)
Fires context event.
|
Event |
fireEvent(java.lang.String name,
FireEventRequestController request,
java.lang.Object... data) |
Event |
fireEvent(java.lang.String name,
int level,
CallerController caller,
DataTable data)
Fires context event.
|
Event |
fireEvent(java.lang.String name,
int level,
CallerController caller,
FireEventRequestController request,
DataTable data)
Fires context event.
|
Event |
fireEvent(java.lang.String name,
int level,
DataTable data)
Fires context event.
|
Event |
fireEvent(java.lang.String name,
java.lang.Object... data)
Fires context event.
|
C |
get(java.lang.String path)
Returns context with the selected path.
|
C |
get(java.lang.String path,
CallerController caller)
Returns context with the selected path.
|
ActionDefinition |
getActionDefinition(java.lang.String name)
Returns action definition by name.
|
ActionDefinition |
getActionDefinition(java.lang.String name,
CallerController caller)
Returns action definition by name.
|
java.util.List<ActionDefinition> |
getActionDefinitions()
Returns action definitions.
|
java.util.List<ActionDefinition> |
getActionDefinitions(CallerController caller)
Returns action definitions that are accessible for the caller.
|
java.util.List<ActionDefinition> |
getActionDefinitions(CallerController caller,
boolean includeHidden)
Returns action definitions.
|
C |
getChild(java.lang.String name)
Returns child of this context with the specified name.
|
C |
getChild(java.lang.String name,
CallerController caller)
Returns child of this context with the specified name.
|
java.util.List<C> |
getChildren()
Returns list of children contexts.
|
java.util.List<C> |
getChildren(CallerController caller)
Returns list of children contexts that are accessible by the specified
CallerController. |
Permissions |
getChildrenViewPermissions()
Returns permissions required to access children of this context.
|
ContextManager |
getContextManager()
Returns context manager those context tree contains this context.
|
ActionDefinition |
getDefaultActionDefinition(CallerController caller)
Returns default action definition or NULL if there is no default action or it's not available to the caller.
|
java.lang.String |
getDescription()
Returns context description.
|
EventData |
getEventData(java.lang.String name)
Returns
EventData of event with specified name. |
EventDefinition |
getEventDefinition(java.lang.String name)
Returns definition of event with specified name.
|
EventDefinition |
getEventDefinition(java.lang.String name,
CallerController caller)
Returns definition of event with specified name if it's accessible by caller controller.
|
java.util.List<EventDefinition> |
getEventDefinitions()
Returns list of events.
|
java.util.List<EventDefinition> |
getEventDefinitions(CallerController caller)
Returns list of events available for specified
CallerController. |
java.util.List<EventDefinition> |
getEventDefinitions(CallerController caller,
boolean includeHidden)
Returns list of events.
|
java.util.List<EventDefinition> |
getEventDefinitions(CallerController caller,
java.lang.String group)
Returns list of events belonging to
group that are available for specified CallerController. |
java.util.List<EventDefinition> |
getEventDefinitions(java.lang.String group)
Returns list of events belonging to
group. |
java.util.List<Event> |
getEventHistory(java.lang.String name)
Returns in-memory event history.
|
FunctionData |
getFunctionData(java.lang.String name)
Returns data of function with specified name.
|
FunctionDefinition |
getFunctionDefinition(java.lang.String name)
Returns definition of function with specified name.
|
FunctionDefinition |
getFunctionDefinition(java.lang.String name,
CallerController caller)
Returns definition of function with specified name if it's accessible by caller controller.
|
java.util.List<FunctionDefinition> |
getFunctionDefinitions()
Returns list of functions.
|
java.util.List<FunctionDefinition> |
getFunctionDefinitions(CallerController caller)
Returns list of functions available for specified
CallerController. |
java.util.List<FunctionDefinition> |
getFunctionDefinitions(CallerController caller,
boolean includeHidden)
Returns list of functions.
|
java.util.List<FunctionDefinition> |
getFunctionDefinitions(CallerController caller,
java.lang.String group)
Returns list of functions belonging to
group that are available for specified CallerController. |
java.util.List<FunctionDefinition> |
getFunctionDefinitions(java.lang.String group)
Returns list of functions belonging to
group. |
java.lang.String |
getGroup()
Returns context group name of NULL if context does not belong to a group.
|
java.lang.String |
getIconId()
Returns context icon ID.
|
java.lang.Integer |
getIndex()
Returns context comparison index or NULL if index is not defined.
|
java.lang.String |
getLocalPrimaryRoot()
In distributed environment, returns path of the primary mount context in local tree.
|
java.lang.String |
getLocalRoot(boolean withParent)
Returns path of the root context.
|
java.util.List<C> |
getMappedChildren()
Returns list of mapped children contexts.
|
java.util.List<C> |
getMappedChildren(CallerController caller)
Returns list of mapped children contexts.
|
java.lang.String |
getName()
Returns context name.
|
C |
getParent()
Returns parent of this context.
|
java.lang.String |
getPath()
Returns context path (full name).
|
java.lang.String |
getPeerPath()
In distributed environment, returns path of the context on the server immediately connected to current server (current server's peer).
|
java.lang.String |
getPeerRoot()
When a certain context subtree from one server is connected to another server, this method will return the remote path of this subtree's root context.
|
Permissions |
getPermissions()
Returns context permissions.
|
java.lang.String |
getRemotePath()
In distributed environment, returns path of the context on the server where it's actually defined.
|
java.lang.String |
getRemoteRoot()
Returns path of remote server's root context within a distributed connection.
|
C |
getRoot()
Returns root context of the context tree containing this context.
|
ContextStatus |
getStatus()
Returns context status or null if status is not enabled;
|
java.lang.String |
getType()
Returns context type.
|
DataTable |
getVariable(java.lang.String name)
Gets variable from context and returns its value.
|
DataTable |
getVariable(java.lang.String name,
CallerController caller)
Gets variable from context and returns its value.
|
DataTable |
getVariable(java.lang.String name,
CallerController caller,
RequestController request)
Gets variable from context and returns its value.
|
DataTable |
getVariableClone(java.lang.String name,
CallerController caller)
Gets variable from context and returns its value.
|
VariableData |
getVariableData(java.lang.String name)
Returns data of variable with specified name.
|
VariableDefinition |
getVariableDefinition(java.lang.String name)
Returns definition of variable with specified name.
|
VariableDefinition |
getVariableDefinition(java.lang.String name,
CallerController caller)
Returns definition of variable with specified name if it's accessible by caller controller.
|
java.util.List<VariableDefinition> |
getVariableDefinitions()
Returns list of variables.
|
java.util.List<VariableDefinition> |
getVariableDefinitions(CallerController caller)
Returns list of variables available for specified
CallerController. |
java.util.List<VariableDefinition> |
getVariableDefinitions(CallerController caller,
boolean includeHidden)
Returns list of variables.
|
java.util.List<VariableDefinition> |
getVariableDefinitions(CallerController caller,
java.lang.String group)
Returns list of variables belonging to
group that are available for specified CallerController. |
java.util.List<VariableDefinition> |
getVariableDefinitions(java.lang.String group)
Returns list of variables belonging to
group. |
java.lang.Object |
getVariableObject(java.lang.String name,
CallerController caller)
Returns value of variable as bean or list of beans.
|
java.util.List<C> |
getVisibleChildren()
Returns list of visible children contexts.
|
java.util.List<C> |
getVisibleChildren(CallerController caller)
Returns list of visible children contexts.
|
boolean |
hasMappedChild(java.lang.String contextName,
CallerController callerController)
Check if the mapped child of this context is available.
|
boolean |
hasParent(C parentContext)
Returns true if parentContext is a parent of this context or some of its parents.
|
boolean |
hasVisibleChild(java.lang.String name,
CallerController caller)
Check if the visible child of the context is available.
|
boolean |
isContainer()
Returns true if context is container.
|
boolean |
isDistributed()
Returns true if context has a remote peer in the distributed architecture.
|
boolean |
isInitializedChildren()
This method should return true if the context has already been initialized its children.
|
boolean |
isInitializedEvents()
This method should return true if the context has already been initialized its events.
|
boolean |
isInitializedFunctions()
This method should return true if the context has already been initialized its functions.
|
boolean |
isInitializedInfo()
This method should return true if the context has already been initialized its basic information (description, type, etc).
|
boolean |
isInitializedStatus()
This method should return true if the context status has already been initialized.
|
boolean |
isInitializedVariables()
This method should return true if the context has already been initialized its variables.
|
boolean |
isInstallationAllowed(java.lang.String installableItemName)
Check if an installation is permitted.
|
boolean |
isMapped()
Returns true if context's visible children are mapped (e.g. for group and aggregation contexts).
|
boolean |
isProxy()
Returns true if context is a remote context's proxy.
|
boolean |
isSetupComplete()
This method should return true if the context has already been initialized and setupMyself() finished execution.
|
boolean |
isStarted()
Returns true if context was started but not yet stopped.
|
void |
move(C newParent,
java.lang.String newName)
Moves and/or renames the context.
|
void |
removeActionDefinition(java.lang.String name)
Remove an action definition from the context.
|
void |
removeChild(C child)
Removes child of current context.
|
void |
removeChild(java.lang.String name)
Removes child with specified name.
|
void |
removeEventDefinition(java.lang.String name)
Removes event definition from this context.
|
boolean |
removeEventListener(java.lang.String name,
ContextEventListener listener)
Removes listener of event with specified name.
|
void |
removeFunctionDefinition(java.lang.String name)
Removes function definition from this context.
|
void |
removeVariableDefinition(java.lang.String name)
Removes variable definition from this context.
|
void |
setParent(C parent) |
void |
setup(ContextManager contextManager)
This method is called after the context has been added to a context tree and it became aware of its full path.
|
void |
setVariable(java.lang.String name,
CallerController caller,
DataTable value)
Sets context variable to specified
value. |
void |
setVariable(java.lang.String name,
CallerController caller,
java.lang.Object... value)
Sets context variable to specified
value. |
void |
setVariable(java.lang.String name,
CallerController caller,
RequestController request,
DataTable value)
Sets context variable to specified
value. |
void |
setVariable(java.lang.String name,
DataTable value)
Sets context variable to specified
value. |
void |
setVariable(java.lang.String name,
java.lang.Object... value)
Sets context variable to specified
value. |
default boolean |
setVariableField(java.lang.String variable,
java.lang.String field,
int record,
java.lang.Object value,
CallerController cc)
Gets variable, updates field value in the specified record, and sets variable.
|
boolean |
setVariableField(java.lang.String variable,
java.lang.String field,
int record,
java.lang.Object value,
CallerController cc,
RequestController request) |
boolean |
setVariableField(java.lang.String variable,
java.lang.String field,
java.lang.Object value,
CallerController cc)
Gets variable, updates field value in the first record, and sets variable.
|
void |
setVariableField(java.lang.String variable,
java.lang.String field,
java.lang.Object value,
java.lang.String compareField,
java.lang.Object compareValue,
CallerController cc)
Gets variable, updates field value in the records for those value of compareField equals compareValue, and sets variable.
|
void |
start()
This method is called when context tree is being started after its initialization.
|
void |
stop()
This method is called when context tree is being stopped before its de-initialization.
|
void |
teardown()
This method is called when the context is being removed from context tree..
|
java.lang.String |
toDetailedString()
Returns context detailed description that includes description and path.
|
java.util.List<EventDefinition> |
updateEventDefinitions(java.util.Map<java.lang.String,EventDefinition> eventDefinitionMap,
java.lang.String baseGroup,
boolean skipRemoval,
java.lang.Object owner) |
java.util.List<FunctionDefinition> |
updateFunctionDefinitions(java.util.Map<java.lang.String,Pair<FunctionDefinition,java.lang.Boolean>> functionDefinitionMap,
java.lang.String baseGroup,
boolean skipRemoval,
java.lang.Object owner) |
void |
updatePrepare()
Prepare context to update.
|
java.util.List<VariableDefinition> |
updateVariableDefinitions(java.util.Map<java.lang.String,VariableDefinition> variableDefinitionMap,
java.lang.String baseGroup,
boolean skipRemoval,
boolean onDestroy,
java.lang.Object owner) |
isDebuggingEvaluations, processEvaluation, processEvaluationErrorvoid setup(ContextManager contextManager)
contextManager - ContextManager heading current context treevoid teardown()
boolean isSetupComplete()
boolean isInitializedStatus()
boolean isInitializedInfo()
boolean isInitializedChildren()
boolean isInitializedVariables()
boolean isInitializedFunctions()
boolean isInitializedEvents()
void start()
void stop()
boolean isStarted()
java.lang.String getName()
java.lang.String getPath()
java.lang.String getLocalRoot(boolean withParent)
java.lang.String getPeerPath()
java.lang.String getPeerRoot()
java.lang.String getRemotePath()
java.lang.String getRemoteRoot()
java.lang.String getLocalPrimaryRoot()
boolean isProxy()
boolean isDistributed()
boolean isContainer()
java.lang.String toDetailedString()
java.lang.String getDescription()
java.lang.String getType()
java.lang.String getGroup()
java.lang.Integer getIndex()
java.lang.String getIconId()
ContextStatus getStatus()
ContextManager getContextManager()
java.util.List<C> getChildren(CallerController caller)
CallerController.java.util.List<C> getChildren()
java.util.List<C> getVisibleChildren(CallerController caller)
java.util.List<C> getVisibleChildren()
boolean hasVisibleChild(java.lang.String name,
CallerController caller)
throws ContextException
ContextExceptionboolean isMapped()
java.util.List<C> getMappedChildren(CallerController caller)
java.util.List<C> getMappedChildren()
C getRoot()
C get(java.lang.String path, CallerController caller)
path argument may be absolute of relative to this context. This method uses provided CallerController for permission checking.C get(java.lang.String path)
path argument may be absolute of relative to this context.
Note: if this Context is a part of distributed context tree and path argument is not relative, the method will return local context matching its remote "peer" with given path. To get the local
context with the given path, use ContextManager.get(String) instead.C getChild(java.lang.String name, CallerController caller)
path argument may be absolute of relative to this context.
Note: if this Context is a part of distributed context tree and path argument is not relative, the method will return local context matching its remote "peer" with given path. To get the local
context with the given path, use ContextManager.get(String, CallerController) instead.
This method uses provided CallerController for permission checking.C getChild(java.lang.String name)
boolean hasMappedChild(java.lang.String contextName,
CallerController callerController)
void addChild(C child)
void removeChild(C child)
void removeChild(java.lang.String name)
void destroyChild(C child, boolean moving)
void destroy(boolean moving)
void updatePrepare()
void move(C newParent, java.lang.String newName) throws ContextException
ContextExceptionC getParent()
void setParent(C parent)
boolean hasParent(C parentContext)
void addVariableDefinition(VariableDefinition def)
void removeVariableDefinition(java.lang.String name)
VariableData getVariableData(java.lang.String name)
void addAlias(int entityType,
java.lang.String aliasName,
java.lang.String name)
VariableDefinition getVariableDefinition(java.lang.String name)
VariableDefinition getVariableDefinition(java.lang.String name, CallerController caller)
java.util.List<VariableDefinition> getVariableDefinitions(CallerController caller)
CallerController.java.util.List<VariableDefinition> getVariableDefinitions()
java.util.List<VariableDefinition> getVariableDefinitions(CallerController caller, java.lang.String group)
group that are available for specified CallerController.java.util.List<VariableDefinition> getVariableDefinitions(java.lang.String group)
group.java.util.List<VariableDefinition> getVariableDefinitions(CallerController caller, boolean includeHidden)
void addFunctionDefinition(FunctionDefinition def)
void removeFunctionDefinition(java.lang.String name)
FunctionData getFunctionData(java.lang.String name)
FunctionDefinition getFunctionDefinition(java.lang.String name)
FunctionDefinition getFunctionDefinition(java.lang.String name, CallerController caller)
java.util.List<FunctionDefinition> getFunctionDefinitions(CallerController caller)
CallerController.java.util.List<FunctionDefinition> getFunctionDefinitions()
java.util.List<FunctionDefinition> getFunctionDefinitions(CallerController caller, java.lang.String group)
group that are available for specified CallerController.java.util.List<FunctionDefinition> getFunctionDefinitions(java.lang.String group)
group.java.util.List<FunctionDefinition> getFunctionDefinitions(CallerController caller, boolean includeHidden)
void addEventDefinition(EventDefinition def)
void removeEventDefinition(java.lang.String name)
EventDefinition getEventDefinition(java.lang.String name)
EventDefinition getEventDefinition(java.lang.String name, CallerController caller)
EventData getEventData(java.lang.String name)
EventData of event with specified name.java.util.List<EventDefinition> getEventDefinitions(CallerController caller)
CallerController.java.util.List<EventDefinition> getEventDefinitions()
java.util.List<EventDefinition> getEventDefinitions(CallerController caller, java.lang.String group)
group that are available for specified CallerController.java.util.List<EventDefinition> getEventDefinitions(java.lang.String group)
group.java.util.List<EventDefinition> getEventDefinitions(CallerController caller, boolean includeHidden)
DataTable getVariable(java.lang.String name, CallerController caller, RequestController request) throws ContextException
IllegalStateException on every change.ContextExceptionDataTable getVariable(java.lang.String name, CallerController caller) throws ContextException
IllegalStateException on every change.ContextExceptionDataTable getVariable(java.lang.String name) throws ContextException
IllegalStateException on every change.ContextExceptionDataTable getVariableClone(java.lang.String name, CallerController caller) throws ContextException
ContextExceptionjava.lang.Object getVariableObject(java.lang.String name,
CallerController caller)
void setVariable(java.lang.String name,
CallerController caller,
DataTable value)
throws ContextException
value.ContextExceptionvoid setVariable(java.lang.String name,
CallerController caller,
RequestController request,
DataTable value)
throws ContextException
value.ContextExceptionvoid setVariable(java.lang.String name,
CallerController caller,
java.lang.Object... value)
throws ContextException
value.ContextExceptionvoid setVariable(java.lang.String name,
DataTable value)
throws ContextException
value.ContextExceptionvoid setVariable(java.lang.String name,
java.lang.Object... value)
throws ContextException
value.ContextExceptionboolean setVariableField(java.lang.String variable,
java.lang.String field,
java.lang.Object value,
CallerController cc)
throws ContextException
ContextExceptiondefault boolean setVariableField(java.lang.String variable,
java.lang.String field,
int record,
java.lang.Object value,
CallerController cc)
throws ContextException
ContextExceptionboolean setVariableField(java.lang.String variable,
java.lang.String field,
int record,
java.lang.Object value,
CallerController cc,
@Nullable
RequestController request)
throws ContextException
ContextExceptionvoid setVariableField(java.lang.String variable,
java.lang.String field,
java.lang.Object value,
java.lang.String compareField,
java.lang.Object compareValue,
CallerController cc)
throws ContextException
ContextExceptionDataTable callFunction(java.lang.String name, CallerController caller, DataTable parameters) throws ContextException
parameters and returns its output.ContextExceptionDataTable callFunction(java.lang.String name, DataTable parameters) throws ContextException
parameters and returns its output.ContextExceptionDataTable callFunction(java.lang.String name) throws ContextException
parameters and returns its output.ContextExceptionDataTable callFunction(java.lang.String name, CallerController caller, RequestController request, DataTable parameters) throws ContextException
parameters and returns its output.ContextExceptionDataTable callFunction(java.lang.String name, CallerController caller, java.lang.Object... parameters) throws ContextException
parameters and returns its output.ContextExceptionDataTable callFunction(java.lang.String name, java.lang.Object... parameters) throws ContextException
parameters and returns its output.ContextExceptionDataTable callFunction(java.lang.String name, CallerController caller) throws ContextException
parameters and returns its output.ContextExceptionEvent fireEvent(java.lang.String name)
Event fireEvent(java.lang.String name, CallerController caller)
Event fireEvent(java.lang.String name, DataTable data)
Event fireEvent(java.lang.String name, CallerController caller, DataTable data)
Event fireEvent(java.lang.String name, int level, DataTable data)
Event fireEvent(java.lang.String name, int level, CallerController caller, DataTable data)
Event fireEvent(java.lang.String name, int level, CallerController caller, FireEventRequestController request, DataTable data)
Event fireEvent(java.lang.String name, java.lang.Object... data)
Event fireEvent(java.lang.String name, FireEventRequestController request, java.lang.Object... data)
Event fireEvent(java.lang.String name, DataTable data, int level, java.lang.Long id, java.util.Date creationtime, java.lang.Integer listener, CallerController caller, FireEventRequestController request)
void addActionDefinition(ActionDefinition def)
def - ActionDefinition to addvoid removeActionDefinition(java.lang.String name)
name - Name of action to removeActionDefinition getActionDefinition(java.lang.String name)
name - Name of actionActionDefinition getActionDefinition(java.lang.String name, CallerController caller)
name - Name of actioncaller - Caller controllerActionDefinition getDefaultActionDefinition(CallerController caller)
caller - Caller controllerjava.util.List<ActionDefinition> getActionDefinitions()
java.util.List<ActionDefinition> getActionDefinitions(CallerController caller)
caller - Caller controllerjava.util.List<ActionDefinition> getActionDefinitions(CallerController caller, boolean includeHidden)
Permissions getPermissions()
Permissions getChildrenViewPermissions()
boolean addEventListener(java.lang.String name,
ContextEventListener listener)
boolean addEventListener(java.lang.String name,
ContextEventListener listener,
boolean weak)
boolean removeEventListener(java.lang.String name,
ContextEventListener listener)
java.util.List<Event> getEventHistory(java.lang.String name)
void accept(ContextVisitor visitor) throws ContextException
ContextExceptionboolean isInstallationAllowed(java.lang.String installableItemName)
java.util.List<VariableDefinition> updateVariableDefinitions(java.util.Map<java.lang.String,VariableDefinition> variableDefinitionMap, java.lang.String baseGroup, boolean skipRemoval, boolean onDestroy, java.lang.Object owner)
java.util.List<FunctionDefinition> updateFunctionDefinitions(java.util.Map<java.lang.String,Pair<FunctionDefinition,java.lang.Boolean>> functionDefinitionMap, java.lang.String baseGroup, boolean skipRemoval, java.lang.Object owner)
java.util.List<EventDefinition> updateEventDefinitions(java.util.Map<java.lang.String,EventDefinition> eventDefinitionMap, java.lang.String baseGroup, boolean skipRemoval, java.lang.Object owner)