/** * Maps the OSG request type to the Walrus type, including BaseMessage handling for 'regarding' * and correlationId mapping * * @param outputClass * @param request * @return */ public <O extends WalrusRequestType, I extends ObjectStorageRequestType> O proxyWalrusRequest( Class<O> outputClass, I request) { O outputRequest = (O) Classes.newInstance(outputClass); outputRequest = (O) (MessageProxy.mapExcludeNulls(request, outputRequest)); outputRequest.regardingUserRequest(request); return outputRequest; }
public < O extends ObjectStorageDataResponseType, T extends ObjectStorageDataRequestType, I extends WalrusDataResponseType> O proxyWalrusDataResponse(T initialRequest, I response) { O outputResponse = (O) initialRequest.getReply(); outputResponse = (O) (MessageProxy.mapExcludeNulls(response, outputResponse)); return outputResponse; }
/** * control 代理工厂 * * @param clazz * @return */ public static <T> T getControlInstance(Class<T> clazz, MessageProxy mMethodCallBack) { Enhancer<T> enhancer; if (mMethodCallBack != null) { enhancer = new Enhancer<T>( mCacheDir, clazz, new Class[] {mMethodCallBack.getClass()}, new Object[] {mMethodCallBack}); } else { enhancer = new Enhancer<T>(mCacheDir, clazz); } enhancer.addCallBacks(new Interceptor[] {new AsyncMethodAtomInterceptor(mMethodCallBack)}); enhancer.addFilter(new AsyncMethodFilter()); return enhancer.create(); }