JBoss.orgCommunity Documentation

Chapter 3. Integrating the Mobicents JAIN SLEE HSS Client Enabler

3.1. The Parent's SbbLocalObject Interface
3.2. The Parent's Sbb Abstract Class
3.3. The Parent's Sbb XML Descriptor

This chapter explains how to setup a JAIN SLEE Service Sbb to use the Enabler.

In short terms, a Service's Sbb will define the Enabler's Sbb as a child, and to achieve that it will need to setup the XML Descriptor, Abstract Class and SbbLocalObject interface.

Important

The Service's Sbb will be referred as the Parent Sbb in the following sections.

The Mobicents JAIN SLEE HSS Client Enabler Sbb provides asynchronous callbacks to the Parent's Sbb, and that can only be achieved if the Parent's SbbLocalObject extends a specific Java interface, deployed also by the Enabler,. The Enabler uses the Parent's SbbLocalObject when a callback to the Parent's Sbb is needed.

The SbbLocalObject which must be used or extended by the Parent's Sbb is named org.mobicents.slee.enabler.hssclient.HSSClientParentSbbLocalObject, which extends the org.mobicents.slee.SbbLocalObjectExt and org.mobicents.slee.enabler.hssclient.HSSClientParent interfaces, the latter declares the callbacks which must be implemented in the Parent's Sbb Abstract Class:



package org.mobicents.slee.enabler.hssclient;
public interface HSSClientParent {
  // Sh-Pull Operations Callbacks ---------------------------------------------
  public void deliverRepositoryData(String publicIdentity, byte[][] serviceIndication,
            long resultCode, String data);
  public void deliverIMSPublicIdentity(String publicIdentity, byte[] msisdn, 
            int identitySet, long resultCode, String data);
  public void deliverIMSUserState(String publicIdentity, long resultCode, String data);
  public void deliverSCSCFName(String publicIdentity, long resultCode, String data);
  public void deliverInitialFilterCriteria(String publicIdentity, String serverName,
            long resultCode, String data);
  public void deliverLocationInformation(byte[] msisdn, int requestedDomain, long resultCode, 
            String data);
  public void deliverUserState(byte[] msisdn, int requestedDomain, long resultCode, String data);
  public void deliverChargingInformation(String publicIdentity, byte[] msisdn, long resultCode, 
            String data);
  public void deliverMSISDN(String publicIdentity, byte[] msisdn, long resultCode, String data);
  public void deliverPSIActivation(String publicIdentity, long resultCode, String data);
  // Sh-Update Operations Callbacks -------------------------------------------
  public void updateRepositoryDataResponse(String publicIdentity, long resultCode);
  public void updatePSIActivationResponse(String publicIdentity, long resultCode);
  // Sh-Subscribe Operations Callbacks ----------------------------------------
  public void subscribeRepositoryDataResponse(String publicIdentity, byte[][] serviceIndication,
            long resultCode);
  public void subscribeIMSUserStateResponse(String publicIdentity, long resultCode);
  public void subscribeSCSCFNameResponse(String publicIdentity, long resultCode);
  public void subscribeInitialFilterCriteriaResponse(String publicIdentity, String serverName, 
            long resultCode);
  public void subscribePSIActivationResponse(String publicIdentity, long resultCode);
  
  // Sh-Notify Operations Callbacks -------------------------------------------
  public void receivedProfileUpdate(String userIdentity, byte[] msisdn, String data, 
            String originRealm, String originHost);
}
        
        
The deliverRepositoryData(String, byte[][], long, String) method:

Callback from the Enabler providing the response for a request for the "Repository Data" data type.

The deliverIMSPublicIdentity(String, byte[], int, long, String) method:

Callback from the Enabler providing the response for a request for the "IMS Public Identity" data type.

The deliverIMSUserState(String, long, String) method:

Callback from the Enabler providing the response for a request for the "IMS User State" data type.

The deliverSCSCFName(String, long, String) method:

