examples.nistgoodies.match.RegexpMatchTest Maven / Gradle / Ivy
/** 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:[email protected] SIP/3.0\r\n"+
"To: sip:[email protected]\r\n"+
"From: sip:[email protected] ;tag=1234\r\n"+
"Call-ID: [email protected]\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\" ;tag=e13b4296\r\n"+
"To: \"3ComIII\" \r\n"+
"Call-Id: [email protected]\r\n"+
"CSeq: 49455 REGISTER\r\n"+
"Expires: 1200\r\n"+
"Contact: ;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);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy