diff --git a/server/bundles/io.cloudbeaver.model/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.model/META-INF/MANIFEST.MF index 5cbaaaa160..c5d7dda090 100644 --- a/server/bundles/io.cloudbeaver.model/META-INF/MANIFEST.MF +++ b/server/bundles/io.cloudbeaver.model/META-INF/MANIFEST.MF @@ -14,8 +14,7 @@ Require-Bundle: org.jkiss.dbeaver.model;visibility:=reexport, org.jkiss.bundle.graphql.java;visibility:=reexport, org.jkiss.bundle.apache.dbcp, com.google.gson;visibility:=reexport, - jakarta.servlet-api;bundle-version="4.0.0";visibility:=reexport, - org.eclipse.jetty.servlet + jakarta.servlet-api;bundle-version="4.0.0";visibility:=reexport Export-Package: io.cloudbeaver, io.cloudbeaver.auth, io.cloudbeaver.auth.provider, diff --git a/server/bundles/io.cloudbeaver.model/build.properties b/server/bundles/io.cloudbeaver.model/build.properties index 03215f2f87..895b2b1cb0 100644 --- a/server/bundles/io.cloudbeaver.model/build.properties +++ b/server/bundles/io.cloudbeaver.model/build.properties @@ -3,4 +3,5 @@ output.. = target/classes/ bin.includes = .,\ META-INF/,\ plugin.xml,\ + schema/,\ OSGI-INF/ diff --git a/server/bundles/io.cloudbeaver.model/plugin.xml b/server/bundles/io.cloudbeaver.model/plugin.xml index cb11a658f5..572b6e6f11 100644 --- a/server/bundles/io.cloudbeaver.model/plugin.xml +++ b/server/bundles/io.cloudbeaver.model/plugin.xml @@ -2,4 +2,5 @@ + diff --git a/server/bundles/io.cloudbeaver.server/schema/io.cloudbeaver.service.exsd b/server/bundles/io.cloudbeaver.model/schema/io.cloudbeaver.service.exsd similarity index 100% rename from server/bundles/io.cloudbeaver.server/schema/io.cloudbeaver.service.exsd rename to server/bundles/io.cloudbeaver.model/schema/io.cloudbeaver.service.exsd diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/registry/WebPermissionDescriptor.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebPermissionDescriptor.java similarity index 100% rename from server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/registry/WebPermissionDescriptor.java rename to server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebPermissionDescriptor.java diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/registry/WebServiceDescriptor.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebServiceDescriptor.java similarity index 100% rename from server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/registry/WebServiceDescriptor.java rename to server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebServiceDescriptor.java diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/registry/WebServiceRegistry.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebServiceRegistry.java similarity index 100% rename from server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/registry/WebServiceRegistry.java rename to server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebServiceRegistry.java diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/registry/WebValueSerializerDescriptor.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebValueSerializerDescriptor.java similarity index 100% rename from server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/registry/WebValueSerializerDescriptor.java rename to server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/registry/WebValueSerializerDescriptor.java diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/service/DBWServiceBindingServlet.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/service/DBWServiceBindingServlet.java index 855146277a..b83009b17f 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/service/DBWServiceBindingServlet.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/service/DBWServiceBindingServlet.java @@ -17,7 +17,6 @@ package io.cloudbeaver.service; import io.cloudbeaver.model.app.WebApplication; -import org.eclipse.jetty.servlet.ServletContextHandler; import org.jkiss.dbeaver.DBException; /** @@ -25,5 +24,5 @@ import org.jkiss.dbeaver.DBException; */ public interface DBWServiceBindingServlet extends DBWServiceBinding { - void addServlets(APPLICATION application, ServletContextHandler servletContextHandler) throws DBException; + void addServlets(APPLICATION application, DBWServletContext servletContext) throws DBException; } diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/service/DBWServletContext.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/service/DBWServletContext.java new file mode 100644 index 0000000000..1f66884441 --- /dev/null +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/service/DBWServletContext.java @@ -0,0 +1,26 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2022 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.cloudbeaver.service; + +import org.jkiss.dbeaver.DBException; + +import javax.servlet.http.HttpServlet; + +public interface DBWServletContext { + void addServlet(String servletId, HttpServlet servlet, String mapping) throws DBException; +} diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/DBWValueSerializer.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/service/sql/DBWValueSerializer.java similarity index 100% rename from server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/DBWValueSerializer.java rename to server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/service/sql/DBWValueSerializer.java diff --git a/server/bundles/io.cloudbeaver.server/plugin.xml b/server/bundles/io.cloudbeaver.server/plugin.xml index 4b9dd89aaa..cd29f3b1be 100644 --- a/server/bundles/io.cloudbeaver.server/plugin.xml +++ b/server/bundles/io.cloudbeaver.server/plugin.xml @@ -4,7 +4,6 @@ - diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/jetty/CBJettyServer.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/jetty/CBJettyServer.java index 20db99a13b..b9c5535502 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/jetty/CBJettyServer.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/jetty/CBJettyServer.java @@ -75,9 +75,11 @@ public class CBJettyServer { servletContextHandler.addEventListener(new CBServerContextListener()); // Add extensions from services + + CBJettyServletContext servletContext = new CBJettyServletContext(servletContextHandler); for (DBWServiceBindingServlet wsd : WebServiceRegistry.getInstance().getWebServices(DBWServiceBindingServlet.class)) { try { - wsd.addServlets(application, servletContextHandler); + wsd.addServlets(application, servletContext); } catch (DBException e) { log.error(e.getMessage(), e); } diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/jetty/CBJettyServletContext.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/jetty/CBJettyServletContext.java new file mode 100644 index 0000000000..c439b5e5aa --- /dev/null +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/jetty/CBJettyServletContext.java @@ -0,0 +1,38 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2022 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.cloudbeaver.server.jetty; + +import io.cloudbeaver.service.DBWServletContext; +import org.eclipse.jetty.servlet.ServletContextHandler; +import org.eclipse.jetty.servlet.ServletHolder; +import org.jkiss.dbeaver.DBException; + +import javax.servlet.http.HttpServlet; + +public class CBJettyServletContext implements DBWServletContext { + private final ServletContextHandler contextHandler; + + public CBJettyServletContext(ServletContextHandler contextHandler) { + this.contextHandler = contextHandler; + } + + @Override + public void addServlet(String servletId, HttpServlet servlet, String mapping) throws DBException { + contextHandler.addServlet(new ServletHolder(servletId, servlet), mapping); + } +} diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebServiceBindingSQL.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebServiceBindingSQL.java index 7bbe89a586..0e37ee0be7 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebServiceBindingSQL.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebServiceBindingSQL.java @@ -23,10 +23,9 @@ import io.cloudbeaver.model.session.WebSession; import io.cloudbeaver.server.CBApplication; import io.cloudbeaver.service.DBWBindingContext; import io.cloudbeaver.service.DBWServiceBindingServlet; +import io.cloudbeaver.service.DBWServletContext; import io.cloudbeaver.service.WebServiceBindingBase; import io.cloudbeaver.service.sql.impl.WebServiceSQL; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.servlet.ServletHolder; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; @@ -239,10 +238,12 @@ public class WebServiceBindingSQL extends WebServiceBindingBase i } @Override - public void addServlets(CBApplication application, ServletContextHandler servletContextHandler) { - servletContextHandler.addServlet( - new ServletHolder("sqlResultValueViewer", new WebSQLResultServlet(application, getServiceImpl())), - application.getServicesURI() + "sql-result-value/*"); + public void addServlets(CBApplication application, DBWServletContext servletContext) throws DBException { + servletContext.addServlet( + "sqlResultValueViewer", + new WebSQLResultServlet(application, getServiceImpl()), + application.getServicesURI() + "sql-result-value/*" + ); } private static class WebSQLConfiguration { diff --git a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/WebServiceBindingAdmin.java b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/WebServiceBindingAdmin.java index 99c2203167..e0738cc207 100644 --- a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/WebServiceBindingAdmin.java +++ b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/WebServiceBindingAdmin.java @@ -22,11 +22,11 @@ import io.cloudbeaver.model.WebConnectionConfig; import io.cloudbeaver.server.CBApplication; import io.cloudbeaver.service.DBWBindingContext; import io.cloudbeaver.service.DBWServiceBindingServlet; +import io.cloudbeaver.service.DBWServletContext; import io.cloudbeaver.service.WebServiceBindingBase; import io.cloudbeaver.service.admin.impl.WebAdminLogsServlet; import io.cloudbeaver.service.admin.impl.WebServiceAdmin; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.servlet.ServletHolder; +import org.jkiss.dbeaver.DBException; import org.jkiss.utils.CommonUtils; /** @@ -147,10 +147,8 @@ public class WebServiceBindingAdmin extends WebServiceBindingBase