diff --git a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/interception/ContainerResponseContextImpl.java b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/interception/ContainerResponseContextImpl.java index c9ea94e2f2a..33182cb2c5c 100755 --- a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/interception/ContainerResponseContextImpl.java +++ b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/core/interception/ContainerResponseContextImpl.java @@ -127,6 +127,9 @@ public Type getEntityType() public void setEntity(Object entity) { //if (entity != null) logger.info("*** setEntity(Object) " + entity.toString()); + if (entity != null && jaxrsResponse.getEntity() == null && jaxrsResponse.getStatusInfo().equals(Response.Status.NO_CONTENT)){ + LogMessages.LOGGER.statusNotSet(Response.Status.NO_CONTENT.getStatusCode(), Response.Status.NO_CONTENT.getReasonPhrase()); + } jaxrsResponse.setEntity(entity); // todo TCK does weird things in its testing of get length // it resets the entity in a response filter which results @@ -139,6 +142,9 @@ public void setEntity(Object entity) public void setEntity(Object entity, Annotation[] annotations, MediaType mediaType) { //if (entity != null) logger.info("*** setEntity(Object, Annotation[], MediaType) " + entity.toString() + ", " + mediaType); + if (entity != null && jaxrsResponse.getEntity() == null && jaxrsResponse.getStatusInfo().equals(Response.Status.NO_CONTENT)){ + LogMessages.LOGGER.statusNotSet(Response.Status.NO_CONTENT.getStatusCode(), Response.Status.NO_CONTENT.getReasonPhrase()); + } jaxrsResponse.setEntity(entity); jaxrsResponse.setAnnotations(annotations); jaxrsResponse.getHeaders().putSingle(HttpHeaders.CONTENT_TYPE, mediaType); diff --git a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/resteasy_jaxrs/i18n/LogMessages.java b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/resteasy_jaxrs/i18n/LogMessages.java index 983186ef9dd..28ac8eb5a23 100644 --- a/resteasy-jaxrs/src/main/java/org/jboss/resteasy/resteasy_jaxrs/i18n/LogMessages.java +++ b/resteasy-jaxrs/src/main/java/org/jboss/resteasy/resteasy_jaxrs/i18n/LogMessages.java @@ -178,6 +178,10 @@ public interface LogMessages extends BasicLogger @Message(id = BASE + 196, value = "Component of type %s can't be dynamically bound to a resource method as a %s provider.") void providerCantBeDynamicallyBoundToMethod(Class componentClass, Class providerType); + @LogMessage(level = Level.WARN) + @Message(id = BASE + 197, value = "The previous response status was {0} {1}. The status should be changed before the entity is set.", format = Format.MESSAGE_FORMAT) + void statusNotSet(int statusCode, String reasonPhrase); + /////////////////////////////////////////////////////////////////////////////////////////////////////////// // INFO // ///////////////////////////////////////////////////////////////////////////////////////////////////////////