package demo; import com.vaadin.annotations.Theme; import com.vaadin.data.util.BeanItemContainer; import com.vaadin.server.VaadinRequest; import com.vaadin.spring.annotation.SpringUI; import com.vaadin.ui.Table; import com.vaadin.ui.UI; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.repository.query.Param; import org.springframework.data.rest.core.annotation.RepositoryRestResource; import org.springframework.data.rest.core.annotation.RestResource; import org.springframework.hateoas.Link; import org.springframework.hateoas.Resource; import org.springframework.hateoas.ResourceProcessor; import org.springframework.stereotype.Component; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import java.util.Arrays; import java.util.Collection; @SpringBootApplication public class DemoApplication { @Bean CommandLineRunner runner(ReservationRepository rr) { return args -> Arrays.asList("Marten,Josh,Dave,Mark,Mark,Juergen".split(",")) .forEach(x -> rr.save(new Reservation(x))); } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } @SpringUI(path = "ui") @Theme("valo") class ReservationUI extends UI { @Autowired private ReservationRepository reservationRepository; @Override protected void init(VaadinRequest vaadinRequest) { Table components = new Table(); components.setContainerDataSource(new BeanItemContainer<>( Reservation.class, this.reservationRepository.findAll() )); components.setSizeFull(); setContent(components); } } @Component class ReservationResourceProcessor implements ResourceProcessor<Resource<Reservation>> { @Override public Resource<Reservation> process(Resource<Reservation> reservationResource) { Reservation reservation = reservationResource.getContent(); Long id = reservation.getId(); String url = "http://aws.images.com/" + id + ".jpg"; reservationResource.add(new Link(url, "profile-photo")); return reservationResource; } } @RepositoryRestResource interface ReservationRepository extends JpaRepository<Reservation, Long> { @RestResource(path = "by-name") Collection<Reservation> findByReservationName(@Param("rn") String rn); }