diff --git a/api/src/org/labkey/api/action/BaseApiAction.java b/api/src/org/labkey/api/action/BaseApiAction.java index 0ad51280c21..6bce922f6b4 100644 --- a/api/src/org/labkey/api/action/BaseApiAction.java +++ b/api/src/org/labkey/api/action/BaseApiAction.java @@ -341,7 +341,7 @@ private FormAndErrors
defaultPopulateForm() throws Exception saveRequestedApiVersion(getViewContext().getRequest(), null); BindException errors = defaultBindParameters(getPropertyValues()); - FORM form = (FORM)errors.getTarget(); + FORM form = (errors.hasErrors() && getCommandClass().isRecord()) ? null : (FORM) errors.getTarget(); return new FormAndErrors<>(form, errors); } @@ -468,7 +468,8 @@ private FormAndErrors populateJSONObjectForm() throws Exception { PropertyValues values = null == jsonObj ? new MutablePropertyValues() : new JsonPropertyValues(jsonObj); BindException errors = defaultBindParameters(values); - return new FormAndErrors<>((FORM)errors.getTarget(), errors); + FORM form = errors.hasErrors() ? null : (FORM) errors.getTarget(); + return new FormAndErrors<>(form, errors); } FORM form = getCommand(); diff --git a/api/src/org/labkey/api/action/FormViewAction.java b/api/src/org/labkey/api/action/FormViewAction.java index f3ddb11c5c5..d64eaf8823d 100644 --- a/api/src/org/labkey/api/action/FormViewAction.java +++ b/api/src/org/labkey/api/action/FormViewAction.java @@ -65,7 +65,7 @@ public final ModelAndView handleRequest() throws Exception try (Timing ignored = MiniProfiler.step("bind")) { errors = bindParameters(getPropertyValues()); - form = (FORM)errors.getTarget(); + form = (errors.hasErrors() && getCommandClass().isRecord()) ? null : (FORM) errors.getTarget(); } return handleRequest(form, errors); diff --git a/api/src/org/labkey/api/data/RecordFactory.java b/api/src/org/labkey/api/data/RecordFactory.java index fa5b7be796a..f2fc3640dc2 100644 --- a/api/src/org/labkey/api/data/RecordFactory.java +++ b/api/src/org/labkey/api/data/RecordFactory.java @@ -75,7 +75,7 @@ public RecordFactory(Class clazz) } catch (ConversionException e) { - throw new IllegalArgumentException("Failed to convert property value of type '" + value.getClass().getName() + "' to required type '" + p.getType() + "' for property '" + p.getName() + "'; " + e.getMessage()); + throw new IllegalArgumentException("Failed to convert property value of type '" + value.getClass().getName() + "' to required type '" + p.getType().getName() + "' for property '" + p.getName() + "'; " + e.getMessage()); } }).toArray(); @@ -95,7 +95,7 @@ public RecordFactory(Class clazz) throw e; // Unclear what the problem is, so just re-throw if (missingPrimitiveParameters.size() == 1) throw new IllegalArgumentException("Primitive parameter \"" + missingPrimitiveParameters.getFirst() + "\" is required"); - throw new IllegalArgumentException("One or more primitive parameters are missing. Primitive parameters include: " + missingPrimitiveParameters); + throw new IllegalArgumentException("Primitive parameters are missing: " + missingPrimitiveParameters); } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) { diff --git a/api/src/org/labkey/api/security/roles/EditorRole.java b/api/src/org/labkey/api/security/roles/EditorRole.java index 1bc3b3ea2ed..cf8771a7b3b 100644 --- a/api/src/org/labkey/api/security/roles/EditorRole.java +++ b/api/src/org/labkey/api/security/roles/EditorRole.java @@ -24,7 +24,7 @@ public class EditorRole extends EditorWithoutDeleteRole { - protected static Collection> PERMISSIONS = Stream.concat( + static final Collection> PERMISSIONS = Stream.concat( EditorWithoutDeleteRole.PERMISSIONS.stream(), Stream.of( DeletePermission.class, diff --git a/api/src/org/labkey/api/security/roles/EditorWithoutDeleteRole.java b/api/src/org/labkey/api/security/roles/EditorWithoutDeleteRole.java index 082a78c7ea4..7fc4fe6c39a 100644 --- a/api/src/org/labkey/api/security/roles/EditorWithoutDeleteRole.java +++ b/api/src/org/labkey/api/security/roles/EditorWithoutDeleteRole.java @@ -33,7 +33,7 @@ public class EditorWithoutDeleteRole extends AbstractRole { - protected static Collection> PERMISSIONS = Stream.concat( + static final Collection> PERMISSIONS = Stream.concat( AuthorRole.PERMISSIONS.stream(), Stream.of( EditSharedReportPermission.class,