AMBARI-20394. Missing Content-Type header of woff/ttf files (Attila Magyar via 
adoroszlai)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/167e111b
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/167e111b
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/167e111b

Branch: refs/heads/branch-feature-AMBARI-12556
Commit: 167e111bd443d27dad940c0db54245d5835e1daf
Parents: b37f6f3
Author: Attila Magyar <amag...@hortonworks.com>
Authored: Thu Mar 16 10:26:24 2017 +0100
Committer: Attila Doroszlai <adorosz...@hortonworks.com>
Committed: Thu Mar 16 10:26:24 2017 +0100

----------------------------------------------------------------------
 .../ambari/server/controller/AmbariServer.java    |  6 ++++++
 .../server/controller/AmbariServerTest.java       | 18 ++++++++++++++++++
 2 files changed, 24 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/167e111b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
index a2441bd..1f1689a 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
@@ -790,6 +790,7 @@ public class AmbariServer {
    */
   protected void configureRootHandler(ServletContextHandler root) {
     configureHandlerCompression(root);
+    configureAdditionalContentTypes(root);
     root.setContextPath(CONTEXT_PATH);
     root.setErrorHandler(injector.getInstance(AmbariErrorHandler.class));
     root.setMaxFormContentSize(-1);
@@ -819,6 +820,11 @@ public class AmbariServer {
     }
   }
 
+  private void configureAdditionalContentTypes(ServletContextHandler root) {
+    root.getMimeTypes().addMimeMapping("woff", "application/font-woff");
+    root.getMimeTypes().addMimeMapping("ttf", "application/font-sfnt");
+  }
+
   /**
    * Performs basic configuration of session manager with static values and 
values from
    * configuration file.

http://git-wip-us.apache.org/repos/asf/ambari/blob/167e111b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariServerTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariServerTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariServerTest.java
index 85c47fc..f64a97f 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariServerTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariServerTest.java
@@ -18,10 +18,12 @@
 
 package org.apache.ambari.server.controller;
 
+import static junit.framework.Assert.assertEquals;
 import static org.easymock.EasyMock.anyObject;
 import static org.easymock.EasyMock.anyString;
 import static org.easymock.EasyMock.createNiceMock;
 import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.isA;
 import static org.easymock.EasyMock.partialMockBuilder;
 import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.verify;
@@ -55,6 +57,7 @@ import org.apache.ambari.server.state.stack.OsFamily;
 import org.apache.velocity.app.Velocity;
 import org.easymock.EasyMock;
 import org.easymock.EasyMockSupport;
+import org.eclipse.jetty.http.MimeTypes;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.SessionManager;
 import org.eclipse.jetty.servlet.FilterHolder;
@@ -162,6 +165,7 @@ public class AmbariServerTest {
     EasyMock.expectLastCall().once();
     EasyMock.expect(handler.addFilter(GzipFilter.class, "/*",
         EnumSet.of(DispatcherType.REQUEST))).andReturn(filter).once();
+    EasyMock.expect(handler.getMimeTypes()).andReturn(new 
MimeTypes()).anyTimes();
     replay(handler, filter);
 
     injector.getInstance(AmbariServer.class).configureRootHandler(handler);
@@ -186,6 +190,20 @@ public class AmbariServerTest {
     EasyMock.verify(handler);
   }
 
+  @Test
+  public void testConfigureContentTypes() throws Exception {
+    ServletContextHandler handler = 
EasyMock.createNiceMock(ServletContextHandler.class);
+    FilterHolder filter = EasyMock.createNiceMock(FilterHolder.class);
+    MimeTypes expectedMimeTypes = new MimeTypes();
+    
EasyMock.expect(handler.getMimeTypes()).andReturn(expectedMimeTypes).anyTimes();
+    EasyMock.expect(handler.addFilter(isA(Class.class), anyString(), 
isA(EnumSet.class))).andReturn(filter).anyTimes();
+    replay(handler, filter);
+    injector.getInstance(AmbariServer.class).configureRootHandler(handler);
+    assertEquals("application/font-woff", 
expectedMimeTypes.getMimeByExtension("/file.woff").toString());
+    assertEquals("application/font-sfnt", 
expectedMimeTypes.getMimeByExtension("/file.ttf").toString());
+    EasyMock.verify(handler);
+  }
+
   /**
    * Tests that Jetty pools are configured with the correct number of
    * Acceptor/Selector threads.

Reply via email to