You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Ronny Aerts (JIRA)" <ji...@apache.org> on 2017/08/01 08:56:00 UTC

[jira] [Commented] (CAMEL-11523) JasyptPropertiesParser fails on properties references with default value

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

Ronny Aerts commented on CAMEL-11523:
-------------------------------------

I attached a test case project.
It will give following output when it runs:
{code}
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.intris.TrisESB.route.test.TrisESBTest
2017-08-01 10:54:03.749 [INFO ] [com.intris.TrisESB.route.test.TrisESBTest] ********************************************************************************
2017-08-01 10:54:03.750 [INFO ] [com.intris.TrisESB.route.test.TrisESBTest] Testing: TestJasypt(com.intris.TrisESB.route.test.TrisESBTest)
2017-08-01 10:54:03.750 [INFO ] [com.intris.TrisESB.route.test.TrisESBTest] ********************************************************************************
2017-08-01 10:54:03.790 [INFO ] [org.springframework.context.support.ClassPathXmlApplicationContext] Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@685cb137: startup date [Tue Aug 01 10:54:03 CEST 2017]; root of context hierarchy
2017-08-01 10:54:03.827 [INFO ] [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from class path resource [test-camel-context.xml]
2017-08-01 10:54:05.233 [INFO ] [org.apache.camel.spring.CamelContextFactoryBean] Bridging Camel and Spring property placeholder configurer with id: properties
2017-08-01 10:54:05.257 [INFO ] [org.apache.camel.spring.SpringCamelContext] Apache Camel 2.19.2 (CamelContext: tester) is starting
2017-08-01 10:54:05.258 [INFO ] [org.apache.camel.management.DefaultManagementStrategy] JMX is disabled
2017-08-01 10:54:05.298 [INFO ] [org.apache.camel.impl.converter.DefaultTypeConverter] Loaded 196 type converters
2017-08-01 10:54:05.356 [DEBUG] [org.apache.camel.component.jasypt.JasyptPropertiesParser] Found property: rrts.pw.plain with value: this is the password to be used.
2017-08-01 10:54:05.356 [TRACE] [org.apache.camel.component.jasypt.JasyptPropertiesParser] Parsing property 'rrts.pw.plain=this is the password'
2017-08-01 10:54:05.364 [DEBUG] [org.apache.camel.component.jasypt.JasyptPropertiesParser] Initialized encryptor using PBEWITHSHA1ANDRC4_128 algorithm and provided password
2017-08-01 10:54:05.368 [DEBUG] [org.apache.camel.component.jasypt.JasyptPropertiesParser] Found property: rrts.pw.encrypted with value: ENC(vNEH1/wOEbwgZ28+1jLzpFlUHTqZm8Zwirq5Ww==) to be used.
2017-08-01 10:54:05.368 [TRACE] [org.apache.camel.component.jasypt.JasyptPropertiesParser] Parsing property 'rrts.pw.encrypted=ENC(vNEH1/wOEbwgZ28+1jLzpFlUHTqZm8Zwirq5Ww==)'
2017-08-01 10:54:05.368 [TRACE] [org.apache.camel.component.jasypt.JasyptPropertiesParser] Decrypting part 'ENC(vNEH1/wOEbwgZ28+1jLzpFlUHTqZm8Zwirq5Ww==)'
2017-08-01 10:54:05.768 [TRACE] [org.apache.camel.component.jasypt.JasyptPropertiesParser] Parsing property 'dummy.property:this is the default value=null'
2017-08-01 10:54:05.769 [INFO ] [org.apache.camel.spring.SpringCamelContext] Apache Camel 2.19.2 (CamelContext: tester) is shutting down
2017-08-01 10:54:05.786 [INFO ] [org.apache.camel.spring.SpringCamelContext] Apache Camel 2.19.2 (CamelContext: tester) uptime 0.528 seconds
2017-08-01 10:54:05.786 [INFO ] [org.apache.camel.spring.SpringCamelContext] Apache Camel 2.19.2 (CamelContext: tester) is shutdown in 0.016 seconds
2017-08-01 10:54:05.788 [INFO ] [com.intris.TrisESB.route.test.TrisESBTest] ********************************************************************************
2017-08-01 10:54:05.788 [INFO ] [com.intris.TrisESB.route.test.TrisESBTest] Testing done: TestJasypt(com.intris.TrisESB.route.test.TrisESBTest)
2017-08-01 10:54:05.788 [INFO ] [com.intris.TrisESB.route.test.TrisESBTest] Took: 2.042 seconds (2042 millis)
2017-08-01 10:54:05.788 [INFO ] [com.intris.TrisESB.route.test.TrisESBTest] ********************************************************************************
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 2.168 sec <<< FAILURE!
TestJasypt(com.intris.TrisESB.route.test.TrisESBTest)  Time elapsed: 2.047 sec  <<< ERROR!
org.apache.camel.RuntimeCamelException: org.apache.camel.FailedToCreateRouteException: Failed to create route test.jasypt.route at: >>> Log[dummy properties with default value={{dummy.property:this is the default value}}] <<< in route: Route(test.jasypt.route)[[From[direct://test.jasypt.entry]] ... because of PropertiesComponent with name properties must be defined in CamelContext to support property placeholders. Property with key [dummy.property:this is the default value] not found in properties from text: dummy properties with default value={{dummy.property:this is the default value}}
	at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1774)
	at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:138)
	at org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:361)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:393)
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:347)
	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:883)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
	at com.intris.TrisESB.route.test.TrisESBTest.createCamelContext(TrisESBTest.java:34)
	at org.apache.camel.test.junit4.CamelTestSupport.doSetUp(CamelTestSupport.java:294)
	at org.apache.camel.test.junit4.CamelTestSupport.setUp(CamelTestSupport.java:252)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)
	at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
	at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create route test.jasypt.route at: >>> Log[dummy properties with default value={{dummy.property:this is the default value}}] <<< in route: Route(test.jasypt.route)[[From[direct://test.jasypt.entry]] ... because of PropertiesComponent with name properties must be defined in CamelContext to support property placeholders. Property with key [dummy.property:this is the default value] not found in properties from text: dummy properties with default value={{dummy.property:this is the default value}}
	at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1298)
	at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:204)
	at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:1087)
	at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3540)
	at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3271)
	at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:202)
	at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:3089)
	at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:3085)
	at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:3108)
	at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:3085)
	at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
	at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:3022)
	at org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:275)
	at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:136)
	... 46 more
