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>

Reply via email to