小编Dom*_*aja的帖子

@BeforeClass和继承 - 执行顺序

我有一个抽象基类,我用它作为单元测试的基础(TestNG 5.10).在这个类中,我初始化我的测试的整个环境,设置数据库映射等.这个抽象类有一个带有@BeforeClass注释的方法来进行初始化.

接下来,我使用特定的类扩展该类,其中我有@Test方法和@BeforeClass方法.这些方法对类环境进行特定于类的初始化(例如,将一些记录放入数据库中).

我如何强制执行@BeforeClass注释方法的特定顺序?我需要抽象基类中的那些在扩展类之前执行.

例:

abstract class A {
    @BeforeClass
    doInitialization() {...}
}

class B extends A {
    @BeforeClass
    doSpecificInitialization() {...}

    @Test
    doTests() {...}
}
Run Code Online (Sandbox Code Playgroud)

预期订单:

A.doInitialization
B.doSpecificInitialization
B.doTests
Run Code Online (Sandbox Code Playgroud)

实际订单:

B.doSpecificInitialization // <- crashes, as the base init is missing
(A.doInitialization        // <---not executed
 B.doTests)                // <-/
Run Code Online (Sandbox Code Playgroud)

java testng unit-testing

88
推荐指数
4
解决办法
5万
查看次数

RegExp匹配字符串不以my开头

对于PMD,我想有一个规则,警告我那些从我的开始的丑陋变量.这意味着我必须接受所有不以我的方式开头的变量.

所以,我需要一个RegEx(re),其行为如下:

re.match('myVar')       == false
re.match('manager')     == true
re.match('thisIsMyVar') == true
re.match('myOtherVar')  == false
re.match('stuff')       == true
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的(稍后会在这里列出,抱歉,现在无法访问它们),但尚未使用它.

regex pmd regex-negation

76
推荐指数
4
解决办法
17万
查看次数

直接从存储库加载Drools/KIE Workbench工件

我们尝试使用全新的KIE工作台(以前称为Guvnor)和新的基于maven的工件切换到Drools 6.

现在我想在第二张图片("部署")中使用本博文中描述的系统:通过HTTP从工作台存储库加载规则(虚线箭头,从左边的HTTP直接进入应用程序) .

问题是,我不知道如何将工件加载到我的KieServices/KieModule对象中.我基本上不想使用maven,我也无法提供maven settings.xml作为Java参数的全局路径,所以这个选项已经出来了.

我认为,类似的问题是这一个.正如那里提到的,我也试图加载一个URL资源,但问题似乎是系统无法确定ResourceType给定的URL(http://localhost:8080/kie-drools/maven2/.../-1.0.0.jar)是什么类型.是的,我可以直接从浏览器访问存储库中的.jar,无需身份验证.

任何想法或教程如何做到这一点?

我的测试代码:

public static void main(String[] args) {
    KieServices ks = KieServices.Factory.get();
    KieRepository repo = ks.getRepository();

    String url = "http://localhost:8080/kie-drools/maven2/de/test/test/1.0.0/test-1.0.0.jar";

    Resource urlResource = ks.getResources().newUrlResource(url);
    KieModule kModule = repo.addKieModule(urlResource); // this already fails
}
Run Code Online (Sandbox Code Playgroud)

错误:

Exception in thread "main" java.lang.RuntimeException: Unable to fetch module from resource :[UrlResource path='http://localhost:8080/kie-drools/maven2/de/itm/Herma400/1.0.1/Herma400-1.0.1.jar']
    at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.getKieModule(KieRepositoryImpl.java:205)
    at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.addKieModule(KieRepositoryImpl.java:161)
    at kieTest.MainKieTest.main(MainKieTest.java:24)
Caused by: java.lang.NullPointerException
    at org.drools.compiler.kie.builder.impl.ClasspathKieProject.getPomProperties(ClasspathKieProject.java:197)
    at org.drools.compiler.kie.builder.impl.ClasspathKieProject.fetchKModule(ClasspathKieProject.java:148)
    at org.drools.compiler.kie.builder.impl.ClasspathKieProject.fetchKModule(ClasspathKieProject.java:109)
    at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.getKieModule(KieRepositoryImpl.java:190) …
Run Code Online (Sandbox Code Playgroud)

java drools maven drools-guvnor kie

8
推荐指数
2
解决办法
3万
查看次数

通过修订获取修改的属性

我正在使用Hibernate Envers来审核我的实体和属性(org.hibernate.envers.global_with_modified_flag=true).这似乎有效,但现在我想得到一个特定实体的所有属性,与前一个相比,它在给定的修订版本中发生了变化.作为奖励,将变更集从一个修订版转换到另一个修订版会很好.到目前为止,我只获得修改过的实体:

List<Object> modifiedClassesAtRevision = getAuditReader().getCrossTypeRevisionChangesReader().findEntities(revision, RevisionType.MOD)
Object modifiedObject = modifiedClassesAtRevision.get(0);
Run Code Online (Sandbox Code Playgroud)

现在,因为我不想为Java中的所有实体创建比较方法,有没有办法获得此修订版的修改属性?有点像

List<String> modifiedProperties = getAuditReader().getModifiedProperties(modifiedObject, revision);
Run Code Online (Sandbox Code Playgroud)

会很高兴 - 但也许我太愚蠢而无法找到那种功能.

hibernate auditing hibernate-envers

5
推荐指数
1
解决办法
1957
查看次数

推送从KIE Workbench存储库克隆的git存储库

我使用KIE Workbench(6.1.0.Beta3)来编辑我的规则.由于Workbench还没有支持某些功能(例如将规则移到其他包中),我想在KIE-WB之外做这些事情.

为此,我克隆了我的存储库

git clone git://localhost:9418/my-kie-repository
Run Code Online (Sandbox Code Playgroud)

哪个工作正常.我编辑一些文件,在本地提交,然后尝试git push.但是我得到了错误

fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.
Run Code Online (Sandbox Code Playgroud)

因为我几乎可以肯定它是第一个问题,关于凭证,我在.git/config文件中添加了行

[credential "git://localhost:9418"]
    username = admin
    password = admin
Run Code Online (Sandbox Code Playgroud)

不过,我得到了前面提到的错误.是的,KIE Workbench仍在运行,我也可以从那里获取/拉取没有问题.

有没有办法如何推回到KIE Workbench存储库?根据这条消息,一个"可能需要重新配置原点",但我不确定如何更改它.

有人知道如何正确设置吗?

git drools drools-guvnor kie kie-wb

5
推荐指数
1
解决办法
6207
查看次数

JPA:如何在静态JPA MetaModel中使用NUMBER列执行LIKE?

我确实有一个带有NUMBER(实际上是BigDecimal,不要问为什么)列的静态元模型.现在我想对该数字列进行LIKE查询:

CriteriaBuilder cb;
cb.like(entity.get(Entity_.numbercol), "123%");
Run Code Online (Sandbox Code Playgroud)

哪里entity.get(Entity_.numbercol)返回一个Path<BigDecimal>.当然,我得到一个编译错误:...like(Expression<String>, ...) ... not applicable for the arguments (Path<BigDecimal>, ...)

.as(String.class)由于JPA中存在一些错误而导致列失败,但我现在手头没有错误编号.但是,在最新版本的JPA/Hibernate中并没有修复它.无论如何,它会导致生成一些无效SQL语句的运行时异常.

现在我只需要一种方法来获得与SQL相当的标准API

... WHERE numbercol LIKE '123%';
Run Code Online (Sandbox Code Playgroud)

搜索主题已经提出了以下响应,这没有帮助,因为我有一个静态元模型: NHibernate - 使用Criteria API对整数列进行LIKE搜索的最简单方法?JPA/Criteria API - 喜欢和平等的问题

有任何想法吗?

在此先感谢Dominik

hibernate jpa criteria-api metamodel jpa-2.0

3
推荐指数
1
解决办法
5946
查看次数

在Wildfly上部署KIE-CI失败

我试图在Wildfly 8.0.0.Final上使用KIE-CI(用于动态Maven打包规则)部署Drools.

我的简约测试项目的POM是:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>de.testing</groupId>
    <artifactId>testprojekt</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <properties>
        <drools-version>6.0.1.Final</drools-version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-core</artifactId>
            <version>${drools-version}</version>
        </dependency>
        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-compiler</artifactId>
            <version>${drools-version}</version>
        </dependency>
        <dependency>
            <groupId>org.kie</groupId>
            <artifactId>kie-ci</artifactId>
            <version>${drools-version}</version>
        </dependency>
    </dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)

