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;
|