class DefaultContext {

	private final ConcurrentHashMap<String, Object> dataMap = new ConcurrentHashMap<>();

	private <T> void putDataMap(String key, T t) {<FILL_FUNCTION_BODY>}

	public boolean hasData(String key) {
		return dataMap.containsKey(key);
	}

	public <T> T getData(String key) {
		return (T) dataMap.get(key);
	}

	public <T> void setData(String key, T t) {
		putDataMap(key, t);
	}

}

		if (ObjectUtil.isNull(t)) {
			throw new NullParamException("data can't accept null param");
		}
		dataMap.put(key, t);
	
<no_super_class>