Git Product home page Git Product logo

openfire-fastpath-plugin's People

Contributors

akrherz avatar deleolajide avatar dependabot[bot] avatar drowe avatar fishbowler avatar gregdthomas avatar guusdk avatar jadestorm avatar sco0ter avatar wrooot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openfire-fastpath-plugin's Issues

Agent auto join workgroup queue?

Is there a way for the agent to automatically join the workgroup's queue? And possible to add the feature for future under Workgroup Settings -> Settings -> Workgroup Details?

Add new offline setting: redirect to chat room

When a queue is closed, FastPath offers fallback functionality, as configured by the 'offline settings'. Currently supported are:

  • show email form
  • redirect to webpage

A new option should be added: join chat room.

This feature does suggest that the public client supports chat rooms. As the existing 'agent chat' under water is also a MUC, this does seem achievable.

Converse end-user UI does not get notified of rejection

When all agents reject (or not answer) a request to chat, a rejection is sent back to the client. The stanza looks like this:

<message xmlns="jabber:client" from="[email protected]" to="[email protected]/23cxyv12z9"><depart-queue xmlns="http://jabber.org/protocol/workgroup"><agent-not-found/></depart-queue></message>

The Converse-based front-end does not seem to pick up this event. It keeps showing a spinner. A user has no way to know that he'll never be answered. The spinner should be replaced.

Database should allow for large prop values

The FastPath database tables are sometimes used to store snippets of XML. The corresponding columns are currently defined as varchars. I've observed that these can be to small (see exception below). To prevent this, those columns should be modified to be of a clob/text type.

2021.02.28 10:22:21 ERROR [pool-29-thread-1]: org.jivesoftware.xmpp.workgroup.spi.JiveLiveProperties - data exception: string data, right truncation;  table: FPWORKGROUPPROP column: PROPVALUE
java.sql.SQLDataException: data exception: string data, right truncation;  table: FPWORKGROUPPROP column: PROPVALUE
        at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136) ~[commons-dbcp2-2.6.0.jar:2.6.0]
        at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136) ~[commons-dbcp2-2.6.0.jar:2.6.0]
        at org.jivesoftware.xmpp.workgroup.spi.JiveLiveProperties.insertProperty(JiveLiveProperties.java:126) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
        at org.jivesoftware.xmpp.workgroup.spi.JiveLiveProperties.setProperty(JiveLiveProperties.java:68) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
        at org.jivesoftware.openfire.fastpath.dataforms.FormManager.saveDataForm(FormManager.java:175) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
        at org.jivesoftware.openfire.fastpath.dataforms.FormManager.saveWorkgroupForm(FormManager.java:92) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
        at org.jivesoftware.openfire.fastpath.dataforms.FormManager.createGenericForm(FormManager.java:262) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
        at org.jivesoftware.openfire.fastpath.util.WorkgroupUtils.createWorkgroup(WorkgroupUtils.java:293) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
        at org.jivesoftware.xmpp.workgroup.WorkgroupManager.createDemoWorkgroup(WorkgroupManager.java:957) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
        at org.jivesoftware.xmpp.workgroup.WorkgroupManager.start(WorkgroupManager.java:225) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
        at org.jivesoftware.openfire.component.InternalComponentManager.addComponent(InternalComponentManager.java:192) [xmppserver-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
        at org.jivesoftware.openfire.fastpath.FastpathPlugin.workgroupManagerStart(FastpathPlugin.java:110) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
        at org.jivesoftware.openfire.fastpath.FastpathPlugin.initializePlugin(FastpathPlugin.java:88) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
        at org.jivesoftware.openfire.container.PluginManager.loadPlugin(PluginManager.java:683) [xmppserver-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
        at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask$4.call(PluginMonitor.java:375) [xmppserver-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
        at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask$4.call(PluginMonitor.java:363) [xmppserver-4.7.0-SNAPSHOT.jar:4.7.0-SNAPSHOT]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_282]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_282]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_282]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_282]
Caused by: org.hsqldb.HsqlException: data exception: string data, right truncation;  table: FPWORKGROUPPROP column: PROPVALUE
        at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.Table.enforceTypeLimits(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.Table.generateAndCheckData(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.Table.insertSingleRow(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.StatementDML.insertSingleRow(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.StatementInsert.getResult(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.StatementDMQL.execute(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.Session.executeCompiledStatement(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.Session.execute(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        ... 22 more
Caused by: org.hsqldb.HsqlException: data exception: string data, right truncation
        at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.types.CharacterType.convertToTypeLimits(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.Table.enforceTypeLimits(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.Table.generateAndCheckData(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.Table.insertSingleRow(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.StatementDML.insertSingleRow(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.StatementInsert.getResult(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.StatementDMQL.execute(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.Session.executeCompiledStatement(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        at org.hsqldb.Session.execute(Unknown Source) ~[hsqldb-2.4.1.jar:2.4.1]
        ... 22 more

Converse client should set username metadata

When joining a workgroup as a customer, XEP-0142 allows for unspecified metadata to be sent. The Converse client does not do this.

Spark depends on a username property to be set (or it will NullPointer). This really is a problem to be fixed in Spark, but to retain compatibility with older versions (up to the current version) of Spark, the Converse client should be modified to add this metadata field.

Fastpath Service not installing on fresh server installation

...Migrated from Ignite Jira OF-1166...

Ignite Forum Post

When installing Fastpath Service plugin on a fresh installation of Openfire 4.0.2 it says that install was successful, but menu doesn't appear and this is logged in the error.log:

at org.jivesoftware.openfire.component.InternalComponentManager.addComponent(InternalComponentManager.java:159) at org.jivesoftware.openfire.fastpath.FastpathPlugin.workgroupManagerStart(FastpathPlugin.java:98) at org.jivesoftware.openfire.fastpath.FastpathPlugin.initializePlugin(FastpathPlugin.java:78) at org.jivesoftware.openfire.container.PluginManager.loadPlugin(PluginManager.java:447) at org.jivesoftware.openfire.container.PluginManager.access$300(PluginManager.java:68) at org.jivesoftware.openfire.container.PluginManager$PluginMonitor.run(PluginManager.java:1037) at org.jivesoftware.openfire.container.PluginManager.installPlugin(PluginManager.java:176) at org.jivesoftware.openfire.update.UpdateManager.downloadPlugin(UpdateManager.java:286) at org.jivesoftware.openfire.update.PluginDownloadManager.installPlugin(PluginDownloadManager.java:68) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at uk.ltd.getahead.dwr.impl.ExecuteQuery.execute(ExecuteQuery.java:248) at uk.ltd.getahead.dwr.impl.DefaultExecProcessor.handle(DefaultExecProcessor.java:48) at uk.ltd.getahead.dwr.impl.DefaultProcessor.handle(DefaultProcessor.java:81) at uk.ltd.getahead.dwr.AbstractDWRServlet.doPost(AbstractDWRServlet.java:162) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:162) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118) at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) at org.eclipse.jetty.server.Server.handle(Server.java:499) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: org.jivesoftware.openfire.sasl.JiveSharedSecretSaslServer at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source)

How to use FastPath

Good Day

Could anyone explain how they use FastPath on their own websites to get clients to connect to FastPath as it was done years ago?

Thank You

Albertus Geyser

Add Dispatcher that offer to all agents at once

The Round Robin dispatcher dispatches an offer to the first available agent, waits for it to respond, then goes on to the next one.

An alternative approach should be added, one in which an offer goes out to all available agents, where the first one to respond would 'win'.

Invalid database table for queue properties

RequestQueues, much like Agents and Dispatchers, can have properties that are stored in dedicated database tables.

For all but RequestQueue, the corresponding database table has the prefix of 'fp' (for FastPath, presumably). The request queue database table uses the prefix 'jla' (Jive Live Assistant?) in code. The database installation script, however, also uses 'fp'.

I'm assuming that there was, at one point, a rename in which this was missed.

Fastpath plugin is not sending a Workgroup form to an agent using Spark

...Migrated from Ignire Jira OF-683...

When a user starts a chat with a Fastpath workgroup JID and fills an automated form (support request), an agent assigned to that group and logged into Spark's Fastpath plugin should get a popup with Accept, Forward buttons and a progress bar until the automatic request forwarding to a next available agent. Currently Saprk shows blank popup and this happens with old Spark version, so the issue must be in Openfire or Openfire's Fasthpath plugin side.

Openfire logs such error upon getting filled form:
[org.jivesoftware.openfire.component.InternalComponentManager$2.error(InternalCo mponentManager.java:338)
]
com.thoughtworks.xstream.converters.ConversionException: Cannot construct org.xmpp.forms.DataForm as it does not have a no-args constructor
---- Debugging information ----

``` message : Cannot construct org.xmpp.forms.DataForm as it does not have a no-args constructor line number : 1 path : /org.xmpp.forms.DataForm cause-message : Cannot construct org.xmpp.forms.DataForm as it does not have a no-args constructor class : org.xmpp.forms.DataForm cause-exception : com.thoughtworks.xstream.converters.reflection.ObjectAccessException required-type : org.xmpp.forms.DataForm ------------------------------- at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:63 ) at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractRef erenceUnmarshaller.java:45) at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller. java:46) at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:117) at com.thoughtworks.xstream.core.ReferenceByXPathMarshallingStrategy.unmarshal(Ref erenceByXPathMarshallingStrategy.java:29) at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:826) at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:813) at com.thoughtworks.xstream.XStream.fromXML(XStream.java:761) at com.thoughtworks.xstream.XStream.fromXML(XStream.java:753) at org.jivesoftware.openfire.fastpath.dataforms.FormManager.getDataForm(FormManage r.java:189) at org.jivesoftware.openfire.fastpath.dataforms.WorkgroupFormProvider.executeGet(W orkgroupFormProvider.java:41) at org.jivesoftware.xmpp.workgroup.WorkgroupIQHandler.handleIQGet(WorkgroupIQHandl er.java:511) at org.jivesoftware.xmpp.workgroup.WorkgroupIQHandler.process(WorkgroupIQHandler.j ava:82) at org.jivesoftware.xmpp.workgroup.Workgroup.process(Workgroup.java:424) at org.jivesoftware.xmpp.workgroup.Workgroup.process(Workgroup.java:447) at org.jivesoftware.xmpp.workgroup.WorkgroupManager.processPacket(WorkgroupManager .java:652) at org.jivesoftware.openfire.component.InternalComponentManager$RoutableComponents .process(InternalComponentManager.java:593) at org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.jav a:258) at org.jivesoftware.openfire.IQRouter.handle(IQRouter.java:301) at org.jivesoftware.openfire.IQRouter.route(IQRouter.java:101) at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:68) at org.jivesoftware.openfire.net.StanzaHandler.processIQ(StanzaHandler.java:311) at org.jivesoftware.openfire.net.ClientStanzaHandler.processIQ(ClientStanzaHandler .java:79) at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:276) at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:175) at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandl er.java:133) at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived (AbstractIoFilterChain.java:570) at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299) at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648) at org.apache.mina.common.IoFilterAdapter.messageReceived(IoFilterAdapter.java:80) at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299) at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648) at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimplePr otocolDecoderOutput.java:58) at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecF ilter.java:185) at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299) at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648) at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java :239) at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(Execut orFilter.java:283) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51) at java.lang.Thread.run(Unknown Source) Caused by: com.thoughtworks.xstream.converters.reflection.ObjectAccessException: Cannot construct org.xmpp.forms.DataForm as it does not have a no-args constructor at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.newIn stance(PureJavaReflectionProvider.java:51) at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.inst antiateNewInstance(AbstractReflectionConverter.java:223) at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unma rshal(AbstractReflectionConverter.java:117) at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:56 ) ... 44 more

Spark is loggin this error:
org.jivesoftware.spark.util.log.Log error
SEVERE: Unable to retrieve Workgroup form.
item-not-found(404)
at org.jivesoftware.smackx.workgroup.user.Workgroup.getWorkgroupForm(Workgroup.jav a:850)
at org.jivesoftware.fastpath.workspace.panes.ChatQueue.offerRecieved(ChatQueue.jav a:107)
at org.jivesoftware.fastpath.workspace.Workpane$ChatOfferListener.handleOffer(Work pane.java:567)
at org.jivesoftware.fastpath.workspace.Workpane$ChatOfferListener.access$600(Workp ane.java:547)
at org.jivesoftware.fastpath.workspace.Workpane$ChatOfferListener$1.run(Workpane.j ava:554)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

</details>

User reports that replacing xstream.jar solved this, so the problem is with that library https://discourse.igniterealtime.org/t/fastpath-nullpointerexception/54075

Converse UI should not show owner participant in chatroom

When a agent and end-user join a chatroom, that chatroom is created by an XMPP end-user that represents the workgroup queue (eg: "demo" in a default setup). This entity is shown as a participant in the chat room (twice, actually), which is confusing to end-users. This participant should not be displayed.

Screenshot from 2021-01-15 11-01-36

After joining the queue, it is blocked in the requestqueue, and subsequent requests cannot be allocated

`157057 java.lang.NullPointerException: null
157058 2021.11.23 17:30:49 org.jivesoftware.xmpp.workgroup.RequestQueue - An exception occurred while trying to send status to recipient: 23@domain/annt58br30
157059 java.util.NoSuchElementException: null
157060 at java.util.LinkedList.getFirst(LinkedList.java:244) ~[?:1.8.0_144]
157061 at org.jivesoftware.xmpp.workgroup.RequestQueue.getFirst(RequestQueue.java:311) ~[fastpath-4.5.0-SNAPSHOT.jar!/:?]
157062 at org.jivesoftware.xmpp.workgroup.RequestQueue.getStatusPresence(RequestQueue.java:352) ~[fastpath-4.5.0-SNAPSHOT.jar!/:?]
157063 at org.jivesoftware.xmpp.workgroup.RequestQueue.sendStatus(RequestQueue.java:320) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157064 at org.jivesoftware.xmpp.workgroup.AgentSession.join(AgentSession.java:146) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157065 at org.jivesoftware.xmpp.workgroup.WorkgroupPresence.agentToWorkgroup(WorkgroupPresence.java:345) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157066 at org.jivesoftware.xmpp.workgroup.WorkgroupPresence.process(WorkgroupPresence.java:160) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157067 at org.jivesoftware.xmpp.workgroup.Workgroup.process(Workgroup.java:453) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157068 at org.jivesoftware.xmpp.workgroup.Workgroup.process(Workgroup.java:477) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157069 at org.jivesoftware.xmpp.workgroup.WorkgroupManager.processPacket(WorkgroupManager.java:684) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157070 at org.jivesoftware.openfire.component.InternalComponentManager$RoutableComponents.process(InternalComponentManager.java:859) [xmppserver-4.6.4.jar:4.6.4]
157071 at org.jivesoftware.openfire.spi.RoutingTableImpl.routeToComponent(RoutingTableImpl.java:451) [xmppserver-4.6.4.jar:4.6.4]
157072 at org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.java:266) [xmppserver-4.6.4.jar:4.6.4]
157073 at org.jivesoftware.openfire.PresenceRouter.handle(PresenceRouter.java:165) [xmppserver-4.6.4.jar:4.6.4]
157074 at org.jivesoftware.openfire.PresenceRouter.route(PresenceRouter.java:79) [xmppserver-4.6.4.jar:4.6.4]
157075 at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:84) [xmppserver-4.6.4.jar:4.6.4]
157076 at org.jivesoftware.openfire.SessionPacketRouter.route(SessionPacketRouter.java:118) [xmppserver-4.6.4.jar:4.6.4]
157077 at org.jivesoftware.openfire.SessionPacketRouter.route(SessionPacketRouter.java:69) [xmppserver-4.6.4.jar:4.6.4]
157078 at org.jivesoftware.openfire.http.HttpSession.sendPendingPackets(HttpSession.java:612) [xmppserver-4.6.4.jar:4.6.4]
157079 at org.jivesoftware.openfire.http.HttpSession$HttpPacketSender.run(HttpSession.java:1329) [xmppserver-4.6.4.jar:4.6.4]
157080 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_144]
157081 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_144]
157082 at java.lang.Thread.run(Thread.java:748) [?:1.8.0_144]
157083 2021.11.23 17:30:49 org.jivesoftware.xmpp.workgroup.RequestQueue - An exception occurred while trying to send detailed status to recipient: 23@domain/annt58br30
157084 java.lang.NullPointerException: null
157085 at org.jivesoftware.xmpp.workgroup.RequestQueue.getDetailedStatusPresence(RequestQueue.java:417) ~[fastpath-4.5.0-SNAPSHOT.jar!/:?]
157086 at org.jivesoftware.xmpp.workgroup.RequestQueue.sendDetailedStatus(RequestQueue.java:332) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157087 at org.jivesoftware.xmpp.workgroup.AgentSession.join(AgentSession.java:147) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157088 at org.jivesoftware.xmpp.workgroup.WorkgroupPresence.agentToWorkgroup(WorkgroupPresence.java:345) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157089 at org.jivesoftware.xmpp.workgroup.WorkgroupPresence.process(WorkgroupPresence.java:160) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157090 at org.jivesoftware.xmpp.workgroup.Workgroup.process(Workgroup.java:453) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157091 at org.jivesoftware.xmpp.workgroup.Workgroup.process(Workgroup.java:477) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157092 at org.jivesoftware.xmpp.workgroup.WorkgroupManager.processPacket(WorkgroupManager.java:684) [fastpath-4.5.0-SNAPSHOT.jar!/:?]
157093 at org.jivesoftware.openfire.component.InternalComponentManager$RoutableComponents.process(InternalComponentManager.java:859) [xmppserver-4.6.4.jar:4.6.4]
157094 at org.jivesoftware.openfire.spi.RoutingTableImpl.routeToComponent(RoutingTableImpl.java:451) [xmppserver-4.6.4.jar:4.6.4]
157095 at org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.java:266) [xmppserver-4.6.4.jar:4.6.4]
157096 at org.jivesoftware.openfire.PresenceRouter.handle(PresenceRouter.java:165) [xmppserver-4.6.4.jar:4.6.4]
157097 at org.jivesoftware.openfire.PresenceRouter.route(PresenceRouter.java:79) [xmppserver-4.6.4.jar:4.6.4]
157098 at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:84) [xmppserver-4.6.4.jar:4.6.4]
157099 at org.jivesoftware.openfire.SessionPacketRouter.route(SessionPacketRouter.java:118) [xmppserver-4.6.4.jar:4.6.4]
157100 at org.jivesoftware.openfire.SessionPacketRouter.route(SessionPacketRouter.java:69) [xmppserver-4.6.4.jar:4.6.4]
157101 at org.jivesoftware.openfire.http.HttpSession.sendPendingPackets(HttpSession.java:612) [xmppserver-4.6.4.jar:4.6.4]
157102 at org.jivesoftware.openfire.http.HttpSession$HttpPacketSender.run(HttpSession.java:1329) [xmppserver-4.6.4.jar:4.6.4]
157103 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_144]
157104 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_144]
157105 at java.lang.Thread.run(Thread.java:748) [?:1.8.0_144]

`

Admin console does not count agents in group

The summary page of workgroups shows the amount of agents in each queue. When agents are part of a workgroup through group membership, they're not counted towards the total amount of agents:

image

On the details page for the workgroup, the count is correct:

image

Expression is always true in Workgroup Agent code

...Migrated from Ignite Jira OF-1315...

Ignite Forum Post

n a recent Openfire snapshot in github, I've found a suspicous code in src/plugins/fastpath/src/java/org/jivesoftware/xmpp/workgroup/Agent.java

241 public void setAgentJID(JID agentJID) {
242 // Do nothing if setting the same old value
243 if (agentJID != null && agentJID.equals(agentJID)) {
244 return;
245 }
246 // Set the new value
247 this.agentJID = agentJID;
248 // Save the new Agent's state to the database
249 saveAgent();
250 }
In Line 243, should "agentJID.equals(agentJID)" be "this.agentJID.equals(agentJID)"?

Invalid roomconfig value: moderators (should be: moderator)

The muc#roomconfig_presencebroadcast takes a list of roles. FastPath currently adds moderators, which is an invalid role. moderator (singular) is valid.

The confusion possibly stems from the value for the muc#roomconfig_persistentroom option, where the plural is valid.

Fastpath request getting stuck when using multiple MUC services

...Migrated from Ignite Jira OF-816...

On the 3.9.3 server, I had a user use Spark and open a chat to a FastPath workgroup. FastPath is not passing the session off to a member of the workgroup.

On the 3.8.2 server, it behaves properly. The chat request is passed off to an agent to accept and the chat is established. All good.

The problem is certainly an issue in the integration between FastPath and OpenFire. The latest FastPath works with OpenFire 3.8.2, so I'm guessing something on OpenFire 3.9.x

It seems that FastPath is unable to handle having more than one group chat service defined.

In addition to the default "conference" service that is default, I had several other group conference services defined. Deleting all conference services but the default and all workgroups, then restarting the server, and creating the new FastPath workgroups seems to have solved this issue.

We are only seeing the same problem after updating from 3.9.1 to 3.9.3. So it was generally working with 3.9.1 for us. We are also only using the default conference service, without multiple services defined. After downgrading to 3.9.1 it is working again.

CORS headers missing on webchat

When fastpath webchat is hosted on a different server, browser displays CORS errors like this

Access to font at 'https://openfire_server:7443/webchat/widget/webfonts/muli.ttf' from origin 'https://igniterealtime.github.io' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Converse UI should present 'offline settings' when queue is closed

When a workgroup queue is not open (eg: no logged in agents), then the Converse UI should not show a functional chat button (the button that's used to start a new chat).

That button should either be removed, or be disabled somehow.

Note that ideally, the state of the button is dynamically adjusted, to ensure that, when the queue state changes, the button on the page (that has already been loaded) also does.

Extend the Fastpath Chatbot to support agent users

In order to support other XMPP clients (other than Spark and Pade) like Conversations or Pade Mi (mobile client), extend the Fastpath Chatbot to support a conversation with an agent as follows

              +-------+
              | Start |<---------+
              +-------+          |
                  |              |
                  | Offer        |
                  v              |
            +---------------+    |
            | Offer Pending |    |
            +---------------+    |
                 |  |  | Revoke  |
                 |  |  +-------->|
                 |  | Reject     |
          Accept |  +----------->|
                 v               |
            +--------------+     |
            | Chat Pending |     |
            +--------------+     |
                 |   | Revoke    |
          Invite |   +-----------+
                 V
              +-----------+
              | Chat room |
              +-----------+

Agents will add the workgroup chatbot as a contact and start a conversation anytime. The agent will can start to receive offers to chat with users immediately from the Chatbot. Chat offers will be made to the agent and the agent has the opportunity to accept or reject each offer. Fastpath may also revoke an offer. For example, Fastpath may revoke chat offers if the offer is not responded to within a certain period of time to ensure fast responses to user chat requests.

Dispatchers should be configurable

FastPath ships with one Dispatcher implementation: RoundRobin. Most of the implementation allows for others to be used though. That work should be finished.

TaskEngine should re-init

The TaskEngine is used as a singleton, but it's made null when the plugin is disposed.

Subsequent invocations to the getter will yield null results, which cause nullpointers.

Perhaps the reasoning here is that when the plugin gets unloaded, the entire class loader gets removed, which resets this behavior? I'm not sure if this is true though.

By allowing for a new instance of TaskEngine to be instantiated, we might prevent issues - or indeed raise new ones, if the TaskEngine is supposed to be reset only with a proper recycling of PluginClassLoader instances.

Web Chat Text Settings not working

There are quite good set of customized text settings available at workgroup-text-settings.jsp, but none of them are displayed to end user.

End user is still getting option to join group chat. No other information is displayed.

All these settings are important to make fastpath plugin, close to standard web chat support systems.

Error starting service after xStream upgrade to 1.4.18

2021.09.30 14:56:59 org.jivesoftware.openfire.fastpath.dataforms.FormManager - org.jivesoftware.openfire.fastpath.dataforms.WorkgroupForm com.thoughtworks.xstream.security.ForbiddenClassException: org.jivesoftware.openfire.fastpath.dataforms.WorkgroupForm at com.thoughtworks.xstream.security.NoTypePermission.allows(NoTypePermission.java:26) ~[?:?] at com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:74) ~[?:?] at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[?:?] at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:47) ~[?:?] at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29) ~[?:?] at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:133) ~[?:?] at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32) ~[?:?] at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1391) ~[?:?] at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1376) ~[?:?] at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1261) ~[?:?] at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1252) ~[?:?] at org.jivesoftware.openfire.fastpath.dataforms.FormManager.loadWebForms(FormManager.java:214) ~[?:?] at org.jivesoftware.openfire.fastpath.dataforms.FormManager.<init>(FormManager.java:57) ~[?:?] at org.jivesoftware.openfire.fastpath.dataforms.FormManager.<clinit>(FormManager.java:40) ~[?:?] at org.jivesoftware.openfire.plugin.fastpath.workgroup_002dqueues_jsp._jspService(workgroup_002dqueues_jsp.java:133) ~[?:?] at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71) ~[apache-jsp-8.5.54.jar:8.5.54] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.jivesoftware.openfire.container.PluginServlet.handleJSP(PluginServlet.java:439) ~[xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.openfire.container.PluginServlet.service(PluginServlet.java:129) ~[xmppserver-4.6.4.jar:4.6.4] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1452) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:234) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) ~[sitemesh-2.4.2.jar:?] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) ~[sitemesh-2.4.2.jar:?] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:73) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:49) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:234) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602) ~[jetty-security-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:773) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:905) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_162] 2021.09.30 14:56:59 org.jivesoftware.openfire.fastpath.dataforms.FormManager - org.xmpp.forms.DataForm com.thoughtworks.xstream.security.ForbiddenClassException: org.xmpp.forms.DataForm at com.thoughtworks.xstream.security.NoTypePermission.allows(NoTypePermission.java:26) ~[?:?] at com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:74) ~[?:?] at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[?:?] at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:47) ~[?:?] at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29) ~[?:?] at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:133) ~[?:?] at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32) ~[?:?] at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1391) ~[?:?] at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1376) ~[?:?] at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1261) ~[?:?] at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1252) ~[?:?] at org.jivesoftware.openfire.fastpath.dataforms.FormManager.getDataForm(FormManager.java:193) ~[?:?] at org.jivesoftware.openfire.plugin.fastpath.workgroup_002dqueues_jsp._jspService(workgroup_002dqueues_jsp.java:134) ~[?:?] at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71) ~[apache-jsp-8.5.54.jar:8.5.54] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.jivesoftware.openfire.container.PluginServlet.handleJSP(PluginServlet.java:439) ~[xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.openfire.container.PluginServlet.service(PluginServlet.java:129) ~[xmppserver-4.6.4.jar:4.6.4] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1452) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:234) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) ~[sitemesh-2.4.2.jar:?] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) ~[sitemesh-2.4.2.jar:?] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:73) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:49) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:234) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602) ~[jetty-security-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:773) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:905) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_162] 2021.09.30 15:08:28 org.jivesoftware.openfire.fastpath.dataforms.FormManager - org.jivesoftware.openfire.fastpath.dataforms.WorkgroupForm com.thoughtworks.xstream.security.ForbiddenClassException: org.jivesoftware.openfire.fastpath.dataforms.WorkgroupForm at com.thoughtworks.xstream.security.NoTypePermission.allows(NoTypePermission.java:26) ~[?:?] at com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:74) ~[?:?] at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[?:?] at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:47) ~[?:?] at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29) ~[?:?] at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:133) ~[?:?] at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32) ~[?:?] at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1391) ~[?:?] at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1376) ~[?:?] at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1261) ~[?:?] at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1252) ~[?:?] at org.jivesoftware.openfire.fastpath.dataforms.FormManager.loadWebForms(FormManager.java:214) ~[?:?] at org.jivesoftware.openfire.fastpath.dataforms.FormManager.<init>(FormManager.java:57) ~[?:?] at org.jivesoftware.openfire.fastpath.dataforms.FormManager.<clinit>(FormManager.java:40) ~[?:?] at org.jivesoftware.openfire.plugin.fastpath.workgroup_002dqueues_jsp._jspService(workgroup_002dqueues_jsp.java:133) ~[?:?] at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71) ~[apache-jsp-8.5.54.jar:8.5.54] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.jivesoftware.openfire.container.PluginServlet.handleJSP(PluginServlet.java:439) ~[xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.openfire.container.PluginServlet.service(PluginServlet.java:129) ~[xmppserver-4.6.4.jar:4.6.4] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1452) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:234) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) ~[sitemesh-2.4.2.jar:?] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) ~[sitemesh-2.4.2.jar:?] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:73) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:49) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:234) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602) ~[jetty-security-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:773) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:905) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_162] 2021.09.30 15:08:28 org.jivesoftware.openfire.fastpath.dataforms.FormManager - org.xmpp.forms.DataForm com.thoughtworks.xstream.security.ForbiddenClassException: org.xmpp.forms.DataForm at com.thoughtworks.xstream.security.NoTypePermission.allows(NoTypePermission.java:26) ~[?:?] at com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:74) ~[?:?] at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[?:?] at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:47) ~[?:?] at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29) ~[?:?] at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:133) ~[?:?] at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32) ~[?:?] at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1391) ~[?:?] at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1376) ~[?:?] at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1261) ~[?:?] at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1252) ~[?:?] at org.jivesoftware.openfire.fastpath.dataforms.FormManager.getDataForm(FormManager.java:193) ~[?:?] at org.jivesoftware.openfire.plugin.fastpath.workgroup_002dqueues_jsp._jspService(workgroup_002dqueues_jsp.java:134) ~[?:?] at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71) ~[apache-jsp-8.5.54.jar:8.5.54] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.jivesoftware.openfire.container.PluginServlet.handleJSP(PluginServlet.java:439) ~[xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.openfire.container.PluginServlet.service(PluginServlet.java:129) ~[xmppserver-4.6.4.jar:4.6.4] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0] at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1452) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:234) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) ~[sitemesh-2.4.2.jar:?] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) ~[sitemesh-2.4.2.jar:?] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:73) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:49) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:234) ~[xmppserver-4.6.4.jar:4.6.4] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602) ~[jetty-security-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) ~[jetty-servlet-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) ~[jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273) [jetty-server-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [jetty-io-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:773) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:905) [jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_162]

Prolonged wait time to start chat

Testing done using Pade extension.

There is quite long wait time if agent do not approve chat.

1- Once user has clicked start chat icon, it displays loading message, agent gets notification "undefined is waiting for undefined seconds"

2- Agent clicks notification, pade opens but still it take around 15 - 30 seconds for agent to get new chat request alert.

3- Once agent joins new chat request then user gets an option to choose his username and enter group chat,

Tested multiple times, total wait is around 60-90 seconds.

Offline Settings not working

Offline Settings for workgroup when all agents are offline are not being displayed to user. Web user can still join groupchat room.

Have tested by make all agents offline and also have closed group, but still user can join room.

Blank page after installing plugin version 4.4.4

After installing the plugin version 4.4.4 and clicking on the Fastpath menu button to get into its settings a blank page is shown. The browser network tab shows HTTP code 404, while getting plugins/fastpath/workgroup-summary.jsp. What could be the problem?
The plugin version 4.4.3 shows settings, but throws an exception while clicking on workgroup edit button.

Throws exception pressing on workgroup name

In 4.3.2 when i press on a workgroup name it shows exception:

`Exception:

java.lang.NullPointerException

at org.jivesoftware.openfire.plugin.fastpath.workgroup_002dqueues_jsp._jspService(workgroup_002dqueues_jsp.java:493)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)

at org.jivesoftware.openfire.container.PluginServlet.handleJSP(PluginServlet.java:395)

at org.jivesoftware.openfire.container.PluginServlet.service(PluginServlet.java:109)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)

at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655)

at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)

at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:216)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)

at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)

at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)

at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:73)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)

at org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:49)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)

at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:226)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)

at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:216)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634)

at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)

at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)

at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)

at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)

at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)

at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)

at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)

at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340)

at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)

at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)

at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)

at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)

at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242)

at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)

at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)

at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)

at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)

at org.eclipse.jetty.server.Server.handle(Server.java:503)

at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)

at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)

at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)

at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)

at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:411)

at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:305)

at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:159)

at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)

at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)

at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)

at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)

at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)

at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)

at java.lang.Thread.run(Unknown Source)

`

Add 'chatbot' admin console page

FastPath can provide a chatbot, that can be configured. There's source code for an admin console page that allows for this, but this page does not seem to be exposed.

If there's not a specific reason to not expose that page... let's expose it?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.