@PUT
	@Path("/{id}")
	@Consumes(MediaType.LIBROS_API_LIBRO)
	@Produces(MediaType.LIBROS_API_LIBRO)
	public Libro updateLibro(@PathParam("id") int id, Libro libro) {
		if (security.isUserInRole("registered")) {
			throw new NotAllowedException();
		}
		Connection conn = null;
		Statement stmt = null;
		try {
			conn = ds.getConnection();
		} catch (SQLException e) {
			throw new ServiceUnavailableException(e.getMessage());
		}
		try {
			stmt = conn.createStatement();
			String update = null; // TODO: create update query
			update = "UPDATE libros SET libros.autor='" + libro.getAutor()
					+ "', libros.titulo= '" + libro.getTitulo()
					+ "', libros.lengua= '" + libro.getLengua()
					+ "', libros.edicion= '" + libro.getEdicion()
					+ "', libros.fecha_ed= '" + libro.getFecha_ed()
					+ "', libros.fecha_imp= '" + libro.getFecha_imp()
					+ "', libros.editorial= '" + libro.getEditorial()
					+ "' WHERE id='" + id + "'";
			int rows = stmt.executeUpdate(update,
					Statement.RETURN_GENERATED_KEYS);
			if (rows != 0) {
				String sql = "SELECT * FROM libros WHERE id='" + id + "'";
				ResultSet rs = stmt.executeQuery(sql);
				if (rs.next()) {
					libro.setId(rs.getInt("id"));
					libro.setTitulo(rs.getString("titulo"));
					libro.setAutor(rs.getString("autor"));
					libro.setEdicion(rs.getString("edicion"));
					libro.setEditorial(rs.getString("editorial"));
					libro.setFecha_ed(rs.getDate("fecha_ed"));
					libro.setFecha_imp(rs.getDate("fecha_imp"));
					libro.setLengua(rs.getString("lengua"));			
					libro.add(LibrosAPILinkBuilder.buildURILibroId(uriInfo,
	                        libro.getId(), "self"));
				}
			} else
				throw new LibroNotFoundException();
		} catch (SQLException e) {
			throw new InternalServerException(e.getMessage());
		} finally {
			try {
				stmt.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return libro;
	}