package com.example.rest; import java.util.Optional; import java.util.concurrent.CopyOnWriteArrayList; import java.util.stream.Collectors; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("/customers") public class CustomerService { private final CopyOnWriteArrayList cList = CustomerList.getInstance(); @GET @Path("/all") @Produces(MediaType.TEXT_PLAIN) public String getAllCustomers() { return "---Customer List---\n" + cList.stream() .map(c -> c.toString()) .collect(Collectors.joining("\n")); } @GET @Path("{id}") @Produces(MediaType.TEXT_PLAIN) public String getCustomer(@PathParam("id") long id) { Optional match = cList.stream() .filter(c -> c.getId() == id) .findFirst(); if (match.isPresent()) { return "---Customer---\n" + match.get().toString(); } else { return "Customer not found"; } } }