/* * (non-Javadoc) * * @see com.baidu.jprotobuf.pbrpc.RpcHandler#doRealHandle(byte[]) */ protected RpcData doRealHandle(RpcData data) throws Exception { Object input = null; Object[] param; Object ret = null; if (data.getData() != null && inputCodec != null) { input = inputCodec.decode(data.getData()); param = new Object[] {input}; } else { param = new Object[0]; } RpcData retData = new RpcData(); // process attachment if (getAttachmentHandler() != null) { byte[] responseAttachment = getAttachmentHandler() .handleAttachement(data.getAttachment(), getServiceName(), getMethodName(), param); retData.setAttachment(responseAttachment); } ret = getMethod().invoke(getService(), param); if (ret == null) { return retData; } if (outputCodec != null) { byte[] response = outputCodec.encode(ret); retData.setData(response); } return retData; }
/** Test encode decode. */ @Test public void testEncodeDecode() { InterClassName icn = InterClassName.newBuilder().addList2(10000D).addList2(20000.1D).build(); byte[] oldbb = icn.toByteArray(); System.out.println(Arrays.toString(oldbb)); RequrieRepeatedNumberTypePOJOClass3 type = new RequrieRepeatedNumberTypePOJOClass3(); type.list2 = new ArrayList<Double>(); type.list2.add(10000D); type.list2.add(20000.1D); Codec<RequrieRepeatedNumberTypePOJOClass3> proxy = ProtobufProxy.create(RequrieRepeatedNumberTypePOJOClass3.class); try { byte[] bb = proxy.encode(type); System.out.println(Arrays.toString(bb)); Assert.assertArrayEquals(oldbb, bb); } catch (IOException e) { e.printStackTrace(); } }