The problem is, that the method DefaultResourceDao.getResourceById(String resourceId) expect the resourceId’s parts inside the square brackets to be Url-encoded. This method decodes these parts and even in the case of an already decoded resourceId this works in the case the decoded string equals the given string itself. In the case of a plus character in the given string this decoding changes the string again (for instance "123%2B456" -> "123+456" -> "123 456"). I'll change the code in GraphResultsController to assure that the resoureIds will be encoded before passed to the subsequent calls.
Alejandro Galue May 25, 2016 at 1:58 PM
I made some changes recently to properly show the graphs when either JRobin or RRDtool are enabled with storeByForeignSource. I would appreciate if you can try to reproduce the problem on latest foundation-2016.
Steps to reproduce:
Enable store-by-foreign-source persisting in opennms.properties and restart OpenNMS:
Create a requisition
Add a node to the new requisition whose foreign-ID contains a + character (I used customer-provided value ''ojT0U+Gg4US9WFfr8QZ1Hw''
Add an interface to the node that supports at least one pollable or collectable service; ICMP is sufficient.
Synchronize the requisition
Navigate to the new node's detail page
Click the Resource Graphs link
Select at least one item in the resource chooser and click Graph Selection
Expected results: Resource graphs drawn
Actual results: Exception stack trace in web UI