Skip to content

Commit

Permalink
Add support for numeric indexes. (#225)
Browse files Browse the repository at this point in the history
  • Loading branch information
david-waltermire authored Oct 13, 2023
1 parent d34eeeb commit 77220a4
Show file tree
Hide file tree
Showing 27 changed files with 368 additions and 29 deletions.
2 changes: 1 addition & 1 deletion core/metaschema
Submodule metaschema updated 285 files
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,15 @@ public interface IAssemblyDefinition
*/
String getRootName();

/**
* Get the root index to use for binary data, if this assembly is a top-level
* root.
*
* @return the root index if provided and this assembly is a top-level root, or
* {@code null} otherwise
*/
Integer getRootIndex();

/**
* Get the XML qualified name to use in XML as the root element.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import javax.xml.namespace.QName;

import edu.umd.cs.findbugs.annotations.NonNull;
import edu.umd.cs.findbugs.annotations.Nullable;

/**
* This marker interface indicates that the instance has a flag, field, or
Expand Down Expand Up @@ -104,6 +105,12 @@ default String toCoordinates() {
definition.isInline() ? 0 : definition.hashCode());
}

@Override
default Integer getIndex() {
// does not have an index
return null;
}

@Override
@NonNull
default String getEffectiveName() {
Expand All @@ -116,6 +123,18 @@ default String getEffectiveName() {
return result;
}

@Override
@Nullable
default Integer getEffectiveIndex() {
Integer result = getUseIndex();
if (result == null) {
// fall back to the definition
IDefinition def = getDefinition();
result = def.getEffectiveIndex();
}
return result;
}

@Override
default String getEffectiveFormalName() {
String result = getFormalName();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,22 @@ default String getJsonName() {
return getEffectiveName();
}

/**
* Retrieve the name of the model element.
*
* @return the name
*/
@NonNull
String getName();

/**
* Retrieve the name to use for the model element, instead of the name.
*
* @return the use name or {@code null} if no use name is defined
*/
@Nullable
String getUseName();

/**
* Get the name to use based on the provided names. This method will return the
* use name provided by {@link #getUseName()} if the call is not {@code null},
Expand All @@ -174,18 +190,24 @@ default String getEffectiveName() {
}

/**
* Retrieve the name of the model element.
* Retrieve the index value to use for binary naming.
*
* @return the name
* @return the name index or {@code null} if no name index is defined
*/
@NonNull
String getName();
@Nullable
Integer getIndex();

/**
* Retrieve the name to use for the model element, instead of the name.
* Retrieve the index value to use for binary naming, instead of the name.
*
* @return the use name or {@code null} if no use name is defined
* @return the use name index or {@code null} if no use name index is defined
*/
@Nullable
String getUseName();
Integer getUseIndex();

@Nullable
default Integer getEffectiveIndex() {
@Nullable Integer useIndex = getUseIndex();
return useIndex == null ? getIndex() : useIndex;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,19 @@ public String getName() {

@Override
public String getUseName() {
return getXmlAssembly().isSetUseName() ? getXmlAssembly().getUseName() : null;
return getXmlAssembly().isSetUseName() ? getXmlAssembly().getUseName().getStringValue() : null;
}

@Override
public Integer getUseIndex() {
Integer retval = null;
if (getXmlAssembly().isSetUseName()) {
AssemblyReferenceType.UseName useName = getXmlAssembly().getUseName();
if (useName.isSetIndex()) {
retval = useName.getIndex().intValue();
}
}
return retval;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,19 @@ public String getName() {

@Override
public String getUseName() {
return getXmlField().isSetUseName() ? getXmlField().getUseName() : null;
return getXmlField().isSetUseName() ? getXmlField().getUseName().getStringValue() : null;
}

@Override
public Integer getUseIndex() {
Integer retval = null;
if (getXmlField().isSetUseName()) {
FieldReferenceType.UseName useName = getXmlField().getUseName();
if (useName.isSetIndex()) {
retval = useName.getIndex().intValue();
}
}
return retval;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,19 @@ public boolean isRequired() {

@Override
public String getUseName() {
return getXmlFlag().isSetUseName() ? getXmlFlag().getUseName() : null;
return getXmlFlag().isSetUseName() ? getXmlFlag().getUseName().getStringValue() : null;
}

@Override
public Integer getUseIndex() {
Integer retval = null;
if (getXmlFlag().isSetUseName()) {
FlagReferenceType.UseName useName = getXmlFlag().getUseName();
if (useName.isSetIndex()) {
retval = useName.getIndex().intValue();
}
}
return retval;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,9 +130,26 @@ public String getName() {
return ObjectUtils.requireNonNull(getXmlAssembly().getName());
}

@Override
public Integer getIndex() {
return getXmlAssembly().isSetIndex() ? getXmlAssembly().getIndex().intValue() : null;
}

@Override
public String getUseName() {
return getXmlAssembly().isSetUseName() ? getXmlAssembly().getUseName() : null;
return getXmlAssembly().isSetUseName() ? getXmlAssembly().getUseName().getStringValue() : null;
}

@Override
public Integer getUseIndex() {
Integer retval = null;
if (getXmlAssembly().isSetUseName()) {
GlobalAssemblyDefinitionType.UseName useName = getXmlAssembly().getUseName();
if (useName.isSetIndex()) {
retval = useName.getIndex().intValue();
}
}
return retval;
}

@Override
Expand All @@ -159,7 +176,19 @@ public boolean isRoot() {

@Override
public String getRootName() {
return getXmlAssembly().isSetRootName() ? getXmlAssembly().getRootName() : null;
return getXmlAssembly().isSetRootName() ? getXmlAssembly().getRootName().getStringValue() : null;
}

@Override
public Integer getRootIndex() {
Integer retval = null;
if (getXmlAssembly().isSetRootName()) {
GlobalAssemblyDefinitionType.RootName rootName = getXmlAssembly().getRootName();
if (rootName.isSetIndex()) {
retval = rootName.getIndex().intValue();
}
}
return retval;
}

@SuppressWarnings("null")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,9 +140,26 @@ public String getName() {
return getXmlField().getName();
}

@Override
public Integer getIndex() {
return getXmlField().isSetIndex() ? getXmlField().getIndex().intValue() : null;
}

@Override
public String getUseName() {
return getXmlField().isSetUseName() ? getXmlField().getUseName() : null;
return getXmlField().isSetUseName() ? getXmlField().getUseName().getStringValue() : null;
}

@Override
public Integer getUseIndex() {
Integer retval = null;
if (getXmlField().isSetUseName()) {
GlobalFieldDefinitionType.UseName useName = getXmlField().getUseName();
if (useName.isSetIndex()) {
retval = useName.getIndex().intValue();
}
}
return retval;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,11 +140,24 @@ public String getName() {
return getXmlFlag().getName();
}

@Override
public Integer getIndex() {
return getXmlFlag().isSetIndex() ? getXmlFlag().getIndex().intValue() : null;
}

@Override
public String getUseName() {
String retval = getXmlFlag().getUseName();
if (retval == null) {
retval = getName();
return getXmlFlag().isSetUseName() ? getXmlFlag().getUseName().getStringValue() : null;
}

@Override
public Integer getUseIndex() {
Integer retval = null;
if (getXmlFlag().isSetUseName()) {
GlobalFlagDefinitionType.UseName useName = getXmlFlag().getUseName();
if (useName.isSetIndex()) {
retval = useName.getIndex().intValue();
}
}
return retval;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,11 @@ public String getName() {
return getXmlAssembly().getName();
}

@Override
public Integer getIndex() {
return getXmlAssembly().isSetIndex() ? getXmlAssembly().getIndex().intValue() : null;
}

@Override
public String getGroupAsName() {
return getXmlAssembly().isSetGroupAs() ? getXmlAssembly().getGroupAs().getName() : null;
Expand Down Expand Up @@ -170,6 +175,12 @@ public String getUseName() {
return null;
}

@Override
public Integer getUseIndex() {
// an inline definition doesn't have a use name index
return null;
}

@Override
public Object getValue(@NonNull Object parentValue) {
// there is no value
Expand Down Expand Up @@ -250,12 +261,23 @@ public String getName() {
return XmlInlineAssemblyDefinition.this.getName();
}

@Override
public Integer getIndex() {
return XmlInlineAssemblyDefinition.this.getIndex();
}

@Override
public String getUseName() {
// always use the name instead
return null;
}

@Override
public Integer getUseIndex() {
// always use the name index instead
return null;
}

@Override
public boolean isRoot() {
// a local assembly is never a root
Expand All @@ -268,6 +290,12 @@ public String getRootName() {
return null;
}

@Override
public Integer getRootIndex() {
// a local assembly is never a root
return null;
}

@SuppressWarnings("null")
@Override
public XmlFlagContainerSupport getFlagContainer() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,11 @@ public String getName() {
return getXmlField().getName();
}

@Override
public Integer getIndex() {
return getXmlField().isSetIndex() ? getXmlField().getIndex().intValue() : null;
}

@Override
public String getGroupAsName() {
return getXmlField().isSetGroupAs() ? getXmlField().getGroupAs().getName() : null;
Expand Down Expand Up @@ -188,6 +193,12 @@ public String getUseName() {
return null;
}

@Override
public Integer getUseIndex() {
// an inline definition doesn't have a use name index
return null;
}

@Override
public Object getValue(@NonNull Object parentValue) {
// there is no value
Expand Down Expand Up @@ -318,12 +329,23 @@ public String getName() {
return XmlInlineFieldDefinition.this.getName();
}

@Override
public Integer getIndex() {
return XmlInlineFieldDefinition.this.getIndex();
}

@Override
public String getUseName() {
// always use the name instead
return null;
}

@Override
public Integer getUseIndex() {
// always use the name index instead
return null;
}

@SuppressWarnings("null")
@Override
public XmlFlagContainerSupport getFlagContainer() {
Expand Down
Loading

0 comments on commit 77220a4

Please sign in to comment.