diff --git a/src/main/java/es/uvigo/esei/daa/DAAExampleApplication.java b/src/main/java/es/uvigo/esei/daa/DAAExampleApplication.java new file mode 100644 index 0000000000000000000000000000000000000000..cbce3c8972a090412d3b0813551a47bcd10c74d2 --- /dev/null +++ b/src/main/java/es/uvigo/esei/daa/DAAExampleApplication.java @@ -0,0 +1,28 @@ +package es.uvigo.esei.daa; + +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import javax.ws.rs.ApplicationPath; +import javax.ws.rs.core.Application; + +import es.uvigo.esei.daa.rest.PeopleResource; + +@ApplicationPath("/rest/*") +public class DAAExampleApplication extends Application { + @Override + public Set> getClasses() { + return new HashSet<>(Arrays.asList(PeopleResource.class)); + } + + @Override + public Map getProperties() { + // Activates JSON automatic conversion in JAX-RS + return Collections.singletonMap( + "com.sun.jersey.api.json.POJOMappingFeature", true + ); + } +} diff --git a/src/main/java/es/uvigo/esei/daa/LoginFilter.java b/src/main/java/es/uvigo/esei/daa/LoginFilter.java index 1ca1ad27982e60ea36ecb3b783c32a63f3b11b93..8e3cd50fa85cdf89a3cb6b321c5c94d4c00b2ecc 100644 --- a/src/main/java/es/uvigo/esei/daa/LoginFilter.java +++ b/src/main/java/es/uvigo/esei/daa/LoginFilter.java @@ -1,6 +1,7 @@ package es.uvigo.esei.daa; import java.io.IOException; +import java.util.Optional; import javax.servlet.Filter; import javax.servlet.FilterChain; @@ -8,6 +9,7 @@ import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; +import javax.servlet.annotation.WebFilter; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -15,6 +17,7 @@ import javax.servlet.http.HttpServletResponse; import es.uvigo.esei.daa.dao.DAOException; import es.uvigo.esei.daa.dao.UsersDAO; +@WebFilter(urlPatterns = { "/*", "/logout" }) public class LoginFilter implements Filter { @Override public void doFilter( @@ -105,13 +108,14 @@ public class LoginFilter implements Filter { private boolean checkToken(HttpServletRequest request) throws DAOException, IllegalArgumentException { - final Cookie[] cookies = request.getCookies(); + final Cookie[] cookies = Optional.ofNullable(request.getCookies()) + .orElse(new Cookie[0]); - if (cookies != null) { - for (Cookie cookie : cookies) { - if (cookie.getName().equals("token")) { - return new UsersDAO().checkToken(cookie.getValue()) != null; - } + for (Cookie cookie : cookies) { + if ("token".equals(cookie.getName())) { + final String token = new UsersDAO().checkToken(cookie.getValue()); + + return token != null; } } diff --git a/src/main/java/es/uvigo/esei/daa/rest/People.java b/src/main/java/es/uvigo/esei/daa/rest/PeopleResource.java similarity index 97% rename from src/main/java/es/uvigo/esei/daa/rest/People.java rename to src/main/java/es/uvigo/esei/daa/rest/PeopleResource.java index 8bab204714b9ac1eb30348a2ce1ee6e1a1efc5c7..5518e56d10880b814f4b33962ab18b29ae41fa11 100644 --- a/src/main/java/es/uvigo/esei/daa/rest/People.java +++ b/src/main/java/es/uvigo/esei/daa/rest/PeopleResource.java @@ -16,10 +16,10 @@ import es.uvigo.esei.daa.dao.PeopleDAO; @Path("/people") @Produces(MediaType.APPLICATION_JSON) -public class People { +public class PeopleResource { private final PeopleDAO dao; - public People() { + public PeopleResource() { this.dao = new PeopleDAO(); } diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 469592507737578d1ecc1e69bb79ed7fa344e661..cc0a77fd28856b853b76cf6d1082f27e4583e6fa 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -20,26 +20,4 @@ javax.sql.DataSource Container - - - javax.ws.rs.core.Application - - - com.sun.jersey.api.json.POJOMappingFeature - true - - - - javax.ws.rs.core.Application - /rest/* - - - - LoginFilter - es.uvigo.esei.daa.LoginFilter - - - LoginFilter - /* - \ No newline at end of file diff --git a/src/test/java/es/uvigo/esei/daa/rest/PeopleTest.java b/src/test/java/es/uvigo/esei/daa/rest/PeopleTest.java index c6c92d1e2410294e8d3cb0260877146b2d541f92..b041441f17674cc6c7a3c58a5b1de6efc2da9ee9 100644 --- a/src/test/java/es/uvigo/esei/daa/rest/PeopleTest.java +++ b/src/test/java/es/uvigo/esei/daa/rest/PeopleTest.java @@ -48,7 +48,7 @@ public class PeopleTest extends JerseyTest { @Override protected Application configure() { - return new ResourceConfig(People.class) + return new ResourceConfig(PeopleResource.class) .register(JacksonJsonProvider.class) .property("com.sun.jersey.api.json.POJOMappingFeature", Boolean.TRUE); }