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 2015/01/20 13:13:25 UTC
cxf git commit: [CXF-6200] Support for registering providers as
Classes in all the cases
Repository: cxf
Updated Branches:
refs/heads/master bc5e828cd -> 862c026c9
[CXF-6200] Support for registering providers as Classes in all the cases
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/862c026c
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/862c026c
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/862c026c
Branch: refs/heads/master
Commit: 862c026c95eb65d42dd2c3ff9ea45092d7642051
Parents: bc5e828
Author: Sergey Beryozkin <sb...@talend.com>
Authored: Tue Jan 20 12:13:10 2015 +0000
Committer: Sergey Beryozkin <sb...@talend.com>
Committed: Tue Jan 20 12:13:10 2015 +0000
----------------------------------------------------------------------
.../cxf/jaxrs/provider/ProviderFactory.java | 14 +++++++-----
.../apache/cxf/jaxrs/utils/ResourceUtils.java | 23 +++++++++++---------
.../jaxrs/JAXRSClientServerBookTest.java | 2 +-
3 files changed, 23 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/862c026c/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
index 7500eca..72cff1c 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
@@ -1225,14 +1225,18 @@ public abstract class ProviderFactory {
if (o == null) {
continue;
}
- if (o instanceof Constructor) {
+ Object provider = o;
+ if (provider.getClass() == Class.class) {
+ provider = ResourceUtils.createProviderInstance((Class<?>)provider);
+ }
+ if (provider instanceof Constructor) {
Map<Class<?>, Object> values = CastUtils.cast(application == null ? null
: Collections.singletonMap(Application.class, application.getProvider()));
- theProviders.add(createProviderFromConstructor((Constructor<?>)o, values, getBus(), true));
- } else if (o instanceof ProviderInfo) {
- theProviders.add((ProviderInfo<?>)o);
+ theProviders.add(createProviderFromConstructor((Constructor<?>)provider, values, getBus(), true));
+ } else if (provider instanceof ProviderInfo) {
+ theProviders.add((ProviderInfo<?>)provider);
} else {
- theProviders.add(new ProviderInfo<Object>(o, getBus()));
+ theProviders.add(new ProviderInfo<Object>(provider, getBus()));
}
}
return theProviders;
http://git-wip-us.apache.org/repos/asf/cxf/blob/862c026c/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java
index 0cc88a0..8555fa9 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java
@@ -753,16 +753,7 @@ public final class ResourceUtils {
for (Class<?> cls : app.getClasses()) {
if (isValidApplicationClass(cls, singletons)) {
if (isValidProvider(cls)) {
- try {
- Constructor<?> c = ResourceUtils.findResourceConstructor(cls, false);
- if (c.getParameterTypes().length == 0) {
- providers.add(c.newInstance());
- } else {
- providers.add(c);
- }
- } catch (Throwable ex) {
- throw new RuntimeException("Provider " + cls.getName() + " can not be created", ex);
- }
+ providers.add(createProviderInstance(cls));
} else {
resourceClasses.add(cls);
map.put(cls, new PerRequestResourceProvider(cls));
@@ -806,6 +797,18 @@ public final class ResourceUtils {
return bean;
}
+ public static Object createProviderInstance(Class<?> cls) {
+ try {
+ Constructor<?> c = ResourceUtils.findResourceConstructor(cls, false);
+ if (c.getParameterTypes().length == 0) {
+ return c.newInstance();
+ } else {
+ return c;
+ }
+ } catch (Throwable ex) {
+ throw new RuntimeException("Provider " + cls.getName() + " can not be created", ex);
+ }
+ }
private static boolean isValidProvider(Class<?> c) {
if (c == null || c == Object.class) {
http://git-wip-us.apache.org/repos/asf/cxf/blob/862c026c/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
index d0f4b21..fde6d40 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
@@ -770,7 +770,7 @@ public class JAXRSClientServerBookTest extends AbstractBusClientServerTestBase {
public void testBookWithMultipleExceptions2() throws Exception {
List<Object> providers = new LinkedList<Object>();
providers.add(new NotReturnedExceptionMapper());
- providers.add(new NotFoundExceptionMapper());
+ providers.add(NotFoundExceptionMapper.class);
BookStore store = JAXRSClientFactory.create("http://localhost:" + PORT,
BookStore.class,
providers);