Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 5fb3591c authored by Sébastian Le Merdy's avatar Sébastian Le Merdy
Browse files

replace jetty by jdk http engine

fix #28
parent d9844c41
Branches
No related tags found
No related merge requests found
......@@ -15,7 +15,6 @@
<properties>
<jersey.version>2.23.1</jersey.version>
<jetty.version>9.3.9.v20160517</jetty.version>
</properties>
<dependencies>
......@@ -38,7 +37,7 @@
<!-- needed by web.xml to instantiate org.glassfish.jersey.servlet.ServletContainer -->
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.23.1</version>
<version>${jersey.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
......@@ -56,16 +55,17 @@
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-jdk-http</artifactId>
<version>${jersey.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
......@@ -78,12 +78,6 @@
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
<version>${jetty.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
......@@ -92,7 +86,7 @@
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty.version}</version>
<version>9.3.9.v20160517</version>
</plugin>
</plugins>
</pluginManagement>
......
package elevator.server;
import elevator.server.security.UserPasswordValidator;
import elevator.user.RandomUser;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLStreamHandler;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
......@@ -27,15 +29,23 @@ class ElevatorServer implements UserPasswordValidator {
}
ElevatorServer addElevatorGame(Player player, URL server) throws MalformedURLException {
addElevatorGame(player, server, new Score());
addElevatorGame(player, server, new Score(), null);
return this;
}
void addElevatorGame(Player player, URL server, Score score) throws MalformedURLException {
addElevatorGame(player, server, score, null);
}
void addElevatorGame(Player player, URL server, URLStreamHandler urlStreamHandler) throws MalformedURLException {
addElevatorGame(player, server, new Score(), urlStreamHandler);
}
private void addElevatorGame(Player player, URL server, Score score, URLStreamHandler urlStreamHandler) throws MalformedURLException {
if (elevatorGames.containsKey(player)) {
throw new IllegalStateException("a game with player " + player + " has already been added");
}
ElevatorGame elevatorGame = new ElevatorGame(player, server, maxNumberOfUsers, score);
ElevatorGame elevatorGame = new ElevatorGame(player, server, maxNumberOfUsers, score, new RandomUser(), urlStreamHandler);
elevatorGames.put(player, elevatorGame);
}
......
package elevator.server;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;
import com.sun.net.httpserver.HttpServer;
import org.glassfish.jersey.jdkhttp.JdkHttpServerFactory;
import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.server.ResourceConfig;
import org.junit.rules.ExternalResource;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import java.net.InetSocketAddress;
import javax.ws.rs.core.UriBuilder;
import java.net.URI;
class ElevatorServerRule extends ExternalResource {
private static final URI URI = UriBuilder.fromUri("")
.scheme("http").host("localhost").port(8080)
.path("resources")
.build();
WebTarget target;
private Server server;
private Handler jettyHandler;
private HttpServer server;
ElevatorServerRule() {
this(new WebAppContext("src/main/webapp", "/"));
}
ElevatorServerRule(Handler jettyHandler) {
this.jettyHandler = jettyHandler;
this.target = ClientBuilder.newClient()
.register(MultiPartFeature.class)
.target("http://localhost:8080/resources");
}
public static void main(String[] args) throws Throwable {
final ElevatorServerRule elevatorServer = new ElevatorServerRule();
Runtime.getRuntime().addShutdownHook(new Thread(elevatorServer::after));
elevatorServer.before();
.target(URI);
}
@Override
protected void before() throws Throwable {
InetSocketAddress address = new InetSocketAddress("localhost", 8080);
server = new Server(address);
server.setHandler(jettyHandler);
server.start();
ElevatorApplication application = new ElevatorApplication();
server = JdkHttpServerFactory.createHttpServer(URI, ResourceConfig.forApplication(application));
}
@Override
protected void after() {
try {
server.stop();
server.stop(0);
} catch (Exception e) {
e.printStackTrace();
}
......
package elevator.server;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Collection;
import static javax.servlet.http.HttpServletResponse.SC_OK;
import static org.assertj.core.api.Assertions.assertThat;
public class ElevatorServerTest {
@ClassRule
public static ElevatorServerRule elevatorServerRule = new ElevatorServerRule(new AlwaysOkHandler());
private static class AlwaysOkHandler extends AbstractHandler {
@Override
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
baseRequest.getResponse().setStatus(SC_OK);
baseRequest.setHandled(true);
}
}
@Rule
public MockitoRule mockitoRule = MockitoJUnit.rule();
@Mock
private URLConnection urlConnection;
@Rule
public ExpectedException thrown = ExpectedException.none();
......@@ -67,7 +59,7 @@ public class ElevatorServerTest {
@Test
public void should_loose_and_give_message_when_user_wants_to_reset() throws Exception {
ElevatorServer elevatorServer = new ElevatorServer();
elevatorServer.addElevatorGame(new Player("player@provider.com", "pseudo"), new URL("http://127.0.0.1:8080"));
elevatorServer.addElevatorGame(new Player("player@provider.com", "pseudo"), new URL("http://127.0.0.1:8080"), new DontConnectURLStreamHandler(urlConnection));
elevatorServer.resumeElevatorGame("player@provider.com");
elevatorServer.resetPlayer("player@provider.com").get();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment