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