com.caucho.hessian.io.HessianInput Java Examples

The following examples show how to use com.caucho.hessian.io.HessianInput. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: Hessian1BlackListTest.java    From sofa-hessian with Apache License 2.0 6 votes vote down vote up
@Test
public void testBeanDeserialize() throws IOException {
    byte[] bs = new byte[] { 77, 116, 0, 31, 99, 111, 109, 46, 97, 108, 105, 112, 97, 121, 46, 115, 116, 99,
            46, 98, 108, 46, 84, 101, 115, 116, 66, 108, 97, 99, 107, 66, 101, 97, 110, 83, 0, 6, 115, 116,
            114, 105, 110, 103, 83, 0, 3, 115, 115, 115, 122 };

    ByteArrayInputStream input = new ByteArrayInputStream(bs, 0, bs.length);
    HessianInput hin = new HessianInput(input);
    hin.setSerializerFactory(serializerFactory);

    try {
        hin.readObject();
        Assert.fail();
    } catch (Exception e) {
        Assert.assertTrue(e instanceof IOException);
    }
}
 
Example #2
Source File: Hessian1BlackListTest.java    From sofa-hessian with Apache License 2.0 6 votes vote down vote up
@Test
public void testListDeserialize() throws IOException {
    byte[] bs = new byte[] { 86, 108, 0, 0, 0, 1, 77, 116, 0, 31, 99, 111, 109, 46, 97, 108, 105, 112, 97,
            121, 46, 115, 116, 99, 46, 98, 108, 46, 84, 101, 115, 116, 66, 108, 97, 99, 107, 66, 101, 97,
            110, 83, 0, 6, 115, 116, 114, 105, 110, 103, 83, 0, 3, 115, 115, 115, 122, 122 };

    ByteArrayInputStream input = new ByteArrayInputStream(bs, 0, bs.length);
    HessianInput hin = new HessianInput(input);
    hin.setSerializerFactory(serializerFactory);

    try {
        hin.readObject();
        Assert.fail();
    } catch (Exception e) {
        Assert.assertTrue(e instanceof IOException);
    }
}
 
Example #3
Source File: Hessian1BlackListTest.java    From sofa-hessian with Apache License 2.0 6 votes vote down vote up
@Test
public void testArrayDeserialize() throws IOException {
    byte[] bs = new byte[] { 86, 116, 0, 7, 91, 111, 98, 106, 101, 99, 116, 108, 0, 0, 0, 1, 77, 116, 0, 31, 99,
            111, 109, 46, 97, 108, 105, 112, 97, 121, 46, 115, 116, 99, 46, 98, 108, 46, 84, 101, 115, 116, 66,
            108, 97, 99, 107, 66, 101, 97, 110, 83, 0, 6, 115, 116, 114, 105, 110, 103, 83, 0, 3, 115, 115, 115,
            122, 122 };

    ByteArrayInputStream input = new ByteArrayInputStream(bs, 0, bs.length);
    HessianInput hin = new HessianInput(input);
    hin.setSerializerFactory(serializerFactory);

    try {
        hin.readObject();
        Assert.fail();
    } catch (Exception e) {
        Assert.assertTrue(e instanceof IOException);
    }
}
 
Example #4
Source File: Hessian1BlackListTest.java    From sofa-hessian with Apache License 2.0 6 votes vote down vote up
@Test
public void testMapDeserialize() throws IOException {
    byte[] bs = new byte[] { 77, 116, 0, 0, 77, 116, 0, 31, 99, 111, 109, 46, 97, 108, 105, 112, 97,
            121, 46, 115, 116, 99, 46, 98, 108, 46, 84, 101, 115, 116, 66, 108, 97, 99, 107, 66, 101, 97,
            110, 83, 0, 6, 115, 116, 114, 105, 110, 103, 83, 0, 3, 115, 115, 115, 122, 82, 0, 0, 0, 1, 122 };

    ByteArrayInputStream input = new ByteArrayInputStream(bs, 0, bs.length);
    HessianInput hin = new HessianInput(input);
    hin.setSerializerFactory(serializerFactory);

    try {
        hin.readObject();
        Assert.fail();
    } catch (Exception e) {
        Assert.assertTrue(e instanceof IOException);
    }
}
 
Example #5
Source File: ArrayInjectTest.java    From sofa-hessian with Apache License 2.0 6 votes vote down vote up
@Test
public void testHessian1Array() throws IOException {
    SerializerFactory factory = new SerializerFactory();
    String s = "567400075b6f626a6563746e025674001e5b636f6d2e73756e2e726f777365742e4a646263526f77536574496d706c6e014fad786f6d2e73756e2e726f777365742e4a646263526f77536574496d706cac07636f6d6d616e640355524c0a64617461536f757263650a726f77536574547970650b73686f7744656c657465640c717565727954696d656f7574076d6178526f77730c6d61784669656c6453697a650b636f6e63757272656e637908726561644f6e6c791065736361706550726f63657373696e670969736f6c6174696f6e08666574636844697209666574636853697a6504636f6e6e02707302727306726f77734d44057265734d440d694d61746368436f6c756d6e730f7374724d61746368436f6c756d6e730c62696e61727953747265616d0d756e69636f646553747265616d0b617363696953747265616d0a6368617253747265616d036d6170096c697374656e65727306706172616d736f904e4e4ecbec46909090cbf0545492cbe8904e4e4e4e4e567400106a6176612e7574696c2e566563746f726e0a8f8f8f8f8f8f8f8f8f8f7a76929a4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e7692904d7400136a6176612e7574696c2e486173687461626c657a7a4a027a";
    byte[] bs = hex2byte(s.getBytes());
    Assert.assertTrue(s.equalsIgnoreCase(byte2hex(bs)));

    ByteArrayInputStream input = new ByteArrayInputStream(bs, 0, bs.length);
    HessianInput hin = new HessianInput(input);
    hin.setSerializerFactory(factory);

    try {
        hin.readObject();
        Assert.fail();
    } catch (Exception e) {
        Assert.assertTrue(e instanceof IOException);
    }
}
 
Example #6
Source File: HessianUtils.java    From rpcx-java with Apache License 2.0 6 votes vote down vote up
public static Object read(byte[] data) {
    ByteArrayInputStream is = new ByteArrayInputStream(data);
    HessianInput hi = new HessianInput(is);
    try {
        return hi.readObject();
    } catch (IOException e) {
        throw new RuntimeException(e);
    } finally {
        try {
            hi.close();
            is.close();
        } catch (Exception ex) {

        }
    }
}
 
Example #7
Source File: HessianUtil.java    From krpc with MIT License 6 votes vote down vote up
public static Object deserialize(byte[] by, ClassLoader classLoader) throws IOException {
	if (by == null)
		throw new NullPointerException();

	ByteArrayInputStream is = new ByteArrayInputStream(by);
	ClassLoader old = null;
	if (classLoader != null) {
		old = Thread.currentThread().getContextClassLoader();
		// 切换当前线程classloader,保证动态加载的类不会报CNF
		Thread.currentThread().setContextClassLoader(classLoader);
	}
	HessianInput hi = new HessianInput(is);
	Object obj = hi.readObject();

	if (classLoader != null) {
		Thread.currentThread().setContextClassLoader(old);
	}
	return obj;
}
 
Example #8
Source File: SerializeUtils.java    From ByteJTA with GNU Lesser General Public License v3.0 5 votes vote down vote up
public static Serializable hessianDeserialize(byte[] bytes) throws IOException {
	ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
	HessianInput hi = new HessianInput(bais);
	try {
		Object result = hi.readObject();
		return (Serializable) result;
	} finally {
		CommonUtils.closeQuietly(bais);
	}
}
 
Example #9
Source File: HessianSerializer.java    From open-capacity-platform with Apache License 2.0 5 votes vote down vote up
public static <T> Object deserialize(byte[] bytes, Class<T> clazz) {
	ByteArrayInputStream is = new ByteArrayInputStream(bytes);
	HessianInput hi = new HessianInput(is);
	try {
		return hi.readObject();
	} catch (IOException e) {
		throw new IllegalStateException(e.getMessage(), e);
	}
}
 
Example #10
Source File: HessianSerializeCoder.java    From hasor with Apache License 2.0 5 votes vote down vote up
@Override
public Object decode(byte[] bytes, Class<?> returnType) throws IOException {
    if (bytes == null) {
        return null;
    }
    HessianInput input = new HessianInput(new ByteArrayInputStream(bytes));
    input.setSerializerFactory(this.serializerFactory);
    return input.readObject(returnType);
}
 
Example #11
Source File: CompensableSecondaryFilter.java    From ByteTCC with GNU Lesser General Public License v3.0 5 votes vote down vote up
private void afterConsumerInvokeForSVC(Invocation invocation, TransactionRequestImpl request,
		TransactionResponseImpl response) {
	CompensableBeanRegistry beanRegistry = CompensableBeanRegistry.getInstance();
	CompensableBeanFactory beanFactory = beanRegistry.getBeanFactory();
	TransactionInterceptor transactionInterceptor = beanFactory.getTransactionInterceptor();

	RemotingException rpcError = null;
	try {
		if (request.getTransactionContext() != null) {
			String transactionContextContent = invocation.getAttachment(TransactionContext.class.getName());
			byte[] byteArray = ByteUtils.stringToByteArray(transactionContextContent);
			ByteArrayInputStream bais = new ByteArrayInputStream(byteArray);
			HessianInput input = new HessianInput(bais);
			TransactionContext remoteTransactionContext = (TransactionContext) input.readObject();
			response.setTransactionContext(remoteTransactionContext);
		}
	} catch (IOException ex) {
		logger.error("Error occurred in remote call!", ex);
		rpcError = new RemotingException(ex.getMessage());
	}

	try {
		transactionInterceptor.afterReceiveResponse(response);
	} catch (RuntimeException rex) {
		logger.error("Error occurred in remote call!", rex);
		throw new RemotingException(rex.getMessage());
	}

	if (rpcError != null) {
		throw rpcError;
	}

}
 
Example #12
Source File: CompensableSecondaryFilter.java    From ByteTCC with GNU Lesser General Public License v3.0 5 votes vote down vote up
private void beforeProviderInvokeForSVC(Invocation invocation, TransactionRequestImpl request,
		TransactionResponseImpl response) {
	CompensableBeanRegistry beanRegistry = CompensableBeanRegistry.getInstance();
	CompensableBeanFactory beanFactory = beanRegistry.getBeanFactory();
	TransactionInterceptor transactionInterceptor = beanFactory.getTransactionInterceptor();

	RemotingException rpcError = null;
	String transactionContextContent = invocation.getAttachment(TransactionContext.class.getName());
	String propagatedBy = invocation.getAttachment(RemoteCoordinator.class.getName());
	if (StringUtils.isNotBlank(transactionContextContent)) {
		byte[] requestByteArray = ByteUtils.stringToByteArray(transactionContextContent);
		ByteArrayInputStream bais = new ByteArrayInputStream(requestByteArray);
		HessianInput input = new HessianInput(bais);
		try {
			TransactionContext remoteTransactionContext = (TransactionContext) input.readObject();
			remoteTransactionContext.setPropagatedBy(propagatedBy);
			request.setTransactionContext(remoteTransactionContext);
		} catch (IOException ex) {
			logger.error("Error occurred in remote call!", ex);
			rpcError = new RemotingException(ex.getMessage());
		}
	}

	try {
		transactionInterceptor.afterReceiveRequest(request);
	} catch (RuntimeException rex) {
		logger.error("Error occurred in remote call!", rex);
		throw new RemotingException(rex.getMessage());
	}

	if (rpcError != null) {
		throw rpcError;
	}

}
 
Example #13
Source File: CompensablePrimaryFilter.java    From ByteTCC with GNU Lesser General Public License v3.0 5 votes vote down vote up
private void afterConsumerInvokeForSVC(Invocation invocation, TransactionRequestImpl request,
		TransactionResponseImpl response) {
	CompensableBeanRegistry beanRegistry = CompensableBeanRegistry.getInstance();
	CompensableBeanFactory beanFactory = beanRegistry.getBeanFactory();
	TransactionInterceptor transactionInterceptor = beanFactory.getTransactionInterceptor();

	RemotingException rpcError = null;
	try {
		if (request.getTransactionContext() != null) {
			String transactionContextContent = invocation.getAttachment(TransactionContext.class.getName());
			byte[] byteArray = ByteUtils.stringToByteArray(transactionContextContent);
			ByteArrayInputStream bais = new ByteArrayInputStream(byteArray);
			HessianInput input = new HessianInput(bais);
			TransactionContext remoteTransactionContext = (TransactionContext) input.readObject();
			response.setTransactionContext(remoteTransactionContext);
		}
	} catch (IOException ex) {
		logger.error("Error occurred in remote call!", ex);
		rpcError = new RemotingException(ex.getMessage());
	}

	try {
		transactionInterceptor.afterReceiveResponse(response);
	} catch (RuntimeException rex) {
		logger.error("Error occurred in remote call!", rex);
		throw new RemotingException(rex.getMessage());
	}

	if (rpcError != null) {
		throw rpcError;
	}

}
 
Example #14
Source File: CompensablePrimaryFilter.java    From ByteTCC with GNU Lesser General Public License v3.0 5 votes vote down vote up
private void beforeProviderInvokeForSVC(Invocation invocation, TransactionRequestImpl request,
		TransactionResponseImpl response) {
	CompensableBeanRegistry beanRegistry = CompensableBeanRegistry.getInstance();
	CompensableBeanFactory beanFactory = beanRegistry.getBeanFactory();
	TransactionInterceptor transactionInterceptor = beanFactory.getTransactionInterceptor();

	RemotingException rpcError = null;
	String transactionContextContent = invocation.getAttachment(TransactionContext.class.getName());
	String propagatedBy = invocation.getAttachment(RemoteCoordinator.class.getName());
	if (StringUtils.isNotBlank(transactionContextContent)) {
		byte[] requestByteArray = ByteUtils.stringToByteArray(transactionContextContent);
		ByteArrayInputStream bais = new ByteArrayInputStream(requestByteArray);
		HessianInput input = new HessianInput(bais);
		try {
			TransactionContext remoteTransactionContext = (TransactionContext) input.readObject();
			remoteTransactionContext.setPropagatedBy(propagatedBy);
			request.setTransactionContext(remoteTransactionContext);
		} catch (IOException ex) {
			logger.error("Error occurred in remote call!", ex);
			rpcError = new RemotingException(ex.getMessage());
		}
	}

	try {
		transactionInterceptor.afterReceiveRequest(request);
	} catch (RuntimeException rex) {
		logger.error("Error occurred in remote call!", rex);
		throw new RemotingException(rex.getMessage());
	}

	if (rpcError != null) {
		throw rpcError;
	}

}
 
Example #15
Source File: HessianRowDeserializationSchema.java    From alchemy with Apache License 2.0 5 votes vote down vote up
@Override
public Row deserialize(byte[] bytes) throws IOException {
    ByteArrayInputStream is = new ByteArrayInputStream(bytes);
    HessianInput hi = new HessianInput(is);
    Object object = hi.readObject();
    if (object.getClass() != clazz) {
        throw new ClassCastException("expected class is:" + clazz + " but is :" + object.getClass());
    }
    return ConvertRowUtil.convertToRow(object, ((RowTypeInfo)typeInfo).getFieldNames());
}
 
Example #16
Source File: Lesson2_4.java    From java-interview with Apache License 2.0 5 votes vote down vote up
public static void main(String[] args) throws IOException, ClassNotFoundException {
    // 对象赋值
    User user = new User();
    user.setName("老王");
    user.setAge(30);
    System.out.println(user);

    // -------------------------- Java 原生序列化 ----------------------------
    // 创建输出流(序列化内容到磁盘)
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("test.out"));
    // 序列化对象
    oos.writeObject(user);
    oos.flush();
    oos.close();

    // 创建输入流(从磁盘反序列化)
    ObjectInputStream ois = new ObjectInputStream(new FileInputStream("test.out"));
    // 反序列化
    User user2 = (User) ois.readObject();
    ois.close();
    System.out.println(user2);

    // -------------------------- JSON 序列化(fastjson) ----------------------------
    String jsonSerialize = JSON.toJSONString(user);
    User user3 = (User) JSON.parseObject(jsonSerialize, User.class);
    System.out.println(user3);

    // --------------------------  Hessian 序列化 ----------------------------
    // 序列化
    ByteArrayOutputStream bo = new ByteArrayOutputStream();
    HessianOutput hessianOutput = new HessianOutput(bo);
    hessianOutput.writeObject(user);
    byte[] hessianBytes = bo.toByteArray();
    // 反序列化
    ByteArrayInputStream bi = new ByteArrayInputStream(hessianBytes);
    HessianInput hessianInput = new HessianInput(bi);
    User user4 = (User) hessianInput.readObject();
    System.out.println(user4);
}
 
Example #17
Source File: Hessian.java    From marshalsec with MIT License 2 votes vote down vote up
/**
 * {@inheritDoc}
 *
 * @see marshalsec.AbstractHessianBase#createInput(java.io.ByteArrayInputStream)
 */
@Override
protected AbstractHessianInput createInput ( ByteArrayInputStream bos ) {
    return new HessianInput(bos);
}