部署失败,并出现以下错误:

11:58:35,430 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC000001: Failed to start service jboss.deployment.unit."testprojekt-1.0-SNAPSHOT.war".WeldStartService: org.jboss.msc.service.StartException in service jboss.deployment.unit."testprojekt-1.0-SNAPSHOT.war".WeldStartService: Failed to start service
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904) [jboss-msc-1.2.0.Final.jar:1.2.0.Final]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_51]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_51]
    at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51]
Caused by: org.jboss.weld.exceptions.DeploymentException: Exception List with 2 exceptions:
Exception …
Run Code Online (Sandbox Code Playgroud)

drools maven wildfly kie

2
推荐指数
1
解决办法
1245
查看次数

Vertx 单元测试永远不会完成

我有 vertx 版本 3.3.2 和 JUnit 版本 4.12 的 vertx 单元测试。以下单元测试永远不会完成:

@RunWith(VertxUnitRunner.class)
public class SomeVerticleTest {

    private Vertx vertx;

    @Before
    public void before(TestContext context) {
        vertx = Vertx.vertx();
        vertx.deployVerticle(SomeVerticle.class.getName(), r -> context.asyncAssertSuccess()); // problem is in this line, see answer for solution!
    }

    @Test
    public void doStuff(TestContext context) {
        String encodedMessage = Json.encode("myMessage");
        Async async = context.async();
        vertx.eventBus().send("someVerticle", encodedMessage, asyncResult -> {
            // some context.asserts on the message reply
            async.complete(); // this line is executed, I can see it in …
Run Code Online (Sandbox Code Playgroud)

java junit unit-testing reactive-programming vert.x

2
推荐指数
1
解决办法
1680
查看次数

来自 gRPC StreamObserver 的“桥接”Reactor 的 Flux

我想从gRPC StreamObserver创建Reactor Flux。只要 StreamObserver 没有本地实现相应的接口(参见例如这个问题),就需要这样做。

我想出的内容大致如下:

final StreamObserver<ProtoResponse>[] streamObserverArray = new  StreamObserver[1];
Flux<Response> myFlux Flux.create(sink -> streamObserverArray[0] = new StreamObserver<ProtoResponse>() {
        @Override
        public void onNext(ProtoResponse value) {
            final Response response = convertFromProto(value);
            sink.next(response);
        }

        @Override
        public void onError(Throwable throwable) {
            sink.error(throwable);
        }

        @Override
        public void onCompleted() {
            sink.complete();
        }
    });
myFlux
    .doOnError(throwable -> {/* actual logic in here */}) //
    .doOnComplete(() -> {/* actual logic in here */}) //
    .doOnCancel(() -> {/* actual logic …
Run Code Online (Sandbox Code Playgroud)

java project-reactor grpc grpc-java

2
推荐指数
1
解决办法
2803
查看次数

Protobuf3为什么不允许重复映射?

我正在使用Protobuf3,需要创建地图列表。我以为我可以使用,repeated map<string, string>但似乎不能。

我应该怎么用呢?

谢谢

java protocol-buffers

2
推荐指数
1
解决办法
318
查看次数

使用 JPA、Criteria API 和静态元模型时的固定列值

鉴于以下情况:

CriteriaQuery<SomeDTO> cQuery;
CriteriaBuilder cb;
Root<SomeClass> r;
...
cQuery.select(cb.construct(SomeDTO.class,
  "FIXED VALUE",
   r.get(SomeClass_.someValue)
));
Run Code Online (Sandbox Code Playgroud)

有没有办法使用 JPA 标准 api 和静态元模型来创建一个选择,它为一列返回一个固定值?相应的 SQL 应该类似于

SELECT 'FIXED VALUE', someValue FROM someClassTable WHERE ...;
Run Code Online (Sandbox Code Playgroud)

提前致谢!

java hibernate jpa criteria-api metamodel

1
推荐指数
1
解决办法
3265
查看次数