nasa / CCDD

CFS Command and Data Dictionary Tool (CCDDT)
79 stars 31 forks source link

Error importing XTCE files #112

Open smcHannah opened 8 months ago

smcHannah commented 8 months ago

The following error occurs when attempting to import XTCE files through the GUI

An unanticipated error occurred; cause 'null' Error trace: CcddDbTableCommandHandler: isRootStructure() line 303 CcddXTCEHandler: importStructureTable() line 1122 CcddXTCEHandler: unbuildSpaceSystems() line 1038 CcddXTCEHandler: importFromFile() line 775 CcddFileIOHandler:importFiles() line 1719 CcddFileIOHandler: execute() line 1460 CcddBackgroundCommand: doInBackground() line 157 CcddBackgroundCommand: doInBackground() line 1

I get this when trying to import the example XTCE format starting on page 208 of the User Guide after replacing all "no-op" with "noop" as it was returning an invalid character error.

I am running CCDD: 2.1.4e (10-31-2023), Java: 1.8.0_391 (64-bit), PostgreSQL 16.

Thank you for your help!

smcHannah commented 8 months ago

This is the XTCE file I used

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<SpaceSystem xmlns="http://www.omg.org/space/xtce" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="example" 
shortDescription="example" 
xsi:schemaLocation="http://www.omg.org/spec/XTCE/20061101 06-11-06.xsd">
 <AncillaryDataSet>
 <AncillaryData name="XML: Application ID">applicationID</AncillaryData>
 <AncillaryData name="XML: Function Code">functionCode</AncillaryData>
 </AncillaryDataSet>
 <Header classification="DOMAIN" date="Wed Sep 28 13:17:58 CDT 2022" 
validationStatus="Working" version="1.0">
 <AuthorSet>
 <Author>rmcclune</Author>
 </AuthorSet>
 <NoteSet>
 <Note>Created: Wed Sep 28 13:17:58 CDT 2022</Note>
 <Note>CCDD Version: 2.0.35 (9-28-2022)</Note>
 <Note>Date: Wed Sep 28 13:17:58 CDT 2022</Note>
 <Note>Project: example</Note>
 <Note>Host: localhost:5432</Note>
 <Note>Endianess: big</Note>
 </NoteSet>
 </Header>
 <SpaceSystem name="ArmCommandPayload" 
shortDescription="ArmCommandPayload">
 <LongDescription>Engine ARM command</LongDescription>
 <Header classification="INTERFACE" validationStatus="Working" 
version="1.0"/>
 <TelemetryMetaData>
 <ParameterTypeSet>
 <EnumeratedParameterType name="arm_Type">
 <UnitSet>
 <Unit>Enumerated</Unit>
 </UnitSet>
 <IntegerDataEncoding bitOrder="mostSignificantBitFirst" 
encoding="unsigned" sizeInBits="1"/>
 <EnumerationList>
 <Enumeration label="Enable" value="0"/>
<Enumeration label="Inhibit" value="1"/>
 </EnumerationList>
 </EnumeratedParameterType>
 </ParameterTypeSet>
 <ParameterSet>
 <Parameter name="arm" parameterTypeRef="arm_Type"/>
 </ParameterSet>
 <ContainerSet>
 <SequenceContainer name="ArmCommandPayload">
 <EntryList>
 <ParameterRefEntry parameterRef="arm"/>
 </EntryList>
 </SequenceContainer>
 </ContainerSet>
 </TelemetryMetaData>
 </SpaceSystem>
 <SpaceSystem name="CmdArgRef_MyCommand" 
shortDescription="CmdArgRef_MyCommand">
 <LongDescription>Command MyCommand argument structure 
references</LongDescription>
 <Header classification="INTERFACE" validationStatus="Working" 
version="1.0"/>
 <TelemetryMetaData>
 <ContainerSet>
 <SequenceContainer name="CmdArgRef_MyCommand">
 <EntryList>
 <ContainerRefEntry containerRef="NoPayload_NoOp/NoOp"/>
 <ContainerRefEntry 
containerRef="ArmCommandPayload_EngineArmEnableInhibit/EngineArmEnableInhibit
"/>
 <ContainerRefEntry 
containerRef="FireCommandPayload_EngineFireEnableInhibit/EngineFireEnableInhi
bit"/>
 <ContainerRefEntry 
