code: private List<? extends SipApplicationRouterInfo> parseSipApplicationRouterInfos(String sipApplicationRouterInfosStringified)
              throws ParseException {
          List<DefaultSipApplicationRouterInfo> sipApplicationRouterInfos = new ArrayList<DefaultSipApplicationRouterInfo>();
          while (sipApplicationRouterInfosStringified.indexOf("(") != -1) {
              int indexOfLeftParenthesis = sipApplicationRouterInfosStringified.indexOf("(");
              int indexOfRightParenthesis = sipApplicationRouterInfosStringified.indexOf(")");
              if (indexOfLeftParenthesis == -1 || indexOfRightParenthesis == -1) {
                  throw new ParseException(
                          "Parenthesis expectected. Cannot parse the following string from the default application router file"
                                  + sipApplicationRouterInfosStringified, 0);
              }
  
              String sipApplicationRouterInfoStringified = sipApplicationRouterInfosStringified.substring(indexOfLeftParenthesis,
                      indexOfRightParenthesis + 1);
              DefaultSipApplicationRouterInfo sipApplicationRouterInfo = parseSipApplicationRouterInfo(sipApplicationRouterInfoStringified);
              // get the index order from the default application router properties file
              sipApplicationRouterInfos.add(sipApplicationRouterInfo);
              sipApplicationRouterInfosStringified = sipApplicationRouterInfosStringified.substring(indexOfRightParenthesis + 1);
          }
  
          // Sort based on the app number
          Collections.sort(sipApplicationRouterInfos, new Comparator<DefaultSipApplicationRouterInfo>() {
  
              public int compare(DefaultSipApplicationRouterInfo arg0, DefaultSipApplicationRouterInfo arg1) {
                  if (arg0.getOrder() == arg1.getOrder())
                      return 0;
                  if (arg0.getOrder() > arg1.getOrder())
                      return 1;
                  return -1;
              }
  
          });
          return sipApplicationRouterInfos;
      }
docs: Parse a string corresponding to one or more definition of SipApplicationRouterInfo ex : ("SimpleSipServlet", "DAR:From",
  "ORIGINATING", "", "NO_ROUTE", "0"), ("SimpleSipServlet", "DAR:To", "TERMINATING", "", "NO_ROUTE", "1") and return the
  corresponding object list
  
  @param sipApplicationRouterInfosStringified the stringified list of SipApplicationRouterInfo
  @return a list of SipApplicationRouterInfo
  @throws ParseException if anything goes wrong during the parsing