code: public static Properties parse(String jdbcUrl) throws IllegalArgumentException {
          if(!jdbcUrl.startsWith(URL_STARTS)) {
              throw new IllegalArgumentException("JDBC Url must start with "+URL_STARTS);
          }
          String driverAndURI = jdbcUrl.substring(URL_STARTS.length());    
          Properties properties = new Properties();   
          URI uri = URI.create(driverAndURI.substring(driverAndURI.indexOf(':')+1));
          if(uri.getHost()!=null) {
              properties.setProperty(DataSourceFactory.JDBC_SERVER_NAME,uri.getHost());
          }
          // Read DataBase name/path and options
          String path = uri.getPath();
          if(path!=null) {
              String[] paths = path.split(";");
              if(uri.getHost()!=null && paths[0].startsWith("/")) {
                  paths[0] = paths[0].substring(1);
              }
              properties.setProperty(DataSourceFactory.JDBC_DATABASE_NAME,paths[0]);
              for(int id=1;id<paths.length;id++) {
                  String[] option = paths[id].split("=");
                  if(option.length==2) {
                      properties.setProperty(option[0],option[1]);
                  }
              }
          }
          String query = uri.getQuery();
          if(query!=null) {
              try {
                  for(Map.Entry<String,String> entry : URIUtilities.getQueryKeyValuePairs(uri).entrySet()) {
                      properties.setProperty(entry.getKey(),entry.getValue());
                  }
              } catch (UnsupportedEncodingException ex) {
                  throw new IllegalArgumentException("JDBC Url encoding error",ex);
  
              }
          }
          if(uri.getPort()!=-1) {
              properties.setProperty(DataSourceFactory.JDBC_PORT_NUMBER,String.valueOf(uri.getPort()));
          }
          if(uri.getScheme()!=null && !"file".equalsIgnoreCase(uri.getScheme())) {
              properties.setProperty(DataSourceFactory.JDBC_NETWORK_PROTOCOL, uri.getScheme());
          }
          return properties;
      }
docs: Convert JDBC URL into JDBC Connection properties
  @param jdbcUrl JDBC connection path
  @return Properties to be used in OSGi DataSourceFactory that does not handle {@link DataSourceFactory#JDBC_URL}
  @throws IllegalArgumentException Argument is not a valid JDBC connection URL or cannot be parsed by this class