This Schema defines the XML Interface for the OSS IP Billing API (JSR 130) of the OSS Through Java (tm) Initiative. This Schema was generated by the OSS Through Java XML Toolkit Doclet 1-26-2004 7:5
This interface models a UsageDataAvailableEvent, which
is an event that will be sent by the <CODE>Producer</CODE> to
the client for informing the availability
of new data.
This interface models a MediationCapabilityChangeEvent, which
is an event that will be sent by the <CODE>Producer</CODE> to
the clients to inform the introduction of new data <CODE>formats</CODE>.
This interface models the PropertyDescriptor
of the UsageDataAvailableEvent.
This interface documents and specifies the filterable prooperties of
a UsageDataAvailableEvent notification.
<p>
An implementation must provide the makeEvent method to return an
empty manufactured event instance to the invoker.
This interface models the PropertyDescriptor
of the MediationCapabilityChangeEvent.
This interface documents and specifies the filterable properties of
a MediationCapability notification.
This interface supports the low-level detailing
of a MediationCapabilityChangeEvent emitted by a Producer entity.
This interface provides many helpful methods to clients interested
in decoding such an event, received by them.
This represents a base interface to define a Schema definition
to describe a collection format or output format of a Usage Data Record.
The Schema descriptions are set and returned as {@link java.lang.Object}.
This allows the API to let a specific implementation to support the
passing of a schema definition to a client. Details of the schema
definition construction and details of schema definition
deciphering are left up to the individual implementations and the
API clients.
This interface models the behavior for all types of Usage Record
Filter interfaces in the IP Billing API.
<p>
A Usage Record Filter instance supports setting of the various queryable
attributes, by a which Usage Data Records can be filtered for retrieval.
Some common querying parameters for a Usage Data Record supported by
this interface are:
<UL>
<li> Usage Data Category: Usage Data Application type: VoD, IM, M-COMMERCE, Voice
<li> Usage Data Format: IPDR, (X)-CDR, ...
<li> Usage Data Format Version - String value of version (1.0, 2.5, etc.).
<li> Usage Data Encoding - XML, XDR, ASCII, ASN.1/BER, CSV, OSS/J Usage Record.
<li> Usage Data Timestamp - Records with this timestamp of collection time.
<li> Usage Attribute field values - These can be added to this filter
instance at any time by utilizing the base interface method
{@link #setAttributeValue}.
collection time.
<li> Usage Data Collection Period - Records collected between
these timestamps.
</UL>
It is also possible that new interfaces could be derived from this
interface to represent specific filterable attributes for the
querying the Usage Data Records in question.
<p>
All the attributes set in this Fitler instances are cancatenated
using logical AND expression for query filter purposes.
This is the base interface for all types of OSS/J Usage Records.
Any OSS/J Usage Record must implement this interface.
<p>
The OSS/J Usage Record is NOT a Managed Entity type. There is
no <CODE>primaryKey</CODE> for this <CODE>UsageRecValue</CODE>.
<p>
A Usage Record value is just a data record. It can be decoded with
the {@link javax.oss.cfi.activity.RecordDescriptor} type information.
This Type Description is provided by a
<CODE>UsageRecValueIterator</CODE> instance.
<p>
<p> This interface also provides standardized get and set methods to
primitive type attributes (fields) and composite type attributes (by
means of <CODE>Object</CODE> ). This helps in standardizing access to
member attributes of a Usage Record.
This interface represents a Query Value that allows clients to
query a <CODE>Producer</CODE> for a subset of its collected Usage Records using
one or more Usage Data Record attributes as part of the filter's
attributes.
<p>
The Query for Usage Records may consist of specifying
multiple <CODE>UsageRecFilterValue</CODE>
objects, which are used as templates for building the query expression.
All the Filter Objects in the array are concatenated, using
logical OR operation.
<p>
Each individual <CODE>UsageRecFilterValue</CODE> object may consist of multiple
filterable attribute specification. These attributes are concatenated
together using a logical AND operation.
This interface represents a Query Value that allows clients to
query a <CODE>Producer</CODE> for a subset of its collected Usage Records using
one or more Usage Data Record attributes as part of the filter's
attributes.
<p>
The Query for Usage Records uses a <CODE>UsageRecFilterValue</CODE>
to specify the criteria for limiting the data. Also, a <CODE>ProducerKey/CODE>
can be provided to specify whether the data query is associated with a
specific Producer or whether all data should be considered in the query.
This interface is a Query Value that allows a <CODE>Producer</CODE> Entity to be
retrieved by its attributes or capabilities.
<p>
A Query operation using such a query may result in zero, one or multiple
<CODE>Producer</CODE> Entities to be returned.
<p>
For Query expression purposes
all attributes of <CODE>MeidationCapability</CODE> instnace are
concatenated, using logical AND operation.
<p>
This interface encapsulates the <CODE>PrimaryKey</CODE>
of a <CODE>TransferStatus</CODE> entity.
<p>
The <CODE>PrimaryKey</CODE> encapsulation allows a <CODE>TransferStatus</CODE>
entity to be
uniquely identified with just one or
a combination of two or more attributes and their values.
This insulates the API as well as the implementations from having to
change each time a new attribute must be included to the definition of
its <CODE>PrimaryKey</CODE>.
<p>
This is the base interface for all <CODE>TransferStatus</CODE> primary key interfaces,
with just the DN being defined as the key attribute for now.
Any derived interfaces are free to add their own attributes.
<p>
The primary key for a transfer session consists of a unique
session id within the operating domain, plus <CODE>ProducerKey</CODE>,
which are involved in the data transfer.
This interface represents the attributes of all types of
Data Transfer Status Entities in IP Billing API.
<p>
This is a base Value Object interface to the <CODE>TransferStatusValue</CODE> Entity.
This interface and its sub interfaces (if any) provide several ways
to access the attributes:
<p>
<UL>
<LI>Attributes can be accessed through standard JavaBeans get/set (isSet)
methods.
<LI>Attributes can be accessed through the generic methods defined
in <CODE>AttributeAccess</CODE>
<UL>
<LI><CODE>Object getAttributeValue(String attributeName)</CODE>
<LI><CODE>void setAttributeValue(String attributeName, Object newValue)</CODE>
</UL>
</UL>
<p>
A <CODE>TransferStatusValue</CODE> entity is used to persistently represent information
regarding the transfer of Usage Records from a <CODE>Producer</CODE> to a client.
This base interface only provides the ability to store
retrieve the status of the data transfer and the Usage Record Subscription
value object associated with this transfer. More specific interfaces can
be developed by means of derivation to provide more useful behavior
for a specific type of transfer. For example, if a <CODE>Producer</CODE> Entity
capable of re-transmissions, a specialized <CODE>TransferStatusValue</CODE> Entity can
save the information about failed Usage Record transfers, so that, they
may be retried or re-conciled at a later time.
<p>
An entity of <CODE>TransferStatusValue</CODE> is created by the
<CODE>Producer</CODE>, whenever a transfer
record needs to be kept.
The reporting parameters are preserved in the optional
<CODE>reportingParams</CODE> attribute for understanding the reporting
schemes involved.
<p>
The <CODE>TransferStatusValue</CODE> entity is not removed by the <CODE>Producer</CODE> entity after
the Data Transfer is complete. Instead, it is left to persistently
log the Data Transfer information, for auditing purposes. In order to
avoid creation of large number of Data Transfer Status Entities in the
<CODE>Producer</CODE>'s storage, there must be an aging policy for retiring the
unused Usage Data Transfer Status entities. Currently this is left
unspecified by this API.
A <CODE>TransferStatusKey</CODE> is a unique identifier attribute,
present for each
<CODE>TransferStatus</CODE> entity represented by
<CODE>TransferStatusValue</CODE> object.
It is used to identify a single <CODE>TransferStatus</CODE> entity.
<p>
A <CODE>TransferStatusKey</CODE> value object is returned to the client during
setting up of Data Transfer Session between a client and <CODE>Producer</CODE>.
<p>
The Type, ApplicationDN and ApplicationContext
are included in super interface <CODE>ManagedEntityKey</CODE>, because
a <CODE>primaryKey</CODE> is only unique within an
application instance as given by the ApplicationDN running
in a given naming system as given by the ApplicationContext::URL
<p>
The <CODE>TransferStatusPrimaryKey</CODE> is the <CODE>primaryKey</CODE>
representation of the <CODE>TransferStatusKey</CODE>. This interface is also
the factory for creating the instances of <CODE>TransferStatusPrimaryKey</CODE>.
This is base class for all IP Billing API Exceptions.
This inherits from Exception, not RuntimeException.
<p>
This exception is thrown for Billing API functionality specific problems.
<p>
This new class is required because J2EE containers deal with
RuntimeException in a special way, see EJB specification.
This class represents exceptions related to Data Format errors.
It could be thrown by IP Billing API to indiate problems such
as encountering unsupported data format,
non-conformant data formats, etc.
This is base interface, representing the attribute values of
any type of <CODE>Producer</CODE> Entity in the IP Billing API.
The Producer in the IP Billing API is an <CODE>Activity</CODE>
(see {@link javax.oss.cfi.activity.ActivityValue}),
which knows how and
what type of data to collect and how to report it to the client.
<p>
This is a base Value Object interface to the <CODE>Producer</CODE> entity.
This interface and its sub interfaces (if any) provide several ways
to access the attributes:
<p>
<UL>
<LI>Attributes can be accessed through standard JavaBeans get/set (isSet)
methods.
<LI>Attributes can be accessed through the generic methods defined
in <CODE>AttributeAccess</CODE>
<UL>
<LI><CODE> Object getAttributeValue(String attributeName)</CODE>
<LI><CODE> void setAttributeValue(String attributeName, Object newValue)</CODE>
</UL>
</UL>
Lists the known ProducerValue sub types in the Producer System.
<p>
This method can be invoked by the clients of the API to know
the various supported Producer Entity types of a given system.
Lists the known ProducerKey sub types in the Producer System.
<p>
This method can be invoked by the clients of the API to know
the Key instances of various supported Producer Entity types
of a given system.
Lists the known UsageRecFilterTypes sub types in the Producer System.
<p>
This method can be invoked by the clients of the API to know
the various supported Usage Record Filter types of a given system.
Lists the known MediationCapability sub types in the Producer System.
<p>
This method can be invoked by the clients of the API to know
the various supported mediation capability types of a given system.
Create a new <CODE>Producer</CODE> Entity.
<p>
On creation of the <CODE>Producer</CODE>, minimally necessary information must be
supplied in order to identify the <CODE>Producer</CODE>. This includes the
supplying the information on <CODE>Producer</CODE>'s key attributes,
its name and DN.
<p>
If a <CODE>ProducerKey</CODE> attribute is specified in the <CODE>ProducerValue</CODE>
value object during the create operation, an IllegalArgumentException
is raised.
<p>
The name of a <CODE>Producer</CODE> must be unique within a given system
deploying the IP Billing API.
<p>
The capability descriptor of the created <CODE>Producer</CODE>'s entity, namely
attribute that is the instance of <CODE>MediationCapability</CODE>, may be
left empty (unset) at the creation time, implying that a <CODE>Producer</CODE>
is not ready to be discovered. <p>
The <CODE>MediationCapability</CODE> attribute of the <CODE>Producer</CODE> may be set
to different values during its lifetime. Each time, this value is changed,
the Producer Entity emits a
{@link javax.oss.ipb.event.MediationCapabilityChangeEvent}
Notification
to the common JVTEventTopic, which then will be received by the
registered clients. However, a <CODE>Producer</CODE> that
does not support setting this attribute, may throw
an UnsupportedOperationException.
Also, a <CODE>Producer</CODE> Entity may throw a IllegalArgumentException
for a Set operation on this attribute, if it indicates a arising of
a potential conflict with on-going operations.
<p>
Similar rules apply to other Value objects, such as Usage Record
Descriptors, that are associated with a <CODE>Producer</CODE> Entity.
Create multiple <CODE>Producer</CODE> entities with the specified value templates.
<p>
A Standard OSS/J bulk create entity operation, with best effort semantics.
Remove a single <CODE>Producer</CODE> entity.
<p>
A Standard OSS/J atomic remove operation to remove
a single <CODE>Producer</CODE> Enitty.
Remove multiple <CODE>Producers</CODE> by keys, using best effort.
<p>
A Standard OSS/J bulk remove operation to remove
multiple <CODE>Producer</CODE> Enitties, using best effort semantics.
Remove multiple <CODE>Producers</CODE> by value template,
using best effort.
Get attributes of a single <CODE>Producer</CODE> entity
Get attributes of multiple <CODE>Producer</CODE> entities by keys.
Get attributes of multiple <CODE>Producer</CODE> entities by template
Set attributes of a single managed object, by its key
Set attributes of multiple managed objects by their keys - best effort.
Set attributes of multiple managed objects by template - best effort.
Query the <CODE>Producer</CODE> by its capability attributes.
This method can use <CODE>QueryProducersByMediationCapability</CODE>
named query.
Returns the list of all Mediation (Conversion) possibilities
supported by IP Billing System.
<p>
This method is primarily invoked by the clients to find out the
current system's mediation capabilities.
Once the desired set of mediation capability values are
located in the results, the client typically extracts these
and uses them to create an instance of ProducerValue with
additional attributes.
<p>
The client may then locate an existing
Producer by the created value template (see
{@link #getProducersByTemplate}),
or query the producer
by the mediation capability values
(see {@link javax.oss.ipb.query.QueryProducersByMediationCapability}).
<p>
Alternatively, the client may also create a new Producer Entity by
using any one of the createProducer... type methods.
Returns a MediationCapability instance that is a subset of
value array returned by {@link #getSupportedMediationCapabilities},
for the specified <CODE>desiredCapability</CODE> parameter.
<p>
This is the negotiation method for the client to request
Mediation capabilities from a Producer.
The client builds a desired mediation capability value and then
passes it along to the producer session to negotiate this capability
from a specific producer. If the <CODE>producerKey</CODE> is omitted,
then all the <CODE>Producer</CODE>s for this session will be
considered.
<p>
If not acceptable, the <CODE>Producer</CODE> will throw
an IPBAPIException. Otherwise, it returns a new
<CODE>MediationCapability</CODE>
value that contains the commonly agreeable set of capabilities.
This method indicates whether Usage Data Transfers can be monitored
for the Producer in question,
by creating the TransferStatusValue audit record by the implementation.
<p>
If an implementation doesn't support audit trailing of the usage data
transfers, it should return <CODE>false</CODE> value.
Query the Usage Records by its filterable attribues.
This is a one time query method which returns a bunch of
matching usage reocrds as a iterator. However, no record of
any querying is kept. After the iterator is removed,
this query and its results are completely forgotten.
<p>
This is a client initiated ad-hoc querying of usage data in a
System. An implementation that supports this method, will
be able to service real-time queries from the client
for usage data for both current (snap-shot) as well historical data.
<p>
This operations returns the Iterator to the UsageRecValue resutls.
This operation can be invoked by the client at any time.
<p>
If an implementation cannot support returning the Usage Data
as an Iterator, it will throw a UnsupportedOperationException.
<p>
The difference between this operation and
{@link #queryUsageDataInformation}
is that the latter returns an iterator to the multiple ReportInfo values.
Each of the ReportInfo value can then be inspected by the client
to discover the URL or stream connection information to the actual Usage
Data on the System. Such approach can be used by the implementations
that do not support Iterator based retrieval of Usage Record Data,
but still want to allow the clients to query for the indirect
Report Information.
Query the on-going or completed or failed
Transfers by queryable attribues.
Get the Iterator to the Usage Data Records collected by the Producer
This is called by the client after it receives a
UsageDataAvailableEvent notification from the Producer.
The client passes the same notfication value back to the
Producer with additional parameters identifying
date constraints for the results, to aid in possibly
retrieving only newer information.
<p>
This operation is used by the client to retrieve the results using
OSS/J Iterator approach. If the Iterator Report Mode is not one of the
Report Modes supported by this Session, an UnsupportedOperationException
is thrown. Please see {@link #getSupportedReportModes}.
<p>
If beginTime parameter is not null, all the reports created
beginning from this date are returned by the iterator.
If it is null, all the reports by this Activity are retrieved until
the endDate is reached.
<p>
If the endDate is specified, only Report Data collected until
this endDate is returned. If it is null, all Report Data from
the beginDate is returned.
Get the Iterator to the Usage Data Record Results Information.
This introduces an extra level of indirection over the
method {@link #getUsageRecordsByIterator}.
This can be called by the client after it receives a
UsageDataAvailableEvent notification or at anytime to
retrieve a list of ReportInfo about the Usage Records in a Producer.
The client passes the Producer Key to the
Producer Session with additional parameters identifying
date constraints for the results, to aid in possibly
retrieving only newer information.
<p>
If beginTime parameter is not null, information for
all the reports accumulated
beginning from this date are returned by the iterator.
If it is null, information for all the reports by this Activity
accumulated until the endDate is reached are returned.
<p>
If the endDate is specified, only Report Data collected until
this endDate is returned. If it is null, all Report Data accumulated
from the beginDate is returned.
Get the Iterator to the Usage Data Results Information.
This introduces an extra level of indirection over the
method {@link #queryUsageRecords}.
<p>
This operations returns the Iterator to the ReportInfo values.
This operation can be invoked by the client at any time
during its life-time.
<p>
This operation returns an iterator to the multiple ReportInfo values.
Each of the ReportInfo value can then be inspected by the client
to discover the URL or stream information to the actual Usage Record
Data on the System. Such approach can be used by the implementations
that do not support Iterator based retrieval for direct Usage Record Data,
but still want to allow the clients to query for the indirect
Report Information about the Usage Data Records.
This interface encapsulates the <CODE>PrimaryKey</CODE>
of a <CODE>Producer</CODE> entity.
<p>
The <CODE>PrimaryKey</CODE> encapsulation allows a <CODE>Producer</CODE> entity to be
uniquely identified with just one or
a combination of two or more attributes and their values.
This insulates the API as well as the implementations from having to
change each time a new attribute must be included to the definition of
its <CODE>PrimaryKey</CODE>.
<p>
This is the base interface for all <CODE>Producer</CODE> primary key interfaces,
with just the DN being defined as the key attribute for now.
Any derived interfaces are free to add their own attributes.
This defines the base descriptor interface for expressing of Mediation
Capabilitties of a <CODE>Producer</CODE> Entity.
<p>
More specialized sub interfaces can be implemented to add more capabilities.
Also, by following OSS/J Value object pattern, each capability
attribute has JavaBeans like get and set methods
for access by client of this interface.
<p>
This interface is used by the <CODE>ProducerValue</CODE> and
<CODE>JVTProducerSession</CODE> interfaces to
return the mediation capabilities of a <CODE>Producer</CODE> Entity.
This interface encapsulates all the information necessary to indicate the
result of a BEST EFFORT operations on a <CODE>Producer</CODE> Managed Entity.
<p>
The <CODE>ProducerKeyResult</CODE> is used in operations involving multiple
<CODE>JVTProducerSession</CODE> entities, for example, in the deletion or creation
of multiple <CODE>Producer</CODE> entities.
<p>
This interface defines additional type-safe methods specific
to getting and setting of
<CODE>ProducerKey</CODE> attribute value, specific to this
instances of this interface.
A <CODE>ProducerKey</CODE> is a unique identifier attribute, present for each
<CODE>ProducerValue</CODE> entity. It is used to identify a single
<CODE>Producer</CODE> entity.
<p>
The Type, ApplicationDN and ApplicationContext
are included in super interface <CODE>ManagedEntityKey</CODE>, because
a <CODE>primaryKey</CODE> is only unique within an
application instance as given by the ApplicationDN running
in a given naming system as given by the ApplicationContext::URL
<p>
The <CODE>ProducerPrimaryKey</CODE> is the <CODE>primaryKey</CODE>
representation of the <CODE>ProducerKey</CODE>. This interface is also
the factory for creating the instances of <CODE>ProducerPrimaryKey</CODE>.