Repository: incubator-nifi Updated Branches: refs/heads/NIFI-250 d19471d6d -> 1c96bd08f
NIFI-250: - More clean up post merge with the data viewer. Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/1de514ad Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/1de514ad Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/1de514ad Branch: refs/heads/NIFI-250 Commit: 1de514adf7a3dacc51823932b70de3f8f64c369a Parents: d19471d Author: Matt Gilman <[email protected]> Authored: Mon Mar 23 09:36:07 2015 -0400 Committer: Matt Gilman <[email protected]> Committed: Mon Mar 23 09:36:07 2015 -0400 ---------------------------------------------------------------------- .../org/apache/nifi/web/server/JettyServer.java | 73 ++++++++++---------- 1 file changed, 37 insertions(+), 36 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/1de514ad/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-jetty/src/main/java/org/apache/nifi/web/server/JettyServer.java ---------------------------------------------------------------------- diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-jetty/src/main/java/org/apache/nifi/web/server/JettyServer.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-jetty/src/main/java/org/apache/nifi/web/server/JettyServer.java index 941f25b..ccb7252 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-jetty/src/main/java/org/apache/nifi/web/server/JettyServer.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-jetty/src/main/java/org/apache/nifi/web/server/JettyServer.java @@ -108,8 +108,8 @@ public class JettyServer implements NiFiServer { private Collection<WebAppContext> contentViewerWebContexts; private final NiFiProperties props; - private UiExtensionMapping uiExtensions; - private Collection<WebAppContext> uiExtensionWebContexts; + private UiExtensionMapping componentUiExtensions; + private Collection<WebAppContext> componentUiExtensionWebContexts; @Deprecated private Collection<WebAppContext> customUiWebContexts; @@ -221,7 +221,7 @@ public class JettyServer implements NiFiServer { if (CollectionUtils.isNotEmpty(otherWars)) { // hold onto to the web contexts for all ui extensions customUiWebContexts = new ArrayList<>(); - uiExtensionWebContexts = new ArrayList<>(); + componentUiExtensionWebContexts = new ArrayList<>(); contentViewerWebContexts = new ArrayList<>(); // ui extension organized by component type @@ -235,11 +235,11 @@ public class JettyServer implements NiFiServer { List<String> contentViewerMimeTypes = getWarExtensions(war, "META-INF/nifi-content-viewer"); // identify all known extension types in the war - final Map<UiExtensionType, List<String>> uiExtensionInWar = new HashMap<>(); - identifyUiExtensions(uiExtensionInWar, war); + final Map<UiExtensionType, List<String>> componentUiExtensionInWar = new HashMap<>(); + identifyUiExtensionsForComponents(componentUiExtensionInWar, war); // only include wars that are for custom processor ui's - if (!customUiProcessorTypes.isEmpty() || !uiExtensionInWar.isEmpty() || !contentViewerMimeTypes.isEmpty()) { + if (!customUiProcessorTypes.isEmpty() || !componentUiExtensionInWar.isEmpty() || !contentViewerMimeTypes.isEmpty()) { // get the context path String warName = StringUtils.substringBeforeLast(war.getName(), "."); String warContextPath = String.format("/%s", warName); @@ -262,11 +262,12 @@ public class JettyServer implements NiFiServer { // record the mime type to web app mapping (need to handle type collision) contentViewerWebContexts.add(extensionUiContext); } else { - uiExtensionWebContexts.add(extensionUiContext); + // record the ui extension + componentUiExtensionWebContexts.add(extensionUiContext); } // create the ui extensions - for (final Map.Entry<UiExtensionType, List<String>> entry : uiExtensionInWar.entrySet()) { + for (final Map.Entry<UiExtensionType, List<String>> entry : componentUiExtensionInWar.entrySet()) { final UiExtensionType extensionType = entry.getKey(); final List<String> componentTypes = entry.getValue(); @@ -296,6 +297,7 @@ public class JettyServer implements NiFiServer { customUiMappings.put(customUiProcessorType, warContextPath); } for (final String contentViewerMimeType : contentViewerMimeTypes) { + // map the content type to the context path mimeTypeMappings.put(contentViewerMimeType, warContextPath); } @@ -306,9 +308,9 @@ public class JettyServer implements NiFiServer { } // record all ui extensions - uiExtensions = new UiExtensionMapping(uiExtensionsByType); + componentUiExtensions = new UiExtensionMapping(uiExtensionsByType); } else { - uiExtensions = new UiExtensionMapping(Collections.EMPTY_MAP); + componentUiExtensions = new UiExtensionMapping(Collections.EMPTY_MAP); } // load the web ui app @@ -406,7 +408,7 @@ public class JettyServer implements NiFiServer { * @param uiExtensions * @param warFile */ - private void identifyUiExtensions(final Map<UiExtensionType, List<String>> uiExtensions, final File warFile) { + private void identifyUiExtensionsForComponents(final Map<UiExtensionType, List<String>> uiExtensions, final File warFile) { try (final JarFile jarFile = new JarFile(warFile)) { // locate the ui extensions readUiExtensions(uiExtensions, UiExtensionType.ProcessorConfiguration, jarFile, jarFile.getJarEntry("META-INF/nifi-processor-configuration")); @@ -680,8 +682,9 @@ public class JettyServer implements NiFiServer { // ensure the appropriate wars deployed successfully before injecting the NiFi context and security filters - // this must be done after starting the server (and ensuring there were no start up failures) if (webApiContext != null) { + // give the web api the component ui extensions final ServletContext webApiServletContext = webApiContext.getServletHandler().getServletContext(); - webApiServletContext.setAttribute("nifi-ui-extensions", uiExtensions); + webApiServletContext.setAttribute("nifi-ui-extensions", componentUiExtensions); // get the application context final WebApplicationContext webApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(webApiServletContext); @@ -698,22 +701,40 @@ public class JettyServer implements NiFiServer { // add the security filter to any custom ui wars final FilterHolder securityFilter = webApiContext.getServletHandler().getFilter("springSecurityFilterChain"); if (securityFilter != null) { - customUiContext.addFilter(securityFilter, "/*", EnumSet.of(DispatcherType.REQUEST)); + customUiContext.addFilter(securityFilter, "/*", EnumSet.allOf(DispatcherType.class)); } } } + // component ui extensions + if (CollectionUtils.isNotEmpty(componentUiExtensionWebContexts)) { + final NiFiWebConfigurationContext configurationContext = webApplicationContext.getBean("nifiWebConfigurationContext", NiFiWebConfigurationContext.class); + + for (final WebAppContext customUiContext : componentUiExtensionWebContexts) { + // set the NiFi context in each custom ui servlet context + final ServletContext customUiServletContext = customUiContext.getServletHandler().getServletContext(); + customUiServletContext.setAttribute("nifi-web-configuration-context", configurationContext); + + // add the security filter to any ui extensions wars + final FilterHolder securityFilter = webApiContext.getServletHandler().getFilter("springSecurityFilterChain"); + if (securityFilter != null) { + customUiContext.addFilter(securityFilter, "/*", EnumSet.allOf(DispatcherType.class)); + } + } + } + + // content viewer extensions if (CollectionUtils.isNotEmpty(contentViewerWebContexts)) { for (final WebAppContext contentViewerContext : contentViewerWebContexts) { // add the security filter to any content viewer wars final FilterHolder securityFilter = webApiContext.getServletHandler().getFilter("springSecurityFilterChain"); if (securityFilter != null) { - contentViewerContext.addFilter(securityFilter, "/*", EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD, DispatcherType.INCLUDE)); + contentViewerContext.addFilter(securityFilter, "/*", EnumSet.allOf(DispatcherType.class)); } } } - // ensure the web content viewer war was loaded + // content viewer controller if (webContentViewerContext != null) { final ContentAccess contentAccess = webApplicationContext.getBean("contentAccess", ContentAccess.class); @@ -723,31 +744,11 @@ public class JettyServer implements NiFiServer { final FilterHolder securityFilter = webApiContext.getServletHandler().getFilter("springSecurityFilterChain"); if (securityFilter != null) { - webContentViewerContext.addFilter(securityFilter, "/*", EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD, DispatcherType.INCLUDE)); + webContentViewerContext.addFilter(securityFilter, "/*", EnumSet.allOf(DispatcherType.class)); } } } - // ensure the appropriate wars deployed successfully before injecting the NiFi context and security filters - - // this must be done after starting the server (and ensuring there were no start up failures) - if (webApiContext != null && CollectionUtils.isNotEmpty(uiExtensionWebContexts)) { - final ServletContext webApiServletContext = webApiContext.getServletHandler().getServletContext(); - final WebApplicationContext webApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(webApiServletContext); - final NiFiWebConfigurationContext configurationContext = webApplicationContext.getBean("nifiWebConfigurationContext", NiFiWebConfigurationContext.class); - - for (final WebAppContext customUiContext : uiExtensionWebContexts) { - // set the NiFi context in each custom ui servlet context - final ServletContext customUiServletContext = customUiContext.getServletHandler().getServletContext(); - customUiServletContext.setAttribute("nifi-web-configuration-context", configurationContext); - - // add the security filter to any ui extensions wars - final FilterHolder securityFilter = webApiContext.getServletHandler().getFilter("springSecurityFilterChain"); - if (securityFilter != null) { - customUiContext.addFilter(securityFilter, "/*", EnumSet.of(DispatcherType.REQUEST)); - } - } - } - // ensure the web document war was loaded and provide the extension mapping if (webDocsContext != null) { final ServletContext webDocsServletContext = webDocsContext.getServletHandler().getServletContext();
