Skip to content

Commit 046cb01

Browse files
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
1 parent 25148b9 commit 046cb01

File tree

5 files changed

+78
-76
lines changed

5 files changed

+78
-76
lines changed

nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/pom.xml

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
<artifactId>nifi-standard-content-viewer</artifactId>
2727
<packaging>war</packaging>
2828
<properties>
29-
<spring.boot.version>3.4.6</spring.boot.version>
3029
<standard-content-viewer.ui.working.dir>${project.build.directory}/standard-content-viewer-ui-working-directory</standard-content-viewer.ui.working.dir>
3130
</properties>
3231
<dependencies>
@@ -64,21 +63,6 @@
6463
<groupId>org.yaml</groupId>
6564
<artifactId>snakeyaml</artifactId>
6665
</dependency>
67-
<dependency>
68-
<groupId>org.springframework.boot</groupId>
69-
<artifactId>spring-boot-starter-web</artifactId>
70-
<version>${spring.boot.version}</version>
71-
<exclusions>
72-
<exclusion>
73-
<groupId>org.springframework.boot</groupId>
74-
<artifactId>spring-boot-starter-tomcat</artifactId>
75-
</exclusion>
76-
<exclusion>
77-
<groupId>org.springframework.boot</groupId>
78-
<artifactId>spring-boot-starter-logging</artifactId>
79-
</exclusion>
80-
</exclusions>
81-
</dependency>
8266
<dependency>
8367
<groupId>org.glassfish.jersey.core</groupId>
8468
<artifactId>jersey-common</artifactId>

nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/java/org/apache/nifi/web/StandardContentViewerApplication.java

Lines changed: 0 additions & 51 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
package org.apache.nifi.web.content.viewer;
18+
19+
import jakarta.servlet.DispatcherType;
20+
import jakarta.servlet.FilterRegistration;
21+
import jakarta.servlet.ServletContext;
22+
import jakarta.servlet.ServletContextEvent;
23+
import jakarta.servlet.ServletContextListener;
24+
import jakarta.servlet.ServletRegistration;
25+
import jakarta.servlet.annotation.WebListener;
26+
import org.apache.nifi.web.controller.StandardContentViewerController;
27+
import org.apache.nifi.web.servlet.filter.QueryStringToFragmentFilter;
28+
import org.eclipse.jetty.ee10.servlet.DefaultServlet;
29+
import org.slf4j.Logger;
30+
import org.slf4j.LoggerFactory;
31+
32+
import java.util.EnumSet;
33+
34+
/**
35+
* Servlet Context Listener supporting registration of Filters
36+
*/
37+
@WebListener
38+
public class StandardServletContextListener implements ServletContextListener {
39+
private static final String ALL_URLS = "/*";
40+
41+
private static final String API_CONTENT_MAPPING = "/api/content";
42+
43+
private static final int LOAD_ON_STARTUP_ENABLED = 1;
44+
45+
private static final String DIR_ALLOWED_PARAMETER = "dirAllowed";
46+
47+
private static final String BASE_RESOURCE_PARAMETER = "baseResource";
48+
49+
private static final String BASE_RESOURCE_DIRECTORY = "WEB-INF/classes/static";
50+
51+
private static final String FILTER_URL = "";
52+
53+
private static final Logger logger = LoggerFactory.getLogger(StandardServletContextListener.class);
54+
55+
@Override
56+
public void contextInitialized(final ServletContextEvent sce) {
57+
final ServletContext servletContext = sce.getServletContext();
58+
final FilterRegistration.Dynamic filter = servletContext.addFilter(QueryStringToFragmentFilter.class.getSimpleName(), QueryStringToFragmentFilter.class);
59+
filter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), false, FILTER_URL);
60+
61+
final ServletRegistration.Dynamic servlet = servletContext.addServlet(StandardContentViewerController.class.getSimpleName(), StandardContentViewerController.class);
62+
servlet.addMapping(API_CONTENT_MAPPING);
63+
servlet.setLoadOnStartup(LOAD_ON_STARTUP_ENABLED);
64+
65+
final ServletRegistration.Dynamic defaultServlet = servletContext.addServlet(DefaultServlet.class.getSimpleName(), DefaultServlet.class);
66+
defaultServlet.addMapping(ALL_URLS);
67+
defaultServlet.setInitParameter(DIR_ALLOWED_PARAMETER, Boolean.FALSE.toString());
68+
defaultServlet.setInitParameter(BASE_RESOURCE_PARAMETER, BASE_RESOURCE_DIRECTORY);
69+
defaultServlet.setLoadOnStartup(LOAD_ON_STARTUP_ENABLED);
70+
71+
logger.info("Standard Content Viewer Initialized");
72+
}
73+
}

nifi-extension-bundles/nifi-standard-bundle/nifi-standard-content-viewer/src/main/java/org/apache/nifi/web/controller/StandardContentViewerController.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.fasterxml.jackson.databind.ObjectMapper;
2020
import jakarta.servlet.ServletContext;
21+
import jakarta.servlet.http.HttpServlet;
2122
import jakarta.servlet.http.HttpServletRequest;
2223
import jakarta.servlet.http.HttpServletResponse;
2324
import org.apache.avro.Conversions;
@@ -35,9 +36,6 @@
3536
import org.apache.nifi.xml.processing.transform.StandardTransformProvider;
3637
import org.slf4j.Logger;
3738
import org.slf4j.LoggerFactory;
38-
import org.springframework.web.bind.annotation.GetMapping;
39-
import org.springframework.web.bind.annotation.RequestMapping;
40-
import org.springframework.web.bind.annotation.RestController;
4139
import org.yaml.snakeyaml.DumperOptions;
4240
import org.yaml.snakeyaml.Yaml;
4341

@@ -47,14 +45,12 @@
4745
import java.io.InputStream;
4846
import java.net.HttpURLConnection;
4947

50-
@RestController()
51-
@RequestMapping("/api")
52-
public class StandardContentViewerController {
48+
public class StandardContentViewerController extends HttpServlet {
5349

5450
private static final Logger logger = LoggerFactory.getLogger(StandardContentViewerController.class);
5551

56-
@GetMapping("/content")
57-
public void getContent(final HttpServletRequest request, final HttpServletResponse response) throws IOException {
52+
@Override
53+
public void doGet(final HttpServletRequest request, final HttpServletResponse response) throws IOException {
5854
final ContentRequestContext requestContext = new HttpServletContentRequestContext(request);
5955

6056
// get the content

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@
157157
<netty.4.version>4.2.2.Final</netty.4.version>
158158
<servlet-api.version>6.1.0</servlet-api.version>
159159
<spring.version>6.2.7</spring.version>
160-
<spring.security.version>6.4.6</spring.security.version>
160+
<spring.security.version>6.5.0</spring.security.version>
161161
<swagger.annotations.version>2.2.32</swagger.annotations.version>
162162
<h2.version>2.3.232</h2.version>
163163
<zookeeper.version>3.9.3</zookeeper.version>

0 commit comments

Comments
 (0)