tree a8dae976d2feb9dd668a3a2de18d9b7cc5901f9e
parent c4834856e312fe1086532ffe7e91d17e94cb6d74
author qixiaobo <qixiaobo.nj@gmail.com> 1564642477 +0800
committer qixiaobo <qixiaobo.nj@gmail.com> 1564642477 +0800

change getRawParameter to getParameter because group never appears in special meta information

```java
	public String getRawParameter(String key) {
	    if ("protocol".equals(key))
            return protocol;
	    if ("username".equals(key))
            return username;
	    if ("password".equals(key))
            return password;
	    if ("host".equals(key))
            return host;
	    if ("port".equals(key))
            return String.valueOf(port);
	    if ("path".equals(key))
            return path;
        return getParameter(key);
	}
```
