Changeset: 2d880f90be2a for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/2d880f90be2a
Modified Files:
src/main/java/org/monetdb/mcl/net/ClientInfo.java
src/main/java/org/monetdb/mcl/net/MapiSocket.java
Branch: default
Log Message:
Try to use reasonable defaults for ClientInfo
diffs (97 lines):
diff --git a/src/main/java/org/monetdb/mcl/net/ClientInfo.java
b/src/main/java/org/monetdb/mcl/net/ClientInfo.java
--- a/src/main/java/org/monetdb/mcl/net/ClientInfo.java
+++ b/src/main/java/org/monetdb/mcl/net/ClientInfo.java
@@ -2,6 +2,11 @@ package org.monetdb.mcl.net;
import org.monetdb.jdbc.MonetDriver;
+import java.io.File;
+import java.lang.management.ManagementFactory;
+import java.lang.management.RuntimeMXBean;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
import java.sql.ClientInfoStatus;
import java.sql.SQLClientInfoException;
import java.util.Collections;
@@ -13,7 +18,9 @@ public class ClientInfo {
private static final String defaultClientLibrary = findClientLibrary();
- private static final int defaultPid = findPid();
+ private static final String defaultApplicationName =
findApplicationName();
+
+ private static final String defaultPid = findPid();
private final Properties props;
@@ -21,17 +28,47 @@ public class ClientInfo {
props = new Properties();
props.setProperty("ClientHostname", defaultHostname);
props.setProperty("ClientLibrary", defaultClientLibrary);
- props.setProperty("ClientPid", "" + defaultPid);
- props.setProperty("ApplicationName", "");
+ props.setProperty("ClientPid", defaultPid);
+ props.setProperty("ApplicationName", defaultApplicationName);
props.setProperty("ClientRemark", "");
}
private static String findHostname() {
- return "my host";
+ try {
+ return InetAddress.getLocalHost().getHostName();
+ } catch (UnknownHostException e) {
+ return "";
+ }
}
- private static int findPid() {
- return 42;
+ private static String findApplicationName() {
+ String appName = "";
+ try {
+ String prop = System.getProperty("sun.java.command");
+ if (prop != null) {
+ // we want only the command, and not the
arguments
+ prop = prop.split("\\s", 2)[0];
+ // keep only the basename5
+ int idx = prop.lastIndexOf(File.separatorChar);
+ if (idx >= 0)
+ prop = prop.substring(idx + 1);
+ appName = prop;
+ }
+ } catch (SecurityException e) {
+ // ignore
+ }
+
+ return appName;
+ }
+
+ private static String findPid() {
+ try {
+ RuntimeMXBean mxbean =
ManagementFactory.getRuntimeMXBean();
+ String pidAtHostname = mxbean.getName();
+ return pidAtHostname.split("@", 2)[0];
+ } catch (RuntimeException e) {
+ return "";
+ }
}
private static String findClientLibrary() {
diff --git a/src/main/java/org/monetdb/mcl/net/MapiSocket.java
b/src/main/java/org/monetdb/mcl/net/MapiSocket.java
--- a/src/main/java/org/monetdb/mcl/net/MapiSocket.java
+++ b/src/main/java/org/monetdb/mcl/net/MapiSocket.java
@@ -502,8 +502,12 @@ public final class MapiSocket {
if (parts.length > 9 && target.isClientInfo()) {
clientInfo = new ClientInfo();
try {
- clientInfo.set("ApplicationName",
target.getClientApplication());
- clientInfo.set("ClientRemark",
target.getClientRemark());
+ String clientApplication =
target.getClientApplication();
+ String clientRemark = target.getClientRemark();
+ if (!clientApplication.isEmpty())
+ clientInfo.set("ApplicationName",
clientApplication);
+ if (!clientRemark.isEmpty())
+ clientInfo.set("ClientRemark",
clientRemark);
} catch (SQLClientInfoException e) {
String keys = String.join(", ",
e.getFailedProperties().keySet());
throw new MCLException("Could not set
ClientInfo properties: " + keys, e);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]