diff --git a/api/src/org/labkey/api/assay/AbstractAssayTsvDataHandler.java b/api/src/org/labkey/api/assay/AbstractAssayTsvDataHandler.java index 80178bea4ca..e6f1952bb4d 100644 --- a/api/src/org/labkey/api/assay/AbstractAssayTsvDataHandler.java +++ b/api/src/org/labkey/api/assay/AbstractAssayTsvDataHandler.java @@ -913,7 +913,7 @@ else if (o instanceof MvFieldWrapper) Object remapped = cache.remap(lookupTable, (String)o); if (remapped == null) { - errors.add(new PropertyValidationError("Failed to convert '" + pd.getName() + "': " + o, pd.getName())); + errors.add(new PropertyValidationError("Failed to convert '" + pd.getName() + "': Could not translate value: " + o, pd.getName())); } else if (o != remapped) { diff --git a/api/src/org/labkey/api/data/ConditionalFormat.java b/api/src/org/labkey/api/data/ConditionalFormat.java index fe9f09b6b80..c6b95759902 100644 --- a/api/src/org/labkey/api/data/ConditionalFormat.java +++ b/api/src/org/labkey/api/data/ConditionalFormat.java @@ -33,6 +33,7 @@ import org.labkey.data.xml.ConditionalFormatsType; import java.awt.*; +import java.lang.reflect.InvocationTargetException; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collections; @@ -119,7 +120,7 @@ public String validateFormat(@NotNull ColumnRenderProperties col) { try { - _meetsCriteria(col, "ignored"); + _meetsCriteria(col, newValue(col)); return null; } catch (RuntimeSQLException e) @@ -137,6 +138,20 @@ public String validateFormat(@NotNull ColumnRenderProperties col) } } + // best-effort to create new value instance for validating conditional format parameters + private Object newValue(ColumnRenderProperties col) + { + try + { + return col.getJavaClass().getDeclaredConstructor().newInstance(); + } + catch (ReflectiveOperationException e) + { + // ok + return null; + } + } + @NotNull public String getCssStyle() {