[ 
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)

Reply via email to