diff --git a/javasrc/tool/org/etsi/its/tool/elvior/LibItsMapemSpatem_asn1.java b/javasrc/tool/org/etsi/its/tool/elvior/LibItsMapemSpatem_asn1.java index c3e85e8549c205aa1b4a0724ab2b1c8d9476587a..b920a8d38e0fe893e3ccfa53a9e758e148ee88d2 100644 --- a/javasrc/tool/org/etsi/its/tool/elvior/LibItsMapemSpatem_asn1.java +++ b/javasrc/tool/org/etsi/its/tool/elvior/LibItsMapemSpatem_asn1.java @@ -20,19 +20,41 @@ public class LibItsMapemSpatem_asn1 extends LibIts_asn1 { _encodingName = "MAPEM_SPATEM_ETSI"; } + @Override + public TriMessage encode(final Value template) { + _logger.entering("LibItsMapemSpatem_asn1", "encode", template.getType().getName()); + + TriMessage result; + String type = String.format("%s.%s", _encodingName, template.getType().getName()); + if (template.getType().getName().endsWith("SREM")) { + _encodingName = "MAPEM_PDU_Descriptions"; + result = super.encode(template); + } else { + _encodingName = "SPATEM_PDU_Descriptions"; + result = super.encode(template); + } + _encodingName = "MAPEM_SPATEM_ETSI"; + + return result; + } + @Override public Value decode(final TriMessage message, final Type decodingHypothesis) { _logger.entering("LibItsMapemSpatem_asn1", "decode", decodingHypothesis.getName()); + Value result; if (decodingHypothesis.getName().endsWith("MAPEM")) { Type type = getTypeForName("MAPEM_PDU_Descriptions.MAPEM"); - return super.decode(message, type); - } else if (decodingHypothesis.getName().endsWith("SPATEM")) { + _encodingName = "MAPEM_PDU_Descriptions"; + result = super.decode(message, type); + } else { Type type = getTypeForName("SPATEM_PDU_Descriptions.SPATEM"); - return super.decode(message, type); + _encodingName = "SPATEM_PDU_Descriptions"; + result = super.decode(message, type); } + _encodingName = "MAPEM_SPATEM_ETSI"; - return super.decode(message, decodingHypothesis); + return result; } } // End of class LibItsMapemSpatem_asn1 diff --git a/javasrc/tool/org/etsi/its/tool/elvior/LibItsSremSsem_asn1.java b/javasrc/tool/org/etsi/its/tool/elvior/LibItsSremSsem_asn1.java index 23859efb645191873a9ddee95f050207369c0b6c..bf78554ad765ffb18e2fd204d05523a8a112d985 100644 --- a/javasrc/tool/org/etsi/its/tool/elvior/LibItsSremSsem_asn1.java +++ b/javasrc/tool/org/etsi/its/tool/elvior/LibItsSremSsem_asn1.java @@ -24,15 +24,31 @@ public class LibItsSremSsem_asn1 extends LibIts_asn1 { public Value decode(final TriMessage message, final Type decodingHypothesis) { _logger.entering("LibItsSremSsem_asn1", "decode", decodingHypothesis.getName()); - if (decodingHypothesis.getName().endsWith("sremPacket")) { - Type type = getTypeForName("SREM_PDU_Descriptions.MAPEM"); + if (decodingHypothesis.getName().endsWith("SREM")) { + Type type = getTypeForName("SREM_PDU_Descriptions.SREM"); return super.decode(message, type); - } else if (decodingHypothesis.getName().endsWith("ssemPacket")) { - Type type = getTypeForName("SSEM_PDU_Descriptions.SPATEM"); + } else { + Type type = getTypeForName("SSEM_PDU_Descriptions.SSEM"); return super.decode(message, type); } + } + + @Override + public TriMessage encode(final Value template) { + _logger.entering("LibItsSremSsem_asn1", "encode", template.getType().getName()); + + TriMessage result; + String type = String.format("%s.%s", _encodingName, template.getType().getName()); + if (template.getType().getName().endsWith("SREM")) { + _encodingName = "SREM_PDU_Descriptions"; + result = super.encode(template); + } else { + _encodingName = "SREM_PDU_Descriptions"; + result = super.encode(template); + } + _encodingName = "SREM_SSEM_ETSI"; - return super.decode(message, decodingHypothesis); + return result; } } // End of class LibItsSremSsem_asn1 diff --git a/javasrc/tool/org/etsi/its/tool/elvior/LibIts_asn1.java b/javasrc/tool/org/etsi/its/tool/elvior/LibIts_asn1.java index 2d85d8b7257de835a8abf9caba8af1a1dc1a898b..504f321eb509364728de6d8c8568778d1b296666 100644 --- a/javasrc/tool/org/etsi/its/tool/elvior/LibIts_asn1.java +++ b/javasrc/tool/org/etsi/its/tool/elvior/LibIts_asn1.java @@ -59,16 +59,7 @@ public class LibIts_asn1 implements TciCDProvided { msg.setEncodedMessage(message.getEncodedMessage()); if (_logger.isLoggable(Level.ALL)) ByteHelper.dump("LibIts_asn1.decode: ", msg.getEncodedMessage()); - String type = null; - if (_encodingName.equals("MAPEM_SPATEM_ETSI")) { - if (decodingHypothesis.getName().endsWith("MAPEM")) { - type = String.format("%s.%s", "MAPEM_PDU_Descriptions", decodingHypothesis.getName()); - } else { - type = String.format("%s.%s", "SPATEM_PDU_Descriptions", decodingHypothesis.getName()); - } - } else { - type = String.format("%s.%s", _encodingName, decodingHypothesis.getName()); - } + String type = String.format("%s.%s", _encodingName, decodingHypothesis.getName()); _logger.info("Type: " + type); Type asnOriginalType = getTypeForName(type); // Check which type class the decoding hypothesis is of @@ -92,17 +83,17 @@ public class LibIts_asn1 implements TciCDProvided { internalASNEncodecValue = (RecordValue)asnOriginalType.newInstance(); String[] fields = ((RecordValue)internalASNEncodecValue).getFieldNames(); RecordValue asn1Value = (RecordValue)template; - for(String field: fields) { - _logger.info(String.format("Process field %s", field)); - Value fieldValue = asn1Value.getField(field); - if(fieldValue.notPresent()) { - _logger.info(String.format("Field %s was omitted", field)); - ((RecordValue)internalASNEncodecValue).setFieldOmitted(field); - } else { - _logger.info(String.format("Field %s was added", field)); - ((RecordValue)internalASNEncodecValue).setField(field, fieldValue); - } - } // End of 'for' statement + for(String field: fields) { + _logger.info(String.format("Process field %s", field)); + Value fieldValue = asn1Value.getField(field); + if(fieldValue.notPresent()) { + _logger.info(String.format("Field %s was omitted", field)); + ((RecordValue)internalASNEncodecValue).setFieldOmitted(field); + } else { + _logger.info(String.format("Field %s was added", field)); + ((RecordValue)internalASNEncodecValue).setField(field, fieldValue); + } + } // End of 'for' statement break; case TciTypeClass.INTEGER: internalASNEncodecValue = (IntegerValueEx)asnOriginalType.newInstance();