containerRef="ThrustCommandPayload_EngineThrustLevel/EngineThrustLevel"/>
 </EntryList>
 </SequenceContainer>
 </ContainerSet>
 </TelemetryMetaData>
 <SpaceSystem name="ArmCommandPayload_EngineArmEnableInhibit" 
shortDescription="CmdArgRef_MyCommand,ArmCommandPayload.EngineArmEnableInhibi
t">
 <LongDescription>Engine ARM command</LongDescription>
 <Header classification="INTERFACE" validationStatus="Working" 
version="1.0"/>
 <TelemetryMetaData>
 <ParameterTypeSet>
 <EnumeratedParameterType name="arm_Type">
 <UnitSet>
 <Unit>Enumerated</Unit>
 </UnitSet>
<IntegerDataEncoding bitOrder="mostSignificantBitFirst" 
encoding="unsigned" sizeInBits="1"/>
 <EnumerationList>
 <Enumeration label="Enable" value="0"/>
<Enumeration label="Inhibit" value="1"/>
 </EnumerationList>
 </EnumeratedParameterType>
 </ParameterTypeSet>
 <ParameterSet>
 <Parameter name="arm" parameterTypeRef="arm_Type"/>
 </ParameterSet>
 <ContainerSet>
 <SequenceContainer name="EngineArmEnableInhibit">
 <EntryList>
 <ParameterRefEntry parameterRef="arm"/>
 </EntryList>
 </SequenceContainer>
 </ContainerSet>
 </TelemetryMetaData>
 </SpaceSystem>
 <SpaceSystem name="FireCommandPayload_EngineFireEnableInhibit" 
shortDescription="CmdArgRef_MyCommand,FireCommandPayload.EngineFireEnableInhi
bit">
 <LongDescription>Engine FIRE command</LongDescription>
 <Header classification="INTERFACE" validationStatus="Working" 
version="1.0"/>
 <TelemetryMetaData>
 <ParameterTypeSet>
 <EnumeratedParameterType name="fire_Type">
 <UnitSet>
 <Unit>Enumerated</Unit>
 </UnitSet>
 <IntegerDataEncoding bitOrder="mostSignificantBitFirst" 
encoding="unsigned" sizeInBits="1"/>
 <EnumerationList>
 <Enumeration label="Enable" value="0"/>
<Enumeration label="Inhibit" value="1"/>
 </EnumerationList>
 </EnumeratedParameterType>
 </ParameterTypeSet>
 <ParameterSet>
 <Parameter name="fire" parameterTypeRef="fire_Type"/>
 </ParameterSet>
 <ContainerSet>
 <SequenceContainer name="EngineFireEnableInhibit">
 <EntryList>
 <ParameterRefEntry parameterRef="fire"/>
 </EntryList>
 </SequenceContainer>
 </ContainerSet>
 </TelemetryMetaData>
 </SpaceSystem>
 <SpaceSystem name="ThrustCommandPayload_EngineThrustLevel" 
shortDescription="CmdArgRef_MyCommand,ThrustCommandPayload.EngineThrustLevel"
>
 <LongDescription>Engine thrust level command</LongDescription>
 <Header classification="INTERFACE" validationStatus="Working" 
version="1.0"/>
 <TelemetryMetaData>
 <ParameterTypeSet>
 <FloatParameterType name="thrust_level_Type" sizeInBits="32">
 <UnitSet>
 <Unit>percent</Unit>
 </UnitSet>
<FloatDataEncoding encoding="IEEE754_1985" 
sizeInBits="32"/>
 <ValidRange maxInclusive="100.0" minInclusive="0.0"/>
 </FloatParameterType>
 </ParameterTypeSet>
 <ParameterSet>
 <Parameter name="thrust_level" 
parameterTypeRef="thrust_level_Type"/>
 </ParameterSet>
 <ContainerSet>
 <SequenceContainer name="EngineThrustLevel">
 <EntryList>
 <ParameterRefEntry parameterRef="thrust_level"/>
 </EntryList>
 </SequenceContainer>
 </ContainerSet>
 </TelemetryMetaData>
 </SpaceSystem>
 <SpaceSystem name="NoPayload_NoOp" 
