Skip to content

Commit c7ed2e3

Browse files
authored
Mtom was not being using never. It must be used if the service do not have ws-security and logging is off (#642)
When messageContext.getMessage() is invoked Mtom is disabled, so we must invoke it only in the cases when we need it (to configure ws-security or print request and response log) Issue: 100558
1 parent be7106b commit c7ed2e3

File tree

4 files changed

+78
-30
lines changed

4 files changed

+78
-30
lines changed

wrapperjakarta/src/main/java/com/genexus/ws/GXHandlerChain.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,15 @@ public boolean handleMessage(SOAPMessageContext messageContext) {
2727
java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();
2828
;
2929
try {
30-
messageContext.getMessage().writeTo(out);
31-
String messageBody = new String(out.toByteArray(), "utf-8");
32-
if (Boolean.FALSE.equals(outboundProperty)) {
33-
messageContext.put(GX_SOAP_BODY, messageBody);
34-
messageContext.setScope(GX_SOAP_BODY, MessageContext.Scope.APPLICATION);
35-
}
36-
logger.debug(messageBody);
30+
if (logger.isDebugEnabled()) {
31+
messageContext.getMessage().writeTo(out);
32+
String messageBody = new String(out.toByteArray(), "utf-8");
33+
if (Boolean.FALSE.equals(outboundProperty)) {
34+
messageContext.put(GX_SOAP_BODY, messageBody);
35+
messageContext.setScope(GX_SOAP_BODY, MessageContext.Scope.APPLICATION);
36+
}
37+
logger.debug(messageBody);
38+
}
3739
} catch (Exception e) {
3840
logger.error("Exception in handler: ", e);
3941
}

wrapperjakarta/src/main/java/com/genexus/ws/GXHandlerConsumerChain.java

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,19 +53,37 @@ public Set<QName> getHeaders()
5353
return headers;
5454
}
5555

56+
private SOAPMessage message;
57+
private SOAPEnvelope envelope;
58+
private SOAPHeader header;
59+
60+
private void getMessageData(SOAPMessageContext messageContext)
61+
{
62+
if (message == null)
63+
{
64+
message = messageContext.getMessage();
65+
try
66+
{
67+
envelope = message.getSOAPPart().getEnvelope();
68+
header = envelope.getHeader();
69+
}
70+
catch (SOAPException e)
71+
{
72+
logger.error("Exception in getMessageData: ", e);
73+
}
74+
}
75+
}
76+
5677
public boolean handleMessage(SOAPMessageContext messageContext)
5778
{
5879
Boolean outboundProperty = (Boolean) messageContext.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
59-
java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();;
80+
java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();
6081
try
6182
{
62-
SOAPMessage message = messageContext.getMessage();
63-
SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
64-
SOAPHeader header = envelope.getHeader();
65-
6683
//soapHeadersRaw
6784
if (Boolean.TRUE.equals(outboundProperty) && soapHeaderRaw != null)
6885
{
86+
getMessageData(messageContext);
6987
Document doc = parseXML(soapHeaderRaw);
7088
header.detachNode();
7189
SOAPHeader sh = envelope.addHeader();
@@ -78,6 +96,7 @@ public boolean handleMessage(SOAPMessageContext messageContext)
7896
IGXWSAddressing wsAddressing = location.getWSAddressing();
7997
if (wsAddressing != null && Boolean.TRUE.equals(outboundProperty) && soapHeaderRaw == null && !wsAddressing.getMessageID().isEmpty())
8098
{
99+
getMessageData(messageContext);
81100
header.addNamespaceDeclaration("wsa", WSSECURITY_ADDRESSING_URL);
82101

83102
//wsa:Action
@@ -133,6 +152,7 @@ public boolean handleMessage(SOAPMessageContext messageContext)
133152

134153
if (Boolean.TRUE.equals(outboundProperty) && soapHeaderRaw == null && ((wsSignature != null && !wsSignature.getAlias().isEmpty()) || (wsEncryption != null && !wsEncryption.getAlias().isEmpty())))
135154
{
155+
getMessageData(messageContext);
136156
Document doc = messageToDocument(messageContext.getMessage());
137157

138158
//Security header
@@ -192,9 +212,11 @@ public boolean handleMessage(SOAPMessageContext messageContext)
192212
message.saveChanges();
193213
}
194214

195-
messageContext.getMessage().writeTo(out);
196-
String messageBody = new String(out.toByteArray(), "utf-8");
197-
logger.debug(messageBody);
215+
if (logger.isDebugEnabled()) {
216+
messageContext.getMessage().writeTo(out);
217+
String messageBody = new String(out.toByteArray(), "utf-8");
218+
logger.debug(messageBody);
219+
}
198220
}
199221
catch (Exception e)
200222
{

wrapperjavax/src/main/java/com/genexus/ws/GXHandlerChain.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,15 @@ public boolean handleMessage(SOAPMessageContext messageContext) {
2727
java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();
2828
;
2929
try {
30-
messageContext.getMessage().writeTo(out);
31-
String messageBody = new String(out.toByteArray(), "utf-8");
32-
if (Boolean.FALSE.equals(outboundProperty)) {
33-
messageContext.put(GX_SOAP_BODY, messageBody);
34-
messageContext.setScope(GX_SOAP_BODY, MessageContext.Scope.APPLICATION);
35-
}
36-
logger.debug(messageBody);
30+
if (logger.isDebugEnabled()) {
31+
messageContext.getMessage().writeTo(out);
32+
String messageBody = new String(out.toByteArray(), "utf-8");
33+
if (Boolean.FALSE.equals(outboundProperty)) {
34+
messageContext.put(GX_SOAP_BODY, messageBody);
35+
messageContext.setScope(GX_SOAP_BODY, MessageContext.Scope.APPLICATION);
36+
}
37+
logger.debug(messageBody);
38+
}
3739
} catch (Exception e) {
3840
logger.error("Exception in handler: ", e);
3941
}

wrapperjavax/src/main/java/com/genexus/ws/GXHandlerConsumerChain.java

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,19 +53,37 @@ public Set<QName> getHeaders()
5353
return headers;
5454
}
5555

56+
private SOAPMessage message;
57+
private SOAPEnvelope envelope;
58+
private SOAPHeader header;
59+
60+
private void getMessageData(SOAPMessageContext messageContext)
61+
{
62+
if (message == null)
63+
{
64+
message = messageContext.getMessage();
65+
try
66+
{
67+
envelope = message.getSOAPPart().getEnvelope();
68+
header = envelope.getHeader();
69+
}
70+
catch (SOAPException e)
71+
{
72+
logger.error("Exception in getMessageData: ", e);
73+
}
74+
}
75+
}
76+
5677
public boolean handleMessage(SOAPMessageContext messageContext)
5778
{
5879
Boolean outboundProperty = (Boolean) messageContext.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
59-
java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();;
80+
java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();
6081
try
6182
{
62-
SOAPMessage message = messageContext.getMessage();
63-
SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
64-
SOAPHeader header = envelope.getHeader();
65-
6683
//soapHeadersRaw
6784
if (Boolean.TRUE.equals(outboundProperty) && soapHeaderRaw != null)
6885
{
86+
getMessageData(messageContext);
6987
Document doc = parseXML(soapHeaderRaw);
7088
header.detachNode();
7189
SOAPHeader sh = envelope.addHeader();
@@ -78,6 +96,7 @@ public boolean handleMessage(SOAPMessageContext messageContext)
7896
IGXWSAddressing wsAddressing = location.getWSAddressing();
7997
if (wsAddressing != null && Boolean.TRUE.equals(outboundProperty) && soapHeaderRaw == null && !wsAddressing.getMessageID().isEmpty())
8098
{
99+
getMessageData(messageContext);
81100
header.addNamespaceDeclaration("wsa", WSSECURITY_ADDRESSING_URL);
82101

83102
//wsa:Action
@@ -133,6 +152,7 @@ public boolean handleMessage(SOAPMessageContext messageContext)
133152

134153
if (Boolean.TRUE.equals(outboundProperty) && soapHeaderRaw == null && ((wsSignature != null && !wsSignature.getAlias().isEmpty()) || (wsEncryption != null && !wsEncryption.getAlias().isEmpty())))
135154
{
155+
getMessageData(messageContext);
136156
Document doc = messageToDocument(messageContext.getMessage());
137157

138158
//Security header
@@ -192,9 +212,11 @@ public boolean handleMessage(SOAPMessageContext messageContext)
192212
message.saveChanges();
193213
}
194214

195-
messageContext.getMessage().writeTo(out);
196-
String messageBody = new String(out.toByteArray(), "utf-8");
197-
logger.debug(messageBody);
215+
if (logger.isDebugEnabled()) {
216+
messageContext.getMessage().writeTo(out);
217+
String messageBody = new String(out.toByteArray(), "utf-8");
218+
logger.debug(messageBody);
219+
}
198220
}
199221
catch (Exception e)
200222
{

0 commit comments

Comments
 (0)