[1/2] cxf git commit: [CXF-6121] Optimizing a bit SpringResourceFactory
Repository: cxf Updated Branches: refs/heads/master ec98e18c8 - 2b2f97fe1 [CXF-6121] Optimizing a bit SpringResourceFactory Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/cba91b8f Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/cba91b8f Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/cba91b8f Branch: refs/heads/master Commit: cba91b8f1b4c207c35d8c3d49eed66d274aaa28f Parents: b0ba2d1 Author: Sergey Beryozkin sberyoz...@talend.com Authored: Wed Dec 3 17:01:00 2014 + Committer: Sergey Beryozkin sberyoz...@talend.com Committed: Wed Dec 3 17:01:00 2014 + -- .../cxf/jaxrs/spring/SpringResourceFactory.java | 28 ++-- 1 file changed, 20 insertions(+), 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/cba91b8f/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/SpringResourceFactory.java -- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/SpringResourceFactory.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/SpringResourceFactory.java index 99f496c..826f619 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/SpringResourceFactory.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/SpringResourceFactory.java @@ -54,6 +54,7 @@ public class SpringResourceFactory implements ResourceProvider, ApplicationConte private boolean callPreDestroy = true; private String postConstructMethodName; private String preDestroyMethodName; +private Object singletonInstance; public SpringResourceFactory() { @@ -78,21 +79,32 @@ public class SpringResourceFactory implements ResourceProvider, ApplicationConte isSingleton = ac.isSingleton(beanId); if (!isSingleton) { isPrototype = ac.isPrototype(beanId); +} else { +try { +singletonInstance = ac.getBean(beanId); +} catch (BeansException ex) { +// ignore for now, can be to do with no default constructor available +} } + } /** * {@inheritDoc} */ public Object getInstance(Message m) { -ProviderInfo? application = m == null ? null -: (ProviderInfo?)m.getExchange().getEndpoint().get(Application.class.getName()); -MapClass?, Object mapValues = CastUtils.cast(application == null ? null -: Collections.singletonMap(Application.class, application.getProvider())); -Object[] values = ResourceUtils.createConstructorArguments(c, m, !isSingleton(), mapValues); -Object instance = values.length 0 ? ac.getBean(beanId, values) : ac.getBean(beanId); -initInstance(m, instance); -return instance; +if (singletonInstance != null) { +return singletonInstance; +} else { +ProviderInfo? application = m == null ? null +: (ProviderInfo?)m.getExchange().getEndpoint().get(Application.class.getName()); +MapClass?, Object mapValues = CastUtils.cast(application == null ? null +: Collections.singletonMap(Application.class, application.getProvider())); +Object[] values = ResourceUtils.createConstructorArguments(c, m, !isSingleton(), mapValues); +Object instance = values.length 0 ? ac.getBean(beanId, values) : ac.getBean(beanId); +initInstance(m, instance); +return instance; +} } protected void initInstance(Message m, Object instance) {
cxf git commit: [CXF-6121] Optimizing a bit SpringResourceFactory
Repository: cxf Updated Branches: refs/heads/3.0.x-fixes ea800588a - 1cdac9254 [CXF-6121] Optimizing a bit SpringResourceFactory Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/1cdac925 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/1cdac925 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/1cdac925 Branch: refs/heads/3.0.x-fixes Commit: 1cdac92540d5df49edf92876150fcb5bf873f49a Parents: ea80058 Author: Sergey Beryozkin sberyoz...@talend.com Authored: Wed Dec 3 17:01:00 2014 + Committer: Sergey Beryozkin sberyoz...@talend.com Committed: Wed Dec 3 17:02:41 2014 + -- .../cxf/jaxrs/spring/SpringResourceFactory.java | 28 ++-- 1 file changed, 20 insertions(+), 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/1cdac925/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/SpringResourceFactory.java -- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/SpringResourceFactory.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/SpringResourceFactory.java index 99f496c..826f619 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/SpringResourceFactory.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/SpringResourceFactory.java @@ -54,6 +54,7 @@ public class SpringResourceFactory implements ResourceProvider, ApplicationConte private boolean callPreDestroy = true; private String postConstructMethodName; private String preDestroyMethodName; +private Object singletonInstance; public SpringResourceFactory() { @@ -78,21 +79,32 @@ public class SpringResourceFactory implements ResourceProvider, ApplicationConte isSingleton = ac.isSingleton(beanId); if (!isSingleton) { isPrototype = ac.isPrototype(beanId); +} else { +try { +singletonInstance = ac.getBean(beanId); +} catch (BeansException ex) { +// ignore for now, can be to do with no default constructor available +} } + } /** * {@inheritDoc} */ public Object getInstance(Message m) { -ProviderInfo? application = m == null ? null -: (ProviderInfo?)m.getExchange().getEndpoint().get(Application.class.getName()); -MapClass?, Object mapValues = CastUtils.cast(application == null ? null -: Collections.singletonMap(Application.class, application.getProvider())); -Object[] values = ResourceUtils.createConstructorArguments(c, m, !isSingleton(), mapValues); -Object instance = values.length 0 ? ac.getBean(beanId, values) : ac.getBean(beanId); -initInstance(m, instance); -return instance; +if (singletonInstance != null) { +return singletonInstance; +} else { +ProviderInfo? application = m == null ? null +: (ProviderInfo?)m.getExchange().getEndpoint().get(Application.class.getName()); +MapClass?, Object mapValues = CastUtils.cast(application == null ? null +: Collections.singletonMap(Application.class, application.getProvider())); +Object[] values = ResourceUtils.createConstructorArguments(c, m, !isSingleton(), mapValues); +Object instance = values.length 0 ? ac.getBean(beanId, values) : ac.getBean(beanId); +initInstance(m, instance); +return instance; +} } protected void initInstance(Message m, Object instance) {