You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Daniel Kulp (JIRA)" <ji...@apache.org> on 2012/10/12 22:03:05 UTC
[jira] [Resolved] (CXF-4391)
org.apache.cxf.configuration.spring.ConfigurerImpl.initWildcardDefinitionMap
does not fail silently when bean names containing certain characters do not
parse as a regex
[ https://issues.apache.org/jira/browse/CXF-4391?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Kulp resolved CXF-4391.
------------------------------
Resolution: Fixed
Fix Version/s: 2.7.1
2.6.4
2.5.7
Assignee: Daniel Kulp
> org.apache.cxf.configuration.spring.ConfigurerImpl.initWildcardDefinitionMap does not fail silently when bean names containing certain characters do not parse as a regex
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CXF-4391
> URL: https://issues.apache.org/jira/browse/CXF-4391
> Project: CXF
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.6.1
> Environment: Spring 3.0.5 App using Spring integration and SpEL expressions
> Reporter: Owen Cliffe
> Assignee: Daniel Kulp
> Priority: Minor
> Fix For: 2.5.7, 2.6.4, 2.7.1
>
>
> When ConfigurerImpl.initWildcardDefinitionMap scans bean names for wildcard matches it assumes that all bean definition names containing "*,?,(.+)" are wildcard beans.
> When using Spring integration it is possible in certain places to refer to bean names via a SPeL expression (e.g referencing channels defined as constants),:
> i.e.
> {code}
> <int:transformer input-channel="#{T(foo.bar.Channels).DEFINED_CHANEL}">
> ...
> {code}
> When CXF initialises it tries to parse the uninterpolated value as a regex:
> {code}
> Caused by: java.util.regex.PatternSyntaxException: Illegal repetition near index 0
> #{T(foo.bar.Channels).DEFINED_CHANEL}
> ^
> at java.util.regex.Pattern.error(Pattern.java:1713)
> at java.util.regex.Pattern.closure(Pattern.java:2775)
> at java.util.regex.Pattern.sequence(Pattern.java:1889)
> at java.util.regex.Pattern.expr(Pattern.java:1752)
> at java.util.regex.Pattern.compile(Pattern.java:1460)
> at java.util.regex.Pattern.<init>(Pattern.java:1133)
> at java.util.regex.Pattern.compile(Pattern.java:823)
> at org.apache.cxf.configuration.spring.ConfigurerImpl.initWildcardDefinitionMap(ConfigurerImpl.java:93)
> at org.apache.cxf.configuration.spring.ConfigurerImpl.addApplicationContext(ConfigurerImpl.java:245)
> at org.apache.cxf.configuration.spring.ConfigurerImpl.setApplicationContext(ConfigurerImpl.java:225)
> at org.apache.cxf.configuration.spring.ConfigurerImpl.<init>(ConfigurerImpl.java:75)
> at org.apache.cxf.bus.spring.SpringBus.setApplicationContext(SpringBus.java:90)
> at org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor.getBusForName(BusWiringBeanFactoryPostProcessor.java:73)
> at org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor.addDefaultBus(BusWiringBeanFactoryPostProcessor.java:189)
> at org.apache.cxf.jaxws22.spring.JAXWS22SpringEndpointImpl.setApplicationContext(JAXWS22SpringEndpointImpl.java:53)
> at org.springframework.context.support.ApplicationContextAwareProcessor.invokeAwareInterfaces(ApplicationContextAwareProcessor.java:106)
> at org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:85)
> at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:394)
> at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1413)
> at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
> {code}
> While this is slightly unusual it may also occur elsewhere that SPeL is used - the context will fail to load whenver CXF does not like the bean name.
> I think the default behaviour here should be to catch the Regex Exception and silently (or log) proceed to the next bean.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira