# HG changeset patch # User Jaroslav Tulach # Date 1257632763 -3600 # Node ID ac9bd9be52630d4c47287c3282c82ef6cbf2a3bf # Parent cc04ede4cb5e119ca239945e6ac7a2b3e5ed81ab Ability to get User by loginID and making sure tests pass in the same VM diff -r cc04ede4cb5e -r ac9bd9be5263 webidor/src/main/java/cz/xelfi/quoridor/webidor/resources/Quoridor.java --- a/webidor/src/main/java/cz/xelfi/quoridor/webidor/resources/Quoridor.java Sat Nov 07 18:31:47 2009 +0100 +++ b/webidor/src/main/java/cz/xelfi/quoridor/webidor/resources/Quoridor.java Sat Nov 07 23:26:03 2009 +0100 @@ -31,6 +31,7 @@ import com.sun.jersey.api.core.ResourceConfig; import com.sun.jersey.spi.resource.Singleton; import com.sun.net.httpserver.HttpServer; +import cz.xelfi.quoridor.webidor.User; import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -86,7 +87,7 @@ @Path("login") @PUT - @Produces({ MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON, MediaType.TEXT_XML }) + @Produces({ MediaType.TEXT_PLAIN }) public String login( @QueryParam("name") String name, @QueryParam("password") String password @@ -110,7 +111,7 @@ @Path("login") @GET - @Produces({ MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON, MediaType.TEXT_XML }) + @Produces({ MediaType.TEXT_PLAIN }) public String isLoggedIn( @QueryParam("id") String id ) { @@ -125,6 +126,23 @@ return ret == null ? "" : ret; } + @Path("login") + @GET + @Produces({ MediaType.APPLICATION_JSON, MediaType.TEXT_XML }) + public User loggedInInfo( + @QueryParam("id") String id + ) throws IOException { + String ret = null; + try { + if (id != null) { + ret = loggedIn.get(UUID.fromString(id)); + } + } catch (IllegalArgumentException ex) { + // OK, happens for invalid ids + } + return ret == null ? null : getUsers().getUserInfo(id, ret); + } + // // start the server // diff -r cc04ede4cb5e -r ac9bd9be5263 webidor/src/main/java/cz/xelfi/quoridor/webidor/resources/Users.java --- a/webidor/src/main/java/cz/xelfi/quoridor/webidor/resources/Users.java Sat Nov 07 18:31:47 2009 +0100 +++ b/webidor/src/main/java/cz/xelfi/quoridor/webidor/resources/Users.java Sat Nov 07 23:26:03 2009 +0100 @@ -63,6 +63,13 @@ } @GET + @Produces({MediaType.APPLICATION_JSON, MediaType.TEXT_XML}) + public User getOwnInfo( + @QueryParam("loginID") String loginId + ) throws IOException { + return getUserInfo(loginId, null); + } + @GET @Path("{id}") @Produces({ MediaType.APPLICATION_JSON, MediaType.TEXT_XML }) public User getUserInfo( @@ -70,6 +77,9 @@ @PathParam("id") String id ) throws IOException { String myid = quoridor.isLoggedIn(loginId); + if (id == null) { + id = myid; + } Properties myp = getProp(myid); Properties p = getProp(id); User user = new User(id); @@ -114,9 +124,11 @@ Properties p = new Properties(); if (id != null && id.length() > 0) { File f = new File(dir, id); - FileInputStream is = new FileInputStream(f); - p.load(is); - is.close(); + if (f.exists()) { + FileInputStream is = new FileInputStream(f); + p.load(is); + is.close(); + } } return p; } diff -r cc04ede4cb5e -r ac9bd9be5263 webidor/src/test/java/cz/xelfi/quoridor/webidor/QuoridorTest.java --- a/webidor/src/test/java/cz/xelfi/quoridor/webidor/QuoridorTest.java Sat Nov 07 18:31:47 2009 +0100 +++ b/webidor/src/test/java/cz/xelfi/quoridor/webidor/QuoridorTest.java Sat Nov 07 23:26:03 2009 +0100 @@ -49,6 +49,9 @@ * @author Jaroslav Tulach */ public class QuoridorTest extends JerseyTest { + static { + System.setProperty("JERSEY_HTTP_PORT", "33434"); + } private File dir; public QuoridorTest() throws Exception { @@ -104,6 +107,15 @@ queryParam("password", "pesko"). accept(MediaType.TEXT_PLAIN). put(String.class); + + User uJirka = webResource.path("users"). + queryParam("loginID", logJirka). + accept(MediaType.TEXT_XML). + get(User.class); + + assertEquals("Jirka", uJirka.getId()); + + GameId s = webResource.path("games").queryParam("loginID", logJarda). queryParam("white", "Jarda") .queryParam("black", "Jirka").post(GameId.class); diff -r cc04ede4cb5e -r ac9bd9be5263 webidor/src/test/java/cz/xelfi/quoridor/webidor/UsersTest.java --- a/webidor/src/test/java/cz/xelfi/quoridor/webidor/UsersTest.java Sat Nov 07 18:31:47 2009 +0100 +++ b/webidor/src/test/java/cz/xelfi/quoridor/webidor/UsersTest.java Sat Nov 07 23:26:03 2009 +0100 @@ -26,13 +26,11 @@ package cz.xelfi.quoridor.webidor; -import com.sun.jersey.api.client.GenericType; import com.sun.jersey.api.client.UniformInterfaceException; import com.sun.jersey.test.framework.JerseyTest; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; -import java.util.List; import java.util.Properties; import javax.ws.rs.core.MediaType; import org.junit.Test; @@ -43,6 +41,10 @@ * @author Jaroslav Tulach */ public class UsersTest extends JerseyTest { + static { + System.setProperty("JERSEY_HTTP_PORT", "39434"); + } + private File dir; public UsersTest() throws Exception {