[ 
https://issues.apache.org/jira/browse/CAMEL-7849?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14144200#comment-14144200
 ] 

Willem Jiang commented on CAMEL-7849:
-------------------------------------

As the Spring doesn't  provide the nice parser API for camel to use, we end up 
to implement our own property component to handle the same use case as we meet 
in spring. BridgePropertyPlaceholderConfigurer just work as the 
org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer, they 
are just injected into Spring as a customer configure parser.  Because they 
don't know each other, it is not surprise me that they cannot work together.


> 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
>            Priority: Minor
>
> File default.properties contains an entry like: key=ENC(..)
> The following decrypts the property value inside <camelContext> 
> via \{ \{key\} \} but does not decrypt it outside of the <camelContext> via 
> ${key}:
> {code}
> <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>
> {code}
> In order to get ${} to decrypt, I first add jasypt dependencies:
> {code}
> <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> 
> {code}
> Camel Spring DSL looks like:
> {code}
> <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"/> 
> {code}
> The second example is the only solution I could find. Using 
> BridgePropertyPlaceholder 
> did not work, so I had to to use <propertyPlaceholder> inside <camelContext>.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to