package org.atricore.idbus.capabilities.josso.main.binding.logging;
import org.apache.camel.Message;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.atricore.idbus.capabilities.josso.main.util.XmlUtils;
import org.atricore.idbus.kernel.main.mediation.camel.component.binding.CamelMediationMessage;
import org.atricore.idbus.kernel.main.mediation.camel.logging.LogMessageBuilder;
/**
* @author <a href="mailto:sgonzalez@atricore.org">Sebastian Gonzalez Oyuela</a>
* @version $Id$
*/
public class JossoLogMessageBuilder implements LogMessageBuilder {
private static final Log logger = LogFactory.getLog(JossoLogMessageBuilder.class);
public boolean canHandle(Message message) {
if (!(message instanceof CamelMediationMessage))
return false;
CamelMediationMessage samlMsg = (CamelMediationMessage) message;
if (samlMsg.getMessage() == null) {
logger.trace("No message found in mediation message : " + samlMsg.getMessageId());
return false;
}
Object content = samlMsg.getMessage().getContent();
if (content == null) {
logger.trace("No message content found in mediation message : " + samlMsg.getMessageId());
return false;
}
return content.getClass().getPackage().getName().equals("org.josso.gateway.ws._1_2.protocol");
}
public String getType() {
return "josso";
}
public String buildLogMessage(Message message) {
try {
StringBuffer logMsg = new StringBuffer();
CamelMediationMessage samlMsg = (CamelMediationMessage) message;
if (samlMsg.getMessage() == null) {
logger.warn("No message found in mediation message : " + samlMsg.getMessageId());
return null;
}
Object content = samlMsg.getMessage().getContent();
// TODO : Implement JOSSO SOAP Messages XML Utils :
logMsg.append(XmlUtils.marshall(content, false));
return logMsg.toString();
} catch (Exception e) {
logger.error("Cannot generate mediation log message: " + e.getMessage(), e);
return null;
}
}
}