
io.tracee.binding.springws.AbstractTraceeInterceptor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of tracee-springws Show documentation
Show all versions of tracee-springws Show documentation
Please refer to https://github.com/tracee/tracee.
The newest version!
package io.tracee.binding.springws;
import io.tracee.TraceeBackend;
import io.tracee.configuration.TraceeFilterConfiguration;
import io.tracee.configuration.TraceeFilterConfiguration.Channel;
import io.tracee.transport.SoapHeaderTransport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ws.WebServiceMessage;
import org.springframework.ws.soap.SoapHeader;
import org.springframework.ws.soap.SoapHeaderElement;
import org.springframework.ws.soap.SoapHeaderException;
import org.springframework.ws.soap.SoapMessage;
import java.util.Collections;
import java.util.Iterator;
import java.util.Map;
import static io.tracee.TraceeConstants.SOAP_HEADER_QNAME;
abstract class AbstractTraceeInterceptor {
protected static final SoapHeaderTransport soapHeaderTransport = new SoapHeaderTransport();
protected final TraceeBackend backend;
protected static final Logger logger = LoggerFactory.getLogger(AbstractTraceeInterceptor.class);
protected final String profile;
public AbstractTraceeInterceptor(final TraceeBackend backend, final String profile) {
this.backend = backend;
this.profile = profile;
}
protected void parseContextFromSoapHeader(final WebServiceMessage message, final Channel channel) {
if (message instanceof SoapMessage) {
final SoapMessage soapMessage = (SoapMessage) message;
final TraceeFilterConfiguration filterConfiguration = backend.getConfiguration(profile);
if (filterConfiguration.shouldProcessContext(channel)) {
final SoapHeader soapHeader = soapMessage.getSoapHeader();
if (soapHeader != null) {
Iterator tpicHeaders;
try {
tpicHeaders = soapHeader.examineHeaderElements(SOAP_HEADER_QNAME);
} catch (SoapHeaderException ignored) {
tpicHeaders = Collections.emptyList().iterator();
}
if (tpicHeaders.hasNext()) {
final Map parsedTpic = soapHeaderTransport.parseTpicHeader(tpicHeaders.next().getSource());
backend.putAll(filterConfiguration.filterDeniedParams(parsedTpic, channel));
}
}
}
} else {
logger.info("Message is obviously no soap message - Not instance of Spring-WS SoapMessage");
}
}
protected void serializeContextToSoapHeader(final WebServiceMessage message, final Channel channel) {
if (message instanceof SoapMessage) {
final SoapMessage soapMessage = (SoapMessage) message;
final TraceeFilterConfiguration filterConfiguration = backend.getConfiguration(profile);
if (!backend.isEmpty() && filterConfiguration.shouldProcessContext(channel)) {
final SoapHeader soapHeader = soapMessage.getSoapHeader();
if (soapHeader != null) {
final Map context = filterConfiguration.filterDeniedParams(backend.copyToMap(), channel);
soapHeaderTransport.renderSoapHeader(context, soapHeader.getResult());
}
}
} else {
logger.info("Message is obviously no soap message - Not instance of Spring-WS SoapMessage");
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy