Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 
 package org.easycluster.easycluster.serialization.bytebean.codec.primitive;
 
TODO

Author(s):
wangqi
Version:
$Id: ByteArrayCodec.java 14 2012-01-10 11:54:14Z archie $
public class ByteArrayCodec extends AbstractPrimitiveCodec implements
	private static final Logger logger = LoggerFactory.getLogger(ByteArrayCodec.class);
	public Class<?>[] getFieldType() {
		return new Class<?>[] { byte[].class };
	}
	public DecResult decode(DecContext ctx) {
		byte[] bytes = ctx.getDecBytes();
		final ByteFieldDesc desc = ctx.getFieldDesc();
		int arrayLength = 0;
		if (null == desc) {
			throw new RuntimeException("invalid bytearray env.");
else if (desc.hasLength()) {
			arrayLength = desc.getLength(ctx.getDecOwner());
else if (desc.getFixedLength() > 0) {
			arrayLength = desc.getFixedLength();
else {
			throw new RuntimeException("invalid bytearray env.");
		}
		if (bytes.length < arrayLength) {
			String errmsg = "ByteArrayCodec: not enough bytes for decode, need ["
arrayLength + "], actually [" + bytes.length + "].";
			if (null != ctx.getField()) {
				errmsg += "/ cause field is [" + ctx.getField() + "]";
			}
			.error(errmsg);
			throw new RuntimeException(errmsg);
		}
		return new DecResult(
				(byte[]) ArrayUtils.subarray(bytes, 0, arrayLength),
				ArrayUtils.subarray(bytesarrayLengthbytes.length));
	}
	public byte[] encode(EncContext ctx) {
		byte[] array = (byte[]) ctx.getEncObject();
		ByteFieldDesc desc = ctx.getFieldDesc();
		byte[] bytes = null;
		if (null == desc) {
			throw new RuntimeException("invalid bytearray env.");
else if (!desc.hasLength() && desc.getFixedLength() < 0) {
			throw new RuntimeException("invalid bytearray env.");
else {
		}
		return ArrayUtils.addAll(bytesarray);
	}
New to GrepCode? Check out our FAQ X