如何以编程方式通过驼峰上下文访问/设置属性

时间:2016-12-21 15:55:17

标签: apache-camel blueprint-osgi

我使用的是blueprint.xml中存储/定义的属性:

@PropertyInject

我通过注入({{time.daysHistory}})或使用此语法context.getProperties()来使用此属性。

有没有办法从我的Bluprinttests中读取和/或设置这些属性? 我尝试了container,但这会返回一张空地图。

2 个答案:

答案 0 :(得分:2)

像Claus一样,你需要使用-Wl,--as-needed方法。但请注意,您需要返回与蓝图中配置的pid值相同的pid值。

你的蓝图:

useOverridePropertiesWithConfigAdmin

在你的测试中添加:

<cm:property-placeholder id="props.placeholder" persistent-id="props.blueprint">
    <cm:default-properties>
        ...
        <cm:property name="time.daysHistory" value="4" />
    </cm:default-properties>
</cm:property-placeholder>

编辑: 我是这样做的:

在我的路线中,我注入了属性:

@Override
protected String useOverridePropertiesWithConfigAdmin(Dictionary props) {
props.put("time.daysHistory", "1");
return "props.blueprint";
}

我的蓝图:

  @PropertyInject("DatasetConsumePath")
  private String datasetConsumePath;
  @PropertyInject("DatasetFileExtension")
  private String datasetFileExtension;

我的测试:

  <cm:property-placeholder id="test" persistent-id="test" update-strategy="reload">
    <cm:default-properties>
      <cm:property name="DatasetConsumePath" value="test"/>
      <cm:property name="DatasetFileExtension" value="txt"/>
      <cm:property name="DatasetAggregateBatchSize" value="1000"/>
    </cm:default-properties>
  </cm:property-placeholder>

答案 1 :(得分:0)

请参阅文档:here,了解可以在单元测试中使用的loadConfigAdminConfigurationFileuseOverridePropertiesWithConfigAdmin方法。