Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.easycluster.easycluster.serialization.bytebean.codec.bean;
  
  import java.util.List;
  
TODO

Author(s):
wangqi
Version:
$Id: BeanCodec.java 14 2012-01-10 11:54:14Z archie $
 
 public class BeanCodec extends AbstractCategoryCodec implements BeanFieldCodec {
 
 	private static final Logger	logger	= LoggerFactory.getLogger(BeanCodec.class);
 
 
 	private BeanCodecUtil		util;
 
 	public BeanCodec(Field2Desc field2Desc) {
 		this. = new BeanCodecUtil(field2Desc);
 	}
 
 	public DecResult decode(DecContext ctx) {
 		byte[] bytes = ctx.getDecBytes();
 		Class<?> clazz = ctx.getDecClass();
 
 		Object target = null;
 
 		try {
 			target = clazz.newInstance();
 
 			List<ByteFieldDescdesces = .getFieldDesces(clazz);
 
 			if (desces != null) {
 				for (ByteFieldDesc desc : desces) {
 
 					Field field = desc.getField();
 
 					Class<?> fieldClass = field.getType();
 
 					DecResult ret = anyCodec.decode(.createDecContext(bytesfieldClasstargetdesc));
 					Object fieldValue = ret.getValue();
 					bytes = ret.getRemainBytes();
 
 					field.setAccessible(true);
 					field.set(targetfieldValue);
 				}
 			}
 
 		} catch (InstantiationException e) {
 			.error("BeanCodec:"e);
 		} catch (IllegalAccessException e) {
 			.error("BeanCodec:"e);
 		}
 
 		return new DecResult(targetbytes);
 	}
 
 	public byte[] encode(EncContext ctx) {
 		Object bean = ctx.getEncObject();
 		if (null == bean) {
 			String errmsg = "BeanCodec: bean is null";
 			if (null != ctx.getField()) {
 				errmsg += "/ cause field is [" + ctx.getField() + "]";
 			} else {
 				errmsg += "/ cause type is [" + ctx.getEncClass() + "]";
 			}
 			.error(errmsg);
 			// throw new RuntimeException(errmsg);
 			return new byte[0];
 		}
 		byte[] ret = new byte[0];
 
 		for (ByteFieldDesc desc : desces) {
 			Field field = desc.getField();
 			Class<?> fieldClass = field.getType();
 			field.setAccessible(true);
 			Object fieldValue = null;
			try {
				fieldValue = field.get(bean);
catch (IllegalArgumentException e) {
				.error("BeanCodec:"e);
catch (IllegalAccessException e) {
				.error("BeanCodec:"e);
			}
			ret = (byte[]) ArrayUtils.addAll(retanyCodec.encode(.createEncContext(fieldValuefieldClassdesc)));
		}
		return ret;
	}
	}
	public int getStaticByteSize(Class<?> clazz) {
		if (null == desces || desces.isEmpty()) {
			return -1;
		}
		int staticByteSize = 0;
		for (ByteFieldDesc desc : desces) {
			int fieldByteSize = desc.getByteSize();
			if (fieldByteSize <= 0) {
				fieldByteSize = getStaticByteSize(desc.getFieldType());
			}
			if (fieldByteSize <= 0) {
				return -1;
			}
			staticByteSize += fieldByteSize;
		}
		return staticByteSize;
	}
	}
	public void setDecContextFactory(DecContextFactory decContextFactory) {
		this. = decContextFactory;
	}
	}
	public void setEncContextFactory(EncContextFactory encContextFactory) {
		this. = encContextFactory;
	}
New to GrepCode? Check out our FAQ X