{"record":{"id":"d47e6f98f8ad4568","repo":"json-path/JsonPath","slug":"json-p-adapter-does-not-support-getlocation","errorCode":null,"errorMessage":"JSON-P adapter does not support getLocation()","messagePattern":"JSON-P adapter does not support getLocation\\(\\)","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"warning","filePath":"json-path/src/main/java/com/jayway/jsonpath/spi/mapper/JakartaMappingProvider.java","lineNumber":511,"sourceCode":"        @Override\r\n        public long getLong() {\r\n            if (state == Event.VALUE_NUMBER) {\r\n                return ((JsonNumber) scope.getValue()).longValue();\r\n            }\r\n            throw new IllegalStateException(\"Target json value must a number, not \" + state);\r\n        }\r\n\r\n        @Override\r\n        public BigDecimal getBigDecimal() {\r\n            if (state == Event.VALUE_NUMBER) {\r\n                return ((JsonNumber) scope.getValue()).bigDecimalValue();\r\n            }\r\n            throw new IllegalStateException(\"Target json value must a number, not \" + state);\r\n        }\r\n\r\n        @Override\r\n        public JsonLocation getLocation() {\r\n            throw new UnsupportedOperationException(\"JSON-P adapter does not support getLocation()\");\r\n        }\r\n\r\n        @Override\r\n        public void skipArray() {\r\n            if (scope instanceof JsonArrayScope) {\r\n                while (scope.hasNext()) {\r\n                    scope.next();\r\n                }\r\n                state = Event.END_ARRAY;\r\n            }\r\n        }\r\n\r\n        @Override\r\n        public void skipObject() {\r\n            if (scope instanceof JsonObjectScope) {\r\n                while (scope.hasNext()) {\r\n                    scope.next();\r\n                }\r","sourceCodeStart":493,"sourceCodeEnd":529,"githubUrl":"https://github.com/json-path/JsonPath/blob/62a4c9f0f65ba3f625aa0867d64c528ba72d09ec/json-path/src/main/java/com/jayway/jsonpath/spi/mapper/JakartaMappingProvider.java#L493-L529","documentation":"The JSON-P parser adapter inside JakartaMappingProvider does not implement getLocation(); calling it always throws UnsupportedOperationException. JSON-P's streaming API surface in this adapter does not carry location info, so the method is deliberately unimplemented.","triggerScenarios":"Calling getLocation() on the JsonParser adapter created by JakartaMappingProvider (e.g. code that logs error positions from parsers, or generic parser-handling utilities).","commonSituations":"Debugging/telemetry code that reports JSON parse coordinates; switching from another JsonProvider (like Jackson) that supports locations to the Jakarta/JSON-P provider.","solutions":["Do not call getLocation() when using the JakartaMappingProvider; guard with a capability check or catch UnsupportedOperationException","Log position via your own token counter instead of parser locations","Switch to a mapping provider that supports parser locations if coordinates are required"],"exampleFix":"// before\nJsonLocation loc = parser.getLocation(); // always throws\n// after\ntry {\n    JsonLocation loc = parser.getLocation();\n} catch (UnsupportedOperationException e) {\n    // JSON-P adapter: no location info; track line/offset yourself\n}","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    JsonLocation loc = parser.getLocation();\n} catch (UnsupportedOperationException e) {\n    // JSON-P adapter provides no location; track offsets manually\n}","preventionTips":["Never assume all JsonParser implementations support getLocation(); check provider docs","Maintain your own line/offset counters if positions matter","Choose a Jackson/Gson-based provider when parser locations are required"],"tags":["json","unsupported-operation","json-path","json-p"],"backgroundTag":"unsupported-operation","analyzedSha":"62a4c9f0f65ba3f625aa0867d64c528ba72d09ec","analyzedAt":"2026-09-11T11:36:00.448Z","contentChangedAt":"2026-09-11T11:36:00.448Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}