Currently our cXML Punchout implementation (SAP hybris standard) does not print the Doctype on a response.
The the endsyste needs it:
Wed Sep 02 00:19:42 PDT 2020 (T12:prealm_1234:global\c1234:PasswordAdapter1:db2wer:C123_UI1)
(application.cxml:ERROR) [ID1234]: CXMLDOMRequester: Unable to parse cXML response with error:
org.xml.sax.SAXParseException: Document root element "cXML", must match DOCTYPE root "null".
I tried to do some research:
One request goes to de.hybris.platform.b2bpunchoutaddon.controllers.pages.DefaultPunchOutSetUpController.handlePunchOutSetUpRequest()
and it returns a CXML Object. This Object goes through some mapper and converter, but it adds no where the Doctype.
Then I found de.hybris.platform.b2bpunchoutaddon.converter.CXMLJaxb2MessageConverter
. This MessageConverter
adds the Doctype to the xml header. But it never runs.
For me the spring configuration looks correct:
<alias name="cXMLJaxb2MessageConverter" alias="jaxbMessageConverter" />
<bean id="cXMLJaxb2MessageConverter" class="de.hybris.platform.b2bpunchoutaddon.converter.CXMLJaxb2MessageConverter"/>
Right now I despair on this problem. Does any of you know how to fix it?
This is because in your storefront extension you have the following setting of message converters:
so, this spring config will of course ignore the bean which your b2bpunchoutaddon creates
My fix for this was to use change my storefront spring mvc config to use bean with the id="jaxbMessageConverter" instead of an inline bean:
Now, we know that the alias will work and the response will contain the doctype: