rbeckman-nextgen / test-mc6

0 stars 0 forks source link

Error when viewing Messages from Mirth Connect Administrator #4313

Open rbeckman-nextgen opened 4 years ago

rbeckman-nextgen commented 4 years ago

Client is having an issue viewing messages on the Mirth Connect administrator.

Per Nick Rupley, this may be due to a DatabaseConnection in the channel map. Which has been confirmed that they have a DB conn channel map.

com.mirth.connect.donkey.util.xstream.SerializerException: com.mirth.connect.donkey.util.DonkeyElement$DonkeyElementException: java.io.EOFException: no more data available - expected end tags </string></entry></content></channelMapContent></connectorMessage></entry></connectorMessages></message> to close start tag <string> from line 502 and start tag <entry> from line 501 and start tag <content> from line 476 and start tag <channelMapContent> from line 474 and start tag <connectorMessage> from line 13 and start tag <entry> from line 11 and start tag <connectorMessages> from line 10 and start tag <message> from line 1, parser stopped on TEXT seen ... <com.mirth.connect.server.userutil.DatabaseConnection... @503:68 com.mirth.connect.client.core.ClientException: com.mirth.connect.donkey.util.xstream.SerializerException: com.mirth.connect.donkey.util.DonkeyElement$DonkeyElementException: java.io.EOFException: no more data available - expected end tags </string></entry></content></channelMapContent></connectorMessage></entry></connectorMessages></message> to close start tag <string> from line 502 and start tag <entry> from line 501 and start tag <content> from line 476 and start tag <channelMapContent> from line 474 and start tag <connectorMessage> from line 13 and start tag <entry> from line 11 and start tag <connectorMessages> from line 10 and start tag <message> from line 1, parser stopped on TEXT seen ... <com.mirth.connect.server.userutil.DatabaseConnection... @503:68 at com.mirth.connect.client.core.Client$2.invoke(Client.java:287) at com.sun.proxy.$Proxy61.getMessageContent(Unknown Source) at com.mirth.connect.client.core.Client.getMessageContent(Client.java:1717) at com.mirth.connect.client.ui.browsers.message.MessageBrowser.MessageListSelected(MessageBrowser.java:1694) at com.mirth.connect.client.ui.browsers.message.MessageBrowser.access$1400(MessageBrowser.java:119) at com.mirth.connect.client.ui.browsers.message.MessageBrowser$11.valueChanged(MessageBrowser.java:1109) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:164) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:211) at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:405) at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:415) at javax.swing.DefaultListSelectionModel.setSelectionInterval(DefaultListSelectionModel.java:459) at javax.swing.JTable.changeSelectionModel(JTable.java:2392) at javax.swing.JTable.changeSelection(JTable.java:2461) at javax.swing.plaf.basic.BasicTableUI$Handler.adjustSelection(BasicTableUI.java:1115) at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressedDND(BasicTableUI.java:1080) at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(BasicTableUI.java:1032) at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280) at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:279) at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:279) at java.awt.Component.processMouseEvent(Component.java:6536) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at org.jdesktop.swingx.JXTreeTable.processMouseEvent(JXTreeTable.java:396) at java.awt.Component.processEvent(Component.java:6304) at java.awt.Container.processEvent(Container.java:2239) at java.awt.Component.dispatchEventImpl(Component.java:4889) at java.awt.Container.dispatchEventImpl(Container.java:2297) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4532) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476) at java.awt.Container.dispatchEventImpl(Container.java:2283) at java.awt.Window.dispatchEventImpl(Window.java:2746) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84) at java.awt.EventQueue$4.run(EventQueue.java:733) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:730) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) Caused by: com.mirth.connect.donkey.util.xstream.SerializerException: com.mirth.connect.donkey.util.DonkeyElement$DonkeyElementException: java.io.EOFException: no more data available - expected end tags </string></entry></content></channelMapContent></connectorMessage></entry></connectorMessages></message> to close start tag <string> from line 502 and start tag <entry> from line 501 and start tag <content> from line 476 and start tag <channelMapContent> from line 474 and start tag <connectorMessage> from line 13 and start tag <entry> from line 11 and start tag <connectorMessages> from line 10 and start tag <message> from line 1, parser stopped on TEXT seen ... <com.mirth.connect.server.userutil.DatabaseConnection... @503:68 at com.mirth.connect.model.converters.ObjectXMLSerializer.handleDeserializationException(ObjectXMLSerializer.java:424) at com.mirth.connect.model.converters.ObjectXMLSerializer.deserialize(ObjectXMLSerializer.java:304) at com.mirth.connect.client.core.api.providers.XmlMessageBodyReader.readFrom(XmlMessageBodyReader.java:51) at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.invokeReadFrom(ReaderInterceptorExecutor.java:256) at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:235) at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:155) at org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1085) at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:874) at com.mirth.connect.client.core.MirthClientResponse.readEntity(MirthClientResponse.java:40) at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:834) at org.glassfish.jersey.client.ClientResponse.readEntity(ClientResponse.java:368) at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:867) at org.glassfish.jersey.client.JerseyInvocation.access$800(JerseyInvocation.java:92) at org.glassfish.jersey.client.JerseyInvocation$3.call(JerseyInvocation.java:722) at org.glassfish.jersey.internal.Errors.process(Errors.java:315) at org.glassfish.jersey.internal.Errors.process(Errors.java:297) at org.glassfish.jersey.internal.Errors.process(Errors.java:228) at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444) at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:718) at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:430) at org.glassfish.jersey.client.proxy.WebResourceFactory.invoke(WebResourceFactory.java:381) at com.sun.proxy.$Proxy61.getMessageContent(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.mirth.connect.client.core.Client$2.invoke(Client.java:266) ... 51 more Caused by: com.mirth.connect.donkey.util.DonkeyElement$DonkeyElementException: java.io.EOFException: no more data available - expected end tags </string></entry></content></channelMapContent></connectorMessage></entry></connectorMessages></message> to close start tag <string> from line 502 and start tag <entry> from line 501 and start tag <content> from line 476 and start tag <channelMapContent> from line 474 and start tag <connectorMessage> from line 13 and start tag <entry> from line 11 and start tag <connectorMessages> from line 10 and start tag <message> from line 1, parser stopped on TEXT seen ... <com.mirth.connect.server.userutil.DatabaseConnection... @503:68 at com.mirth.connect.donkey.util.DonkeyElement.fromXml(DonkeyElement.java:490) at com.mirth.connect.donkey.util.DonkeyElement.<init>(DonkeyElement.java:53) at com.mirth.connect.model.converters.ObjectXMLSerializer.getDonkeyElement(ObjectXMLSerializer.java:452) at com.mirth.connect.model.converters.ObjectXMLSerializer.deserialize(ObjectXMLSerializer.java:279) ... 76 more Caused by: java.io.EOFException: no more data available - expected end tags </string></entry></content></channelMapContent></connectorMessage></entry></connectorMessages></message> to close start tag <string> from line 502 and start tag <entry> from line 501 and start tag <content> from line 476 and start tag <channelMapContent> from line 474 and start tag <connectorMessage> from line 13 and start tag <entry> from line 11 and start tag <connectorMessages> from line 10 and start tag <message> from line 1, parser stopped on TEXT seen ... <com.mirth.connect.server.userutil.DatabaseConnection... @503:68 at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:3035) at org.xmlpull.mxp1.MXParser.more(MXParser.java:3046) at org.xmlpull.mxp1.MXParser.parseStartTag(MXParser.java:1738) at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1127) at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093) at org.xmlpull.v1.dom2_builder.DOM2XmlPullBuilder$BuildProcess.parseSubTree(DOM2XmlPullBuilder.java:154) at org.xmlpull.v1.dom2_builder.DOM2XmlPullBuilder$BuildProcess.parseSubTree(DOM2XmlPullBuilder.java:122) at org.xmlpull.v1.dom2_builder.DOM2XmlPullBuilder$BuildProcess.parseSubTree(DOM2XmlPullBuilder.java:156) at org.xmlpull.v1.dom2_builder.DOM2XmlPullBuilder$BuildProcess.parseSubTree(DOM2XmlPullBuilder.java:122) at org.xmlpull.v1.dom2_builder.DOM2XmlPullBuilder$BuildProcess.parseSubTree(DOM2XmlPullBuilder.java:156) at org.xmlpull.v1.dom2_builder.DOM2XmlPullBuilder$BuildProcess.parseSubTree(DOM2XmlPullBuilder.java:122) at org.xmlpull.v1.dom2_builder.DOM2XmlPullBuilder$BuildProcess.parseSubTree(DOM2XmlPullBuilder.java:156) at org.xmlpull.v1.dom2_builder.DOM2XmlPullBuilder$BuildProcess.parseSubTree(DOM2XmlPullBuilder.java:122) at org.xmlpull.v1.dom2_builder.DOM2XmlPullBuilder$BuildProcess.parseSubTree(DOM2XmlPullBuilder.java:156) at org.xmlpull.v1.dom2_builder.DOM2XmlPullBuilder$BuildProcess.parseSubTree(DOM2XmlPullBuilder.java:122) at org.xmlpull.v1.dom2_builder.DOM2XmlPullBuilder$BuildProcess.parseSubTree(DOM2XmlPullBuilder.java:156) at org.xmlpull.v1.dom2_builder.DOM2XmlPullBuilder$BuildProcess.parseSubTree(DOM2XmlPullBuilder.java:122) at org.xmlpull.v1.dom2_builder.DOM2XmlPullBuilder$BuildProcess.parseSubTree(DOM2XmlPullBuilder.java:156) at org.xmlpull.v1.dom2_builder.DOM2XmlPullBuilder$BuildProcess.parseSubTree(DOM2XmlPullBuilder.java:122) at org.xmlpull.v1.dom2_builder.DOM2XmlPullBuilder.parseSubTree(DOM2XmlPullBuilder.java:106) at org.xmlpull.v1.dom2_builder.DOM2XmlPullBuilder.parse(DOM2XmlPullBuilder.java:92) at com.mirth.connect.donkey.util.DonkeyElement.fromXml(DonkeyElement.java:488) ... 79 more

