Commit 29daab8f authored by Administrator's avatar Administrator

Annotations for web configuration.

Web configuration for REST services and login filter was moved from the
web.xml file to code annotations.
parent b45f3656
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<Class<?>> getClasses() {
return new HashSet<>(Arrays.asList(PeopleResource.class));
}
@Override
public Map<String, Object> getProperties() {
// Activates JSON automatic conversion in JAX-RS
return Collections.singletonMap(
"com.sun.jersey.api.json.POJOMappingFeature", true
);
}
}
package es.uvigo.esei.daa; package es.uvigo.esei.daa;
import java.io.IOException; import java.io.IOException;
import java.util.Optional;
import javax.servlet.Filter; import javax.servlet.Filter;
import javax.servlet.FilterChain; import javax.servlet.FilterChain;
...@@ -8,6 +9,7 @@ import javax.servlet.FilterConfig; ...@@ -8,6 +9,7 @@ import javax.servlet.FilterConfig;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.ServletRequest; import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.Cookie; import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
...@@ -15,6 +17,7 @@ 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.DAOException;
import es.uvigo.esei.daa.dao.UsersDAO; import es.uvigo.esei.daa.dao.UsersDAO;
@WebFilter(urlPatterns = { "/*", "/logout" })
public class LoginFilter implements Filter { public class LoginFilter implements Filter {
@Override @Override
public void doFilter( public void doFilter(
...@@ -105,13 +108,14 @@ public class LoginFilter implements Filter { ...@@ -105,13 +108,14 @@ public class LoginFilter implements Filter {
private boolean checkToken(HttpServletRequest request) private boolean checkToken(HttpServletRequest request)
throws DAOException, IllegalArgumentException { 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) {
for (Cookie cookie : cookies) { if ("token".equals(cookie.getName())) {
if (cookie.getName().equals("token")) { final String token = new UsersDAO().checkToken(cookie.getValue());
return new UsersDAO().checkToken(cookie.getValue()) != null;
} return token != null;
} }
} }
......
...@@ -16,10 +16,10 @@ import es.uvigo.esei.daa.dao.PeopleDAO; ...@@ -16,10 +16,10 @@ import es.uvigo.esei.daa.dao.PeopleDAO;
@Path("/people") @Path("/people")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
public class People { public class PeopleResource {
private final PeopleDAO dao; private final PeopleDAO dao;
public People() { public PeopleResource() {
this.dao = new PeopleDAO(); this.dao = new PeopleDAO();
} }
......
...@@ -20,26 +20,4 @@ ...@@ -20,26 +20,4 @@
<res-type>javax.sql.DataSource</res-type> <res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth> <res-auth>Container</res-auth>
</resource-ref> </resource-ref>
<servlet>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<init-param>
<!-- Activates JSON automatic conversion in JAX-RS -->
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>es.uvigo.esei.daa.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app> </web-app>
\ No newline at end of file
...@@ -48,7 +48,7 @@ public class PeopleTest extends JerseyTest { ...@@ -48,7 +48,7 @@ public class PeopleTest extends JerseyTest {
@Override @Override
protected Application configure() { protected Application configure() {
return new ResourceConfig(People.class) return new ResourceConfig(PeopleResource.class)
.register(JacksonJsonProvider.class) .register(JacksonJsonProvider.class)
.property("com.sun.jersey.api.json.POJOMappingFeature", Boolean.TRUE); .property("com.sun.jersey.api.json.POJOMappingFeature", Boolean.TRUE);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment