This is an automated email from the ASF dual-hosted git repository.
coheigea pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/main by this push:
new 63ebc1415a9 CXF-8156 - Include the matched JAX-RS resource operation
in fault log messages (#3608)
63ebc1415a9 is described below
commit 63ebc1415a9aff06a2bce36073fcee225345d177
Author: Colm O hEigeartaigh <[email protected]>
AuthorDate: Wed Oct 21 06:26:24 2026 +0100
CXF-8156 - Include the matched JAX-RS resource operation in fault log
messages (#3608)
---
.../apache/cxf/phase/PhaseInterceptorChain.java | 5 ++++
.../cxf/phase/PhaseInterceptorChainTest.java | 27 ++++++++++++++++++++++
2 files changed, 32 insertions(+)
diff --git a/core/src/main/java/org/apache/cxf/phase/PhaseInterceptorChain.java
b/core/src/main/java/org/apache/cxf/phase/PhaseInterceptorChain.java
index 316e58d26f3..6629deb1e6e 100644
--- a/core/src/main/java/org/apache/cxf/phase/PhaseInterceptorChain.java
+++ b/core/src/main/java/org/apache/cxf/phase/PhaseInterceptorChain.java
@@ -389,6 +389,11 @@ public class PhaseInterceptorChain implements
InterceptorChain {
OperationInfo opInfo = boi != null ? boi.getOperationInfo() :
null;
if (opInfo != null) {
description.append('#').append(opInfo.getName());
+ } else {
+ Object resourceOperation =
exchange.get(Message.RESOURCE_OPERATION_NAME);
+ if (resourceOperation != null) {
+ description.append('#').append(resourceOperation);
+ }
}
description.append("\' ");
}
diff --git
a/core/src/test/java/org/apache/cxf/phase/PhaseInterceptorChainTest.java
b/core/src/test/java/org/apache/cxf/phase/PhaseInterceptorChainTest.java
index 8067b0fdf05..b021bb14c11 100644
--- a/core/src/test/java/org/apache/cxf/phase/PhaseInterceptorChainTest.java
+++ b/core/src/test/java/org/apache/cxf/phase/PhaseInterceptorChainTest.java
@@ -26,14 +26,19 @@ import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
+import javax.xml.namespace.QName;
+
import org.apache.cxf.common.util.ReflectionUtil;
import org.apache.cxf.common.util.SortedArraySet;
import org.apache.cxf.continuations.SuspendedInvocationException;
import org.apache.cxf.interceptor.Interceptor;
import org.apache.cxf.interceptor.InterceptorChain;
import org.apache.cxf.logging.FaultListener;
+import org.apache.cxf.message.Exchange;
+import org.apache.cxf.message.ExchangeImpl;
import org.apache.cxf.message.FaultMode;
import org.apache.cxf.message.Message;
+import org.apache.cxf.service.Service;
import org.junit.Before;
import org.junit.Test;
@@ -341,6 +346,28 @@ public class PhaseInterceptorChainTest {
verifyPhaseInterceptorInvocations(p2, false, false);
}
+ @Test
+ public void testFaultDescriptionIncludesResourceOperation() throws
Exception {
+ Service service = mock(Service.class);
+ when(service.getName()).thenReturn(new QName("http://test",
"FirstResource"));
+ Exchange exchange = new ExchangeImpl();
+ exchange.put(Service.class, service);
+ exchange.put(Message.RESOURCE_OPERATION_NAME,
"SecondResource#getItem");
+ when(message.getExchange()).thenReturn(exchange);
+
+ FaultListener listener = mock(FaultListener.class);
+
when(message.getContextualProperty(FaultListener.class.getName())).thenReturn(listener);
+
+ AbstractPhaseInterceptor<Message> p = setUpPhaseInterceptor("phase1",
"p1");
+ setUpPhaseInterceptorInvocations(p, true, false);
+ chain.add(p);
+ chain.doIntercept(message);
+
+ verify(listener).faultOccurred(isA(Exception.class),
+
eq("'{http://test}FirstResource#SecondResource#getItem' "),
+ eq(message));
+ }
+
@Test
public void testWrappedInvocation() throws Exception {
CountingPhaseInterceptor p1 = new CountingPhaseInterceptor("phase1",