package org.appverse.web.framework.backend.ws.handlers;
import java.util.Date;
import javax.xml.ws.handler.LogicalHandler;
import javax.xml.ws.handler.LogicalMessageContext;
import javax.xml.ws.handler.MessageContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Client Performance Monitor Handler
* @author MOCR
*
*/
public class ClientPerformanceMonitorLogicalHandler extends
BaseHandler<LogicalMessageContext> implements
LogicalHandler<LogicalMessageContext> {
/**
* Logger
*/
private static Logger logger = LoggerFactory.getLogger(ClientPerformanceMonitorLogicalHandler.class);
/**
* Handler name
*/
private static final String HANDLER_NAME = "ClientPerformanceMonitorLogicalHandler";
/**
* Handle times
*/
private Date startTime, endTime;
/**
* Constructor
*/
public ClientPerformanceMonitorLogicalHandler() {
super();
super.setHandlerName(HANDLER_NAME);
}
/**
* Handle message
* @param smc SOAPMessageContext
* @return boolean
*/
public boolean handleMessage(LogicalMessageContext smc) {
Boolean outboundProperty = (Boolean) smc
.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
if (outboundProperty.booleanValue()) {
startTime = new Date();
smc.put(HandlerName + "StartTime", startTime);
} else {
try {
startTime = (Date) smc.get(HandlerName + "StartTime");
endTime = new Date();
long elapsedTime = endTime.getTime() - startTime.getTime();
smc.put("ELAPSED_TIME", elapsedTime);
smc.setScope("ELAPSED_TIME", MessageContext.Scope.APPLICATION);
logger.info("Elapsed time in handler " + HandlerName + " is "
+ elapsedTime);
} catch (Exception x) {
x.printStackTrace();
}
}
return true;
}
}