Repository: incubator-ignite Updated Branches: refs/heads/ignite-843 c18cee2ac -> a31c84301
# IGNITE-843 Minor fix. Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/712729b4 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/712729b4 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/712729b4 Branch: refs/heads/ignite-843 Commit: 712729b41dfb7c98a88875b9112b776c62074920 Parents: 609b8c6 Author: Andrey <anovi...@gridgain.com> Authored: Wed Aug 19 10:49:12 2015 +0700 Committer: Andrey <anovi...@gridgain.com> Committed: Wed Aug 19 10:49:12 2015 +0700 ---------------------------------------------------------------------- .../org/apache/ignite/agent/AgentUtils.java | 34 ++++++++++++++++++-- .../handlers/DatabaseMetadataExtractor.java | 2 +- 2 files changed, 33 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/712729b4/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentUtils.java ---------------------------------------------------------------------- diff --git a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentUtils.java b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentUtils.java index 9ab952a..763bb36 100644 --- a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentUtils.java +++ b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentUtils.java @@ -18,12 +18,17 @@ package org.apache.ignite.agent; import java.io.*; -import java.nio.file.*; +import java.net.*; +import java.security.*; +import java.util.logging.*; /** * Utility methods. */ public class AgentUtils { + /** */ + private static final Logger log = Logger.getLogger(AgentUtils.class.getName()); + /** * Default constructor. */ @@ -35,6 +40,31 @@ public class AgentUtils { * @return App folder. */ public static File getAgentHome() { - return Paths.get("").toAbsolutePath().toFile(); + try { + ProtectionDomain domain = AgentLauncher.class.getProtectionDomain(); + + // Should not happen, but to make sure our code is not broken. + if (domain == null || domain.getCodeSource() == null || domain.getCodeSource().getLocation() == null) { + log.log(Level.WARNING, "Failed to resolve agent jar location!"); + + return null; + } + + // Resolve path to class-file. + URI classesUri = domain.getCodeSource().getLocation().toURI(); + + boolean windows = System.getProperty("os.name").toLowerCase().contains("win"); + + // Overcome UNC path problem on Windows (http://www.tomergabel.com/JavaMishandlesUNCPathsOnWindows.aspx) + if (windows && classesUri.getAuthority() != null) + classesUri = new URI(classesUri.toString().replace("file://", "file:/")); + + return new File(classesUri); + } + catch (URISyntaxException | SecurityException ignored) { + log.log(Level.WARNING, "Failed to resolve agent jar location!"); + + return null; + } } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/712729b4/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java ---------------------------------------------------------------------- diff --git a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java index b01bdc5..ba2de15 100644 --- a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java +++ b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java @@ -47,7 +47,7 @@ public class DatabaseMetadataExtractor { File agentHome = AgentUtils.getAgentHome(); if (agentHome != null) - driversFolder = agentHome + "/jdbc-drivers"; + driversFolder = new File(agentHome, "jdbc-drivers").getPath(); } this.driversFolder = driversFolder;