shortDescription="CmdArgRef_MyCommand,NoPayload.NoOp">
 <LongDescription>noop command</LongDescription>
 <Header classification="INTERFACE" validationStatus="Working" 
version="1.0"/>
 <TelemetryMetaData/>
 </SpaceSystem>
 </SpaceSystem>
 <SpaceSystem name="FireCommandPayload" 
shortDescription="FireCommandPayload">
 <LongDescription>Engine FIRE command</LongDescription>
 <Header classification="INTERFACE" validationStatus="Working" 
version="1.0"/>
 <TelemetryMetaData>
 <ParameterTypeSet>
 <EnumeratedParameterType name="fire_Type">
 <UnitSet>
 <Unit>Enumerated</Unit>
 </UnitSet>
 <IntegerDataEncoding bitOrder="mostSignificantBitFirst" 
encoding="unsigned" sizeInBits="1"/>
 <EnumerationList>
 <Enumeration label="Enable" value="0"/>
<Enumeration label="Inhibit" value="1"/>
 </EnumerationList>
 </EnumeratedParameterType>
 </ParameterTypeSet>
 <ParameterSet>
 <Parameter name="fire" parameterTypeRef="fire_Type"/>
 </ParameterSet>
 <ContainerSet>
 <SequenceContainer name="FireCommandPayload">
 <EntryList>
 <ParameterRefEntry parameterRef="fire"/>
 </EntryList>
 </SequenceContainer>
 </ContainerSet>
 </TelemetryMetaData>
 </SpaceSystem>
 <SpaceSystem name="MyCommand" shortDescription="MyCommand">
 <LongDescription>Commands to be received by the SOL 
app</LongDescription>
 <Header classification="INTERFACE" validationStatus="Working" 
version="1.0"/>
 <CommandMetaData>
 <ArgumentTypeSet>
 <EnumeratedArgumentType name="arm_Type">
 <UnitSet>
 <Unit>Enumerated</Unit>
 </UnitSet>
 <IntegerDataEncoding bitOrder="mostSignificantBitFirst" 
encoding="unsigned" sizeInBits="1"/>
 <EnumerationList>
 <Enumeration label="Enable" value="0"/>
<Enumeration label="Inhibit" value="1"/>
 </EnumerationList>
 </EnumeratedArgumentType>
 <EnumeratedArgumentType name="fire_Type">
 <UnitSet>
 <Unit>Enumerated</Unit>
 </UnitSet>
 <IntegerDataEncoding bitOrder="mostSignificantBitFirst" 
encoding="unsigned" sizeInBits="1"/>
 <EnumerationList>
  <Enumeration label="Enable" value="0"/>
  <Enumeration label="Inhibit" value="1"/>
 </EnumerationList>
 </EnumeratedArgumentType>
 <FloatArgumentType name="thrust_level_Type" sizeInBits="32">
 <UnitSet>
 <Unit>percent</Unit>
 </UnitSet>
 <FloatDataEncoding encoding="IEEE754_1985" sizeInBits="32"/>
 <ValidRangeSet>
 <ValidRange maxExclusive="100.0" minExclusive="0.0"/>
 </ValidRangeSet>
 </FloatArgumentType>
 </ArgumentTypeSet>
 <MetaCommandSet>
 <MetaCommand name="noop">
 <LongDescription>No operation</LongDescription>
 </MetaCommand>
 <MetaCommand name="EngineArm">
 <LongDescription>Arm main engine</LongDescription>
 <ArgumentList>
 <Argument argumentTypeRef="arm_Type" name="arm"/>
 </ArgumentList>
 <CommandContainer name="EngineArm">
 <EntryList>
 <ArgumentRefEntry argumentRef="arm"/>
 </EntryList>
 </CommandContainer>
 </MetaCommand>
 <MetaCommand name="EngineFire">
 <LongDescription>Fire main engine</LongDescription>
 <ArgumentList>
 <Argument argumentTypeRef="fire_Type" name="fire"/>
 </ArgumentList>
 <CommandContainer name="EngineFire">
 <EntryList>
 <ArgumentRefEntry argumentRef="fire"/>
 </EntryList>
 </CommandContainer>
 </MetaCommand>
 <MetaCommand name="EngineThrust">
 <LongDescription>Engine thrust level</LongDescription>
 <ArgumentList>
 <Argument argumentTypeRef="thrust_level_Type" 
name="thrust_level"/>
 </ArgumentList>
 <CommandContainer name="EngineThrust">
 <EntryList>
 <ArgumentRefEntry argumentRef="thrust_level"/>
 </EntryList>
 </CommandContainer>
 </MetaCommand>
 </MetaCommandSet>
 </CommandMetaData>
 </SpaceSystem>
 <SpaceSystem name="MyStructure" shortDescription="MyStructure">
 <Header classification="INTERFACE" validationStatus="Working" 
version="1.0"/>
 <TelemetryMetaData>
 <ParameterTypeSet>
 <FloatParameterType name="latitude_Type" sizeInBits="32">
 <LongDescription>Location: north-south</LongDescription>
 <UnitSet/>
 <FloatDataEncoding encoding="IEEE754_1985" sizeInBits="32"/>
 </FloatParameterType>
 <FloatParameterType name="longitude_Type" sizeInBits="32">
 <LongDescription>Location: east-west</LongDescription>
 <UnitSet/>
 <FloatDataEncoding encoding="IEEE754_1985" sizeInBits="32"/>
 </FloatParameterType>
 <IntegerParameterType name="width_Type" signed="false" 
sizeInBits="16">
 <UnitSet>
 <Unit>meters</Unit>
 </UnitSet>
 <IntegerDataEncoding bitOrder="mostSignificantBitFirst" 
encoding="unsigned" sizeInBits="16"/>
 </IntegerParameterType>
 <IntegerParameterType name="depth_Type" signed="false" 
sizeInBits="16">
 <UnitSet>
 <Unit>meters</Unit>
 </UnitSet>
 <IntegerDataEncoding bitOrder="mostSignificantBitFirst" 
encoding="unsigned" sizeInBits="16"/>
 </IntegerParameterType>
 <IntegerParameterType name="height_Type" signed="false" 
sizeInBits="16">
 <UnitSet>
 <Unit>meters</Unit>
 </UnitSet>
 <IntegerDataEncoding bitOrder="mostSignificantBitFirst" 
encoding="unsigned" sizeInBits="16"/>
 </IntegerParameterType>
 <ArrayParameterType arrayTypeRef="velocity_Type" 
name="velocity_Array" numberOfDimensions="1"/>
 <FloatParameterType name="velocity_Type" sizeInBits="64">
 <UnitSet/>
 <FloatDataEncoding encoding="IEEE754_1985" sizeInBits="64"/>
 </FloatParameterType>
 <EnumeratedParameterType name="engine_arm_Type">
 <LongDescription>Engine armed status</LongDescription>
 <UnitSet/>
 <IntegerDataEncoding bitOrder="mostSignificantBitFirst" 
encoding="unsigned" sizeInBits="1"/>
 <EnumerationList>
 <Enumeration label="Off" value="0"/>
<Enumeration label="Arm" value="1"/>
 </EnumerationList>
 </EnumeratedParameterType>
 <EnumeratedParameterType name="engine_fire_Type">
 <LongDescription>Engine fire status</LongDescription>
 <UnitSet/>
 <IntegerDataEncoding bitOrder="mostSignificantBitFirst" 
encoding="unsigned" sizeInBits="1"/>
 <EnumerationList>
 <Enumeration label="Off" value="0"/>
<Enumeration label="Fire" value="1"/>
 </EnumerationList>
 </EnumeratedParameterType>
 <FloatParameterType name="thrust_level_Type" sizeInBits="32">
 <LongDescription>Engine thrust level</LongDescription>
 <UnitSet>
 <Unit>percent</Unit>
 </UnitSet>
 <FloatDataEncoding encoding="IEEE754_1985" sizeInBits="32"/>
 <ValidRange maxInclusive="100.0" minInclusive="0.0"/>
 </FloatParameterType>
 </ParameterTypeSet>
 <ParameterSet>
 <Parameter name="latitude" parameterTypeRef="latitude_Type"/>
 <Parameter name="longitude" parameterTypeRef="longitude_Type"/>
 <Parameter name="width" parameterTypeRef="width_Type"/>
 <Parameter name="depth" parameterTypeRef="depth_Type"/>
 <Parameter name="height" parameterTypeRef="height_Type"/>
 <Parameter name="velocity" parameterTypeRef="velocity_Array"/>
 <Parameter name="engine_arm" parameterTypeRef="engine_arm_Type"/>
 <Parameter name="engine_fire" 
