java.lang.Object org.omg.CORBA.Context
public abstract class Context
用于在 Request
操作中指定上下文对象的对象,上下文字符串在与请求调用一起被发送之前,必须在该指定的上下文对象中进行解析。Context
对象包含 NamedValue
对象形式的属性列表。这些属性表示关于客户端、环境或请求情形的信息,它们通常是一些可能不方便作为参数传递的属性。
Context
对象是通过先调用 ORB
方法 get_default_context
,然后在默认上下文上调用 create_child
来创建的。
Context
对象中的每个属性都由一个 NamedValue
对象表示。属性名称包含在 NamedValue
对象的 name
字段中,与该名称关联的值包含在 Any
对象中,该 Any 已分配给 NamedValue
对象的 value
字段。
Context
属性可以表示要传播到服务器环境(并使其成为其隐含部分)的部分客户端环境或应用程序环境。(示例有窗口标识符或用户首选项信息)。一旦已经调用服务器(即传播属性之后),服务器可以使用 get_values
方法查询其 Context
对象来获得这些属性。
当操作声明中包括上下文子句时,stub 和 skeleton 将有一个为该上下文添加的额外参数。在进行操作调用时,ORB 将在已调用方法的 Context
对象参数中提供使用 IDL 在操作定义中指定的属性以及客户端的 Context
对象中存在的属性。
多个 Context
属性名称(字符串)通常是以 OMG IDL 标识符(或一系列以句点分隔的 OMG IDL 标识符)的形式出现的。单个 Context 属性名称模式可以是属性名称或后跟单个 "*" 的属性名称。没有结尾 "*" 的属性名称模式被认为只与它自己匹配。"<名称>*"形式的属性名称模式与任何以<名称>开头,且后跟零个或多个附加字符的属性名称匹配。
属性名称模式用在操作定义的 Context 子句中,作为 Context.get_values
方法的参数。
Context
对象可能被“链接”在一起,以完成特定默认行为。使用 create_child
方法创建的 Context
对象将与其父对象(创建该对象的 Context
对象)链接在一起,这意味着在搜索属性名称时,搜索子对象之后将搜索父对象。
在特定 Context
对象中定义的属性会在下一个较高级别有效地重写这些属性。通过指定起始范围并在调用 get_values
方法时使用标志 CTX_RESTRICT_SCOPE
,可以限定在搜索属性时使用的范围。
可以指定一个 Context
对象来指定起始搜索范围。
构造方法摘要 | |
---|---|
Context() |
方法摘要 | |
---|---|
abstract String |
context_name() 检索此 Context 对象的名称。 |
abstract Context |
create_child(String child_ctx_name) 创建一个 Context 对象,使用给定字符串作为其名称,并将此 Context 对象设置为其父对象。 |
abstract void |
delete_values(String propname) 从此 Context 对象中删除 name 字段与给定属性名称匹配的 NamedValue 对象。 |
abstract NVList |
get_values(String start_scope, int op_flags, String pattern) 检索 name 字段与给定名称或名称模式匹配的 NamedValue 对象。 |
abstract Context |
parent() 检索此 Context 对象的父对象。 |
abstract void |
set_one_value(String propname, Any propvalue) 创建一个 NamedValue 对象,并将它添加到此 Context 对象中。 |
abstract void |
set_values(NVList values) 在此 Context 对象中设置一个或多个属性值。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public Context()
方法详细信息 |
---|
public abstract String context_name()
Context
对象的名称。
Context
对象的名称
public abstract Context parent()
Context
对象的父对象。
Context
父对象的
Context
对象
public abstract Context create_child(String child_ctx_name)
Context
对象,使用给定字符串作为其名称,并将此
Context
对象设置为其父对象。
将新的 Context
对象链接到其父 Context
对象中。这意味着在搜索匹配属性名称时,如果在此上下文中没有发现匹配项,则将继续在父对象中进行搜索。如果该搜索还不成功,则继续在祖父对象(如果有)中进行搜索,依此类推。
child_ctx_name
- 将设置为新
Context
对象名称的
String
对象
Context
对象
public abstract void set_one_value(String propname, Any propvalue)
NamedValue
对象,并将它添加到此
Context
对象中。将新
NamedValue
对象的
name
字段设置为给定字符串;将
value
字段设置为给定
Any
对象;将
flags
字段设置为 0。
propname
- 要设置的属性名称
propvalue
- 用来设置属性值的
Any
对象。
Any
对象的
value
字段包含将与给定 propname 关联的值;必须将
kind
字段设置为
TCKind.tk_string
。
public abstract void set_values(NVList values)
Context
对象中设置一个或多个属性值。提供给此方法的
NVList
包含一个或多个
NamedValue
对象。在每个
NamedValue
对象中,
name
字段用于保存属性名称,同时必须将
flags
字段设置为 0。
NamedValue
对象的
value
字段包含一个
Any
对象,而该对象中又包含属性的值。因为该值始终是字符串,所以
Any
对象必须将其
TypeCode
的
kind
字段设置为
TCKind.tk_string
。
values
- 包含属性名称和要设置的关联值的 NVList
get_values(java.lang.String, int, java.lang.String)
,
NamedValue
,
Any
public abstract void delete_values(String propname)
Context
对象中删除
name
字段与给定属性名称匹配的
NamedValue
对象。如果为
propname
提供的
String
对象具有结尾通配符 ("*"),则删除所有
name
字段与之匹配的
NamedValue
对象。始终将搜索范围限定为此
Context
对象。
如果未找到匹配属性,则返回异常。
propname
- 要删除的属性名称
public abstract NVList get_values(String start_scope, int op_flags, String pattern)
name
字段与给定名称或名称模式匹配的
NamedValue
对象。此方法允许使用通配符进行搜索,这意味着可能存在多个匹配项,所以可能返回多个值。如果在指示的级别上没有找到该属性,则将继续沿上下文对象树向上搜索,直到找到一个匹配项,或者已经搜索完链接中所有的
Context
对象。
如果没有发现匹配项,则返回错误,不返回任何属性列表。
start_scope
- 指示上下文对象级别的
String
对象,将在该级别上启动对指定属性(例如 "_USER"、"_GROUP" 和 "_SYSTEM")的搜索。有效范围的名称是特定于实现的。如果忽略范围名称,则从指定上下文对象开始搜索。如果没有找到指定范围名称,则返回异常。
op_flags
- 操作标志。可以指定的一个标志是
CTX_RESTRICT_SCOPE
。如果指定此标志,则将搜索限定为指定的
start_scope
或此
Context
对象。
pattern
- 将检索其值的属性名称。
pattern
可以是名称或结尾带通配符 ("*") 的名称。
NVList
,它包含所有关联属性名称与给定名称或名称模式匹配的属性值(以
NamedValue
对象的形式存在)
set_values(org.omg.CORBA.NVList)
,
NamedValue