本文整理了Java中uk.co.real_logic.sbe.xml.XmlSchemaParser
类的一些代码示例,展示了XmlSchemaParser
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。XmlSchemaParser
类的具体详情如下:
包路径:uk.co.real_logic.sbe.xml.XmlSchemaParser
类名称:XmlSchemaParser
[英]Encapsulate the XML Schema parsing for SBE so that other representations may be used to generate independent representations.
[中]封装SBE的XML模式解析,以便可以使用其他表示来生成独立的表示。
代码示例来源:origin: real-logic/simple-binary-encoding
private static void encodeSchema(final ByteBuffer byteBuffer) throws Exception
{
final Path path = Paths.get("example-schema.xml");
try (InputStream in = new BufferedInputStream(Files.newInputStream(path)))
{
final MessageSchema schema = XmlSchemaParser.parse(in, ParserOptions.DEFAULT);
final Ir ir = new IrGenerator().generate(schema);
try (IrEncoder irEncoder = new IrEncoder(byteBuffer, ir))
{
irEncoder.encode();
}
}
}
代码示例来源:origin: real-logic/simple-binary-encoding
/**
* 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);
}
代码示例来源:origin: real-logic/simple-binary-encoding
document.setUserData(ERROR_HANDLER_KEY, errorHandler, null);
final Map<String, Type> typeByNameMap = findTypes(document, xPath);
errorHandler.checkIfShouldExit();
final Map<Long, Message> messageByIdMap = findMessages(document, xPath, typeByNameMap);
errorHandler.checkIfShouldExit();
代码示例来源:origin: real-logic/simple-binary-encoding
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);
}
代码示例来源:origin: real-logic/simple-binary-encoding
/**
* 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"));
}
代码示例来源:origin: real-logic/simple-binary-encoding
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)
handleError(node, "could not find dimensionType: " + dimensionTypeName);
handleError(node, "dimensionType should be a composite type: " + dimensionTypeName);
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();
XmlSchemaParser.checkForValidName(node, field.name());
代码示例来源:origin: real-logic/simple-binary-encoding
!semanticType.equals(type.semanticType()))
handleError(node, "Mismatched semanticType on type and field: " + name);
checkForValidName(node, name);
handleError(node, "valueRef not set for constant enum");
handleError(node, "valueRef does not match field type: " + valueRef);
handleError(node, "valueRef does not match field type: " + valueRef);
handleError(node, "valueRef for enum name not found: " + valueRefType);
代码示例来源:origin: real-logic/simple-binary-encoding
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");
handleError(node, "valueRef format not valid (enum-name.valid-value-name): " + valueRef);
handleError(node, "present must be constant when valueRef is set: " + valueRef);
characterEncoding = getAttributeValue(node, "characterEncoding", "US-ASCII").trim().toUpperCase();
final String characterEncoding = getAttributeValueOrNull(node, "characterEncoding");
this.characterEncoding = characterEncoding == null ? null : characterEncoding.trim().toUpperCase();
handleError(node, "type has declared presence as \"constant\" but XML node has no data");
constValue = null;
final String minValStr = getAttributeValueOrNull(node, "minValue");
minValue = minValStr != null ? PrimitiveValue.parse(minValStr, primitiveType) : null;
final String maxValStr = getAttributeValueOrNull(node, "maxValue");
maxValue = maxValStr != null ? PrimitiveValue.parse(maxValStr, primitiveType) : null;
final String nullValStr = getAttributeValueOrNull(node, "nullValue");
if (nullValStr != null)
handleWarning(node, "nullValue set, but presence is not optional");
代码示例来源:origin: real-logic/simple-binary-encoding
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;
}
代码示例来源:origin: real-logic/simple-binary-encoding
XmlSchemaParser.handleError(node, "composite for variable length data encoding must have \"length\"");
if (!isUnsigned(primitiveType))
XmlSchemaParser.handleError(node, "\"length\" must be unsigned type");
XmlSchemaParser.handleWarning(node, "\"length\" should be UINT8, UINT16, or UINT32");
if ("optional".equals(getAttributeValueOrNull(node, "presence")))
XmlSchemaParser.handleError(
node, "composite for variable length data encoding cannot have presence=\"optional\"");
XmlSchemaParser.handleError(node, "composite for variable length data encoding must have \"varData\"");
代码示例来源:origin: real-logic/simple-binary-encoding
private static void addTypeWithNameCheck(final Map<String, Type> typeByNameMap, final Type type, final Node node)
{
if (typeByNameMap.get(type.name()) != null)
{
handleWarning(node, "type already exists for name: " + type.name());
}
checkForValidName(node, type.name());
typeByNameMap.put(type.name(), type);
}
代码示例来源:origin: real-logic/simple-binary-encoding
private static void validateBlockLength(
final Node node, final long specifiedBlockLength, final long computedBlockLength)
{
if (0 != specifiedBlockLength && computedBlockLength > specifiedBlockLength)
{
final String msg = "specified blockLength provides insufficient space " +
computedBlockLength + " > " + specifiedBlockLength;
handleError(node, msg);
}
}
代码示例来源:origin: real-logic/simple-binary-encoding
/**
* Scan XML for all message definitions and save in map
*
* @param document for the XML parsing
* @param xPath for XPath expression reuse
* @param typeByNameMap to use for Type objects
* @return {@link java.util.Map} of schemaId to Message
* @throws Exception on parsing error.
*/
public static Map<Long, Message> findMessages(
final Document document, final XPath xPath, final Map<String, Type> typeByNameMap) throws Exception
{
final Map<Long, Message> messageByIdMap = new HashMap<>();
final ObjectHashSet<String> distinctNames = new ObjectHashSet<>();
forEach((NodeList)xPath.compile(MESSAGE_XPATH_EXPR).evaluate(document, XPathConstants.NODESET),
(node) -> addMessageWithIdCheck(distinctNames, messageByIdMap, new Message(node, typeByNameMap), node));
return messageByIdMap;
}
代码示例来源:origin: real-logic/simple-binary-encoding
typeByNameMap.put("double", new EncodedDataType("double", REQUIRED, null, null, DOUBLE, 1, false));
forEach((NodeList)xPath.compile(TYPE_XPATH_EXPR).evaluate(document, XPathConstants.NODESET),
(node) -> addTypeWithNameCheck(typeByNameMap, new EncodedDataType(node), node));
forEach((NodeList)xPath.compile(COMPOSITE_XPATH_EXPR).evaluate(document, XPathConstants.NODESET),
(node) -> addTypeWithNameCheck(typeByNameMap, new CompositeType(node), node));
forEach((NodeList)xPath.compile(ENUM_XPATH_EXPR).evaluate(document, XPathConstants.NODESET),
(node) -> addTypeWithNameCheck(typeByNameMap, new EnumType(node), node));
forEach((NodeList)xPath.compile(SET_XPATH_EXPR).evaluate(document, XPathConstants.NODESET),
(node) -> addTypeWithNameCheck(typeByNameMap, new SetType(node), node));
代码示例来源:origin: real-logic/simple-binary-encoding
/**
* Handle an error condition as consequence of parsing.
*
* @param node that is the context of the warning.
* @param msg associated with the error.
*/
public static void handleError(final Node node, final String msg)
{
final ErrorHandler handler = (ErrorHandler)node.getOwnerDocument().getUserData(ERROR_HANDLER_KEY);
if (handler == null)
{
throw new IllegalStateException("ERROR: " + formatLocationInfo(node) + msg);
}
else
{
handler.error(formatLocationInfo(node) + msg);
}
}
代码示例来源:origin: real-logic/simple-binary-encoding
XmlSchemaParser.handleError(node, "composite for message header must have \"blockLength\"");
XmlSchemaParser.handleError(node, "\"blockLength\" must be unsigned");
XmlSchemaParser.handleWarning(node, "\"blockLength\" should be UINT16");
XmlSchemaParser.handleError(node, "composite for message header must have \"templateId\"");
XmlSchemaParser.handleWarning(node, "\"templateId\" should be UINT16");
XmlSchemaParser.handleError(node, "composite for message header must have \"schemaId\"");
XmlSchemaParser.handleWarning(node, "\"schemaId\" should be UINT16");
XmlSchemaParser.handleError(node, "composite for message header must have \"version\"");
XmlSchemaParser.handleWarning(node, "\"version\" should be UINT16");
代码示例来源:origin: real-logic/simple-binary-encoding
final String encodingTypeStr = getAttributeValue(node, "encodingType");
else if (Integer.parseInt(getAttributeValue(encodingTypeNode, "length", "1")) != 1)
encodingType = PrimitiveType.get(getAttributeValue(encodingTypeNode, "primitiveType"));
handleWarning(node, "Choice value already defined: " + c.primitiveValue());
handleWarning(node, "Choice already exists for name: " + c.name());
代码示例来源:origin: real-logic/simple-binary-encoding
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 + "']")
XmlSchemaParser.handleError(subTypeNode, "ref type not found: " + refTypeName);
XmlSchemaParser.handleError(refTypeNode, "ref types cannot create circular dependencies.");
throw new IllegalStateException("ref types cannot create circular dependencies");
代码示例来源:origin: real-logic/simple-binary-encoding
private static String formatLocationInfo(final Node node)
{
final Node parentNode = node.getParentNode();
return "at " +
"<" + parentNode.getNodeName() +
(getAttributeValueOrNull(parentNode, "name") == null ?
">" : (" name=\"" + getAttributeValueOrNull(parentNode, "name") + "\"> ")) +
"<" + node.getNodeName() +
(getAttributeValueOrNull(node, "name") == null ?
">" : (" name=\"" + getAttributeValueOrNull(node, "name") + "\"> "));
}
代码示例来源:origin: uk.co.real-logic/sbe
/**
* Scan XML for all message definitions and save in map
*
* @param document for the XML parsing
* @param xPath for XPath expression reuse
* @param typeByNameMap to use for Type objects
* @return {@link java.util.Map} of schemaId to Message
* @throws Exception on parsing error.
*/
public static Map<Long, Message> findMessages(
final Document document, final XPath xPath, final Map<String, Type> typeByNameMap)
throws Exception
{
final Map<Long, Message> messageByIdMap = new HashMap<>();
forEach((NodeList)xPath.compile(MESSAGE_XPATH_EXPR).evaluate(document, XPathConstants.NODESET),
new NodeFunction()
{
public void execute(final Node node) throws XPathExpressionException
{
addMessageWithIdCheck(messageByIdMap, new Message(node, typeByNameMap), node);
}
});
return messageByIdMap;
}
内容来源于网络,如有侵权,请联系作者删除!