[Asterisk-java-cvs] CVS: asterisk-java/src/java/net/sf/asterisk/fastagi ReplyBuilderImpl.java,1.1,1.
Brought to you by:
srt
From: Stefan R. <sr...@us...> - 2005-03-11 13:40:24
|
Update of /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/fastagi In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25827/src/java/net/sf/asterisk/fastagi Modified Files: ReplyBuilderImpl.java Log Message: Added extra and attributes properties to AGIReply Index: ReplyBuilderImpl.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/fastagi/ReplyBuilderImpl.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -p -r1.1 -r1.2 --- ReplyBuilderImpl.java 9 Mar 2005 20:31:35 -0000 1.1 +++ ReplyBuilderImpl.java 11 Mar 2005 13:40:06 -0000 1.2 @@ -33,7 +33,13 @@ public class ReplyBuilderImpl implements private static final Pattern STATUS_PATTERN = Pattern .compile("^(\\d{3})[ -]"); private static final Pattern RESULT_PATTERN = Pattern - .compile("^200 result=(\\d+) "); + .compile("^200 result=(\\S+)"); + private static final Pattern PARENTHESIS_PATTERN = Pattern + .compile("^200 result=\\S+ \\((.*)\\)"); + private static final Pattern ADDITIONAL_ATTRIBUTES_PATTERN = Pattern + .compile("^200 result=\\S+( \\(.*\\) )?(.+)$"); + private static final Pattern ADDITIONAL_ATTRIBUTE_PATTERN = Pattern + .compile("(\\S+)=(\\S+)"); private static final Pattern SYNOPSIS_PATTERN = Pattern .compile("^\\s*Usage:\\s*(.*)\\s*$"); private static final String END_OF_PROPER_USAGE = "520 End of proper usage."; @@ -42,8 +48,7 @@ public class ReplyBuilderImpl implements { String firstLine; AGIReply reply; - Matcher statusMatcher; - Matcher resultMatcher; + Matcher matcher; if (lines.size() == 0) { @@ -54,19 +59,47 @@ public class ReplyBuilderImpl implements firstLine = (String) lines.get(0); - statusMatcher = STATUS_PATTERN.matcher(firstLine); - if (statusMatcher.find()) + matcher = STATUS_PATTERN.matcher(firstLine); + if (matcher.find()) { - reply.setStatus(Integer.parseInt(statusMatcher.group(1))); + reply.setStatus(Integer.parseInt(matcher.group(1))); } - resultMatcher = RESULT_PATTERN.matcher(firstLine); - if (resultMatcher.find()) + if (reply.getStatus() == AGIReply.SC_SUCCESS) { - reply.setResult(Integer.parseInt(resultMatcher.group(1))); - } - if (reply.getStatus() == AGIReply.SC_INVALID_COMMAND_SYNTAX) + matcher = RESULT_PATTERN.matcher(firstLine); + if (matcher.find()) + { + reply.setResult(matcher.group(1)); + } + + matcher = PARENTHESIS_PATTERN.matcher(firstLine); + if (matcher.find()) + { + reply.setExtra(matcher.group(1)); + } + + matcher = ADDITIONAL_ATTRIBUTES_PATTERN.matcher(firstLine); + if (matcher.find()) + { + String s; + Matcher attributeMatcher; + + s = matcher.group(2); + attributeMatcher = ADDITIONAL_ATTRIBUTE_PATTERN.matcher(s); + while (attributeMatcher.find()) + { + String key; + String value; + + key = attributeMatcher.group(1); + value = attributeMatcher.group(2); + reply.setAttribute(key, value); + } + } + } + else if (reply.getStatus() == AGIReply.SC_INVALID_COMMAND_SYNTAX) { StringBuffer usageSB; |