com.dell.cpsd.service.common.client.rpc.AbstractMessageConsumer Maven / Gradle / Ivy
/**
* Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved.
* Dell EMC Confidential/Proprietary Information
*/
package com.dell.cpsd.service.common.client.rpc;
import com.dell.cpsd.common.logging.ILogger;
import com.dell.cpsd.common.rabbitmq.consumer.UnhandledMessageConsumer;
import com.dell.cpsd.service.common.client.callback.IServiceCallback;
import com.dell.cpsd.service.common.client.log.SCCLMessageCode;
import java.util.HashMap;
import java.util.Map;
/**
*
* Copyright © 2017 Dell Inc. or its subsidiaries. All Rights Reserved.
* Dell EMC Confidential/Proprietary Information
*
*
* @since 1.0
*/
public abstract class AbstractMessageConsumer extends UnhandledMessageConsumer implements DelegatingMessageConsumer
{
private Map adapters = new HashMap<>();
@Override
public void addAdapter(ServiceCallbackAdapter callback)
{
adapters.put(callback.getSourceClass(), callback);
}
void handleMessage(Object message)
{
if (message != null)
{
ServiceCallbackAdapter adapter = adapters.get(message.getClass());
if (adapter != null)
{
handleResponse(message, adapter);
}
}
}
protected void handleResponse(final M message, final ServiceCallbackAdapter handler)
{
if (message == null)
{
return;
}
final IServiceCallback callback = handler.take(message);
if (callback == null)
{
return;
}
final R response = handler.transform(message);
try
{
handler.consume(callback, response);
}
catch (Exception exception)
{
// log the exception thrown by the compute callback
Object[] lparams = {"handleResponseCallback", exception.getMessage()};
getLogger().error(SCCLMessageCode.ERROR_CALLBACK_FAIL_E.getMessageCode(), lparams, exception);
}
}
protected abstract ILogger getLogger();
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy