From 3c366f77fe41bbb436babdfcad913f17d42d9ca4 Mon Sep 17 00:00:00 2001 From: Andrew Berezovskyi Date: Sat, 18 Jan 2025 13:41:08 +0100 Subject: [PATCH 1/3] feat: switch from angular/AJAX to HTMX Signed-off-by: Andrew Berezovskyi --- .../rm/gen/services/RequirementsService.java | 64 +++++++++++-------- .../rm/gen/requirementselector-results.jsp | 30 +++++++++ .../refimpl/rm/gen/requirementselector.jsp | 39 +++++------ 3 files changed, 88 insertions(+), 45 deletions(-) create mode 100644 src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector-results.jsp diff --git a/src/server-rm/src/main/java/co/oslc/refimpl/rm/gen/services/RequirementsService.java b/src/server-rm/src/main/java/co/oslc/refimpl/rm/gen/services/RequirementsService.java index ef3736ad..a9d9a6de 100644 --- a/src/server-rm/src/main/java/co/oslc/refimpl/rm/gen/services/RequirementsService.java +++ b/src/server-rm/src/main/java/co/oslc/refimpl/rm/gen/services/RequirementsService.java @@ -273,42 +273,54 @@ public void queryRequirementsAsHtml( ) @GET @Path("selector") - @Consumes({ MediaType.TEXT_HTML, MediaType.WILDCARD }) + @Consumes({MediaType.TEXT_HTML, MediaType.WILDCARD}) public Response RequirementSelector( @QueryParam("terms") final String terms , @PathParam("serviceProviderId") final String serviceProviderId - ) throws ServletException, IOException, JSONException - { + ) throws ServletException, IOException, JSONException { // Start of user code RequirementSelector_init - // End of user code - - httpServletRequest.setAttribute("selectionUri",UriBuilder.fromUri(OSLC4JUtils.getServletURI()).path(uriInfo.getPath()).build().toString()); + // End of user code + + httpServletRequest.setAttribute("selectionUri", + UriBuilder.fromUri(OSLC4JUtils.getServletURI()).path(uriInfo.getPath()).build().toString()); // Start of user code RequirementSelector_setAttributes - // End of user code - - if (terms != null ) { + // End of user code + + if (terms != null) { httpServletRequest.setAttribute("terms", terms); - final List resources = delegate.RequirementSelector(httpServletRequest, serviceProviderId, terms); - if (resources!= null) { - JSONArray resourceArray = new JSONArray(); - for (Requirement resource : resources) { - JSONObject r = new JSONObject(); - r.put("oslc:label", resource.toString()); - r.put("rdf:resource", resource.getAbout().toString()); - r.put("Label", resource.toString()); - // Start of user code RequirementSelector_setResponse - // End of user code - resourceArray.add(r); + final List resources = delegate.RequirementSelector(httpServletRequest, + serviceProviderId, terms); + if (resources != null) { + if ("true".equalsIgnoreCase(httpServletRequest.getHeader("hx-request"))) { + // we need to return HTML fragment + RequestDispatcher rd = httpServletRequest.getRequestDispatcher("/co/oslc/refimpl/rm" + + "/gen/requirementselector-results.jsp"); + httpServletRequest.setAttribute("resources", resources); + rd.forward(httpServletRequest, httpServletResponse); + } else { + // this is really bad, we should not be mixing HTML and JSON without content + // negotiation + JSONArray resourceArray = new JSONArray(); + for (Requirement resource : resources) { + JSONObject r = new JSONObject(); + r.put("oslc:label", resource.toString()); + r.put("rdf:resource", resource.getAbout().toString()); + r.put("Label", resource.toString()); + // Start of user code RequirementSelector_setResponse + // End of user code + resourceArray.add(r); + } + JSONObject response = new JSONObject(); + response.put("oslc:results", resourceArray); + return Response.ok(response.write()).build(); } - JSONObject response = new JSONObject(); - response.put("oslc:results", resourceArray); - return Response.ok(response.write()).build(); + } log.error("A empty search should return an empty list and not NULL!"); - throw new WebApplicationException(Status.INTERNAL_SERVER_ERROR); - + return Response.noContent().build(); } else { - RequestDispatcher rd = httpServletRequest.getRequestDispatcher("/co/oslc/refimpl/rm/gen/requirementselector.jsp"); + RequestDispatcher rd = httpServletRequest.getRequestDispatcher("/co/oslc/refimpl/rm" + + "/gen/requirementselector.jsp"); rd.forward(httpServletRequest, httpServletResponse); return null; } diff --git a/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector-results.jsp b/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector-results.jsp new file mode 100644 index 00000000..55a1ec1b --- /dev/null +++ b/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector-results.jsp @@ -0,0 +1,30 @@ +<%-- + Copyright (c) 2025 Contributors to the Eclipse Foundation + + See the NOTICE file(s) distributed with this work for additional + information regarding copyright ownership. + + This program and the accompanying materials are made available under the + terms of the Eclipse Distribution License 1.0 which is available at + http://www.eclipse.org/org/documents/edl-v10.php. + + SPDX-License-Identifier: BSD-3-Simple + + This file is generated by Lyo Designer (https://www.eclipse.org/lyo/) +--%> + +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@page import="org.eclipse.lyo.oslc.domains.rm.Requirement"%> + +<%@ page contentType="text/html" language="java" pageEncoding="UTF-8" %> + + + + diff --git a/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector.jsp b/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector.jsp index 642dafab..b7c59d28 100644 --- a/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector.jsp +++ b/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector.jsp @@ -1,7 +1,7 @@ <%--To avoid the overriding of any manual code changes upon subsequent code generations, disable "Generate JSP Files" option in the Adaptor model.--%> <%-- - Copyright (c) 2020 Contributors to the Eclipse Foundation + Copyright (c) 2025 Contributors to the Eclipse Foundation See the NOTICE file(s) distributed with this work for additional information regarding copyright ownership. @@ -27,38 +27,39 @@ <% String selectionUri = (String) request.getAttribute("selectionUri"); - %> RequirementSD - +
-

Find a specific resource through a free-text search.

- - +

Find a specific OSLC resource through a free-text search.

- - +
-
- -
- -
- - -
-
+
+ From 68c000094bffd347bdbc15283f236d9014a4a109 Mon Sep 17 00:00:00 2001 From: Andrew Berezovskyi Date: Sat, 18 Jan 2025 14:03:49 +0100 Subject: [PATCH 2/3] feat: use PicoCSS instead of Angular Signed-off-by: Andrew Berezovskyi --- .../rm/gen/services/RequirementsService.java | 2 +- .../rm/gen/requirementselector-results.jsp | 22 ++++++---- .../refimpl/rm/gen/requirementselector.jsp | 41 +++++++++++++------ 3 files changed, 42 insertions(+), 23 deletions(-) diff --git a/src/server-rm/src/main/java/co/oslc/refimpl/rm/gen/services/RequirementsService.java b/src/server-rm/src/main/java/co/oslc/refimpl/rm/gen/services/RequirementsService.java index a9d9a6de..f54038d9 100644 --- a/src/server-rm/src/main/java/co/oslc/refimpl/rm/gen/services/RequirementsService.java +++ b/src/server-rm/src/main/java/co/oslc/refimpl/rm/gen/services/RequirementsService.java @@ -295,7 +295,7 @@ public Response RequirementSelector( // we need to return HTML fragment RequestDispatcher rd = httpServletRequest.getRequestDispatcher("/co/oslc/refimpl/rm" + "/gen/requirementselector-results.jsp"); - httpServletRequest.setAttribute("resources", resources); + httpServletRequest.setAttribute("resources", resources); rd.forward(httpServletRequest, httpServletResponse); } else { // this is really bad, we should not be mixing HTML and JSON without content diff --git a/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector-results.jsp b/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector-results.jsp index 55a1ec1b..0b544e16 100644 --- a/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector-results.jsp +++ b/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector-results.jsp @@ -19,12 +19,16 @@ <%@ page contentType="text/html" language="java" pageEncoding="UTF-8" %> - - - + diff --git a/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector.jsp b/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector.jsp index b7c59d28..51e4e01a 100644 --- a/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector.jsp +++ b/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector.jsp @@ -29,23 +29,26 @@ String selectionUri = (String) request.getAttribute("selectionUri"); %> - - - + + + + + RequirementSD + - - -
+ + +

Find a specific OSLC resource through a free-text search.

-
- +
- -
-
+
+ From 1b599a3625c73eacc9553a2fb8ec54de74e0ae9d Mon Sep 17 00:00:00 2001 From: Andrew Berezovskyi Date: Sat, 18 Jan 2025 14:24:51 +0100 Subject: [PATCH 3/3] fix: do not autocomplete live search input Signed-off-by: Andrew Berezovskyi --- .editorconfig | 2 +- .../main/webapp/co/oslc/refimpl/rm/gen/requirementselector.jsp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.editorconfig b/.editorconfig index 145f0fcf..dcd941f2 100644 --- a/.editorconfig +++ b/.editorconfig @@ -17,7 +17,7 @@ trim_trailing_whitespace = false indent_style = space indent_size = 4 -[*.{xml,html,js,yml,css}] +[*.{xml,html,js,yml,css,jsp}] indent_style = space indent_size = 2 diff --git a/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector.jsp b/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector.jsp index 51e4e01a..c6904836 100644 --- a/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector.jsp +++ b/src/server-rm/src/main/webapp/co/oslc/refimpl/rm/gen/requirementselector.jsp @@ -42,7 +42,8 @@

Find a specific OSLC resource through a free-text search.

-