From b600795083a18e75537f3617ad72464be4034ea9 Mon Sep 17 00:00:00 2001 From: Fraser Savage Date: Tue, 6 Sep 2016 14:18:02 +0100 Subject: [PATCH] Detection of server and vendor name for Payara Server Using constants for prod and vendor instead of string literals Signed-off-by: Fraser Savage --- .../jolokia/detector/GlassfishDetector.java | 34 ++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/agent/core/src/main/java/org/jolokia/detector/GlassfishDetector.java b/agent/core/src/main/java/org/jolokia/detector/GlassfishDetector.java index f0ecd7b52..b95d1a059 100644 --- a/agent/core/src/main/java/org/jolokia/detector/GlassfishDetector.java +++ b/agent/core/src/main/java/org/jolokia/detector/GlassfishDetector.java @@ -38,8 +38,18 @@ */ public class GlassfishDetector extends AbstractServerDetector { - private static final Pattern GLASSFISH_VERSION = Pattern.compile("^.*(?:Glassfish|Payara).*\\sv?(.*?)$",Pattern.CASE_INSENSITIVE); - private static final Pattern GLASSFISH_FULL_VERSION = Pattern.compile("^.*(?:Glassfish|Payara).*?\\sv?([.\\d]+).*$",Pattern.CASE_INSENSITIVE); + private static final Pattern GLASSFISH_VERSION = Pattern.compile("^.*Glassfish.*\\sv?(.*?)$",Pattern.CASE_INSENSITIVE); + private static final Pattern GLASSFISH_FULL_VERSION = Pattern.compile("^.*Glassfish.*?\\sv?([.\\d]+).*$",Pattern.CASE_INSENSITIVE); + private static final Pattern PAYARA_VERSION = Pattern.compile("^.*Payara.*\\sv?(.*?)$",Pattern.CASE_INSENSITIVE); + private static final Pattern PAYARA_FULL_VERSION = Pattern.compile("^.*Payara.*?\\sv?([.\\d]+).*$",Pattern.CASE_INSENSITIVE); + + private static final String GLASSFISH_NAME = "glassfish"; + private static final String GLASSFISH_VENDOR_NAME = "Oracle"; + private static final String PAYARA_NAME = "Payara Server"; + private static final String PAYARA_VENDOR_NAME = "Payara Foundation"; + + private String serverName; + private String vendorName; /** {@inheritDoc} * @param pMBeanServerExecutor*/ @@ -70,11 +80,20 @@ private String detectVersion(MBeanServerExecutor pMBeanServerExecutor) { return version; } + // Tries to match Glassfish first, then Payara Server, updating server and vendor name private String extractVersionFromFullVersion(String pFullVersion) { if (pFullVersion != null) { Matcher matcher = GLASSFISH_VERSION.matcher(pFullVersion); if (matcher.matches()) { - return matcher.group(1); + serverName = GLASSFISH_NAME; + vendorName = GLASSFISH_VENDOR_NAME; + return matcher.group(1); + } + matcher = PAYARA_VERSION.matcher(pFullVersion); + if (matcher.matches()) { + serverName = PAYARA_NAME; + vendorName = PAYARA_VENDOR_NAME; + return matcher.group(1); } } return null; @@ -123,8 +142,15 @@ private String getVersionFromFullVersion(String pOriginalVersion,String pFullVer return pOriginalVersion; } Matcher v3Matcher = GLASSFISH_FULL_VERSION.matcher(pFullVersion); + Matcher payaraMatcher = PAYARA_FULL_VERSION.matcher(pFullVersion); if (v3Matcher.matches()) { + serverName = GLASSFISH_NAME; + vendorName = GLASSFISH_VENDOR_NAME; return v3Matcher.group(1); + } else if (payaraMatcher.matches()) { + serverName = PAYARA_NAME; + vendorName = PAYARA_VENDOR_NAME; + return payaraMatcher.group(1); } else { return pOriginalVersion; } @@ -141,7 +167,7 @@ private class GlassfishServerHandle extends ServerHandle { * @param extraInfo extra infos */ public GlassfishServerHandle(String version, Map extraInfo) { - super("Oracle", "glassfish", version, extraInfo); + super(vendorName, serverName, version, extraInfo); } @Override