You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2013/08/29 19:09:57 UTC
svn commit: r1518712 - in /cxf/branches/2.7.x-fixes: ./
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/
systests/jaxrs/src/te...
Author: sergeyb
Date: Thu Aug 29 17:09:56 2013
New Revision: 1518712
URL: http://svn.apache.org/r1518712
Log:
Merged revisions 1518703,1518708 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1518703 | sergeyb | 2013-08-29 17:49:10 +0100 (Thu, 29 Aug 2013) | 1 line
[CXF-5245] Improving the way SpringResourceFactory deals with lifecycle methods
........
r1518708 | sergeyb | 2013-08-29 18:00:10 +0100 (Thu, 29 Aug 2013) | 1 line
[CXF-5245] Minor updates
........
Modified:
cxf/branches/2.7.x-fixes/ (props changed)
cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java
cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/SpringResourceFactory.java
cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java
cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreStorage.java
cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreWithInterface.java
cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreWithInterface2.java
cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/LifecycleInterface.java
Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
Merged /cxf/trunk:r1518703-1518708
Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java?rev=1518712&r1=1518711&r2=1518712&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java Thu Aug 29 17:09:56 2013
@@ -115,8 +115,9 @@ public class JAXRSInvoker extends Abstra
}
} else {
exchange.put(REQUEST_WAS_SUSPENDED, true);
+ } else {
+ persistRoots(exchange, rootInstance, provider);
}
- persistRoots(exchange, rootInstance, provider);
}
}
Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/SpringResourceFactory.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/SpringResourceFactory.java?rev=1518712&r1=1518711&r2=1518712&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/SpringResourceFactory.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/SpringResourceFactory.java Thu Aug 29 17:09:56 2013
@@ -43,7 +43,11 @@ public class SpringResourceFactory imple
private Method postConstructMethod;
private Method preDestroyMethod;
private boolean isSingleton;
- private boolean callLifecycleMethods = true;
+ private boolean isPrototype;
+ private boolean callPostConstruct;
+ private boolean callPreDestroy = true;
+ private String postConstructMethodName;
+ private String preDestroyMethodName;
public SpringResourceFactory() {
@@ -63,9 +67,12 @@ public class SpringResourceFactory imple
throw new RuntimeException("Resource class " + type
+ " has no valid constructor");
}
- postConstructMethod = ResourceUtils.findPostConstructMethod(type);
- preDestroyMethod = ResourceUtils.findPreDestroyMethod(type);
+ postConstructMethod = ResourceUtils.findPostConstructMethod(type, postConstructMethodName);
+ preDestroyMethod = ResourceUtils.findPreDestroyMethod(type, preDestroyMethodName);
isSingleton = ac.isSingleton(beanId);
+ if (!isSingleton) {
+ isPrototype = ac.isPrototype(beanId);
+ }
}
/**
@@ -79,8 +86,8 @@ public class SpringResourceFactory imple
}
protected void initInstance(Message m, Object instance) {
- if (callLifecycleMethods && (!isSingleton() || m == null)) {
- InjectionUtils.invokeLifeCycleMethod(instance, postConstructMethod);
+ if (isCallPostConstruct()) {
+ InjectionUtils.invokeLifeCycleMethod(ClassHelper.getRealObject(instance), postConstructMethod);
}
}
@@ -97,10 +104,14 @@ public class SpringResourceFactory imple
* {@inheritDoc}
*/
public void releaseInstance(Message m, Object o) {
- if (callLifecycleMethods && !isSingleton()) {
+ if (doCallPreDestroy()) {
InjectionUtils.invokeLifeCycleMethod(o, preDestroyMethod);
}
}
+
+ protected boolean doCallPreDestroy() {
+ return isCallPreDestroy() && isPrototype;
+ }
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
ac = applicationContext;
@@ -126,7 +137,27 @@ public class SpringResourceFactory imple
return c.getDeclaringClass();
}
- public void setCallLifecycleMethods(boolean callLifecycleMethods) {
- this.callLifecycleMethods = callLifecycleMethods;
+ public void setCallPostConstruct(boolean callPostConstruct) {
+ this.callPostConstruct = callPostConstruct;
+ }
+
+ public boolean isCallPostConstruct() {
+ return this.callPostConstruct;
+ }
+
+ public void setCallPreDestroy(boolean callPreDestroy) {
+ this.callPreDestroy = callPreDestroy;
+ }
+
+ public boolean isCallPreDestroy() {
+ return this.callPreDestroy;
+ }
+
+ public void setPreDestroyMethodName(String preDestroyMethodName) {
+ this.preDestroyMethodName = preDestroyMethodName;
+ }
+
+ public void setPostConstructMethodName(String postConstructMethodName) {
+ this.postConstructMethodName = postConstructMethodName;
}
}
Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java?rev=1518712&r1=1518711&r2=1518712&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java Thu Aug 29 17:09:56 2013
@@ -117,22 +117,28 @@ public final class ResourceUtils {
private ResourceUtils() {
}
-
public static Method findPostConstructMethod(Class<?> c) {
+ return findPostConstructMethod(c, null);
+ }
+ public static Method findPostConstructMethod(Class<?> c, String name) {
if (Object.class == c || null == c) {
return null;
}
for (Method m : c.getDeclaredMethods()) {
- if (m.getAnnotation(PostConstruct.class) != null) {
+ if (name != null) {
+ if (m.getName().equals(name)) {
+ return m;
+ }
+ } else if (m.getAnnotation(PostConstruct.class) != null) {
return m;
}
}
- Method m = findPostConstructMethod(c.getSuperclass());
+ Method m = findPostConstructMethod(c.getSuperclass(), name);
if (m != null) {
return m;
}
for (Class<?> i : c.getInterfaces()) {
- m = findPostConstructMethod(i);
+ m = findPostConstructMethod(i, name);
if (m != null) {
return m;
}
@@ -141,20 +147,28 @@ public final class ResourceUtils {
}
public static Method findPreDestroyMethod(Class<?> c) {
+ return findPreDestroyMethod(c, null);
+ }
+
+ public static Method findPreDestroyMethod(Class<?> c, String name) {
if (Object.class == c || null == c) {
return null;
}
for (Method m : c.getDeclaredMethods()) {
- if (m.getAnnotation(PreDestroy.class) != null) {
+ if (name != null) {
+ if (m.getName().equals(name)) {
+ return m;
+ }
+ } else if (m.getAnnotation(PreDestroy.class) != null) {
return m;
}
}
- Method m = findPreDestroyMethod(c.getSuperclass());
+ Method m = findPreDestroyMethod(c.getSuperclass(), name);
if (m != null) {
return m;
}
for (Class<?> i : c.getInterfaces()) {
- m = findPreDestroyMethod(i);
+ m = findPreDestroyMethod(i, name);
if (m != null) {
return m;
}
Modified: cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreStorage.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreStorage.java?rev=1518712&r1=1518711&r2=1518712&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreStorage.java (original)
+++ cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreStorage.java Thu Aug 29 17:09:56 2013
@@ -22,10 +22,25 @@ package org.apache.cxf.systest.jaxrs;
import java.util.HashMap;
import java.util.Map;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
import javax.ws.rs.Path;
@Path("/bookstorestorage/")
-public abstract class BookStoreStorage {
+public abstract class BookStoreStorage implements LifecycleInterface {
protected Map<Long, Book> books = new HashMap<Long, Book>();
protected long bookId = 123;
+ protected boolean postConstructCalled;
+
+ @PostConstruct
+ public void postConstruct() {
+ if (postConstructCalled) {
+ throw new RuntimeException();
+ }
+ postConstructCalled = true;
+ }
+ @PreDestroy
+ public void preDestroy() {
+ // System.out.println("PreDestroy called");
+ }
}
Modified: cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreWithInterface.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreWithInterface.java?rev=1518712&r1=1518711&r2=1518712&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreWithInterface.java (original)
+++ cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreWithInterface.java Thu Aug 29 17:09:56 2013
@@ -42,11 +42,8 @@ package org.apache.cxf.systest.jaxrs;
-public class BookStoreWithInterface extends BookStoreStorage
- implements BookInterface, LifecycleInterface {
+public class BookStoreWithInterface extends BookStoreStorage implements BookInterface {
- private boolean postConstructCalled;
-
public BookStoreWithInterface() {
Book book = new Book();
book.setId(bookId);
@@ -54,14 +51,6 @@ public class BookStoreWithInterface exte
books.put(book.getId(), book);
}
- public void postConstruct() {
- postConstructCalled = true;
- }
-
- public void preDestroy() {
- //System.out.println("PreDestroy called");
- }
-
public Book getThatBook(Long id, String s) throws BookNotFoundFault {
if (!postConstructCalled) {
throw new RuntimeException();
Modified: cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreWithInterface2.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreWithInterface2.java?rev=1518712&r1=1518711&r2=1518712&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreWithInterface2.java (original)
+++ cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreWithInterface2.java Thu Aug 29 17:09:56 2013
@@ -38,6 +38,7 @@
package org.apache.cxf.systest.jaxrs;
+import javax.annotation.PreDestroy;
import javax.servlet.ServletContext;
import javax.ws.rs.core.Context;
@@ -58,6 +59,11 @@ public class BookStoreWithInterface2 ext
this.servletContext = scontext;
}
+ @PreDestroy
+ public void preDestroy() {
+ System.out.println("PreDestroy called");
+ }
+
public Book getThatBook(Long id, String s) throws BookNotFoundFault {
if (servletContext == null) {
throw new RuntimeException();
Modified: cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/LifecycleInterface.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/LifecycleInterface.java?rev=1518712&r1=1518711&r2=1518712&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/LifecycleInterface.java (original)
+++ cxf/branches/2.7.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/LifecycleInterface.java Thu Aug 29 17:09:56 2013
@@ -18,12 +18,8 @@
*/
package org.apache.cxf.systest.jaxrs;
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
public interface LifecycleInterface {
- @PostConstruct
void postConstruct();
- @PreDestroy
void preDestroy();
}