X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=packetcable-driver%2Fsrc%2Fmain%2Fjava%2Forg%2Fpcmm%2Fgates%2Fimpl%2FTransactionID.java;h=29b2b64e54c52dc65d9da5a26b99b5e747e276cb;hb=3e6a8ae8c2dcfa808502f9acf94cad3ba2e28716;hp=16ae63df0e0d6823cfb527e23d39670b8df6b10d;hpb=a06a930e945e767e04f20486711a666d86d85e4c;p=packetcable.git diff --git a/packetcable-driver/src/main/java/org/pcmm/gates/impl/TransactionID.java b/packetcable-driver/src/main/java/org/pcmm/gates/impl/TransactionID.java index 16ae63d..29b2b64 100644 --- a/packetcable-driver/src/main/java/org/pcmm/gates/impl/TransactionID.java +++ b/packetcable-driver/src/main/java/org/pcmm/gates/impl/TransactionID.java @@ -1,77 +1,70 @@ -/** - @header@ +/* + * (c) 2015 Cable Television Laboratories, Inc. All rights reserved. */ + package org.pcmm.gates.impl; import org.pcmm.base.impl.PCMMBaseObject; import org.pcmm.gates.ITransactionID; +import org.umu.cops.stack.COPSMsgParser; /** - * + * Implementation of the ITransactionID interface */ public class TransactionID extends PCMMBaseObject implements ITransactionID { /** - * + * The transaction identifier */ - public TransactionID() { - this(LENGTH, STYPE, SNUM); - } + private final short transId; /** - * @param data + * The gate command type */ - public TransactionID(byte[] data) { - super(data); - } + private final GateCommandType gateCommandType; /** - * @param len - * @param sType - * @param sNum + * Constructor + * @param transId - the transaction identifier + * @param gateCommandType - the gate command type */ - public TransactionID(short len, byte sType, byte sNum) { - super(len, sType, sNum); + public TransactionID(final short transId, final GateCommandType gateCommandType) { + super(SNum.TRANSACTION_ID, STYPE); + if (gateCommandType == null) + throw new IllegalArgumentException("Invalid gate command type"); + this.transId = transId; + this.gateCommandType = gateCommandType; } - /* - * (non-Javadoc) - * - * @see org.pcmm.gates.ITransactionID#setTransactionIdentifier(short) - */ @Override - public void setTransactionIdentifier(short id) { - setShort(id, (short) 0); + public short getTransactionIdentifier() { + return transId; } - /* - * (non-Javadoc) - * - * @see org.pcmm.gates.ITransactionID#getTransactionIdentifier() - */ @Override - public short getTransactionIdentifier() { - return getShort((short) 0); + public GateCommandType getGateCommandType() { + return gateCommandType; } - /* - * (non-Javadoc) - * - * @see org.pcmm.gates.ITransactionID#setGateCommandType(short) - */ @Override - public void setGateCommandType(short type) { - setShort(type, (short) 2); + protected byte[] getBytes() { + final byte[] transIdBytes = COPSMsgParser.shortToBytes(transId); + final byte[] data = new byte[transIdBytes.length + transIdBytes.length]; + System.arraycopy(transIdBytes, 0, data, 0, transIdBytes.length); + + final byte[] gateCmdBytes = COPSMsgParser.shortToBytes(gateCommandType.getValue()); + System.arraycopy(gateCmdBytes, 0, data, transIdBytes.length, gateCmdBytes.length); + return data; } - /* - * (non-Javadoc) - * - * @see org.pcmm.gates.ITransactionID#getGateCommandType() + /** + * Returns a TransactionID object from a byte array + * @param data - the data to parse + * @return - the object + * TODO - make me more robust as RuntimeExceptions can be thrown here. */ - @Override - public short getGateCommandType() { - return getShort((short) 2); + public static TransactionID parse(final byte[] data) { + return new TransactionID(COPSMsgParser.bytesToShort(data[0], data[1]), + GateCommandType.valueOf(COPSMsgParser.bytesToShort(data[2], data[3]))); } - }