#set( $filename = "amqp_$version.getMajor()_$version.getMinor()/MethodRegistry_${version.getMajor()}_${version.getMinor()}.java") /* * * 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. * */ /* * This file is auto-generated by $generator - do not modify. * Supported AMQP version: * $version.getMajor()-$version.getMinor() */ package org.apache.qpid.framing.amqp_${version.getMajor()}_${version.getMinor()}; import org.apache.qpid.framing.*; import org.apache.qpid.protocol.AMQConstant; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.mina.common.ByteBuffer; import org.apache.qpid.framing.abstraction.ProtocolVersionMethodConverter; public class MethodRegistry_$version.getMajor()_$version.getMinor() extends MethodRegistry { private static final Logger _log = LoggerFactory.getLogger(MethodRegistry.class); private ProtocolVersionMethodConverter _protocolVersionConverter = new MethodConverter_$version.getMajor()_$version.getMinor()(); #set( $specificModel = $model.asSingleVersionModel() ) #set( $maxClassId = $specificModel.getMaximumClassId()+1 ) private final AMQMethodBodyInstanceFactory[][] _factories = new AMQMethodBodyInstanceFactory[$maxClassId][]; public MethodRegistry_$version.getMajor()_$version.getMinor()() { this(new ProtocolVersion((byte)$version.getMajor(),(byte)$version.getMinor())); } public MethodRegistry_$version.getMajor()_$version.getMinor()(ProtocolVersion pv) { super(pv); #foreach( $amqpClass in $specificModel.getClassList() ) #set( $amqpClassNameFirstChar = $amqpClass.getName().substring(0,1) ) #set( $amqpClassNameFirstCharU = $amqpClassNameFirstChar.toUpperCase() ) #set( $amqpClassNameUpperCamel = "$amqpClassNameFirstCharU$amqpClass.getName().substring(1)" ) // Register method body instance factories for the $amqpClassNameUpperCamel class. #set( $maxMethodId = $amqpClass.getMaximumMethodId()+1 ) _factories[$amqpClass.getClassId()] = new AMQMethodBodyInstanceFactory[$maxMethodId]; #foreach( $amqpMethod in $amqpClass.getMethodList() ) #set( $amqpMethodNameFirstChar = $amqpMethod.getName().substring(0,1) ) #set( $amqpMethodNameFirstCharU = $amqpMethodNameFirstChar.toUpperCase() ) #set( $amqpMethodNameUpperCamel = "$amqpMethodNameFirstCharU$amqpMethod.getName().substring(1)" ) _factories[$amqpClass.getClassId()][$amqpMethod.getMethodId()] = ${amqpClassNameUpperCamel}${amqpMethodNameUpperCamel}BodyImpl.getFactory(); #end #end } public AMQMethodBody convertToBody(ByteBuffer in, long size) throws AMQFrameDecodingException { int classId = in.getUnsignedShort(); int methodId = in.getUnsignedShort(); AMQMethodBodyInstanceFactory bodyFactory; try { bodyFactory = _factories[classId][methodId]; } catch(NullPointerException e) { throw new AMQFrameDecodingException(AMQConstant.COMMAND_INVALID, "Class " + classId + " unknown in AMQP version $version.getMajor()-$version.getMinor()" + " (while trying to decode class " + classId + " method " + methodId + "."); } catch(IndexOutOfBoundsException e) { if(classId >= _factories.length) { throw new AMQFrameDecodingException(AMQConstant.COMMAND_INVALID, "Class " + classId + " unknown in AMQP version $version.getMajor()-$version.getMinor()" + " (while trying to decode class " + classId + " method " + methodId + "."); } else { throw new AMQFrameDecodingException(AMQConstant.COMMAND_INVALID, "Method " + methodId + " unknown in AMQP version $version.getMajor()-$version.getMinor()" + " (while trying to decode class " + classId + " method " + methodId + "."); } } if (bodyFactory == null) { throw new AMQFrameDecodingException(AMQConstant.COMMAND_INVALID, "Method " + methodId + " unknown in AMQP version $version.getMajor()-$version.getMinor()" + " (while trying to decode class " + classId + " method " + methodId + "."); } return bodyFactory.newInstance(in, size); } public int getMaxClassId() { return $specificModel.getMaximumClassId(); } public int getMaxMethodId(int classId) { return _factories[classId].length - 1; } #foreach( $amqpClass in $specificModel.getClassList() ) #set( $amqpClassNameFirstChar = $amqpClass.getName().substring(0,1) ) #set( $amqpClassNameFirstCharU = $amqpClassNameFirstChar.toUpperCase() ) #set( $amqpClassNameUpperCamel = "$amqpClassNameFirstCharU$amqpClass.getName().substring(1)" ) #foreach( $amqpMethod in $amqpClass.getMethodList() ) #set( $amqpMethodNameFirstChar = $amqpMethod.getName().substring(0,1) ) #set( $amqpMethodNameFirstCharU = $amqpMethodNameFirstChar.toUpperCase() ) #set( $amqpMethodNameUpperCamel = "$amqpMethodNameFirstCharU$amqpMethod.getName().substring(1)" ) public ${amqpClassNameUpperCamel}${amqpMethodNameUpperCamel}Body create${amqpClassNameUpperCamel}${amqpMethodNameUpperCamel}Body( #foreach( $field in $amqpMethod.FieldList ) #if( $velocityCount == $amqpMethod.getFieldList().size() ) final $field.NativeType $field.Name #else final $field.NativeType $field.Name, #end #end ) { return new ${amqpClassNameUpperCamel}${amqpMethodNameUpperCamel}BodyImpl( #foreach( $field in $amqpMethod.FieldList ) #if( $velocityCount == $amqpMethod.getFieldList().size() ) $field.Name #else $field.Name, #end #end ); } #end #end public ProtocolVersionMethodConverter getProtocolVersionMethodConverter() { return _protocolVersionConverter; } }