Changeset: aa4108a5bc34 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/aa4108a5bc34
Modified Files:
src/main/java/org/monetdb/jdbc/MonetDriver.java
src/main/java/org/monetdb/mcl/net/Target.java
Branch: monetdbs
Log Message:
Move more URL and properties parsing responsibilities to Target
diffs (90 lines):
diff --git a/src/main/java/org/monetdb/jdbc/MonetDriver.java
b/src/main/java/org/monetdb/jdbc/MonetDriver.java
--- a/src/main/java/org/monetdb/jdbc/MonetDriver.java
+++ b/src/main/java/org/monetdb/jdbc/MonetDriver.java
@@ -106,31 +106,12 @@ public final class MonetDriver implement
if (!acceptsURL(url))
return null;
- Target target = new Target();
-
try {
- // If properties are given, add those first
- if (info != null) {
- for (String key : info.stringPropertyNames()) {
- String value = info.getProperty(key);
- if (key.equals(Parameter.HOST.name))
- value =
Target.unpackHost(value);
- target.setString(key, value);
- }
- }
-
- // If url is exactly "jdbc:monetdb:", use just the
properties.
- // This is different from, say, jdbc:monetdb://,
because the
- // latter will clear preexisting host, port, TLS and
database settings.
- // Useful in combination with Target.toProperties().
- if (!url.equals("jdbc:monetdb:"))
- MonetUrlParser.parse(target, url.substring(5));
+ Target target = new Target(url, info);
+ return new MonetConnection(target);
} catch (ValidationError | URISyntaxException e) {
throw new SQLException(e.getMessage());
}
-
- // finally return the Connection object as requested
- return new MonetConnection(target);
}
/**
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
@@ -1,5 +1,7 @@
package org.monetdb.mcl.net;
+import java.net.URISyntaxException;
+import java.util.Properties;
import java.util.regex.Pattern;
public class Target {
@@ -42,6 +44,12 @@ public class Target {
this.timezone = (int)Parameter.TIMEZONE.getDefault();
}
+ public Target(String url, Properties props) throws URISyntaxException,
ValidationError {
+ this();
+ setProperties(props);
+ parseUrl(url);
+ }
+
public void barrier() {
if (userWasSet && !passwordWasSet)
password = "";
@@ -89,6 +97,28 @@ public class Target {
assign(parm, parm.getDefault());
}
+ public void setProperties(Properties props) throws ValidationError {
+ if (props != null) {
+ for (String key : props.stringPropertyNames()) {
+ String value = props.getProperty(key);
+ if (key.equals(Parameter.HOST.name))
+ value = Target.unpackHost(value);
+ setString(key, value);
+ }
+ }
+ }
+
+ public void parseUrl(String url) throws URISyntaxException,
ValidationError {
+ if (url == null)
+ return;
+ if (url.startsWith("jdbc:"))
+ url = url.substring(5);
+ if (url.equals("monetdb:")) {
+ return;
+ }
+ MonetUrlParser.parse(this, url);
+ }
+
private void assign(Parameter parm, Object value) {
switch (parm) {
case TLS: setTls((boolean)value); break;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]