@@ -1418,15 +1418,20 @@ data NodeJVMInfo = NodeJVMInfo {
14181418 , nodeJVMInfoMemoryInfo :: JVMMemoryInfo
14191419 , nodeJVMInfoStartTime :: UTCTime
14201420 , nodeJVMInfoVMVendor :: Text
1421− , nodeJVMVMVersion :: VersionNumber
1421+ , nodeJVMVMVersion :: VMVersion
14221422 -- ^ JVM doesn't seme to follow normal version conventions
14231423 , nodeJVMVMName :: Text
1424− , nodeJVMVersion :: VersionNumber
1424+ , nodeJVMVersion :: JVMVersion
14251425 , nodeJVMPID :: PID
14261426 } deriving (Eq, Show)
14271427
1428−-- | Handles quirks in the way JVM versions are rendered (1.7.0_101 -> 1.7.0.101)
1429−newtype JVMVersion = JVMVersion { unJVMVersion :: VersionNumber }
1428+-- | We cannot parse JVM version numbers and we're not going to try.
1429+newtype JVMVersion =
1430+ JVMVersion { unJVMVersion :: Text }
1431+ deriving (Eq, Show)
1432+
1433+instance FromJSON JVMVersion where
1434+ parseJSON = withText "JVMVersion" (pure . JVMVersion)
14301435
14311436data JVMMemoryInfo = JVMMemoryInfo {
14321437 jvmMemoryInfoDirectMax :: Bytes
@@ -1436,6 +1441,18 @@ data JVMMemoryInfo = JVMMemoryInfo {
14361441 , jvmMemoryInfoHeapInit :: Bytes
14371442 } deriving (Eq, Show)
14381443
1444+-- VM version numbers don't appear to be SemVer
1445+-- so we're special casing this jawn.
1446+newtype VMVersion =
1447+ VMVersion { unVMVersion :: Text }
1448+ deriving (Eq, Show)
1449+
1450+instance ToJSON VMVersion where
1451+ toJSON = toJSON . unVMVersion
1452+
1453+instance FromJSON VMVersion where
1454+ parseJSON = withText "VMVersion" (pure . VMVersion)
1455+
14391456newtype JVMMemoryPool = JVMMemoryPool {
14401457 jvmMemoryPool :: Text
14411458 } deriving (Eq, Show, FromJSON)
@@ -2228,14 +2245,9 @@ instance FromJSON NodeJVMInfo where
22282245 <*> o .: "vm_vendor"
22292246 <*> o .: "vm_version"
22302247 <*> o .: "vm_name"
2231− <*> (unJVMVersion <$> o .: "version")
2248+ <*> o .: "version"
22322249 <*> o .: "pid"
22332250
2234−instance FromJSON JVMVersion where
2235− parseJSON (String t) =
2236− JVMVersion <$> parseJSON (String (T.replace "_" "." t))
2237− parseJSON v = JVMVersion <$> parseJSON v
2238−
22392251instance FromJSON JVMMemoryInfo where
22402252 parseJSON = withObject "JVMMemoryInfo" parse
22412253 where