/** * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import org.apache.activemq.openwire.tool.OpenWireCSharpMarshallingScript /** * Generates the C# marshalling code for the Open Wire Format * * @version $Revision$ */ class GenerateCSharpMarshalling extends OpenWireCSharpMarshallingScript { void generateFile(PrintWriter out) { out << """/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // NOTE!: This file is autogenerated - do not modify! // if you need to make a change, please see the Groovy scripts in the // activemq-core module // using System; using System.Collections; using System.IO; using ActiveMQ.Commands; using ActiveMQ.OpenWire; using ActiveMQ.OpenWire.V${openwireVersion}; namespace ActiveMQ.OpenWire.V${openwireVersion} { /// /// Marshalling code for Open Wire Format for ${jclass.simpleName} /// ${abstractClassText}class $className : $baseClass { """ if( !abstractClass ) out << """ public override DataStructure CreateObject() { return new ${jclass.simpleName}(); } public override byte GetDataStructureType() { return ${jclass.simpleName}.ID_${jclass.simpleName}; } """ /* * Generate the tight encoding marshallers */ out << """ // // Un-marshal an object instance from the data input stream // public override void TightUnmarshal(OpenWireFormat wireFormat, Object o, BinaryReader dataIn, BooleanStream bs) { base.TightUnmarshal(wireFormat, o, dataIn, bs); """ if( !properties.isEmpty() || marshallerAware ) out << """ ${jclass.simpleName} info = (${jclass.simpleName})o; """ if( marshallerAware ) out << """ info.BeforeUnmarshall(wireFormat); """ generateTightUnmarshalBody(out) if( marshallerAware ) out << """ info.AfterUnmarshall(wireFormat); """ out << """ } """ out << """ // // Write the booleans that this object uses to a BooleanStream // public override int TightMarshal1(OpenWireFormat wireFormat, Object o, BooleanStream bs) { ${jclass.simpleName} info = (${jclass.simpleName})o; """ if( marshallerAware ) out << """ info.BeforeMarshall(wireFormat); """ out << """ int rc = base.TightMarshal1(wireFormat, info, bs); """ def baseSize = generateTightMarshal1Body(out) out << """ return rc + ${baseSize}; } // // Write a object instance to data output stream // public override void TightMarshal2(OpenWireFormat wireFormat, Object o, BinaryWriter dataOut, BooleanStream bs) { base.TightMarshal2(wireFormat, o, dataOut, bs); """ if( !properties.isEmpty() || marshallerAware ) out << """ ${jclass.simpleName} info = (${jclass.simpleName})o; """ generateTightMarshal2Body(out) if( marshallerAware ) out << """ info.AfterMarshall(wireFormat); """ out << """ } """ /* * Generate the loose encoding marshallers */ out << """ // // Un-marshal an object instance from the data input stream // public override void LooseUnmarshal(OpenWireFormat wireFormat, Object o, BinaryReader dataIn) { base.LooseUnmarshal(wireFormat, o, dataIn); """ if( !properties.isEmpty() || marshallerAware ) out << """ ${jclass.simpleName} info = (${jclass.simpleName})o; """ if( marshallerAware ) out << """ info.BeforeUnmarshall(wireFormat); """ generateLooseUnmarshalBody(out) if( marshallerAware ) out << """ info.AfterUnmarshall(wireFormat); """ out << """ } """ out << """ // // Write a object instance to data output stream // public override void LooseMarshal(OpenWireFormat wireFormat, Object o, BinaryWriter dataOut) { """ if( !properties.isEmpty() || marshallerAware ) out << """ ${jclass.simpleName} info = (${jclass.simpleName})o; """ if( marshallerAware ) out << """ info.BeforeMarshall(wireFormat); """ out << """ base.LooseMarshal(wireFormat, o, dataOut); """ generateLooseMarshalBody(out) if( marshallerAware ) out << """ info.AfterMarshall(wireFormat); """ out << """ } """ out << """ } } """ } void generateFactory(PrintWriter out) { out << """/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // NOTE!: This file is autogenerated - do not modify! // if you need to make a change, please see the Groovy scripts in the // activemq-core module // using System; using System.Collections; using System.IO; using ActiveMQ.Commands; using ActiveMQ.OpenWire; using ActiveMQ.OpenWire.V${openwireVersion}; namespace ActiveMQ.OpenWire.V${openwireVersion} { /// /// Used to create marshallers for a specific version of the wire protocol /// public class MarshallerFactory { public void configure(OpenWireFormat format) { """ for (jclass in concreteClasses) { out << """ format.addMarshaller(new ${jclass.simpleName}Marshaller());""" } out << """ } } } """ } }