Imported Issue. Original Details: Jira Issue Key: MIRTH-4462 Reporter: han Created: 2019-10-01T12:50:01.000-0700

rbeckman-nextgen commented 4 years ago

This isn't a fix, but I posted at a workaround at https://www.mirthcorp.com/community/forums/showthread.php?p=264912#post264912. Relevant post copied below.

I made a javascript wrapper object that should take care of your issue. It works because Javascript objects get serialized to JSON strings, but properties containing java objects are omitted since they can't be serialized to JSON. You should be able to treat the wrapper as if it were the actual object in most cases (see example below.) Otherwise, you can get to the real object with wrappedObject.object.

This was thrown into a deploy script of a new channel. ` var JSWrapper = (function() { function JSWrapper(object) { this.object = object; // The following line will serialize to JSON. // If removed, this object will appear empty. this["Object.toString()"] = object.toString(); }

JSWrapper.prototype.__noSuchMethod__ = function(id, args) {
    return this.object[id].apply(this.object, args);
};

return JSWrapper;

}());

var cc = com.mirth.connect.server.controllers.ControllerFactory.getFactory().createChannelController(); var chan = cc.getChannelById(channelId); $gc('naked', chan); $gc('wrapped', new JSWrapper(chan)); $gc('name', $gc('wrapped').getName()); `

