public MessageSchema( final Node schemaNode, final Map<String, Type> typeByNameMap, final Map<Long, Message> messageByIdMap) { this.packageName = getAttributeValue(schemaNode, "package"); this.description = getAttributeValueOrNull(schemaNode, "description"); this.id = Integer.parseInt(getAttributeValue(schemaNode, "id")); this.version = Integer.parseInt(getAttributeValue(schemaNode, "version", "0")); this.semanticVersion = getAttributeValueOrNull(schemaNode, "semanticVersion"); this.byteOrder = getByteOrder(getAttributeValue(schemaNode, "byteOrder", "littleEndian")); this.typeByNameMap = typeByNameMap; this.messageByIdMap = messageByIdMap; final String headerType = getAttributeValueOrNull(schemaNode, "headerType"); this.headerType = null == headerType ? HEADER_TYPE_DEFAULT : headerType; Verify.present(typeByNameMap, this.headerType, "Message header"); ((CompositeType)typeByNameMap.get(this.headerType)).checkForWellFormedMessageHeader(schemaNode); }
/** * Construct a new compositeType from XML Schema. * * @param node from the XML Schema Parsing * @param givenName for this node. * @param referencedName of the type when created from a ref in a composite. * @param compositesPath with the path of composites that represents the levels of composition. * @throws XPathExpressionException if the XPath is invalid. */ public CompositeType( final Node node, final String givenName, final String referencedName, final List<String> compositesPath) throws XPathExpressionException { super(node, givenName, referencedName); this.compositesPath.addAll(compositesPath); this.compositesPath.add(getAttributeValue(node, "name")); final XPath xPath = XPathFactory.newInstance().newXPath(); final NodeList list = (NodeList)xPath.compile(SUB_TYPES_EXP).evaluate(node, NODESET); for (int i = 0, size = list.getLength(); i < size; i++) { final Node subTypeNode = list.item(i); final String subTypeName = XmlSchemaParser.getAttributeValue(subTypeNode, "name"); processType(subTypeNode, subTypeName, null, null); } checkForValidOffsets(node); }
/** * Construct a new Type from XML Schema. Called by subclasses to mostly set common fields * * @param node from the XML Schema Parsing * @param givenName of this node, if null then the attributed name will be used. * @param referencedName of the type when created from a ref in a composite. */ public Type(final Node node, final String givenName, final String referencedName) { if (null == givenName) { name = getAttributeValue(node, "name"); } else { name = givenName; } this.referencedName = referencedName; presence = Presence.get(getAttributeValue(node, "presence", "required")); description = getAttributeValueOrNull(node, "description"); sinceVersion = Integer.parseInt(getAttributeValue(node, "sinceVersion", "0")); deprecated = Integer.parseInt(getAttributeValue(node, "deprecated", "0")); semanticType = getAttributeValueOrNull(node, "semanticType"); offsetAttribute = Integer.parseInt(getAttributeValue(node, "offset", "-1")); }
final String encodingTypeStr = getAttributeValue(node, "encodingType"); else if (Integer.parseInt(getAttributeValue(encodingTypeNode, "length", "1")) != 1) encodingType = PrimitiveType.get(getAttributeValue(encodingTypeNode, "primitiveType"));
/** * Construct a ValidValue given the XML node and the encodingType. * * @param node that contains the validValue * @param encodingType for the enum */ public ValidValue(final Node node, final PrimitiveType encodingType) { name = getAttributeValue(node, "name"); description = getAttributeValueOrNull(node, "description"); value = PrimitiveValue.parse(node.getFirstChild().getNodeValue(), encodingType); sinceVersion = Integer.parseInt(getAttributeValue(node, "sinceVersion", "0")); deprecated = Integer.parseInt(getAttributeValue(node, "deprecated", "0")); checkForValidName(node, name); }
final String refName = XmlSchemaParser.getAttributeValue(subTypeNode, "name"); final String refTypeName = XmlSchemaParser.getAttributeValue(subTypeNode, "type"); final int refOffset = Integer.parseInt(XmlSchemaParser.getAttributeValue(subTypeNode, "offset", "-1")); final Node refTypeNode = (Node)xPath.compile( "/*[local-name() = 'messageSchema']/types/*[@name='" + refTypeName + "']")
/** * Construct a new message from XML Schema. * * @param messageNode from the XML Schema Parsing * @param typeByNameMap holding type information for message * @throws XPathExpressionException on invalid XPath */ public Message(final Node messageNode, final Map<String, Type> typeByNameMap) throws XPathExpressionException { id = Integer.parseInt(getAttributeValue(messageNode, "id")); // required name = getAttributeValue(messageNode, "name"); // required description = getAttributeValueOrNull(messageNode, "description"); // optional blockLength = Integer.parseInt(getAttributeValue(messageNode, "blockLength", "0")); // 0 means not set sinceVersion = Integer.parseInt(getAttributeValue(messageNode, "sinceVersion", "0")); deprecated = Integer.parseInt(getAttributeValue(messageNode, "deprecated", "0")); semanticType = getAttributeValueOrNull(messageNode, "semanticType"); // optional this.typeByNameMap = typeByNameMap; fieldList = parseMembers(messageNode); computeAndValidateOffsets(messageNode, fieldList, blockLength); computedBlockLength = computeMessageRootBlockLength(fieldList); validateBlockLength(messageNode, blockLength, computedBlockLength); }
/** * Construct a Choice given the XML node and the encodingType * * @param node that contains the validValue * @param encodingType for the enum */ public Choice(final Node node, final PrimitiveType encodingType) { name = getAttributeValue(node, "name"); description = getAttributeValueOrNull(node, "description"); value = PrimitiveValue.parse(node.getFirstChild().getNodeValue(), encodingType); sinceVersion = Integer.parseInt(getAttributeValue(node, "sinceVersion", "0")); deprecated = Integer.parseInt(getAttributeValue(node, "deprecated", "0")); // choice values are bit positions (0, 1, 2, 3, 4, etc.) from LSB to MSB if (value.longValue() >= (encodingType.size() * 8)) { throw new IllegalArgumentException("Choice value out of bounds: " + value.longValue()); } checkForValidName(node, name); }
private Field parseField(final NodeList nodeList, final int nodeIndex) { final Node node = nodeList.item(nodeIndex); final String typeName = getAttributeValue(node, "type"); final Type fieldType = typeByNameMap.get(typeName); if (fieldType == null) { handleError(node, "could not find type: " + typeName); } final Field field = new Field.Builder() .name(getAttributeValue(node, "name")) .description(getAttributeValueOrNull(node, "description")) .id(Integer.parseInt(getAttributeValue(node, "id"))) .offset(Integer.parseInt(getAttributeValue(node, "offset", "0"))) .semanticType(getAttributeValueOrNull(node, "semanticType")) .presence(getPresence(node, fieldType)) .valueRef(getAttributeValueOrNull(node, "valueRef")) .sinceVersion(Integer.parseInt(getAttributeValue(node, "sinceVersion", "0"))) .deprecated(Integer.parseInt(getAttributeValue(node, "deprecated", "0"))) .epoch(getAttributeValueOrNull(node, "epoch")) .timeUnit(getAttributeValueOrNull(node, "timeUnit")) .type(fieldType) .build(); field.validate(node, typeByNameMap); return field; }
private Field parseDataField(final NodeList nodeList, final int nodeIndex) final String typeName = getAttributeValue(node, "type"); final Type fieldType = typeByNameMap.get(typeName); if (fieldType == null) .name(getAttributeValue(node, "name")) .description(getAttributeValueOrNull(node, "description")) .id(Integer.parseInt(getAttributeValue(node, "id"))) .offset(Integer.parseInt(getAttributeValue(node, "offset", "0"))) .semanticType(getAttributeValueOrNull(node, "semanticType")) .presence(Presence.get(getAttributeValue(node, "presence", "required"))) .sinceVersion(Integer.parseInt(getAttributeValue(node, "sinceVersion", "0"))) .deprecated(Integer.parseInt(getAttributeValue(node, "deprecated", "0"))) .epoch(getAttributeValue(node, "epoch", "unix")) .timeUnit(getAttributeValue(node, "timeUnit", "nanosecond")) .type(fieldType) .variableLength(true)
private Field parseGroupField(final NodeList nodeList, final int nodeIndex) throws XPathExpressionException final String dimensionTypeName = getAttributeValue(node, "dimensionType", "groupSizeEncoding"); Type dimensionType = typeByNameMap.get(dimensionTypeName); if (dimensionType == null) .name(getAttributeValue(node, "name")) .description(getAttributeValueOrNull(node, "description")) .id(Integer.parseInt(getAttributeValue(node, "id"))) .blockLength(Integer.parseInt(getAttributeValue(node, "blockLength", "0"))) .sinceVersion(Integer.parseInt(getAttributeValue(node, "sinceVersion", "0"))) .deprecated(Integer.parseInt(getAttributeValue(node, "deprecated", "0"))) .dimensionType((CompositeType)dimensionType) .build();
primitiveType = PrimitiveType.get(getAttributeValue(node, "primitiveType")); final String lengthAttr = getAttributeValueOrNull(node, "length"); length = Integer.parseInt(null == lengthAttr ? "1" : lengthAttr); varLen = Boolean.parseBoolean(getAttributeValue(node, "variableLength", "false")); valueRef = getAttributeValueOrNull(node, "valueRef"); characterEncoding = getAttributeValue(node, "characterEncoding", "US-ASCII").trim().toUpperCase();
final String encodingTypeStr = getAttributeValue(node, "encodingType"); final EncodedDataType encodedDataType;
/** * Construct a new Type from XML Schema. Called by subclasses to mostly set common fields * * @param node from the XML Schema Parsing */ public Type(final Node node) { name = getAttributeValue(node, "name"); presence = Presence.get(getAttributeValue(node, "presence", "required")); description = getAttributeValueOrNull(node, "description"); semanticType = getAttributeValueOrNull(node, "semanticType"); }
public MessageSchema( final Node schemaNode, final Map<String, Type> typeByNameMap, final Map<Long, Message> messageByIdMap) { this.packageName = getAttributeValue(schemaNode, "package"); this.description = getAttributeValueOrNull(schemaNode, "description"); this.id = Integer.parseInt(getAttributeValue(schemaNode, "id")); this.version = Integer.parseInt(getAttributeValue(schemaNode, "version", "0")); this.semanticVersion = getAttributeValueOrNull(schemaNode, "semanticVersion"); this.byteOrder = getByteOrder(getAttributeValue(schemaNode, "byteOrder", "littleEndian")); this.typeByNameMap = typeByNameMap; this.messageByIdMap = messageByIdMap; final String headerType = getAttributeValueOrNull(schemaNode, "headerType"); this.headerType = null == headerType ? HEADER_TYPE_DEFAULT : headerType; Verify.present(typeByNameMap, this.headerType, "Message header"); ((CompositeType)typeByNameMap.get(this.headerType)).checkForWellFormedMessageHeader(schemaNode); }
public MessageSchema( final Node schemaNode, final Map<String, Type> typeByNameMap, final Map<Long, Message> messageByIdMap) { this.packageName = getAttributeValue(schemaNode, "package"); this.description = getAttributeValueOrNull(schemaNode, "description"); this.id = Integer.parseInt(getAttributeValue(schemaNode, "id")); this.version = Integer.parseInt(getAttributeValue(schemaNode, "version", "0")); this.semanticVersion = getAttributeValueOrNull(schemaNode, "semanticVersion"); this.byteOrder = getByteOrder(getAttributeValue(schemaNode, "byteOrder", "littleEndian")); this.typeByNameMap = typeByNameMap; this.messageByIdMap = messageByIdMap; final String headerType = getAttributeValueOrNull(schemaNode, "headerType"); this.headerType = null == headerType ? HEADER_TYPE_DEFAULT : headerType; Verify.present(typeByNameMap, this.headerType, "Message header"); ((CompositeType)typeByNameMap.get(this.headerType)).checkForWellFormedMessageHeader(schemaNode); }
public MessageSchema( final Node schemaNode, final Map<String, Type> typeByNameMap, final Map<Long, Message> messageByIdMap) { this.packageName = getAttributeValue(schemaNode, "package"); this.description = getAttributeValueOrNull(schemaNode, "description"); this.id = Integer.parseInt(getAttributeValue(schemaNode, "id")); this.version = Integer.parseInt(getAttributeValue(schemaNode, "version", "0")); this.semanticVersion = getAttributeValueOrNull(schemaNode, "semanticVersion"); this.byteOrder = getByteOrder(getAttributeValue(schemaNode, "byteOrder", "littleEndian")); this.typeByNameMap = typeByNameMap; this.messageByIdMap = messageByIdMap; final String headerType = getAttributeValueOrNull(schemaNode, "headerType"); this.headerType = null == headerType ? HEADER_TYPE_DEFAULT : headerType; Verify.present(typeByNameMap, this.headerType, "Message header"); ((CompositeType)typeByNameMap.get(this.headerType)).checkForWellFormedMessageHeader(schemaNode); }
/** * Construct a ValidValue given the XML node and the encodingType. * * @param node that contains the validValue * @param encodingType for the enum */ public ValidValue(final Node node, final PrimitiveType encodingType) { name = getAttributeValue(node, "name"); description = getAttributeValueOrNull(node, "description"); value = PrimitiveValue.parse(node.getFirstChild().getNodeValue(), encodingType); sinceVersion = Integer.parseInt(getAttributeValue(node, "sinceVersion", "0")); deprecated = Integer.parseInt(getAttributeValue(node, "deprecated", "0")); checkForValidName(node, name); }
/** * Construct a ValidValue given the XML node and the encodingType. * * @param node that contains the validValue * @param encodingType for the enum */ public ValidValue(final Node node, final PrimitiveType encodingType) { name = getAttributeValue(node, "name"); description = getAttributeValueOrNull(node, "description"); value = PrimitiveValue.parse(node.getFirstChild().getNodeValue(), encodingType); sinceVersion = Integer.parseInt(getAttributeValue(node, "sinceVersion", "0")); deprecated = Integer.parseInt(getAttributeValue(node, "deprecated", "0")); checkForValidName(node, name); }
/** * Construct a ValidValue given the XML node and the encodingType. * * @param node that contains the validValue * @param encodingType for the enum */ public ValidValue(final Node node, final PrimitiveType encodingType) { name = getAttributeValue(node, "name"); description = getAttributeValueOrNull(node, "description"); value = PrimitiveValue.parse(node.getFirstChild().getNodeValue(), encodingType); sinceVersion = Integer.parseInt(getAttributeValue(node, "sinceVersion", "0")); checkForValidName(node, name); }