Skip to content

Commit

Permalink
upgrade to jetty 9.2 (#309)
Browse files Browse the repository at this point in the history
  • Loading branch information
klieber committed Oct 6, 2016
1 parent 6ae3f25 commit 72120d8
Show file tree
Hide file tree
Showing 14 changed files with 78 additions and 77 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Expand Up @@ -137,7 +137,7 @@
</ciManagement>
<properties>
<powermock.version>1.6.5</powermock.version>
<jetty.version>8.2.0.v20160908</jetty.version>
<jetty.version>9.2.19.v20160908</jetty.version>
<selenium.version>2.53.1</selenium.version>
<jasmine.version>2.4.1</jasmine.version>
<htmlunit.version>2.19</htmlunit.version>
Expand Down
Expand Up @@ -3,7 +3,7 @@
import com.github.searls.jasmine.config.JasmineConfiguration;
import com.github.searls.jasmine.format.BuildsJavaScriptToWriteFailureHtml;
import org.apache.commons.io.IOUtils;
import org.eclipse.jetty.http.HttpHeaders;
import org.eclipse.jetty.http.HttpHeader;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.util.resource.Resource;

Expand Down Expand Up @@ -41,10 +41,10 @@ private void writeResponse(HttpServletResponse response, String javascript) thro
private void setHeaders(HttpServletResponse response, Resource resource, String javascript) {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/javascript");
response.setDateHeader(HttpHeaders.LAST_MODIFIED, resource.lastModified());
response.setDateHeader(HttpHeader.LAST_MODIFIED.asString(), resource.lastModified());
try {
int contentLength = javascript.getBytes("UTF-8").length;
response.setHeader(HttpHeaders.CONTENT_LENGTH, Integer.toString(contentLength));
response.setHeader(HttpHeader.CONTENT_LENGTH.asString(), Integer.toString(contentLength));
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(
"The JVM does not support the compiler's default encoding.", e);
Expand Down
Expand Up @@ -15,7 +15,8 @@
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.resource.ResourceManager;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;

import java.io.File;
import java.util.ArrayList;
Expand Down Expand Up @@ -523,18 +524,11 @@ public List<Context> getContexts() {
return contexts;
}

protected Connector getConnector() throws MojoExecutionException {
try {
@SuppressWarnings("unchecked")
Class<? extends Connector> c = (Class<? extends Connector>) Class.forName(connectorClass);
return c.newInstance();
} catch (InstantiationException e) {
throw new MojoExecutionException("Unable to instantiate.", e);
} catch (IllegalAccessException e) {
throw new MojoExecutionException("Unable to instantiate.", e);
} catch (ClassNotFoundException e) {
throw new MojoExecutionException("Unable to instantiate.", e);
}
protected ServerConnector getConnector() throws MojoExecutionException {
Server server = new Server();
ServerConnector connector = new ServerConnector(server);
server.addConnector(connector);
return connector;
}

protected boolean isSkipTests() {
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/com/github/searls/jasmine/mojo/ServerMojo.java
Expand Up @@ -10,7 +10,6 @@
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.ResolutionScope;
import org.eclipse.jetty.server.Server;

import java.io.File;
import java.io.IOException;
Expand Down Expand Up @@ -74,7 +73,7 @@ private ServerManager getServerManager() throws MojoExecutionException {
this.relativizesFilePaths,
createsRunner);

return new ServerManager(new Server(), getConnector(), configurator);
return ServerManager.newInstance(configurator);
}

private String getRelativePath(File absolutePath) throws IOException {
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/com/github/searls/jasmine/mojo/TestMojo.java
Expand Up @@ -23,7 +23,6 @@
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.repository.RemoteRepository;
import org.eclipse.jetty.server.Server;
import org.openqa.selenium.WebDriver;

import javax.inject.Inject;
Expand Down Expand Up @@ -217,7 +216,7 @@ private ServerManager getServerManager() throws MojoExecutionException {
this.relativizesFilePaths,
createsRunner);

return new ServerManager(new Server(), getConnector(), configurator);
return ServerManager.newInstance(configurator);
}

private void setPortProperty(int port) {
Expand Down
Expand Up @@ -29,7 +29,6 @@ public JasmineResourceHandler(CreatesRunner createsRunner,
this.detectsCoffee = detectsCoffee;
this.createsRunner = createsRunner;
this.handlesRequestsForCoffee = handlesRequestsForCoffee;
setAliases(true);
}

@Override
Expand Down
Expand Up @@ -8,6 +8,7 @@
import com.github.searls.jasmine.thirdpartylibs.WebJarResourceHandler;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.handler.AllowSymLinkAliasChecker;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
import org.eclipse.jetty.server.handler.ResourceHandler;
Expand All @@ -34,30 +35,29 @@ public Handler createHandler() throws IOException {

for (Context context : this.configuration.getContexts()) {
String contextRoot = StringUtils.prependIfMissing(context.getContextRoot(), "/");
ContextHandler handler = contexts.addContext(contextRoot, "");
handler.setAliases(true);
handler.setHandler(this.createResourceHandler(true, context.getDirectory().getCanonicalPath(), null));
addContext(contexts, contextRoot, this.createResourceHandler(true, context.getDirectory().getCanonicalPath()));
}

ContextHandler rootContextHandler = contexts.addContext("/", "");
rootContextHandler.setHandler(this.createResourceHandler(false, this.configuration.getBasedir().getCanonicalPath(), new String[]{this.getWelcomeFilePath()}));
rootContextHandler.setAliases(true);

ContextHandler classPathContextHandler = contexts.addContext("/classpath", "");
classPathContextHandler.setHandler(new ClassPathResourceHandler(configuration.getProjectClassLoader()));
classPathContextHandler.setAliases(true);

ContextHandler webJarsContextHandler = contexts.addContext("/webjars", "");
webJarsContextHandler.setHandler(new WebJarResourceHandler(configuration.getProjectClassLoader()));
webJarsContextHandler.setAliases(true);

addContext(contexts, "/", this.createResourceHandler(
false,
this.configuration.getBasedir().getCanonicalPath(),
this.getWelcomeFilePath()
));
addContext(contexts, "/classpath", new ClassPathResourceHandler(configuration.getProjectClassLoader()));
addContext(contexts, "/webjars", new WebJarResourceHandler(configuration.getProjectClassLoader()));
return contexts;
}

private ResourceHandler createResourceHandler(boolean directory, String absolutePath, String[] welcomeFiles) {
private void addContext(ContextHandlerCollection contexts, String contextPath, Handler handler) {
ContextHandler contextHandler = contexts.addContext(contextPath, "");
contextHandler.setHandler(handler);
contextHandler.addAliasCheck(new AllowSymLinkAliasChecker());
}

private ResourceHandler createResourceHandler(boolean directory, String absolutePath, String ... welcomeFiles) {
ResourceHandler resourceHandler = new JasmineResourceHandler(this.createsRunner, this.configuration);
resourceHandler.setDirectoriesListed(directory);
if (welcomeFiles != null) {
if (welcomeFiles.length > 0) {
resourceHandler.setWelcomeFiles(welcomeFiles);
}
resourceHandler.setResourceBase(absolutePath);
Expand Down
29 changes: 15 additions & 14 deletions src/main/java/com/github/searls/jasmine/server/ServerManager.java
@@ -1,20 +1,17 @@
package com.github.searls.jasmine.server;

import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;

public class ServerManager {

private static final int ANY_PORT = 0;

private final Server server;
private final Connector connector;
private final ServerConnector connector;
private final ResourceHandlerConfigurator configurator;

public ServerManager(Server server,
Connector connector,
ResourceHandlerConfigurator configurator) {
this.server = server;
protected ServerManager(ServerConnector connector,
ResourceHandlerConfigurator configurator) {
this.connector = connector;
this.configurator = configurator;
}
Expand All @@ -29,20 +26,24 @@ public void start(int port) throws Exception {

private int startServer(int port) throws Exception {
connector.setPort(port);

this.server.setHandler(this.configurator.createHandler());
this.server.addConnector(connector);

this.server.start();
connector.getServer().setHandler(this.configurator.createHandler());
connector.getServer().start();

return connector.getLocalPort();
}

public void stop() throws Exception {
this.server.stop();
connector.getServer().stop();
}

public void join() throws Exception {
this.server.join();
connector.getServer().join();
}

public static ServerManager newInstance(ResourceHandlerConfigurator configurator) {
Server server = new Server();
ServerConnector connector = new ServerConnector(server);
server.addConnector(connector);
return new ServerManager(connector, configurator);
}
}
@@ -1,7 +1,7 @@
package com.github.searls.jasmine.thirdpartylibs;

import org.apache.commons.io.IOUtils;
import org.eclipse.jetty.http.HttpHeaders;
import org.eclipse.jetty.http.HttpHeader;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.ResourceHandler;

Expand Down Expand Up @@ -50,10 +50,10 @@ private void setHeaders(HttpServletResponse response, String resourcePath, Strin
response.setContentType("text/javascript");
}
response.addDateHeader("EXPIRES", 0L);
response.setDateHeader(HttpHeaders.LAST_MODIFIED, new Date().getTime());
response.setDateHeader(HttpHeader.LAST_MODIFIED.asString(), new Date().getTime());
try {
int contentLength = content.getBytes("UTF-8").length;
response.setHeader(HttpHeaders.CONTENT_LENGTH, Integer.toString(contentLength));
response.setHeader(HttpHeader.CONTENT_LENGTH.asString(), Integer.toString(contentLength));
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("The JVM does not support javascript default encoding.", e);
}
Expand Down
Expand Up @@ -2,7 +2,7 @@

import com.github.searls.jasmine.config.JasmineConfiguration;
import com.github.searls.jasmine.format.BuildsJavaScriptToWriteFailureHtml;
import org.eclipse.jetty.http.HttpHeaders;
import org.eclipse.jetty.http.HttpHeader;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.util.resource.Resource;
import org.junit.Before;
Expand Down Expand Up @@ -84,7 +84,7 @@ public void setsResourceLastModifiedOnResponseHeader() throws IOException {

subject.handle(baseRequest, response, resource);

verify(response).setDateHeader(HttpHeaders.LAST_MODIFIED, expected);
verify(response).setDateHeader(HttpHeader.LAST_MODIFIED.asString(), expected);
}

@Test
Expand All @@ -95,7 +95,7 @@ public void whenCoffeeCompilesThenWriteIt() throws IOException {
subject.handle(baseRequest, response, resource);

verify(response.getWriter()).write(expected);
verify(response).setHeader(HttpHeaders.CONTENT_LENGTH, Integer.toString(expected.length()));
verify(response).setHeader(HttpHeader.CONTENT_LENGTH.asString(), Integer.toString(expected.length()));
}

@Test
Expand All @@ -106,7 +106,7 @@ public void whenCoffeeCompilesHasMultiByteThenWriteIt() throws IOException {
subject.handle(baseRequest, response, resource);

verify(response.getWriter()).write(expected);
verify(response).setHeader(HttpHeaders.CONTENT_LENGTH, Integer.toString(expected.getBytes("UTF-8").length));
verify(response).setHeader(HttpHeader.CONTENT_LENGTH.asString(), Integer.toString(expected.getBytes("UTF-8").length));
}

@Test
Expand All @@ -130,7 +130,7 @@ public void whenCoffeeRequestWithREQUIRE_JSThenWriteCoffee() throws IOException
subject.handle(baseRequest, response, resource);

verify(response.getWriter()).write(COFFEE);
verify(response).setHeader(HttpHeaders.CONTENT_LENGTH, Integer.toString(COFFEE.length()));
verify(response).setHeader(HttpHeader.CONTENT_LENGTH.asString(), Integer.toString(COFFEE.length()));
}

}
Expand Up @@ -10,6 +10,7 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.fail;


public class ConvertsFileToUriStringIntegrationTest {

private final ConvertsFileToUriString subject = new ConvertsFileToUriString();
Expand Down
25 changes: 15 additions & 10 deletions src/test/java/com/github/searls/jasmine/mojo/ServerMojoTest.java
Expand Up @@ -9,8 +9,6 @@
import com.github.searls.jasmine.server.ServerManager;
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.project.MavenProject;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
Expand All @@ -20,14 +18,13 @@

import java.io.File;

import static org.mockito.Matchers.eq;
import static org.mockito.Matchers.isA;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
import static org.powermock.api.mockito.PowerMockito.whenNew;

@RunWith(PowerMockRunner.class)
@PrepareForTest(ServerMojo.class)
@PrepareForTest({ServerMojo.class, ServerManager.class})
public class ServerMojoTest {

private static final String SPECS_DIR = "spec dir";
Expand All @@ -38,31 +35,39 @@ public class ServerMojoTest {
private static final String MANUAL_SPEC_RUNNER_NAME = "nacho specs";
private static final String BASE_DIR = "my-base-dir";

private static final String connectorClassString = "org.eclipse.jetty.server.nio.SelectChannelConnector";
private static final Class<? extends Connector> connectorClass = org.eclipse.jetty.server.nio.SelectChannelConnector.class;

@Mock
private Log log;

@Mock
private MavenProject mavenProject;

@Mock
private RelativizesFilePaths relativizesFilePaths;

@Mock
private File baseDir;

@Mock
private File targetDir;

@Mock
private File sourceDir;

@Mock
private File specDir;

@Mock
private ScriptSearch sources;

@Mock
private ScriptSearch specs;

@Mock
private CreatesRunner createsRunner;

@Mock
private ResourceHandlerConfigurator configurator;

@Mock
private ServerManager serverManager;

Expand All @@ -81,7 +86,6 @@ public void arrangeAndAct() throws Exception {
this.subject.manualSpecRunnerHtmlFileName = MANUAL_SPEC_RUNNER_NAME;
this.subject.specRunnerTemplate = SpecRunnerTemplate.DEFAULT;
this.subject.debug = true;
this.subject.connectorClass = connectorClassString;
when(this.sourceDir.getAbsolutePath()).thenReturn(SOURCE_DIR);
when(this.specDir.getAbsolutePath()).thenReturn(SPECS_DIR);
when(this.sources.getDirectory()).thenReturn(this.sourceDir);
Expand All @@ -103,7 +107,8 @@ public void arrangeAndAct() throws Exception {
this.relativizesFilePaths,
createsRunner).thenReturn(configurator);

whenNew(ServerManager.class).withArguments(isA(Server.class), isA(connectorClass), eq(configurator)).thenReturn(serverManager);
mockStatic(ServerManager.class);
when(ServerManager.newInstance(configurator)).thenReturn(serverManager);

this.subject.run();
}
Expand Down

0 comments on commit 72120d8

Please sign in to comment.