Imported Comment. Original Details: Author: agermano Created: 2019-10-09T15:52:52.000-0700

rbeckman-nextgen commented 4 years ago

Perhaps this is a better workaround. The function wrap returns a new javascript object with the passed java object as its prototype. You can pass an optional toJSON function to control how it looks when serialized.

function wrap(javaObject, toJSON) { var obj = Object.create(javaObject); obj.toJSON = (typeof toJSON == 'function') ? toJSON : function() {return {toString: this.toString(); return obj; } `

The example usage below: ` var serializer = com.mirth.connect.model.converters.ObjectXMLSerializer.getInstance();

wrapped = []; wrapped.push(wrap(new java.util.HashMap({a:'aa'}))); wrapped.push(wrap(new java.util.HashMap({b:'bb'}), function() {return {bVal: this.get('b')`)); wrapped.push(wrap(new java.util.HashMap(), function() {return ['HashMap for Channel X']}));

wrapped.forEach(function(obj) { logger.info(obj.toString()); logger.info(JSON.stringify(obj)); logger.info(serializer.serialize(obj)); });`

Produces this output: {noformat} 0 [main] INFO root - {a=aa} 3 [main] INFO root - {"toString":"{a=aa}"} 13 [main] INFO root - {"toString":"{a=aa}"} 13 [main] INFO root - {b=bb} 13 [main] INFO root - {"bVal":"bb"} 13 [main] INFO root - {"bVal":"bb"} 13 [main] INFO root - {} 14 [main] INFO root - ["HashMap for Channel X"] 14 [main] INFO root - ["HashMap for Channel X"] {noformat}

Imported Comment. Original Details: Author: agermano Created: 2019-10-10T05:45:46.000-0700