|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.omg.PortableServer.Servant
org.omg.CosNotifyFilter.FilterPOA
org.jacorb.notification.FilterImpl
public class FilterImpl
The Filter interface defines the behaviors supported by objects
which encapsulate constraints used by the proxy objects associated
with an event channel in order to determine which events they
receive will be forwarded, and which will be discarded. Each object
supporting the Filter interface can encapsulate a sequence of any
number of constraints. Each event received by a proxy object which
has one or more objects supporting the Filter interface associated
with it must satisfy at least one of the constraints associated
with one of its associated Filter objects in order to be forwarded
(either to another proxy object or to the consumer, depending on
the type of proxy the filter is associated with), otherwise it will
be discarded.
Each constraint encapsulated by a filter object is a
structure comprised of two main components. The first component is
a sequence of data structures, each of which indicates an event
type comprised of a domain and a type name. The second component is
a boolean expression over the properties of an event, expressed in
some constraint grammar (more on this below). For a given
constraint, the sequence of event type structures in the first
component nominates a set of event types to which the constraint
expression in the second component applies. Each element of the
sequence can contain strings which will be matched for equality
against the domain_name and type_name fields of each event being
evaluated by the filter object, or it could contain strings with
wildcard symbols (*), indicating a pattern match should be
performed against the type contained in each event, rather than a
comparison for equality when determining if the boolean expression
should be applied to the event, or the event should simply be
discarded without even attempting to apply the boolean
expression. Note that an empty sequence included as the first
component of a constraint implies that the associated expression
applies to all types of events, as does a sequence comprised of a
single element whose domain and type name are both set to either
the empty string or else the wildcard symbol alone contained in
quotes.
The constraint expressions associated with a particular
object supporting the Filter interface are expressed as strings
which obey the syntax of a particular constraint grammar (i.e., a
BNF). Every conformant implementation of this service must support
constraint expressions expressed in the default constraint grammar
described in Section 2.4, "The Default Filter Constraint Language,"
on page 2-23. In addition, implementations may support other
constraint grammars, and/or users of this service may implement
their own filter objects which allow constraints to be expressed in
terms of an alternative constraint grammar. As long as such
user-defined filter objects support the Filter interface, they can
be attached to Proxy or Admin objects in the same fashion as the
default Filter objects supported by the implementation of the
service are, and the channel should be able to use them to filter
events in the same fashion.
The Filter interface supports the
operations required to manage the constraints associated with an
object instance which supports the interface, along with a readonly
attribute which identifies the particular constraint grammar in
which the constraints encapsulated by this object have meaning. In
addition, the Filter interface supports three variants of the match
operation which can be invoked by an associated proxy object upon
receipt of an event (the specific variant selected depends upon
whether the event is received in the form of an Any, a Structured
Event, or a Typed Event), to determine if the event should be
forwarded or discarded, based on whether or not the event satisfies
at least one criteria encapsulated by the filter object. The Filter
interface also supports operations which enable a client to
associate with the target filter object any number of
"callbacks" which are notified each time there is a change to
the list of event types which the constraints encapsulated by the
filter object could potentially cause proxies to which the filter
is attached to receive. Operations are also defined to support
administration of this callback list by unique identifier.
Field Summary | |
---|---|
protected java.util.Map |
callbacks_
contains a number of callbacks, which are notified each time there is a change to the list of constraints. |
protected java.util.Map |
constraints_
contains the associated constraints. |
static int |
CONSTRAINTS_EMPTY
|
protected EDU.oswego.cs.dl.util.concurrent.ReadWriteLock |
constraintsLock_
|
protected DynamicEvaluator |
dynamicEvaluator_
|
protected DynAnyFactory |
dynAnyFactory_
|
protected MessageFactory |
messageFactory_
|
static int |
NO_CONSTRAINTS_MATCH
|
protected WildcardMap |
wildcardMap_
|
Constructor Summary | |
---|---|
FilterImpl(ApplicationContext applicationContext,
java.lang.String constraintGrammar)
|
Method Summary | |
---|---|
POA |
_default_POA()
|
Object |
activate()
|
ConstraintInfo[] |
add_constraints(ConstraintExp[] constraintExp)
The add_constraints operation is invoked by a
client in order
to associate one or more new constraints with the target filter
object. |
int |
attach_callback(NotifySubscribe notifySubscribe)
|
void |
configure(org.apache.avalon.framework.configuration.Configuration conf)
|
java.lang.String |
constraint_grammar()
The constraint_grammar attribute is a readonly attribute which identifies the particular grammar within which the constraint expressions encapsulated by the target filter object have meaning. |
void |
deactivate()
|
void |
destroy()
|
void |
detach_callback(int id)
|
void |
dispose()
Dispose this Object. |
ConstraintInfo[] |
get_all_constraints()
|
int[] |
get_callbacks()
|
ConstraintInfo[] |
get_constraints(int[] ids)
|
protected int |
getConstraintId()
|
java.util.Iterator |
getIterator(java.lang.Object key)
|
protected int |
match_internal(Any anyEvent)
match Any to associated constraints. return the id of the first matching filter or NO_CONSTRAINT. |
protected int |
match_structured_internal(StructuredEvent structuredEvent)
match the StructuredEvent to the associated constraints. return the id of the first matching filter or NO_CONSTRAINT. |
boolean |
match_structured(StructuredEvent structuredevent)
|
boolean |
match_typed(Property[] properties)
|
boolean |
match(Any anyEvent)
|
void |
modify_constraints(int[] deleteIds,
ConstraintInfo[] constraintInfo)
|
void |
preActivate()
|
void |
remove_all_constraints()
|
void |
setDisposeHook(java.lang.Runnable disposeHook)
|
void |
setORB(ORB orb)
|
void |
setPOA(POA poa)
|
Methods inherited from class org.omg.CosNotifyFilter.FilterPOA |
---|
_all_interfaces, _invoke, _this, _this |
Methods inherited from class org.omg.PortableServer.Servant |
---|
_get_delegate, _get_interface_def, _get_interface, _is_a, _non_existent, _object_id, _orb, _poa, _set_delegate, _this_object, _this_object |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int NO_CONSTRAINTS_MATCH
public static final int CONSTRAINTS_EMPTY
protected java.util.Map callbacks_
protected java.util.Map constraints_
protected WildcardMap wildcardMap_
protected EDU.oswego.cs.dl.util.concurrent.ReadWriteLock constraintsLock_
protected DynamicEvaluator dynamicEvaluator_
protected DynAnyFactory dynAnyFactory_
protected MessageFactory messageFactory_
Constructor Detail |
---|
public FilterImpl(ApplicationContext applicationContext, java.lang.String constraintGrammar)
Method Detail |
---|
public void configure(org.apache.avalon.framework.configuration.Configuration conf)
configure
in interface org.apache.avalon.framework.configuration.Configurable
public void setORB(ORB orb)
setORB
in interface ManageableServant
public void setPOA(POA poa)
setPOA
in interface ManageableServant
public void preActivate()
preActivate
in interface ManageableServant
public Object activate()
activate
in interface ManageableServant
public void deactivate()
deactivate
in interface ManageableServant
protected int getConstraintId()
public java.lang.String constraint_grammar()
constraint_grammar
in interface FilterOperations
public ConstraintInfo[] add_constraints(ConstraintExp[] constraintExp) throws InvalidConstraint
add_constraints
operation is invoked by a
client in order
to associate one or more new constraints with the target filter
object. The operation accepts as input a sequence of constraint
data structures, each element of which consists of a sequence
of event type structures (described in Section 3.2.1, "The
Filter Interface," on page 3-14) and a constraint expressed
within the constraint grammar supported by the target
object. Upon processing each constraint, the target object
associates a numeric identifier with the constraint that is
unique among all constraints it encapsulates. If any of the
constraints in the input sequence is not a valid expression
within the supported constraint grammar, the InvalidConstraint
exception is raised. This exception contains as data the
specific constraint expression that was determined to be
invalid. Upon successful processing of all input constraint
expressions, the add_constraints
operation returns
a sequence
in which each element will be a structure including one of the
input constraint expressions, along with the unique identifier
assigned to it by the target filter object. add_constraints
operation are
such that its sideeffects are performed atomically upon the
target filter object. Once add_constraints
is
invoked by a
client, the target filter object is temporarily disabled from
usage by any proxy object it may be associated with. The
operation is then carried out, either successfully adding all
of the input constraints to the target object or none of them
(in the case one of the input expressions was invalid). Upon
completion of the operation, the target filter object is
effectively re-enabled and can once again be used by associated
filter objects in order to make event forwarding decisions.
add_constraints
in interface FilterOperations
InvalidConstraint
public void modify_constraints(int[] deleteIds, ConstraintInfo[] constraintInfo) throws ConstraintNotFound, InvalidConstraint
modify_constraints
in interface FilterOperations
ConstraintNotFound
InvalidConstraint
public ConstraintInfo[] get_constraints(int[] ids) throws ConstraintNotFound
get_constraints
in interface FilterOperations
ConstraintNotFound
public ConstraintInfo[] get_all_constraints()
get_all_constraints
in interface FilterOperations
public void remove_all_constraints()
remove_all_constraints
in interface FilterOperations
public void destroy()
destroy
in interface FilterOperations
public java.util.Iterator getIterator(java.lang.Object key)
public boolean match(Any anyEvent) throws UnsupportedFilterableData
match
in interface FilterOperations
UnsupportedFilterableData
protected int match_internal(Any anyEvent) throws UnsupportedFilterableData
UnsupportedFilterableData
public boolean match_structured(StructuredEvent structuredevent) throws UnsupportedFilterableData
match_structured
in interface FilterOperations
UnsupportedFilterableData
protected int match_structured_internal(StructuredEvent structuredEvent) throws UnsupportedFilterableData
UnsupportedFilterableData
public boolean match_typed(Property[] properties) throws UnsupportedFilterableData
match_typed
in interface FilterOperations
UnsupportedFilterableData
public int attach_callback(NotifySubscribe notifySubscribe)
attach_callback
in interface FilterOperations
public void detach_callback(int id)
detach_callback
in interface FilterOperations
public int[] get_callbacks()
get_callbacks
in interface FilterOperations
public POA _default_POA()
_default_POA
in class Servant
public void dispose()
Disposable
dispose
in interface Disposable
public void setDisposeHook(java.lang.Runnable disposeHook)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |