Skip to content

Create new chat service#135

Merged
guusdk merged 5 commits intoigniterealtime:mainfrom
evdherberg:feature/130-create-muc-service
Jul 31, 2022
Merged

Create new chat service#135
guusdk merged 5 commits intoigniterealtime:mainfrom
evdherberg:feature/130-create-muc-service

Conversation

@evdherberg
Copy link
Copy Markdown
Contributor

New endpoint to list chat services and create a new one. Fixes #130.

@evdherberg evdherberg requested a review from guusdk July 25, 2022 10:21
@guusdk
Copy link
Copy Markdown
Member

guusdk commented Jul 27, 2022

When I'm trying to create a new service, using the data below, the service is created, but I'm getting a very verbose error in the logs. I assume that this is a simple existence check being performed, prior to the service being created. Can we prevent that error? It will undoubtedly confuse administrators.

<?xml version="1.0" encoding="UTF-8"?>
<chatService>
	<serviceName>test123</serviceName>
	<description>stasfd  fasdf ring</description>
	<hidden>true</hidden>
</chatService>

The error in the logs:

2022.07.27 16:16:57 ERROR [Jetty-QTP-AdminConsole-79]: org.jivesoftware.openfire.muc.MultiUserChatManager - A database exception occurred while trying to load the ID for MUC service 'test123' from the database.
java.lang.Exception: Unable to locate Service ID for subdomain test123
        at org.jivesoftware.openfire.muc.MultiUserChatManager.loadServiceID(MultiUserChatManager.java:605) ~[xmppserver-4.8.0-SNAPSHOT.jar:4.8.0-SNAPSHOT]
        at org.jivesoftware.openfire.muc.MultiUserChatManager.getMultiUserChatServiceID(MultiUserChatManager.java:491) ~[xmppserver-4.8.0-SNAPSHOT.jar:4.8.0-SNAPSHOT]
        at org.jivesoftware.openfire.muc.MultiUserChatManager.createMultiUserChatService(MultiUserChatManager.java:280) ~[xmppserver-4.8.0-SNAPSHOT.jar:4.8.0-SNAPSHOT]
        at org.jivesoftware.openfire.plugin.rest.controller.MUCServiceController.createService(MUCServiceController.java:146) ~[?:?]
        at org.jivesoftware.openfire.plugin.rest.controller.MUCServiceController.createChatService(MUCServiceController.java:112) ~[?:?]
        at org.jivesoftware.openfire.plugin.rest.service.MUCServiceService.createMUCService(MUCServiceService.java:73) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_312]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_312]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_312]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_312]
        at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) ~[?:?]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:134) ~[?:?]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:177) ~[?:?]
        at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) ~[?:?]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:81) ~[?:?]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:475) ~[?:?]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:397) ~[?:?]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) ~[?:?]
        at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:255) ~[?:?]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) ~[?:?]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) ~[?:?]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:292) ~[?:?]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:274) ~[?:?]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:244) ~[?:?]
        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265) ~[?:?]
        at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:234) ~[?:?]
        at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684) ~[?:?]
        at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394) ~[?:?]
        at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346) ~[?:?]
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) ~[?:?]
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:311) ~[?:?]
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) ~[?:?]
        at org.jivesoftware.openfire.container.PluginServlet.handleServlet(PluginServlet.java:486) ~[xmppserver-4.8.0-SNAPSHOT.jar:4.8.0-SNAPSHOT]
        at org.jivesoftware.openfire.container.PluginServlet.service(PluginServlet.java:127) ~[xmppserver-4.8.0-SNAPSHOT.jar:4.8.0-SNAPSHOT]
        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:1459) ~[jetty-servlet-9.4.43.v20210629.jar:9.4.43.v20210629]
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[jetty-servlet-9.4.43.v20210629.jar:9.4.43.v20210629]
        at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.43.v20210629.jar:9.4.43.v20210629]
        at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:174) ~[xmppserver-4.8.0-SNAPSHOT.jar:4.8.0-SNAPSHOT]
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.43.v20210629.jar:9.4.43.v20210629]
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.43.v20210629.jar:9.4.43.v20210629]
        at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:234) ~[xmppserver-4.8.0-SNAPSHOT.jar:4.8.0-SNAPSHOT]
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.43.v20210629.jar:9.4.43.v20210629]
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[jetty-servlet-9.4.43.v20210629.jar:9.4.43.v20210629]
        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:201) ~[jetty-servlet-9.4.43.v20210629.jar:9.4.43.v20210629]
(snip)

Copy link
Copy Markdown
Member

@guusdk guusdk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Functionality seems to be working as-intended, but there's a bit of lacking documentation.

Please add:

  • a reference to the changelog to the issue that you fixed.
  • @Schema annotations to the newly added entities, for documentation purposes (as explained in #133)
  • the new endpoints to the documentation provided in the file readme.md. Afterwards, you can regenerate the readme.html file as described in the commit message of 315922b

@guusdk
Copy link
Copy Markdown
Member

guusdk commented Jul 27, 2022

(to prevent conflicts, we might want to do delay regenerating readme.html from readme.md until all changes have been merged, and do that regeneration in one go)

@evdherberg
Copy link
Copy Markdown
Contributor Author

evdherberg commented Jul 29, 2022

When I'm trying to create a new service, using the data below, the service is created, but I'm getting a very verbose error in the logs. I assume that this is a simple existence check being performed, prior to the service being created. Can we prevent that error? It will undoubtedly confuse administrators.

I encountered that as well, and it is a problem in the MultiUserChatManager. It has a loadServiceID method that (in documentation and annotation) claims to return null when not found, but in reality throws an exception when that happens. And it will happen on every creation of a new MUC service (unless the service already existed).

I didn't dare touch that because I don't want to break core Openfire code to get rid of a stack trace in the log. But I forgot to raise an issue for this. Will do that today.

@evdherberg evdherberg requested a review from guusdk July 30, 2022 20:46
@guusdk guusdk merged commit 8c5187b into igniterealtime:main Jul 31, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add endpoint to create a new MUC service

2 participants