Repository: tomee
Updated Branches:
  refs/heads/tomee-1.7.x aa289db58 -> dbe238021


better message for missing @Context - backport from master


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/11a027bc
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/11a027bc
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/11a027bc

Branch: refs/heads/tomee-1.7.x
Commit: 11a027bcb79646bd9eaa009090350a628ee9bfbe
Parents: aa289db
Author: Romain manni-Bucau <[email protected]>
Authored: Tue Mar 22 10:38:53 2016 +0100
Committer: Romain manni-Bucau <[email protected]>
Committed: Tue Mar 22 10:38:53 2016 +0100

----------------------------------------------------------------------
 .../apache/openejb/server/cxf/rs/Contexts.java  | 24 +++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/11a027bc/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/Contexts.java
----------------------------------------------------------------------
diff --git 
a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/Contexts.java
 
b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/Contexts.java
index da82abb..740c573 100644
--- 
a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/Contexts.java
+++ 
b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/Contexts.java
@@ -24,6 +24,7 @@ import org.apache.cxf.jaxrs.utils.AnnotationUtils;
 import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
+import org.apache.cxf.phase.PhaseInterceptorChain;
 import org.apache.openejb.cdi.CdiAppContextsService;
 import org.apache.openejb.rest.ThreadLocalContextManager;
 
@@ -32,12 +33,21 @@ import javax.servlet.ServletConfig;
 import javax.servlet.ServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import javax.ws.rs.core.*;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Request;
+import javax.ws.rs.core.SecurityContext;
+import javax.ws.rs.core.UriInfo;
 import javax.ws.rs.ext.ContextResolver;
 import javax.ws.rs.ext.Providers;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Field;
-import java.util.*;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
 
 public final class Contexts {
     private static final ThreadLocal<Exchange> EXCHANGE = new 
ThreadLocal<Exchange>();
@@ -143,7 +153,15 @@ public final class Contexts {
     }
 
     public static <T> T find(final Class<T> clazz) {
-        return JAXRSUtils.createContextValue(EXCHANGE.get().getInMessage(), 
null, clazz);
+        final Message m = PhaseInterceptorChain.getCurrentMessage();
+        if (m  != null) {
+            return JAXRSUtils.createContextValue(m, null, clazz);
+        }
+        final Exchange exchange = EXCHANGE.get();
+        if (exchange == null) {
+            throw new IllegalStateException("No CXF message usable for JAX-RS 
@Context injections in that thread so can't use " + clazz);
+        }
+        return JAXRSUtils.createContextValue(exchange.getInMessage(), null, 
clazz);
     }
 
     private static class CleanUpThreadLocal implements Runnable {

Reply via email to