[
https://issues.apache.org/jira/browse/CAMEL-7849?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14487347#comment-14487347
]
Willem Jiang commented on CAMEL-7849:
-------------------------------------
After writing a simple test case, I found I made a mistake that
BridgePropertyPlaceholderConfigurer doesn't know anything about the palceholder
outside of the camel context. It turns out the
BridgePropertyPlaceholderConfigurer doesn't override the method of String
resolvePlaceholder(String placeholder, Properties props) to apply the parser
setting of the BridgePropertyPlaceholderConfigurer.
I will commit a quick fix of it shortly.
> Encrypted properties inside and outside <camelContext>
> ------------------------------------------------------
>
> Key: CAMEL-7849
> URL: https://issues.apache.org/jira/browse/CAMEL-7849
> Project: Camel
> Issue Type: Bug
> Affects Versions: 2.13.2, 2.14.0
> Reporter: Camel Guy
> Assignee: Willem Jiang
> Priority: Minor
> Fix For: 2.14.3, 2.15.2, 2.16.0
>
>
> {noformat}
> File default.properties contains an entry like: key=ENC(..)
> The following Camel Spring DSL snippet decrypts the
> property value inside <camelContext> via {{key}} but does
> not decrypt it outside of the <camelContext> via ${key}:
> <bean id="jasypt"
> class="org.apache.camel.component.jasypt.JasyptPropertiesParser">
> <property name="password" value="sysenv:PROPERTIES_KEY"/>
> </bean>
> <bean id="bridgePropertyPlaceholder" class=
> "org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer">
> <property name="locations" >
> <list>
> <value>classpath:default.properties</value>
> </list></property>
> <property name='parser' ref='jasypt'/>
> </bean>
> In order to get ${} to decrypt, first I remove all of the above.
> Then I add jasypt dependencies to pom.xml:
> <dependency>
> <groupId>org.jasypt</groupId>
> <artifactId>jasypt</artifactId>
> <classifier>lite</classifier>
> <version>1.9.2</version>
> </dependency>
> <dependency>
> <groupId>org.jasypt</groupId>
> <artifactId>jasypt-spring3</artifactId>
> <version>1.9.2</version>
> </dependency>
> And add the following to Camel Spring DSL:
> <bean id="environmentVariablesConfiguration"
> class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
> <property name="algorithm" value="PBEWithMD5AndDES" />
> <property name="passwordEnvName" value="PROPERTIES_KEY" />
> </bean>
> <bean id="configurationEncryptor"
> class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
> <property name="config" ref="environmentVariablesConfiguration" />
> </bean>
> <bean id="propertyConfigurer" class=
> 'org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer'>
> <constructor-arg ref="configurationEncryptor"/>
> <property name="locations" >
> <list>
> <value>classpath:default.properties</value>
> </list></property>
> </bean>
> <bean id="jasypt" class=
> "org.apache.camel.component.jasypt.JasyptPropertiesParser">
> <property name="password" value="sysenv:PROPERTIES_KEY"/>
> </bean>
> <!-- And inside the camelContext... -->
> <camelContext xmlns="http://camel.apache.org/schema/spring">
> <propertyPlaceholder id="properties"
> propertiesParserRef="jasypt"
> location="classpath:default.properties"/>
> This is the only solution that I could discover. Using
> BridgePropertyPlaceholder
> didn't work. <propertyPlaceholder> must be used inside <camelContext>.
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)