Skip to content

Commit 65baa52

Browse files
Merge 25.9 to develop
2 parents 5d82167 + a9b54bc commit 65baa52

5 files changed

Lines changed: 13 additions & 9 deletions

File tree

api/src/org/labkey/api/exp/property/Lookup.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public Lookup()
3939
public Lookup(Container c, String schema, String query)
4040
{
4141
_container = c;
42-
_schemaKey = null == schema ? null : SchemaKey.fromString(schema);
42+
_schemaKey = SchemaKey.fromString(schema);
4343
_queryName = query;
4444
}
4545

api/src/org/labkey/api/query/QueryKey.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.fasterxml.jackson.annotation.JsonValue;
1919
import org.apache.commons.lang3.StringUtils;
2020
import org.jetbrains.annotations.NotNull;
21+
import org.jetbrains.annotations.Nullable;
2122
import org.labkey.api.util.PageFlowUtil;
2223

2324
import java.io.Serializable;
@@ -92,7 +93,7 @@ static protected <T extends QueryKey<T>> T decode(Factory<T> factory, String div
9293
return ret;
9394
}
9495

95-
static protected <T extends QueryKey<T>> T fromString(Factory<T> factory, String divider, String str)
96+
static protected <T extends QueryKey<T>> T fromString(Factory<T> factory, String divider, @Nullable String str)
9697
{
9798
if (str == null)
9899
return null;

api/src/org/labkey/api/query/SchemaKey.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.fasterxml.jackson.annotation.JsonCreator;
1919
import org.apache.commons.beanutils.ConversionException;
2020
import org.jetbrains.annotations.NotNull;
21+
import org.jetbrains.annotations.Nullable;
2122
import org.junit.Assert;
2223
import org.junit.Test;
2324

@@ -53,7 +54,7 @@ static public SchemaKey decode(String str)
5354
* parts of the SchemaKey, and will enable us to maintain flexibility to change the
5455
* escaping algorithm.
5556
*/
56-
static public SchemaKey fromString(String str)
57+
static public SchemaKey fromString(@Nullable String str)
5758
{
5859
return QueryKey.fromString(FACTORY, DIVIDER, str);
5960
}

issues/src/org/labkey/issue/IssuesController.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -752,7 +752,7 @@ public List<IssuesForm> getIssueForms()
752752
for (String prop : rec.keySet())
753753
{
754754
Object value = rec.get(prop);
755-
stringMap.put(prop, value.toString());
755+
stringMap.put(prop, JSONObject.NULL.equals(value) ? null : value.toString());
756756
}
757757
form.setStrings(stringMap);
758758
_issueForms.add(form);
@@ -817,11 +817,13 @@ public void validateForm(IssuesApiForm form, Errors errors)
817817
Map<String, Object> prevIssueProps = prevIssue == null ? Collections.emptyMap() : prevIssue.getProperties();
818818

819819
Map<String, String> stringMap = new CaseInsensitiveHashMap<>(issuesForm.getStrings());
820-
for (PropertyStorageSpec prop : kind.getRequiredProperties())
820+
for (DomainProperty prop : issueListDef.getDomain(getUser()).getProperties())
821821
{
822822
if (!IssueDefDomainKind.RESOLUTION_LOOKUP.equalsIgnoreCase(prop.getName()))
823823
stringMap.computeIfAbsent(prop.getName(), (propName) -> Objects.toString(prevIssueProps.get(propName), null));
824824
}
825+
// Be sure that the posted values take precedence, even if they're null
826+
stringMap.putAll(issuesForm.getStrings());
825827
issuesForm.setStrings(stringMap);
826828
}
827829
IssueObject issue = issuesForm.getBean();
@@ -844,7 +846,7 @@ public ApiResponse execute(IssuesApiForm form, BindException errors) throws Exce
844846
{
845847
Issue.action action = getAction(issuesForm);
846848

847-
if (action != Issue.action.insert)
849+
if (action != Issue.action.insert)
848850
{
849851
// if we are updating an existing issue pull in existing values
850852
IssueObject prevIssue = IssueManager.getIssue(getContainer(), getUser(), issuesForm.getIssueId());

issues/src/org/labkey/issue/model/IssueListDef.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.labkey.api.issues.IssuesSchema;
3939
import org.labkey.api.query.BatchValidationException;
4040
import org.labkey.api.query.FieldKey;
41+
import org.labkey.api.query.SchemaKey;
4142
import org.labkey.api.security.Group;
4243
import org.labkey.api.security.SecurityManager;
4344
import org.labkey.api.security.User;
@@ -46,7 +47,6 @@
4647
import org.labkey.issue.query.IssueDefDomainKind;
4748

4849
import java.util.Collection;
49-
import java.util.HashSet;
5050
import java.util.Map;
5151
import java.util.Set;
5252

@@ -158,7 +158,7 @@ public AbstractIssuesListDefDomainKind getDomainKind()
158158

159159
private static String generateDomainURI(Container c, User user, String name, String kindName)
160160
{
161-
DomainKind domainKind = PropertyService.get().getDomainKindByName(kindName);
161+
DomainKind<?> domainKind = PropertyService.get().getDomainKindByName(kindName);
162162
return domainKind.generateDomainURI(IssuesSchema.getInstance().getSchemaName(), name, c, user);
163163
}
164164

@@ -296,7 +296,7 @@ private void ensureDomainProperties(Domain domain, AbstractIssuesListDefDomainKi
296296
if (foreignKeyMap.containsKey(spec.getName()))
297297
{
298298
PropertyStorageSpec.ForeignKey fk = foreignKeyMap.get(spec.getName());
299-
Lookup lookup = new Lookup(domain.getContainer(), fk.getSchemaName(), domainKind.getLookupTableName(getName(), fk.getTableName()));
299+
Lookup lookup = new Lookup(domain.getContainer(), SchemaKey.fromString(fk.getSchemaName()), domainKind.getLookupTableName(getName(), fk.getTableName()));
300300

301301
prop.setLookup(lookup);
302302
}

0 commit comments

Comments
 (0)