<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > <xsd:complexType name="FieldDescription"> <xsd:attribute name="name" type="xsd:string" /> <xsd:attribute name="defaultValue" type="xsd:string" /> </xsd:complexType> <xsd:complexType name="SequenceDescription"> <xsd:sequence> <xsd:element name="fieldDescription" type="FieldDescription" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="sequenceDescription" type="SequenceDescription" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> <xsd:attribute name="sequenceName" type="xsd:string" /> </xsd:complexType> <xsd:complexType name="MessageDescription"> <xsd:sequence> <xsd:element name="sequenceDescription" type="SequenceDescription" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="fieldDescription" type="FieldDescription" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> <xsd:attribute name="messageName" type="xsd:string" /> </xsd:complexType> <xsd:element name="DictionaryDescription"> <xsd:complexType> <xsd:sequence> <xsd:element name="messageDescription" type="MessageDescription" minOccurs="1" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>
public interface IMessage { /** * Add field to message * @param name name of field (not null) * @param value value of field */ void addField(final String name, final Object value); /** * Remove field from message * @param name name of field (not null) */ void removeField(final String name); /** * Get message field by name * @param name name of field (not null) * @return value of field */ Object getField(final String name); /** * Check that field is set * @param name field name * @return true if field set, else false */ boolean isFieldSet(final String name); /** * Get set of message fields * @return set of message fields */ Set<String> getFieldNames(); /** * Get copy of message * @return new IMessage with copied fields */ IMessage cloneMessage(); /** * Compare messages by fields * @param message message for comparing * @return true/false */ boolean compare(final IMessage message); }
public interface ICodec { /** * Encode list of IMessage to byte array * @param messages input messages * @return array of byte */ byte[] encode(List<IMessage> messages); /** * Decode array of byte to list of IMessage * @param bytes input array * @return list of IMessage */ List<IMessage> decode(byte[] bytes); }
<path id="jaxbcp"> <pathelement location="libs/jaxblibs/jaxb-api.jar" /> <pathelement location="libs/jaxblibs/jaxb-impl.jar" /> <pathelement location="libs/jaxblibs/jaxb-xjc.jar" /> <pathelement location="libs/jaxblibs/jsr173_1.0_api.jar" /> </path> <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask" classpathref="jaxbcp" / <xjc schema="xsd/schema.xsd" destdir="${gen.dir}" package="your.package.name"> <produces dir="${gen.dir}" includes="*" /> </xjc>
try { jc = JAXBContext.newInstance(new Class[]{DictionaryDescription.class}); u = jc.createUnmarshaller(); File f = new File (path); JAXBElement<DictionaryDescription> root = u.unmarshal(new StreamSource(f), DictionaryDescription.class); DictionaryDescription s = root.getValue(); } catch (JAXBException e) { logger.error("Error during parsing dictionary", e); }
interface Client { void init(Map parameters); void connect(); void disconnect(); void sendMessage(IMessage msg); void addReceiveListener(IReceiveListener listener); void removeReceiveListener(IReceiveListener listener); }
public interface WMQReceiveListener { /** * Handler of message * @param message message */ public void onMessageReceived(byte[] message); }
Source: https://habr.com/ru/post/135625/
All Articles