Package examples.nistgoodies.match

Source Code of examples.nistgoodies.match.RegexpMatchTest

/** An example that illustrates template matching on SIP headers and messages.
* This uses regular expressions for matching on portions of sip messages.
* This is useful for situations when say you want to match with certain
* response classes or request URIs or whatever.
* You construct a match template that can consist of portions that are exact
* matches and portions that use regular expressions for matching.
* You might find this useful for bulding test frameworks.
*/
package examples.nistgoodies.match;
import gov.nist.core.Match;
import gov.nist.javax.sip.address.SipUri;
import gov.nist.javax.sip.header.RequestLine;
import gov.nist.javax.sip.header.StatusLine;
import gov.nist.javax.sip.message.MessageFactoryImpl;
import gov.nist.javax.sip.message.SIPRequest;
import gov.nist.javax.sip.message.SIPResponse;

import java.util.regex.Pattern;

import javax.sip.SipFactory;
import javax.sip.message.MessageFactory;
import javax.sip.message.Request;


class Matcher implements Match {
   Pattern re;

   Matcher (String matchExpr)  {
     re = Pattern.compile(matchExpr);
   }

   public boolean match(String toMatch) {
  java.util.regex.Matcher m = re.matcher("aaaaab");
  boolean b = m.matches();
  return b;
   }
  
}

public class RegexpMatchTest {
static final String message1 = "INVITE sip:joe@blah.com SIP/3.0\r\n"+
"To: sip:joe@company.com\r\n"+
"From: sip:caller@university.edu ;tag=1234\r\n"+
"Call-ID: 0ha0isnda977644900765@10.0.0.1\r\n"+
"CSeq: 9 INVITE\r\n"+
"Via: SIP/2.0/UDP 135.180.130.133\r\n"+
"Content-Type: application/sdp\r\n"+
"\r\n"+
"v=0\r\n"+
"o=mhandley 29739 7272939 IN IP4 126.5.4.3\r\n" +
"c=IN IP4 135.180.130.88\r\n" +
"m=video 3227 RTP/AVP 31\r\n" +
"m=audio 4921 RTP/AVP 12\r\n" +
"a=rtpmap:31 LPC\r\n";

static final String message2 = "SIP/2.0 200 OK\r\n"+
"Via: SIP/2.0/UDP 129.6.55.18:5060\r\n"+
"From: \"3ComIII\" <sip:13019768226@129.6.55.78>;tag=e13b4296\r\n"+
"To: \"3ComIII\" <sip:13019768226@129.6.55.78>\r\n"+
"Call-Id: c5ab5808@129.6.55.18\r\n"+
"CSeq: 49455 REGISTER\r\n"+
"Expires: 1200\r\n"+
"Contact: <sip:13019768226@129.6.55.18>;expires=1199;action=proxy\r\n"+
"Content-Length: 0\r\n"+
"\r\n";


  public static void main(String args[]) throws Exception {
    SIPRequest template = new SIPRequest();
    RequestLine requestLine  = new RequestLine();
    SipFactory sipFactory = null;
    sipFactory = SipFactory.getInstance();
    sipFactory.setPathName("gov.nist");
    // AddressFactory addressFactory = sipFactory.createAddressFactory();
    SipUri uri = new SipUri();
    // trap invites on company.com domain for incoming SIP
    // invitations.
     uri.setMatcher(new Matcher("sip:[^.]*company.com"));
     requestLine.setMethod(Request.INVITE);
     requestLine.setUri(uri);
     template.setRequestLine(requestLine);
     MessageFactory messageFactory = sipFactory.createMessageFactory();
    try {
      
       
       
        SIPRequest sipMessage = (SIPRequest) messageFactory.createRequest(message1);
        System.out.println("Match returned " +
        sipMessage.match(template));

    } catch (Exception ex) {
       ex.printStackTrace();
       System.exit(0);
    }

    StatusLine statusLine = new StatusLine();
    // matches on all 2XX,1xx and 4xx responses.
    statusLine.setMatcher(new Matcher("SIP/2.0 [1,2,4][0-9][0-9]"));
    SIPResponse responseTemplate = new SIPResponse();
    responseTemplate.setStatusLine(statusLine);
    try {
      
        SIPResponse sipResponse  = (SIPResponse) ((MessageFactoryImpl) messageFactory).createResponse(message2);
        System.out.println("Match returned " +
         sipResponse.match(responseTemplate));

    } catch (Exception ex) {
       ex.printStackTrace();
       System.exit(0);
    }

   
  }
}
TOP

Related Classes of examples.nistgoodies.match.RegexpMatchTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.