Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Numeric index support #225

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
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