[
https://issues.apache.org/jira/browse/AMQ-6120?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15093849#comment-15093849
]
Christopher L. Shannon commented on AMQ-6120:
---------------------------------------------
>From what I can tell, I think the only way this will ever work is if every
>property that needs to support replacement is changed to type xs:string so it
>passes validation and can be replaced. As you pointed out, in the case of the
>persistent attribute it works because it passes schema validation and gives
>Spring a chance to replace the property. I'm not sure why SPEL didn't work in
>that case but in theory it should be at least possible to make it work since
>the schema will validate. (I would need to dig into it to figure out why it's
>not being evaluated and if a code change is necessary)
So for now, I think the best that could be done is any property that needs
support for placeholders would need to be annotated with a PropertyEditor that
takes a String and then converts it to the type that is necessary, that way the
schema generated specifies a string value and allows the chance for the
property placeholder to replace the value before evaluation. There are several
boolean properties that are already annotated that way in the BrokerService.
> Error using Spring Expression Language for recoverDuration attribute on
> amq:timedSubscriptionRecoveryPolicy
> -----------------------------------------------------------------------------------------------------------
>
> Key: AMQ-6120
> URL: https://issues.apache.org/jira/browse/AMQ-6120
> Project: ActiveMQ
> Issue Type: Bug
> Affects Versions: 5.13.0
> Reporter: Mark Anderson
> Priority: Minor
>
> I'm attmepting to use SPEL to configure the recoverDuration attribute of
> timerSubscriptionRecovery policy as follows (based on SPEL suggestion at
> http://stackoverflow.com/questions/18265518/using-spring-expression-language-to-define-xml-attribute):
> {code:xml}
> <amq:policyEntry topic="mytopic">
> <amq:subscriptionRecoveryPolicy>
> <amq:timedSubscriptionRecoveryPolicy recoverDuration="#{
> T(java.lang.Integer).valueOf('${my.property}') * 1000 }" />
> </amq:subscriptionRecoveryPolicy>
> </amq:policyEntry>
> {code}
> However, this results in the following error on startup:
> {noformat}
> org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line
> 1125 in XML document from class path resource [appserver/spring.xml] is
> invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 1125;
> columnNumber: 119; cvc-datatype-valid.1.2.1: '#{
> T(java.lang.Integer).valueOf('1') * 1000 }' is not a valid value for
> 'integer'.
> [java] at
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:399)
> [java] at
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
> [java] at
> org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
> [java] at
> org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)
> [java] at
> org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)
> [java] at
> org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
> [java] at
> org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:252)
> [java] at
> org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)
> [java] at
> org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)
> [java] at
> org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
> [java] at
> org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:538)
> [java] at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:452)
> {noformat}
> I'm using Spring 4.1.8.
> Is SPEL supported for this attribute?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)