/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package test.first; import java.io.IOException; import java.util.concurrent.ConcurrentHashMap; import javax.servlet.ServletException; import javax.servlet.sip.*; /** * * @author binod */ @javax.servlet.sip.annotation.SipServlet public class NewSipServlet extends javax.servlet.sip.SipServlet { private static ConcurrentHashMap contacts = new ConcurrentHashMap(); @Override protected void doRegister(SipServletRequest req) throws IOException, ServletParseException { saveContact(req); // Save the contact information (i.e address/port etc). req.createResponse(SipServletResponse.SC_ACCEPTED).send(); } @Override protected void doRequest(SipServletRequest req) throws IOException, ServletException { String to = ((SipURI) req.getTo().getURI()).getUser(); SipURI u = getContact(to); if (u != null) { req.setRequestURI(u); } super.doRequest(req); } @Override protected void doInvite(SipServletRequest req) throws TooManyHopsException { Proxy p = req.getProxy(); p.setRecordRoute(true); p.setSupervised(true); p.proxyTo(req.getRequestURI()); } private void saveContact(SipServletRequest req) throws ServletParseException { String user = ((SipURI) req.getFrom().getURI()).getUser(); contacts.put(user, (SipURI) req.getAddressHeader("Contact").getURI()); } private SipURI getContact(String user) { return contacts.get(user); } }