Details
-
Type:
Bug
-
Status: Resolved
-
Priority:
Minor
-
Resolution: Fixed
-
Affects Version/s: 2.20.0
-
Component/s: camel-core, rest
-
Labels:None
-
Patch Info:Patch Available
-
Estimated Complexity:Unknown
Description
The following rest endpoint fails with jaxb exception:
.get("/getAllEndpoints").bindingMode(RestBindingMode.json).outType(Map.class) .to("bean:IRWebServiceRegistry?method=getAllProperties");
Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
java.util.Map is an interface, and JAXB can't handle interfaces.
This is fine if i wanted to marshall to xml but i specifically set binding mode to json.
Fix:
Change this line:
https://github.com/apache/camel/blob/36039c0563dfe9e04527c5eca1058e66326054ee/camel-core/src/main/java/org/apache/camel/model/rest/RestBindingDefinition.java#L174
To:
if (jaxb != null && (mode.contains("xml") || mode.equals(RestBindingMode.auto))) {
May want to consider doing the same for the json section at line 130