CPL Java Compiler Project

This project provide an architecture to manage profile personalization for VoIP telephony scenarios, on a SIP network.

This project uses an existing  JAIN-SIP proxy implementation from NIST: this has been extended with our profile manager component.


For defining the user profiles, we have used CPL (Call Processing Language), a simple XML-based language used to specify call control policies that the proxy has to follow when a SIP call arrives for the specific user.

The profiles are implemented as Java classes, in particular the system creates run-time a Java class from a CPL script, that has been defined by the user. Using Java classes for the profiles guarantees  better performance, because there is no need of additional interpretation for handling incoming calls.

For these purposes we have developed a compiler from CPL to Java, able to generate a Java source code and then bytecode,  starting from a CPL script.


The architecture of the system is based on two components:

1 - ProfileServerManager, a web application that receives the CPL scripts from a web interface, and generates the corresponding Java classes. Whenever the profile is changed it generates the corresponding bytecode and it notifies the proxy (through a Java-RMI call) that a new profile has been set and stored in a common repository (in particular, a mySQL database).

2- ProfileManager, is the JAIN-SIP proxy extension; it dynamically downloads from the repository and it instantiates the profile for a specific user making it available to the proxy for processing incoming calls.

How to get it 

Source distribution(3.5Mb), with all the libraries and an Ant script for building.

Binary distribution(3.4Mb), all the packed jars necessary for running both components, the modified proxy, the jars for the ProfileManager and the war file for ProfileServerManager.

Installation documentation as text file (included in both binary and source distribution).

Complete master thesis(1.1Mb), describing the system development (only in italian, sorry).

Presentation Powerpoint slides(740kb) (only in italian).

Enjoy!

Note:
The components are independent, for running the ProfileServerManager is necessary a JSP-enabled web server like Apache Tomcat.


Contact Information
Paolo Falcarin Paolo.Falcarin_at_polito.it
Marco De Nittis denittis_at_sinet.it