This is an automated email from the ASF dual-hosted git repository.
pvillard pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push:
new 086b47ed3d NIFI-14657 Removed Spring Boot from Standard Content Viewer
086b47ed3d is described below
commit 086b47ed3d9b68aa323ab4eb6bb37e35431cecbe
Author: exceptionfactory <[email protected]>
AuthorDate: Wed Jun 11 22:02:01 2025 -0500
NIFI-14657 Removed Spring Boot from Standard Content Viewer
- Refactored Standard Content Viewer using Servlet API classes
- Upgraded Spring Security from 6.4.6 to 6.5.0
Signed-off-by: Pierre Villard <[email protected]>
This closes #10012.
---
.../nifi-standard-content-viewer/pom.xml | 16 -----
.../nifi/web/StandardContentViewerApplication.java | 51 ----------------
.../viewer/StandardServletContextListener.java | 71 ++++++++++++++++++++++
.../StandardContentViewerController.java | 12 ++--
pom.xml | 2 +-
5 files changed, 76 insertions(+), 76 deletions(-)
diff --git
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/pom.xml
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/pom.xml
index 9d44c8900c..07e9f78bc1 100644
---
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/pom.xml
+++
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/pom.xml
@@ -26,7 +26,6 @@
<artifactId>nifi-standard-content-viewer</artifactId>
<packaging>war</packaging>
<properties>
- <spring.boot.version>3.4.6</spring.boot.version>
<standard-content-viewer.ui.working.dir>${project.build.directory}/standard-content-viewer-ui-working-directory</standard-content-viewer.ui.working.dir>
</properties>
<dependencies>
@@ -64,21 +63,6 @@
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
</dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- <version>${spring.boot.version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-tomcat</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-logging</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-common</artifactId>
diff --git
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/java/org/apache/nifi/web/StandardContentViewerApplication.java
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/java/org/apache/nifi/web/StandardContentViewerApplication.java
deleted file mode 100644
index 3c3b1ef474..0000000000
---
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/java/org/apache/nifi/web/StandardContentViewerApplication.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 org.apache.nifi.web;
-
-import org.apache.nifi.web.servlet.filter.QueryStringToFragmentFilter;
-import org.springframework.boot.Banner;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import
org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.boot.logging.LoggingSystem;
-import org.springframework.boot.web.servlet.FilterRegistrationBean;
-import
org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
-import org.springframework.context.annotation.Bean;
-
-@SpringBootApplication(exclude = {ErrorMvcAutoConfiguration.class})
-public class StandardContentViewerApplication extends
SpringBootServletInitializer {
-
- static {
- // Disable Spring Boot logging initialization
- System.setProperty(LoggingSystem.SYSTEM_PROPERTY, LoggingSystem.NONE);
- }
-
- @Bean
- public FilterRegistrationBean<QueryStringToFragmentFilter>
queryStringToFragmentFilter() {
- final FilterRegistrationBean<QueryStringToFragmentFilter> registration
= new FilterRegistrationBean<>();
- registration.setFilter(new QueryStringToFragmentFilter());
- registration.addUrlPatterns("");
-
registration.setName(QueryStringToFragmentFilter.class.getSimpleName());
- registration.setOrder(1);
- return registration;
- }
-
- @Override
- protected SpringApplicationBuilder createSpringApplicationBuilder() {
- return new SpringApplicationBuilder().bannerMode(Banner.Mode.OFF);
- }
-}
diff --git
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/java/org/apache/nifi/web/content/viewer/StandardServletContextListener.java
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/java/org/apache/nifi/web/content/viewer/StandardServletContextListener.java
new file mode 100644
index 0000000000..567a9098b0
--- /dev/null
+++
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/java/org/apache/nifi/web/content/viewer/StandardServletContextListener.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.nifi.web.content.viewer;
+
+import jakarta.servlet.DispatcherType;
+import jakarta.servlet.FilterRegistration;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletContextEvent;
+import jakarta.servlet.ServletContextListener;
+import jakarta.servlet.ServletRegistration;
+import jakarta.servlet.annotation.WebListener;
+import org.apache.nifi.web.controller.StandardContentViewerController;
+import org.apache.nifi.web.servlet.filter.QueryStringToFragmentFilter;
+import org.eclipse.jetty.ee10.servlet.DefaultServlet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.EnumSet;
+
+/**
+ * Servlet Context Listener supporting registration of Filters
+ */
+@WebListener
+public class StandardServletContextListener implements ServletContextListener {
+ private static final String API_CONTENT_MAPPING = "/api/content";
+
+ private static final int LOAD_ON_STARTUP_ENABLED = 1;
+
+ private static final String DIR_ALLOWED_PARAMETER = "dirAllowed";
+
+ private static final String BASE_RESOURCE_PARAMETER = "baseResource";
+
+ private static final String BASE_RESOURCE_DIRECTORY =
"WEB-INF/classes/static";
+
+ private static final String DEFAULT_MAPPING = "/";
+
+ private static final Logger logger =
LoggerFactory.getLogger(StandardServletContextListener.class);
+
+ @Override
+ public void contextInitialized(final ServletContextEvent sce) {
+ final ServletContext servletContext = sce.getServletContext();
+ final FilterRegistration.Dynamic filter =
servletContext.addFilter(QueryStringToFragmentFilter.class.getSimpleName(),
QueryStringToFragmentFilter.class);
+ filter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST),
false, DEFAULT_MAPPING);
+
+ final ServletRegistration.Dynamic servlet =
servletContext.addServlet(StandardContentViewerController.class.getSimpleName(),
StandardContentViewerController.class);
+ servlet.addMapping(API_CONTENT_MAPPING);
+ servlet.setLoadOnStartup(LOAD_ON_STARTUP_ENABLED);
+
+ final ServletRegistration.Dynamic defaultServlet =
servletContext.addServlet(DefaultServlet.class.getSimpleName(),
DefaultServlet.class);
+ defaultServlet.addMapping(DEFAULT_MAPPING);
+ defaultServlet.setInitParameter(DIR_ALLOWED_PARAMETER,
Boolean.FALSE.toString());
+ defaultServlet.setInitParameter(BASE_RESOURCE_PARAMETER,
BASE_RESOURCE_DIRECTORY);
+ defaultServlet.setLoadOnStartup(LOAD_ON_STARTUP_ENABLED);
+
+ logger.info("Standard Content Viewer Initialized");
+ }
+}
diff --git
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/java/org/apache/nifi/web/controller/StandardContentViewerController.java
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/java/org/apache/nifi/web/controller/StandardContentViewerController.java
index a7e411f57d..f249aeb4a9 100644
---
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/java/org/apache/nifi/web/controller/StandardContentViewerController.java
+++
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/java/org/apache/nifi/web/controller/StandardContentViewerController.java
@@ -18,6 +18,7 @@ package org.apache.nifi.web.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.servlet.ServletContext;
+import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.avro.Conversions;
@@ -35,9 +36,6 @@ import org.apache.nifi.web.ResourceNotFoundException;
import org.apache.nifi.xml.processing.transform.StandardTransformProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
@@ -47,14 +45,12 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
-@RestController()
-@RequestMapping("/api")
-public class StandardContentViewerController {
+public class StandardContentViewerController extends HttpServlet {
private static final Logger logger =
LoggerFactory.getLogger(StandardContentViewerController.class);
- @GetMapping("/content")
- public void getContent(final HttpServletRequest request, final
HttpServletResponse response) throws IOException {
+ @Override
+ public void doGet(final HttpServletRequest request, final
HttpServletResponse response) throws IOException {
final ContentRequestContext requestContext = new
HttpServletContentRequestContext(request);
// get the content
diff --git a/pom.xml b/pom.xml
index a3a3a096bc..4d6382a011 100644
--- a/pom.xml
+++ b/pom.xml
@@ -157,7 +157,7 @@
<netty.4.version>4.2.2.Final</netty.4.version>
<servlet-api.version>6.1.0</servlet-api.version>
<spring.version>6.2.7</spring.version>
- <spring.security.version>6.4.6</spring.security.version>
+ <spring.security.version>6.5.0</spring.security.version>
<swagger.annotations.version>2.2.32</swagger.annotations.version>
<h2.version>2.3.232</h2.version>
<zookeeper.version>3.9.3</zookeeper.version>