2017-05-23 4 views
1

私は私の単体テストの1つでオーバーライドしようとしているが、それは動作していないブール値フラグpropertyplaceholderを持っています。CamelBlueprintテスト、なぜこのプロパティプレースホルダをオーバーライドできないのですか?

@Override 
protected Properties useOverridePropertiesWithPropertiesComponent() { 
    Properties prop = new Properties(); 
    prop.put("errorQueue", "mock:error"); 
    prop.put("flag", false); 

    return prop; 
:私はuseOverridePropertiesWithPropertiesComponent()メソッドを実装してユニットテストを行う際に虚偽であることを

<bean id="myBean" class="com.myBean"> 
    <property name="flag" value="${flag}" /> 
</bean> 

が、私はプロパティをオーバーライドしたいと思います:

<cm:property-placeholder id="id" persistent-id="persistent-id> 
    <cm:default-properties> 
    <cm:property name="flag" value="true" /> 
    </cm:default-properties> 
</cm:property-placeholder> 

このフラグは、Beanでの使用を取得します

私のerrorQueueプロパティは正常に動作しており、エラーメッセージgesは "mock:error"になりますが、フラグはオーバーライドされたプロパティではありません。誰がなぜこれが分かっていますか?

答えて

1

あなたはそれらの上書きを行うことができないときにその<bean>

例えば、以下の${flag}が100%のOSGiの青写真によって制御されます。

<bean id="myBean" class="com.myBean"> <property name="flag" value="${flag}" /> </bean>

そしてuseOverridePropertiesWithPropertiesComponentはキャメルプロパティのキャメル・プロパティ・コンポーネント用ですプレースホルダー(例:Camelが使用する{{ }}構文)。

http://camel.apache.org/using-propertyplaceholder.html

+1

ああ私はそれを認識しませんでした。それを指摘してくれてありがとう。私は "useOverridePropertiesWithConfigAdmin"を使用して切り替え、正しく動作するようにフラグを取得しました。ありがとうクラウス! – David

0

わかりませんが、あなたの価値は受け入れられていないと思います。クラスは、不変のプロパティセットを表し

プロパティ:Properties状態の のJavadoc。プロパティは、ストリームに保存することも、ストリームからロードすることもできます。プロパティリストの各キーとそれに対応する値は文字列です。あなたはブール値を使用している

property-placeholderが文字列であり、実行時に適切な型に変換するために、一般的なキー値で

prop.put("flag", "false"); 

てみてください。

関連する問題