MCPcopy Index your code
hub / github.com/HTTP-RPC/Kilo / PetServlet

Class PetServlet

kilo-test/src/main/java/org/httprpc/kilo/test/PetServlet.java:39–105  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

37import static org.httprpc.kilo.util.Iterables.*;
38
39@WebServlet("/pets/example")
40public class PetServlet extends PageServlet {
41 private interface Parameters {
42 @Required
43 String getOwner();
44 }
45
46 private DataSource dataSource = null;
47
48 @Override
49 public void init() throws ServletException {
50 super.init();
51
52 try {
53 var initialContext = new InitialContext();
54 var environmentContext = (Context)initialContext.lookup("java:comp/env");
55
56 dataSource = (DataSource)environmentContext.lookup(AbstractDatabaseService.DEMO_DB);
57 } catch (NamingException exception) {
58 throw new ServletException(exception);
59 }
60 }
61
62 @Override
63 protected Connection openConnection() throws SQLException {
64 return dataSource.getConnection();
65 }
66
67 @Override
68 protected Object execute() throws IOException, SQLException {
69 var parameters = getParameters(Parameters.class);
70
71 var owner = parameters.getOwner();
72
73 var queryBuilder = QueryBuilder.select(Pet.class)
74 .filterByForeignKey(Owner.class, "owner")
75 .ordered(true);
76
77 List<Pet> pets;
78 try (var statement = queryBuilder.prepare(getConnection());
79 var results = queryBuilder.executeQuery(statement, mapOf(
80 entry("owner", owner)
81 ))) {
82 pets = listOf(mapAll(results, BeanAdapter.toType(Pet.class)));
83 }
84
85 var request = getRequest();
86
87 var accept = request.getHeader("Accept");
88
89 if (accept != null && accept.equalsIgnoreCase(WebService.TEXT_CSV)) {
90 var response = getResponse();
91
92 response.setContentType(WebService.TEXT_CSV);
93
94 var csvEncoder = new CSVEncoder(listOf("name", "species", "sex", "birth", "death"));
95
96 csvEncoder.setResourceBundle(ResourceBundle.getBundle(getClass().getName(), request.getLocale()));

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected