code: public HashMap parseConnectionUrl(String jdbcConnectionUrl)
      {
          HashMap result = new HashMap();
  
          if (jdbcConnectionUrl == null)
          {
              return result;
          }
  
          int pos = jdbcConnectionUrl.indexOf(':');
          int lastPos;
  
          result.put(PROPERTY_PROTOCOL, jdbcConnectionUrl.substring(0, pos));
  
          lastPos = pos;
          pos     = jdbcConnectionUrl.indexOf(':', lastPos + 1);
  
          String subProtocol = jdbcConnectionUrl.substring(lastPos + 1, pos);
  
          // there are a few jdbc drivers that have a subprotocol containing one or more ':'
          if ("inetpool".equals(subProtocol))
          {
              // Possible forms are:
              //   inetpool:<subprotocol>
              //   inetpool:jdbc:<subprotocol>   (where we'll remove the 'jdbc' part)
              
              int tmpPos = jdbcConnectionUrl.indexOf(':', pos + 1);
  
              if ("inetpool:jdbc".equals(jdbcConnectionUrl.substring(lastPos + 1, tmpPos)))
              {
                  pos    = tmpPos;
                  tmpPos = jdbcConnectionUrl.indexOf(':', pos + 1);
              }
              subProtocol += ":" + jdbcConnectionUrl.substring(pos + 1, tmpPos);
          }
          else if ("jtds".equals(subProtocol) ||
                   "microsoft".equals(subProtocol) ||
                   "sybase".equals(subProtocol))
          {
              pos         = jdbcConnectionUrl.indexOf(':', pos + 1);
              subProtocol = ":" + jdbcConnectionUrl.substring(lastPos + 1, pos);
          }
  
          result.put(PROPERTY_SUBPROTOCOL, subProtocol);
          result.put(PROPERTY_DBALIAS, jdbcConnectionUrl.substring(pos + 1));
  
          return result;
      }
docs: Splits the given jdbc connection url into its components and puts them into
  a hash map using the <code>PROPERTY_</code> constants.
  
  @param jdbcConnectionUrl The connection url
  @return The properties