Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
2b62d6a
Issue 53586: DomainUtil.createUniquePropertyURI to replace non AlphaN…
cnathe Aug 7, 2025
69c5875
Try using LsidManager.getLsidPrefixDbSeq() instead of including the p…
cnathe Aug 7, 2025
2bb36e5
Merge branch 'develop' into fb_propertyURILength
cnathe Aug 8, 2025
d254d2e
DomainImpl.addProperty to use DomainUtil.createUniquePropertyURI()
cnathe Aug 8, 2025
326cb82
use DomainUtil.createUniquePropertyURI()
cnathe Aug 8, 2025
80ea02b
use DomainUtil.createUniquePropertyURI()
cnathe Aug 8, 2025
d5cacd9
remove unused method
cnathe Aug 8, 2025
c5f27cb
Merge branch 'develop' into fb_propertyURILength
cnathe Aug 13, 2025
5494d5f
use DomainUtil.createUniquePropertyURI()
cnathe Aug 13, 2025
6dc5187
Merge branch 'develop' into fb_propertyURILength
cnathe Aug 14, 2025
4df4567
Merge branch 'develop' into fb_propertyURILength
cnathe Aug 14, 2025
3376dd0
Merge branch 'develop' into fb_propertyURILength
cnathe Aug 15, 2025
4d3921f
Merge branch 'develop' into fb_propertyURILength
cnathe Aug 18, 2025
130b9d1
Merge branch 'develop' into fb_propertyURILength
cnathe Aug 18, 2025
eccbdd3
DomainUtil.createUniquePropertyURI to use CaseInsensitiveHashSet
cnathe Aug 18, 2025
a5375ed
Merge branch 'develop' into fb_propertyURILength
cnathe Aug 18, 2025
54e6b43
DomainUtil.addProperty() usages to use CaseInsensitiveHashSet for pro…
cnathe Aug 18, 2025
eb6c048
Merge branch 'develop' into fb_propertyURILength
cnathe Aug 19, 2025
cfdee71
PropertyController TestCase fix for setup and cleanup of Domain
cnathe Aug 19, 2025
7f727ad
Merge branch 'develop' into fb_propertyURILength
cnathe Aug 19, 2025
74ccfba
Merge branch 'develop' into fb_propertyURILength
cnathe Aug 20, 2025
ba466af
Nab test fix for SQL selects that were looking for run properties by …
cnathe Aug 20, 2025
62f8409
Merge branch 'develop' into fb_propertyURILength
cnathe Aug 21, 2025
8af1af7
Domain.addProperty method with option to provide your own propURISuffix
cnathe Aug 21, 2025
b29e72f
DataIteratorUtil._createTableMap to not include PropertyURI suffix as…
cnathe Aug 21, 2025
9404ebe
add issue number for XarExporter.getPropertyName
cnathe Aug 21, 2025
f28eae2
VocabularyDomainKind propertyURI to continue using field name as suffix
cnathe Aug 21, 2025
f303565
VocabularyDomainKind propertyURI test case to check for "ends with fi…
cnathe Aug 21, 2025
4b2bac4
Move Lsid.encodePart() within addProperty()
cnathe Aug 22, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions api/src/org/labkey/api/dataiterator/DataIteratorUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -247,11 +247,7 @@ protected static Map<String,Pair<ColumnInfo,MatchType>> _createTableMap(TableInf
{
String uri = col.getPropertyURI();
if (null != uri)
{
targetAliasesMap.put(uri, new Pair<>(col, MatchType.propertyuri));
String propName = uri.substring(uri.lastIndexOf('#')+1);
targetAliasesMap.put(propName, new Pair<>(col, MatchType.alias));
}
}

for (ColumnInfo col : cols)
Expand Down
4 changes: 3 additions & 1 deletion api/src/org/labkey/api/exp/ImportTypesHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.labkey.api.data.PHI;
import org.labkey.api.data.PropertyStorageSpec;
import org.labkey.api.exp.OntologyManager.ImportPropertyDescriptorsList;
import org.labkey.api.exp.property.DomainUtil;
import org.labkey.api.exp.property.IPropertyValidator;
import org.labkey.api.exp.property.ValidatorKind;
import org.labkey.api.gwt.client.DefaultScaleType;
Expand All @@ -49,6 +50,7 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
Expand Down Expand Up @@ -244,7 +246,7 @@ public static ImportPropertyDescriptorsList getImportPropertyDescriptors(Collect
String propertyURI = StringUtils.trimToEmpty(pd.getPropertyURI());
if (propertyURI.isEmpty())
{
pd.setPropertyURI(domainURI + "." + Lsid.encodePart(columnName));
pd.setPropertyURI(DomainUtil.createUniquePropertyURI(domainURI));
}

// try use existing SystemProperty PropertyDescriptor from Shared container.
Expand Down
3 changes: 3 additions & 0 deletions api/src/org/labkey/api/exp/property/Domain.java
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,9 @@ public interface Domain extends IPropertyType
DomainProperty addProperty();
DomainProperty addProperty(PropertyStorageSpec spec);

@Deprecated // Use addProperty(PropertyStorageSpec)
DomainProperty addProperty(PropertyStorageSpec spec, @Nullable String propSuffix);

List<BaseColumnInfo> getColumns(TableInfo sourceTable, ColumnInfo lsidColumn, Container container, User user);

boolean isMutable();
Expand Down
17 changes: 15 additions & 2 deletions api/src/org/labkey/api/exp/property/DomainUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
import org.labkey.api.exp.DomainDescriptor;
import org.labkey.api.exp.ExperimentException;
import org.labkey.api.exp.Lsid;
import org.labkey.api.exp.LsidManager;
import org.labkey.api.exp.OntologyManager;
import org.labkey.api.exp.PropertyDescriptor;
import org.labkey.api.exp.PropertyType;
Expand Down Expand Up @@ -1090,7 +1091,7 @@ public static DomainProperty addProperty(Domain domain, GWTPropertyDescriptor pd
LOG.debug("Adding property for " + pd.getName());
if (StringUtils.isEmpty(pd.getPropertyURI()))
{
String newPropertyURI = createUniquePropertyURI(domain.getTypeURI() + "#" + Lsid.encodePart(pd.getName()), propertyUrisInUse);
String newPropertyURI = createUniquePropertyURI(domain.getTypeURI(), null, propertyUrisInUse);
assert !propertyUrisInUse.contains(newPropertyURI) : "Attempting to assign an existing PropertyURI to a new property";
pd.setPropertyURI(newPropertyURI);
propertyUrisInUse.add(newPropertyURI);
Expand All @@ -1107,8 +1108,20 @@ public static DomainProperty addProperty(Domain domain, GWTPropertyDescriptor pd
return p;
}

private static String createUniquePropertyURI(String base, Set<String> propertyUrisInUse)
public static String createUniquePropertyURI(String typeURI)
{
return createUniquePropertyURI(typeURI, null, new CaseInsensitiveHashSet());
}

public static String createUniquePropertyURI(String typeURI, @Nullable String propSuffix, Set<String> propertyUrisInUse)
{
// Don't use long property names in URIs as it can create strings that are longer than the DB column length when encoded (Issue 53586)
if (propSuffix == null)
propSuffix = String.valueOf(LsidManager.getLsidPrefixDbSeq("Property", 1).next());
else
propSuffix = Lsid.encodePart(propSuffix);

String base = typeURI + "#" + propSuffix;
String candidateURI = base;
int i = 0;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.labkey.api.collections.CaseInsensitiveHashSet;
import org.labkey.api.data.Container;
import org.labkey.api.data.ContainerFilter;
import org.labkey.api.data.DbSchema;
Expand Down Expand Up @@ -325,7 +326,7 @@ public Domain createDomain(GWTDomain<GWTPropertyDescriptor> domain, IssuesDomain
Set<String> lowerReservedNames = reservedNames.stream().map(String::toLowerCase).collect(Collectors.toSet());
Set<String> existingProperties = newDomain.getProperties().stream().map(o -> o.getName().toLowerCase()).collect(Collectors.toSet());
Map<DomainProperty, Object> defaultValues = new HashMap<>();
Set<String> propertyUris = new HashSet<>();
Set<String> propertyUris = new CaseInsensitiveHashSet();

for (GWTPropertyDescriptor pd : properties)
{
Expand Down
3 changes: 2 additions & 1 deletion api/src/org/labkey/api/query/ExtendedTableDomainKind.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.labkey.api.collections.CaseInsensitiveHashSet;
import org.labkey.api.data.Container;
import org.labkey.api.exp.ChangePropertyDescriptorException;
import org.labkey.api.exp.Handler;
Expand Down Expand Up @@ -98,7 +99,7 @@ public Domain createDomain(GWTDomain<GWTPropertyDescriptor> gwtDomain, JSONObjec
List<? extends GWTPropertyDescriptor> properties = gwtDomain.getFields();
Domain newDomain = PropertyService.get().createDomain(container, domainURI, gwtDomain.getName(), templateInfo);

Set<String> propertyUris = new HashSet<>();
Set<String> propertyUris = new CaseInsensitiveHashSet();
Map<DomainProperty, Object> defaultValues = new HashMap<>();
try
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import org.labkey.api.exp.PropertyType;
import org.labkey.api.exp.property.Domain;
import org.labkey.api.exp.property.DomainProperty;
import org.labkey.api.exp.property.DomainUtil;
import org.labkey.api.exp.property.PropertyService;
import org.labkey.api.query.CustomView;
import org.labkey.api.query.QueryDefinition;
Expand All @@ -35,6 +36,7 @@
import org.springframework.validation.BindException;

import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
/*
Expand Down Expand Up @@ -131,13 +133,15 @@ public static DomainProperty addAsDomainProperty(Domain domain, ColumnInfo colum
if (name.contains("/"))
name = name.replace('/', '.');

String propertyURI = DomainUtil.createUniquePropertyURI(domain.getTypeURI());

if (pd != null)
{
PropertyDescriptor newProp = pd.clone();

// initialize so the domain doesn't get upset
newProp.setContainer(domain.getContainer());
newProp.setPropertyURI(getPropertyURI(domain, column));
newProp.setPropertyURI(propertyURI);
newProp.setPropertyId(0);
newProp.setName(name);
newProp.setLabel(column.getLabel());
Expand All @@ -161,16 +165,11 @@ public static DomainProperty addAsDomainProperty(Domain domain, ColumnInfo colum
prop.setType(PropertyService.get().getType(domain.getContainer(), type.getXmlName()));
prop.setDescription(column.getDescription());
prop.setFormat(column.getFormat());
prop.setPropertyURI(getPropertyURI(domain, column));
prop.setPropertyURI(propertyURI);
}
return prop;
}

public static String getPropertyURI(Domain domain, ColumnInfo column)
{
return domain.getTypeURI() + "." + column.getName();
}

@Override
public TableInfo getTableInfoQuerySnapshotDef()
{
Expand Down
14 changes: 3 additions & 11 deletions api/src/org/labkey/api/reports/model/ReportPropsManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import org.labkey.api.exp.PropertyType;
import org.labkey.api.exp.property.Domain;
import org.labkey.api.exp.property.DomainProperty;
import org.labkey.api.exp.property.DomainUtil;
import org.labkey.api.exp.property.PropertyService;
import org.labkey.api.query.ValidationException;
import org.labkey.api.security.User;
Expand All @@ -46,6 +47,7 @@

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;

Expand Down Expand Up @@ -84,11 +86,6 @@ public List<DomainProperty> getProperties(Container container)
return properties;
}

public void createProperty(Container container, User user, String name, String label, PropertyType type) throws Exception
{
ensureProperty(container, user, name, label, type);
}

private Map<String, DomainProperty> getPropertyMap(Container container)
{
Domain domain = getDomain(container, false);
Expand Down Expand Up @@ -120,7 +117,7 @@ public synchronized DomainProperty ensureProperty(Container container, User user
prop.setName(name);
prop.setLabel(label);
prop.setType(PropertyService.get().getType(domain.getContainer(), type.getXmlName()));
prop.setPropertyURI(getPropertyURI(name, container));
prop.setPropertyURI(DomainUtil.createUniquePropertyURI(getDomainURI(container)));

dp = prop;
}
Expand Down Expand Up @@ -209,11 +206,6 @@ private String getDomainURI(@NotNull Container container)
return new Lsid("urn:lsid:labkey.com:" + NAMESPACE_PREFIX + ".Folder-" + container.getRowId() + ':' + TYPE_PROPERTIES).toString();
}

private String getPropertyURI(String propertyName, Container container)
{
return getDomainURI(container) + '#' + propertyName;
}

@Override
public void containerDeleted(Container container, User user)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,6 @@ public Pair<PropertyDescriptor, Object> getFitError(DilutionAssayRun.SampleResul
{
try
{
Lsid fitErrorURI = new Lsid(DilutionDataHandler.NAB_PROPERTY_LSID_PREFIX, getAssay().getProtocol().getName(), DilutionDataHandler.FIT_ERROR_PROPERTY);
PropertyDescriptor fitErrorPd =
_assay.getDataHandler().getPropertyDescriptor(container, getAssay().getProtocol(), DilutionDataHandler.FIT_ERROR_PROPERTY, new HashMap<>());
if (null != fitErrorPd)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,9 @@ private SQLFragment getSelectedCurveFitIC(boolean oorIndicator)
defaultICSQL.append(DilutionManager.getTableInfoNAbSpecimen(), "ns");
defaultICSQL.append(", ");
defaultICSQL.append(ExperimentService.get().getTinfoExperimentRun(), "er");
defaultICSQL.append(" WHERE op.PropertyId = pd.PropertyId AND pd.PropertyURI LIKE '%#" + DilutionAssayProvider.CURVE_FIT_METHOD_PROPERTY_NAME + "' AND ns.RowId = ");
defaultICSQL.append(" WHERE op.PropertyId = pd.PropertyId AND pd.Name = ? ");
defaultICSQL.add(DilutionAssayProvider.CURVE_FIT_METHOD_PROPERTY_NAME);
defaultICSQL.append("AND ns.RowId = ");
defaultICSQL.append(ExprColumn.STR_TABLE_ALIAS);
defaultICSQL.append(".NAbSpecimenID AND er.LSID = o.ObjectURI AND o.ObjectId = op.ObjectId AND er.RowId = ns.RunId)");
defaultICSQL.append("\nWHEN 'Polynomial' THEN ");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,8 @@ private SQLFragment getSelectedCurveFitAUC(boolean positive)
sql.append(OntologyManager.getTinfoPropertyDescriptor(), "pd");
sql.append(", ");
sql.append(ExperimentService.get().getTinfoExperimentRun(), "er");
sql.append(" WHERE op.PropertyId = pd.PropertyId AND pd.PropertyURI LIKE '%#" + DilutionAssayProvider.CURVE_FIT_METHOD_PROPERTY_NAME + "'");
sql.append(" WHERE op.PropertyId = pd.PropertyId AND pd.Name = ?");
sql.add(DilutionAssayProvider.CURVE_FIT_METHOD_PROPERTY_NAME);
sql.append(" AND er.LSID = o.ObjectURI AND o.ObjectId = op.ObjectId AND er.RowId = " + ExprColumn.STR_TABLE_ALIAS + ".RunId)");
sql.append("\nWHEN 'Polynomial' THEN ");
sql.append(ExprColumn.STR_TABLE_ALIAS + ".");
Expand Down
2 changes: 1 addition & 1 deletion assay/src/org/labkey/assay/plate/PlateManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -2349,7 +2349,7 @@ public Container getPlateMetadataDomainContainer(Container container)
if (existingProperties.contains(pd.getName()))
throw new IllegalStateException(String.format("Unable to create field: %s on domain: %s. The field already exists.", pd.getName(), metadataDomain.getTypeURI()));

DomainUtil.addProperty(metadataDomain, pd, new HashMap<>(), new HashSet<>(), null);
DomainUtil.addProperty(metadataDomain, pd, new HashMap<>(), new CaseInsensitiveHashSet(), null);
}
metadataDomain.save(user);
tx.commit();
Expand Down
16 changes: 2 additions & 14 deletions assay/src/org/labkey/assay/plate/PlateMetadataDomainKind.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import org.labkey.api.exp.property.BaseAbstractDomainKind;
import org.labkey.api.exp.property.Domain;
import org.labkey.api.exp.property.DomainProperty;
import org.labkey.api.exp.property.DomainUtil;
import org.labkey.api.exp.property.Lookup;
import org.labkey.api.exp.property.PropertyService;
import org.labkey.api.gwt.client.model.GWTDomain;
Expand Down Expand Up @@ -153,7 +154,7 @@ public void ensureDomainProperties(Domain domain, Container container)
DomainProperty prop = domain.addProperty();

prop.setName(spec.getName());
prop.setPropertyURI(getUniqueURI(typeUri + "#" + spec.getName(), propertyURIs));
prop.setPropertyURI(DomainUtil.createUniquePropertyURI(typeUri, null, propertyURIs));
prop.setRangeURI(spec.getTypeURI());
prop.setScale(spec.getSize());
prop.setRequired(!spec.isNullable());
Expand All @@ -168,19 +169,6 @@ public void ensureDomainProperties(Domain domain, Container container)
}
}

private String getUniqueURI(String uri, Set<String> propertyURIs)
{
String result = uri;
int ordinal = 1;

while (propertyURIs.contains(result))
{
result = String.format("%s-%d", uri, ordinal++);
}
propertyURIs.add(result);
return result;
}

@Override
public String getStorageSchemaName()
{
Expand Down
3 changes: 2 additions & 1 deletion experiment/src/org/labkey/experiment/XarExporter.java
Original file line number Diff line number Diff line change
Expand Up @@ -793,7 +793,8 @@ public void addDataClass(ExpDataClass dataClass) throws ExperimentException
queueDomain(dataClass.getDomain());
}

// Return the "name" portion of the propertyURI after the hash
// Return the "name" portion of the propertyURI after the hash (Issue 30718)
@Deprecated
private String getPropertyName(DomainProperty dp)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This behavior seems strange now. It's not really returning the property name for (most) new-style PropertyURIs

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@labkey-jeckels I agree but I don't think this code can actually be hit for any newly created properties. It is executed for Sample Types that have the parentCol, idCol1, idCol2, idCol3 behavior which is deprecated. I couldn't find a way in the UI to create one of these. I took the XAR file from that issue 30718 and imported it locally and this code did the right thing for those PropertyURIs in the XAR. Thoughts on other ways to test this? Since you can't create these types of Sample Types anymore, I think the code should continue working for any existing property descriptors in those deprecated sample types.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got it. I hadn't looked at the usages. Do you think we should mark this or related methods as deprecated?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I'll take a look

{
String name = dp.getName();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7868,7 +7868,7 @@ public ExpDataClassImpl createDataClass(
lowerReservedNames = emptySet();

Map<DomainProperty, Object> defaultValues = new HashMap<>();
Set<String> propertyUris = new HashSet<>();
Set<String> propertyUris = new CaseInsensitiveHashSet();
List<GWTPropertyDescriptor> calculatedFields = new ArrayList<>();
for (GWTPropertyDescriptor pd : properties)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import org.labkey.api.audit.provider.FileSystemAuditProvider;
import org.labkey.api.cache.Cache;
import org.labkey.api.cache.CacheManager;
import org.labkey.api.collections.CaseInsensitiveHashSet;
import org.labkey.api.collections.LongArrayList;
import org.labkey.api.collections.LongHashMap;
import org.labkey.api.collections.LongHashSet;
Expand Down Expand Up @@ -787,7 +788,7 @@ public ExpSampleTypeImpl createSampleType(Container c, User u, String name, Stri
boolean hasNameProperty = false;
String idUri1 = null, idUri2 = null, idUri3 = null, parentUri = null;
Map<DomainProperty, Object> defaultValues = new HashMap<>();
Set<String> propertyUris = new HashSet<>();
Set<String> propertyUris = new CaseInsensitiveHashSet();
List<GWTPropertyDescriptor> calculatedFields = new ArrayList<>();
for (int i = 0; i < properties.size(); i++)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.Nullable;
import org.json.JSONObject;
import org.labkey.api.collections.CaseInsensitiveHashSet;
import org.labkey.api.data.Container;
import org.labkey.api.data.ContainerType;
import org.labkey.api.data.SQLFragment;
Expand Down Expand Up @@ -159,12 +160,13 @@ public Domain createDomain(GWTDomain domain, JSONObject arguments, Container con
List<GWTPropertyDescriptor> properties = domain.getFields();
Domain vocabularyDomain = PropertyService.get().createDomain(container, domainURI, domain.getName(), templateInfo);

Set<String> propertyUris = new HashSet<>();
Set<String> propertyUris = new CaseInsensitiveHashSet();
Map<DomainProperty, Object> defaultValues = new HashMap<>();
try
{
for (GWTPropertyDescriptor pd : properties)
{
pd.setPropertyURI(DomainUtil.createUniquePropertyURI(vocabularyDomain.getTypeURI(), pd.getName(), propertyUris));
DomainUtil.addProperty(vocabularyDomain, pd, defaultValues, propertyUris, null);
}
vocabularyDomain.save(user);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import org.labkey.api.audit.AuditLogService;
import org.labkey.api.audit.AuditTypeEvent;
import org.labkey.api.collections.CaseInsensitiveHashMap;
import org.labkey.api.collections.CaseInsensitiveHashSet;
import org.labkey.api.collections.Sets;
import org.labkey.api.data.*;
import org.labkey.api.data.dialect.SqlDialect;
Expand Down Expand Up @@ -1281,6 +1282,12 @@ public DomainProperty addProperty()

@Override
public DomainProperty addProperty(PropertyStorageSpec spec)
{
return addProperty(spec, null);
}

@Override
public DomainProperty addProperty(PropertyStorageSpec spec, @Nullable String propSuffix)
{
PropertyDescriptor pd = new PropertyDescriptor();
pd.setContainer(getContainer());
Expand All @@ -1290,7 +1297,7 @@ public DomainProperty addProperty(PropertyStorageSpec spec)
pd.setNullable(spec.isNullable());
// pd.setAutoIncrement(spec.isAutoIncrement()); // always false in PropertyDescriptor
pd.setMvEnabled(spec.isMvEnabled());
pd.setPropertyURI(getTypeURI() + ":field-" + spec.getName());
pd.setPropertyURI(DomainUtil.createUniquePropertyURI(getTypeURI(), propSuffix, new CaseInsensitiveHashSet())); // Issue 53586
pd.setDescription(spec.getDescription());
pd.setImportAliases(spec.getImportAliases());
pd.setScale(spec.getSize());
Expand Down
Loading