Caused by: java.lang.IllegalArgumentException: PropertiesComponent with name properties must be defined in CamelContext to support property placeholders. Property with key [dummy.property:this is the default value] not found in properties from text: dummy properties with default value={{dummy.property:this is the default value}}
	at org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.getPropertyValue(DefaultPropertiesParser.java:271)
	at org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.readProperty(DefaultPropertiesParser.java:157)
	at org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.doParse(DefaultPropertiesParser.java:116)
	at org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.parse(DefaultPropertiesParser.java:100)
	at org.apache.camel.component.properties.DefaultPropertiesParser.parseUri(DefaultPropertiesParser.java:63)
	at org.apache.camel.component.properties.DefaultPropertiesParser.parseUri(DefaultPropertiesParser.java:55)
	at org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer$BridgePropertiesParser.parseUri(BridgePropertyPlaceholderConfigurer.java:262)
	at org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer.parseUri(BridgePropertyPlaceholderConfigurer.java:167)
	at org.apache.camel.component.properties.PropertiesComponent.parseUri(PropertiesComponent.java:230)
	at org.apache.camel.component.properties.PropertiesComponent.parseUri(PropertiesComponent.java:173)
	at org.apache.camel.impl.DefaultCamelContext.resolvePropertyPlaceholders(DefaultCamelContext.java:2411)
	at org.apache.camel.model.ProcessorDefinitionHelper.resolvePropertyPlaceholders(ProcessorDefinitionHelper.java:735)
	at org.apache.camel.model.ProcessorDefinition.makeProcessorImpl(ProcessorDefinition.java:524)
	at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:510)
	at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:226)
	at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1295)
	... 59 more
{code}

> JasyptPropertiesParser fails on properties references with default value
> ------------------------------------------------------------------------
>
>                 Key: CAMEL-11523
>                 URL: https://issues.apache.org/jira/browse/CAMEL-11523
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-jasypt
>    Affects Versions: 2.17.7, 2.19.1
>            Reporter: Ronny Aerts
>         Attachments: jasypt.rar
>
>
> I'm using the JasyptPropertiesParser in combination with the BridgePropertyPlaceholderConfigurer to able to encrypt properties by adding the parser property.
>              <beans:property name="parser">
>                     <!-- define the jasypt properties parser with the given password to be used -->
>                     <beans:bean class="org.apache.camel.component.jasypt.JasyptPropertiesParser" depends-on="InitializeProperties">
>                            <beans:property name="password" value="#{IP.getPassword()}"/>
>                            <beans:property name="algorithm" value="PBEWITHSHA1ANDRC4_128"/>
>                     </beans:bean>
>              </beans:property>
> This works fine but when I have a "tris.dlq.folder.process.history:c:/temp/TrisESB" property with a default value in my xml route, the route creating fails with error:
> Caused by: java.lang.IllegalArgumentException: PropertiesComponent with name properties must be defined in CamelContext to support property placeholders. Property with key [tris.dlq.folder.process.history:c:/temp/TrisESB] not found in properties from text: file://{{tris.dlq.folder.process.history:c:/temp/TrisESB}}?fileName=$simple{header.breadcrumbId}-prochist.htm
> My log also mentions the parsing of the property.
> [TRACE] [org.apache.camel.component.jasypt.JasyptPropertiesParser] Parsing property 'tris.dlq.folder.process.history:c:/temp/TrisESB=null'
> It seems that the JasyptPropertiesParser can't handle default properties.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)