Skip to content

Commit f3fd20d

Browse files
committed
wip
1 parent 93dd586 commit f3fd20d

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

tools/workbench/src/main/java/org/eclipse/rdf4j/workbench/commands/AddServlet.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,19 @@ protected void doPost(WorkbenchRequest req, HttpServletResponse resp, String xsl
7878
logger.warn(exc.toString(), exc);
7979
TupleResultBuilder builder = getTupleResultBuilder(req, resp, resp.getOutputStream());
8080
builder.transform(xslPath, "add.xsl");
81-
builder.start("error-message", "baseURI", CONTEXT, "Content-Type", ISOLATION_LEVEL_PARAM);
81+
builder.start("error-message", "baseURI", CONTEXT, "Content-Type", ISOLATION_LEVEL_PARAM,
82+
ISOLATION_LEVEL_OPTION, ISOLATION_LEVEL_OPTION_LABEL);
8283
builder.link(List.of(INFO));
8384
String baseURI = req.getParameter("baseURI");
8485
String context = req.getParameter(CONTEXT);
8586
String contentType = req.getParameter("Content-Type");
8687
String isolationLevel = req.getParameter(ISOLATION_LEVEL_PARAM);
87-
builder.result(exc.getMessage(), baseURI, context, contentType, isolationLevel);
88+
builder.result(exc.getMessage(), baseURI, context, contentType, isolationLevel, null, null);
89+
for (String option : determineIsolationLevels()) {
90+
String optionLabel = isolationLevelLabel(option);
91+
String selectedIsolation = option.equals(isolationLevel) ? isolationLevel : null;
92+
builder.result(null, null, null, null, selectedIsolation, option, optionLabel);
93+
}
8894
builder.end();
8995
}
9096
}

tools/workbench/src/test/java/org/eclipse/rdf4j/workbench/commands/AddServletTest.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,36 @@ void doPostIncludesIsolationLevelBindingInErrorResponse() throws Exception {
178178
.contains(">READ_COMMITTED<");
179179
}
180180

181+
@Test
182+
void doPostErrorIncludesIsolationLevelOptions() throws Exception {
183+
AddServlet servlet = new RecordingAddServlet();
184+
185+
WorkbenchRequest request = mock(WorkbenchRequest.class);
186+
when(request.getParameter("baseURI")).thenReturn("http://example/base");
187+
when(request.getParameter("Content-Type")).thenReturn(null);
188+
when(request.isParameterPresent("context")).thenReturn(false);
189+
when(request.isParameterPresent("url")).thenReturn(false);
190+
when(request.getContentParameter()).thenReturn(new ByteArrayInputStream(new byte[0]));
191+
when(request.getContentFileName()).thenReturn("data.ttl");
192+
when(request.getParameter("transaction-setting__org.eclipse.rdf4j.common.transaction.IsolationLevel"))
193+
.thenReturn("SNAPSHOT");
194+
195+
HttpServletResponse response = mock(HttpServletResponse.class);
196+
RecordingServletOutputStream outputStream = new RecordingServletOutputStream();
197+
when(response.getOutputStream()).thenReturn(outputStream);
198+
199+
assertThatCode(() -> servlet.doPost(request, response, "transformations")).doesNotThrowAnyException();
200+
201+
String output = outputStream.asString();
202+
assertThat(output)
203+
.contains("<binding name='isolation-level-option'>")
204+
.contains("<binding name='isolation-level-option-label'>")
205+
.contains(">READ_COMMITTED<")
206+
.contains(">SNAPSHOT<")
207+
.contains(">Read Committed<")
208+
.contains(">Snapshot<");
209+
}
210+
181211
@Test
182212
void serviceEmitsSelectedIsolationLevelBinding() throws Exception {
183213
AddServlet servlet = new RecordingAddServlet();

0 commit comments

Comments
 (0)