parameterTypeRef="engine_fire_Type"/>
 <Parameter name="thrust_level" 
parameterTypeRef="thrust_level_Type"/>
 </ParameterSet>
 <ContainerSet>
 <SequenceContainer name="MyStructure">
 <EntryList>
 <ParameterRefEntry parameterRef="latitude"/>
<ParameterRefEntry parameterRef="longitude"/>
<ParameterRefEntry parameterRef="width"/>
<ParameterRefEntry parameterRef="depth"/>
 <ParameterRefEntry parameterRef="height"/>
 <ArrayParameterRefEntry parameterRef="velocity">
 <DimensionList>
 <Dimension>
 <StartingIndex>
 <FixedValue>0</FixedValue>
 </StartingIndex>
<EndingIndex>
 <FixedValue>2</FixedValue>
 </EndingIndex>
 </Dimension>
 </DimensionList>
 </ArrayParameterRefEntry>
<ParameterRefEntry parameterRef="engine_arm"/>
<ParameterRefEntry parameterRef="engine_fire"/>
<ParameterRefEntry parameterRef="thrust_level"/>
 </EntryList>
 </SequenceContainer>
 </ContainerSet>
 </TelemetryMetaData>
 </SpaceSystem>
 <SpaceSystem name="NoPayload" shortDescription="NoPayload">
 <LongDescription>noop command</LongDescription>
 <Header classification="INTERFACE" validationStatus="Working" 
version="1.0"/>
 <TelemetryMetaData/>
 </SpaceSystem>
 <SpaceSystem name="ThrustCommandPayload" 
shortDescription="ThrustCommandPayload">
 <LongDescription>Engine thrust level command</LongDescription>
 <Header classification="INTERFACE" validationStatus="Working" 
version="1.0"/>
 <TelemetryMetaData>
 <ParameterTypeSet>
 <FloatParameterType name="thrust_level_Type" sizeInBits="32">
 <UnitSet>
 <Unit>percent</Unit>
 </UnitSet>
 <FloatDataEncoding encoding="IEEE754_1985" sizeInBits="32"/>
 <ValidRange maxInclusive="100.0" minInclusive="0.0"/>
 </FloatParameterType>
 </ParameterTypeSet>
 <ParameterSet>
 <Parameter name="thrust_level" 
parameterTypeRef="thrust_level_Type"/>
 </ParameterSet>
 <ContainerSet>
 <SequenceContainer name="ThrustCommandPayload">
 <EntryList>
 <ParameterRefEntry parameterRef="thrust_level"/>
 </EntryList>
 </SequenceContainer>
 </ContainerSet>
 </TelemetryMetaData>
 </SpaceSystem>
</SpaceSystem>
smcHannah commented 8 months ago

After creating a new project it is now working and I can't seem to recreate the error

smcHannah commented 7 months ago

Hi I managed to recreate the issue. Here are the steps:

  1. Import XTCE file with "noop" instead of "no-op" (example1.xtce).
  2. Delete all existing tables.
  3. Try import a different XTCE file that creates the following error: "Cannot import from file 'example2.xtce': Parsing error; cause 'null'"
  4. Then try importing the original XTCE file (example1.xtce) and you get the following error: An unanticipated error occurred; cause '0' Error trace: CcddTableTypeHandler: buildAndExecuteUpdates() line 1752 CcddTableTypeHandler: updateTableTypes() line 1530 CcddXTCEHandler: createTableTypeDefinitions() line 977 CcddXTCEHandler: importFromFile() line 760 CcddFileIOHandler: importFiles() line 1719 CcddFileIOHandler: execute() line 1460 CcddBackgroundCommand: doInBackground() line 157 CcddBackgroundCommand: doInBackground() line 1

From here no XTCE files that imported successfully before the null cause parsing error will import successfully into the project and the only way to fix it is to create a new project and import into that one.

KevinMcCluney commented 4 months ago

I cannot duplicate this exception using the current version of CCDD (2.1.7) and the example XTCE file from the latest user's guide (January 2024). I repeated the sequence using different XTCS files without any issues.