Author: sergeyb Date: Thu Nov 1 14:41:12 2012 New Revision: 1404615 URL: http://svn.apache.org/viewvc?rev=1404615&view=rev Log: Merged revisions 1404613 via svnmerge from https://svn.apache.org/repos/asf/cxf/branches/2.6.x-fixes
................ r1404613 | sergeyb | 2012-11-01 14:38:09 +0000 (Thu, 01 Nov 2012) | 9 lines Merged revisions 1404611 via svnmerge from https://svn.apache.org/repos/asf/cxf/trunk ........ r1404611 | sergeyb | 2012-11-01 14:34:45 +0000 (Thu, 01 Nov 2012) | 1 line [CXF-4607] Adding RequestDispatcherProvider enumResources property ........ ................ Modified: cxf/branches/2.5.x-fixes/ (props changed) cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RequestDispatcherProvider.java cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/RequestDispatcherProviderTest.java Propchange: cxf/branches/2.5.x-fixes/ ------------------------------------------------------------------------------ Merged /cxf/trunk:r1404611 Merged /cxf/branches/2.6.x-fixes:r1404613 Propchange: cxf/branches/2.5.x-fixes/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RequestDispatcherProvider.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RequestDispatcherProvider.java?rev=1404615&r1=1404614&r2=1404615&view=diff ============================================================================== --- cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RequestDispatcherProvider.java (original) +++ cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/RequestDispatcherProvider.java Thu Nov 1 14:41:12 2012 @@ -75,6 +75,7 @@ public class RequestDispatcherProvider e private String resourcePath; private Map<String, String> resourcePaths = Collections.emptyMap(); private Map<String, String> classResources = Collections.emptyMap(); + private Map<? extends Enum<?>, String> enumResources = Collections.emptyMap(); private boolean useClassNames; private String scope = REQUEST_SCOPE; @@ -141,6 +142,11 @@ public class RequestDispatcherProvider e private boolean classResourceSupported(Class<?> type) { String typeName = type.getName(); if (type.isEnum()) { + for (Object o : enumResources.keySet()) { + if (o.getClass().getName().equals(typeName)) { + return true; + } + } for (String name : classResources.keySet()) { if (name.startsWith(typeName)) { return true; @@ -200,6 +206,10 @@ public class RequestDispatcherProvider e String name = cls.getName(); if (cls.isEnum()) { + String enumResource = enumResources.get(o); + if (enumResource != null) { + return enumResource; + } name += "." + o.toString(); } @@ -338,6 +348,10 @@ public class RequestDispatcherProvider e this.saveParametersAsAttributes = saveParametersAsAttributes; } + public void setEnumResources(Map<? extends Enum<?>, String> enumResources) { + this.enumResources = enumResources; + } + protected static class HttpServletRequestFilter extends HttpServletRequestWrapper { private Map<String, String[]> params; Modified: cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/RequestDispatcherProviderTest.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/RequestDispatcherProviderTest.java?rev=1404615&r1=1404614&r2=1404615&view=diff ============================================================================== --- cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/RequestDispatcherProviderTest.java (original) +++ cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/RequestDispatcherProviderTest.java Thu Nov 1 14:41:12 2012 @@ -36,6 +36,16 @@ public class RequestDispatcherProviderTe assertEquals("/test.jsp", p.getResourcePath(TestEnum.ONE.getClass(), TestEnum.ONE)); } + @Test + public void testIsWriteableEnum2() { + + RequestDispatcherProvider p = new RequestDispatcherProvider(); + p.setEnumResources( + Collections.singletonMap(TestEnum.ONE, "/test.jsp")); + assertTrue(p.isWriteable(TestEnum.ONE.getClass(), null, null, null)); + assertEquals("/test.jsp", p.getResourcePath(TestEnum.ONE.getClass(), TestEnum.ONE)); + } + private static enum TestEnum { ONE, TWO
