如何在CQ5 / OSGi Bundle(Java)中启用断言?

时间:2014-10-09 05:10:06

标签: java osgi cq5 assert osgi-bundle

我们通过执行java -ea xxx在核心java应用程序中启用断言,我也知道如何通过更改命令行选项在eclipse中启用断言。

但是如何在OSGi包中启用断言。我有一个捆绑包,我想要在启用断言的情况下进行测试,并且我想在部署时禁用它们(默认情况下禁用断言会很容易禁用)。但是如何启用呢?

1 个答案:

答案 0 :(得分:2)

您可以使用ClassLoader#setDefaultAssertionStatus(Boolean)方法。它仅为尚未加载的类设置断言状态。因此,放置此声明的最佳位置是捆绑激活器:

public class Activator implements BundleActivator {

    @Override
    public void start(BundleContext bundleContext) throws Exception {
        getClass().getClassLoader().setDefaultAssertionStatus(true);
    }

    @Override
    public void stop(BundleContext context) throws Exception {
    }
}

请记住在maven-bundle-plugin配置中注册激活器:

<project>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <configuration>
          <instructions>
            <Bundle-Activator>my.project.Activator</Bundle-Activator>
...