Callback from the Enabler providing the response for a request for the "S-CSCF Name" data type.

The deliverInitialFilterCriteria(String, String, long, String) method:

Callback from the Enabler providing the response for a request for the "Initial Filter Criteria" data type.

The deliverLocationInformation(byte[], int, long, String) method:

Callback from the Enabler providing the response for a request for the "Location Information" data type.

The deliverUserState(byte[], int, long, String) method:

Callback from the Enabler providing the response for a request for the "User State" data type.

The deliverChargingInformation(String, byte[], long, String) method:

Callback from the Enabler providing the response for a request for the "Charging Information" data type.

The deliverMSISDN(String, byte[], long, String) method:

Callback from the Enabler providing the response for a request for the "MSISDN" data type.

The deliverPSIActivation(String, long, String) method:

Callback from the Enabler providing the response for a request for the "PSI Activation" data type.

The updateRepositoryDataResponse(String, long) method:

Callback from the Enabler providing the response for a request to update the "Repository Data" data type.

The updatePSIActivationResponse(String, long) method:

Callback from the Enabler providing the response for a request to update the "PSI Activation" data type.

The subscribeRepositoryDataResponse(String, byte[][], int, long) method:

Callback from the Enabler providing the response for a request to subscribe/unsubscribe to the "Repository Data" data type.

The subscribeIMSUserStateResponse(String, int, long) method:

Callback from the Enabler providing the response for a request to subscribe/unsubscribe to the "User State" data type.

The subscribeSCSCFNameResponse(String, int, long) method:

Callback from the Enabler providing the response for a request to subscribe/unsubscribe to the "S-CSCF Name" data type.

The subscribeInitialFilterCriteriaResponse(String, String, int, long) method:

Callback from the Enabler providing the response for a request to subscribe/unsubscribe to the "Initial Filter Criteria" data type.

The subscribePSIActivationResponse(String, int, long) method:

Callback from the Enabler providing the response for a request to subscribe/unsubscribe to the "PSI Activation" data type.

The receivedProfileUpdate(String, byte[], String, String, String) method:

Callback from the Enabler providing a received Profile Update for a subscribed profile, for any data type.

The Parent Sbb Abstract Class must implement the callbacks on it's SbbLocalObject, that is, must implement the org.mobicents.slee.enabler.hssclient.HSSClientParent interface discussed in last section.

The Enabler's Sbb is a Child Sbb, and JAIN SLEE 1.1 Child Relations requires an abstract method in the Sbb Abstract Class, to retrieve the javax.slee.ChildRelation object, which is used to create or access specific Child Sbbs. This method should be:



    public abstract ChildRelationExt getHSSClientChildRelation();
        
        

The Parent's Sbb must define a reference to the Enabler's Child Sbb, declare which is the method name to get the related ChildRelation object, and also ensure the SbbLocalObject interface is defined correctly.

A reference to the Enabler's Child Sbb is defined right after the Parent's Sbb Vendor ID element, using the following XML element:



        <sbb-ref>
            <sbb-name>HSSClientChildSbb</sbb-name>
            <sbb-vendor>org.mobicents</sbb-vendor>
            <sbb-version>1.0</sbb-version>
            <sbb-alias>hssClientChildSbb</sbb-alias>
        </sbb-ref>
        
        

The method name to get the Enabler's ChildRelation object must be defined after the CMP Fields (if any), this XML element links the sbb-alias previously defined with the abstract method declared in the Parent's Sbb Abstract Class:



        <get-child-relation-method>                 
            <sbb-alias-ref>hssClientChildSbb</sbb-alias-ref>
            <get-child-relation-method-name>getHSSClientChildRelation</get-child-relation-method-name>
            <default-priority>0</default-priority>
        </get-child-relation-method>
        
        

Finally, after the sbb-abstract-class element the Parent's SbbLocalObject interface name is defined:



        <sbb-local-interface>
            <sbb-local-interface-name>...</sbb-local-interface-name>
        </sbb-local-interface>