Changeset: 6b7778153d23 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/6b7778153d23
Modified Files:
src/main/java/org/monetdb/mcl/net/MonetUrlParser.java
src/main/java/org/monetdb/mcl/net/Target.java
Branch: monetdbs
Log Message:
Fully implement Target.buildURL
diffs (75 lines):
diff --git a/src/main/java/org/monetdb/mcl/net/MonetUrlParser.java
b/src/main/java/org/monetdb/mcl/net/MonetUrlParser.java
--- a/src/main/java/org/monetdb/mcl/net/MonetUrlParser.java
+++ b/src/main/java/org/monetdb/mcl/net/MonetUrlParser.java
@@ -4,6 +4,7 @@ import java.io.UnsupportedEncodingExcept
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLDecoder;
+import java.net.URLEncoder;
public class MonetUrlParser {
private final Target target;
@@ -49,7 +50,7 @@ public class MonetUrlParser {
target.barrier();
}
- private static String percentDecode(String context, String text) throws
URISyntaxException {
+ public static String percentDecode(String context, String text) throws
URISyntaxException {
try {
return URLDecoder.decode(text, "UTF-8");
} catch (UnsupportedEncodingException e) {
@@ -59,6 +60,14 @@ public class MonetUrlParser {
}
}
+ public static String percentEncode(String text) {
+ try {
+ return URLEncoder.encode(text, "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
private void parseModern() throws URISyntaxException, ValidationError {
clearBasic();
diff --git a/src/main/java/org/monetdb/mcl/net/Target.java
b/src/main/java/org/monetdb/mcl/net/Target.java
--- a/src/main/java/org/monetdb/mcl/net/Target.java
+++ b/src/main/java/org/monetdb/mcl/net/Target.java
@@ -409,11 +409,31 @@ public class Target {
public String buildUrl() {
final StringBuilder sb = new StringBuilder(128);
- sb.append("jdbc:monetdb://").append(host)
- .append(':').append(port)
- .append('/').append(database);
- if (!language.equals("sql"))
- sb.append("?language=").append(language);
+ sb.append("jdbc:");
+ sb.append(tls ? "monetdbs": "monetdb");
+ sb.append("://");
+ sb.append(packHost(host));
+ if (!Parameter.PORT.getDefault().equals(port)) {
+ sb.append(':');
+ sb.append(port);
+ }
+ sb.append('/').append(database);
+ String sep = "?";
+ for (Parameter parm: Parameter.values()) {
+ if (parm.isCore || parm == Parameter.USER || parm ==
Parameter.PASSWORD)
+ continue;
+ Object defaultValue = parm.getDefault();
+ if (defaultValue == null)
+ continue;
+ Object value = getObject(parm);
+ if (value.equals(defaultValue))
+ continue;
+ sb.append(sep).append(parm.name).append('=');
+ String raw = getString(parm);
+ String encoded = MonetUrlParser.percentEncode(raw);
+ sb.append(encoded);
+ sep = "&";
+ }
return sb.toString();
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]