小编Lui*_*ñiz的帖子

如何在groovy中解析YAML文件?

如果你有一个名为的文件example.yaml包含以下内容: - subject: maths.

我怎么抓住字符串- subject

我已经可以阅读该文件的内容,但想知道如何从中获取特定的字符串.

注意:我知道正则表达式可能有所帮助,但从未使用它,并会感谢任何帮助.

groovy yaml

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

在Intellij中运行grails 2.1.3测试Idea:Spock测试中的奇怪错误:无法添加Domain类[class xyZ].它不是域名

我正在升级到grails 2.1.x,并且需要重做一些旧式测试.

我刚刚为我的spock Spec添加了一个新测试,对于这个测试,我需要模拟一个额外的Domain类.

在此之前,我有:

@Mock([Event, EventType])
Run Code Online (Sandbox Code Playgroud)

我现在有:

@Mock([Event, EventType, Notification])
Run Code Online (Sandbox Code Playgroud)

Notification.groovy与Event和EventType(在grails-app/domain下)位于相同的包和物理目录中,因此它绝对是一个grails域类.

当我尝试运行测试时,我得到以下堆栈跟踪:

org.codehaus.groovy.grails.exceptions.GrailsConfigurationException: Cannot add Domain class [class x.y.Notification]. It is not a Domain!
    at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.addArtefact(DefaultGrailsApplication.java:911)
    at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.addArtefact(DefaultGrailsApplication.java:615)
    at grails.test.mixin.domain.DomainClassUnitTestMixin.mockDomain(DomainClassUnitTestMixin.groovy:131)
    at grails.test.mixin.domain.DomainClassUnitTestMixin.mockDomain(DomainClassUnitTestMixin.groovy:128)
Run Code Online (Sandbox Code Playgroud)

当我通过兔子洞并开始调试执行时,我到达DomainClassArtefactHandler的这一部分(第87行):

            // make sure the identify and version field exist
            testClass.getDeclaredField(GrailsDomainClassProperty.IDENTITY);
            testClass.getDeclaredField(GrailsDomainClassProperty.VERSION);
Run Code Online (Sandbox Code Playgroud)

这会引发异常,因为我猜id字段不存在

因此出现了问题,在执行此操作之前不会添加GORM字段.

有没有人建议我需要做什么?我是否需要将我的域类标记为@Entity(这实际上使我的测试通过)?

我很确定我的单元测试不能强制通过.

有什么建议?

更新: 实际上,我刚刚发现只有当我在IDE中运行单元测试时才会出现这个问题:intellij Idea 12.1

创建的问题,测试应用程序在这里:

http://jira.grails.org/browse/GRAILS-9989

http://youtrack.jetbrains.com/issue/IDEA-105087

当我删除两个域类中的静态映射块时,测试通过!

grails intellij-idea grails-domain-class spock grails-2.0

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

使用amqp从队列中解复用消息以并行流处理?

我试图找出是否可以从阻塞场景切换到更具反应性的模式.

我有传入的更新命令到达队列,我需要按顺序处理它们,但只需要处理相同实体的那些命令.本质上,我可以创建任意数量的并行更新事件流,只要没有两个流包含有关同一实体的事件.

我在想主要队列的消费者可能能够利用amqp的路由机制和临时队列,为每个实体id创建临时队列,并将消费者挂钩.一旦订户完成并且当前没有关于所讨论的实体的其他事件在队列中,则可以丢弃该队列.

这种情况是经常使用的吗?有没有更好的方法来实现这一目标?在我们当前的系统中,我们使用基于id的命名锁来防止并发更新.

java spring amqp rabbitmq reactive-programming

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

无法解析Symbol R,Android Studio中的gen文件夹在哪里?

我已经在Android工作室中创建了一个虚拟Android项目,我可以让它运行,但编辑器本身无法找到R类.实际上我找不到gen文件夹.我想也许应该将该文件夹添加为源文件夹或类依赖项,但我找不到它.

有人可以帮忙吗?

android-studio

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

创建多个具有相同接口的 HTTP 客户端

我们需要能够连接到多个 Elasticsearch 服务器。我们有一个简单的 Elasticsearch 客户端,使用 Micronaut 的声明式方法进行定义。

然而,作为一个多租户环境,我们需要能够定义许多这样的客户端。这些客户端中的每一个显然都有不同的 URL,并且需要使用不同的 HTTPFilter 进行身份验证。

Micronaut 是一个专注于编译时的框架,我如何动态创建许多由配置选项定义的此类 bean?

更新: 我发现@Factory@EachBean注释相结合可能是一种有前途的方法,但声明性 HTTP 客户端是一个接口,而不是一个具体的类。如何仅基于接口实例化这样的客户端?

请参阅https://docs.micronaut.io/latest/guide/index.html#eachBean

micronaut

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

使用 for_each 循环按预定义顺序创建 aws_ses_receipt_rule

我正在尝试使用变量中的规则集合定义的顺序来定义 SES 规则集。

我已经尝试过https://github.com/hashicorp/terraform-provider-aws/issues/24067中的解决方案来使用after资源的属性,它确实创建了第一个规则,但在创建第二个规则时失败了,并且所有后续规则,因为第一个规则尚不存在(after=null 的规则)。我想这需要一些时间来完成。depends_on据我所知,不适用于动态依赖项,所以这也不会成功。

如果我重新运行应用,则会创建第二条规则,但所有其他规则都会失败。

我的recipients_by_position地图由 0 填充位置索引(即“01”、“02”等):

这是我的代码

locals {

  recipients = {
    "mail1-recipient1" = {
      short_name    = "mail1"
      domain        = "mail1.domain.com"
      recipient     = "recipient1"
      position      = 1
      target_bucket = "bucket1"
    }
    "mail1-recipient2" = {
      short_name    = "mail1"
      domain        = "mail1.domain.com"
      recipient     = "recipient2"
      position      = 2
      target_bucket = "bucket1"
    }
    "mail2-recipient1" = {
      short_name    = "mail2"
      domain        = "mail2.domain.com"
      recipient     = "recipient1"
      position      = 3
      target_bucket = "bucket2"
    }
  } …
Run Code Online (Sandbox Code Playgroud)

terraform terraform-provider-aws

5
推荐指数
0
解决办法
392
查看次数

NioEndpoint 在 Spring Boot 集成测试中从未超时

我试图通过在我的控制器中放置一个睡眠循环来在集成测试中引发服务器超时。我确实很感激那些想要提供帮助的人,但请不要问我为什么这样做,或者提出更好的方法来实现你认为我想要实现的目标:我只是想看到超时发生,或者理解为什么会这样没有发生。

为此,我将连接超时设置为一个较小的值。

server:
  tomcat:
    connection-timeout: 1000
Run Code Online (Sandbox Code Playgroud)

我可以看到套接字超时设置为那个小值,所以在SocketWrapper配置方面我认为我没问题。

然而,在 NioEndpoint 中,我可以看到 Poller 在此测试中未能评估 true:

} else if ((socketWrapper.interestOps() & SelectionKey.OP_READ) == SelectionKey.OP_READ ||
      (socketWrapper.interestOps() & SelectionKey.OP_WRITE) == SelectionKey.OP_WRITE) {
Run Code Online (Sandbox Code Playgroud)

(这是图书馆tomcat-embed-core:9.0.4.1,951 路)

它无法评估为 true,因为除了第一次我的断点在那里被激活之外,每次socketWrapper.interestOps()都是0如此,而且第一次,超时不应该发生。

我可以做些什么不同的事情吗?

grails spring-boot tomcat9

5
推荐指数
0
解决办法
58
查看次数

grails 3.3.0:org.h2.jdbc.JdbcSQLException:在单元测试中找不到表“XYZ”

概括

我正在尝试创建一个新的 grails 3.3.0 应用程序,其中包含一些简单的域类。

我还使用新的 HibernateSpec(GORM 6.1.x 附带)为我的单元测试创​​建内存中 H2 数据库。

我在以前版本的 grails 中使用了这种技术,但现在在 grails 3.3.0 中我遇到了系统故障。

Hibernate 似乎创建了这些表,但是当我尝试在单元测试中执行查询时,它抱怨找不到该表。

细节

这是我的数据源配置(在 application.groovy 中):

dataSource {
    pooled = true
    jmxExport = true
    driverClassName = "org.h2.Driver"
    username = "sa"
    password = ""
    logSql = true
}


environments {
    development {
        dataSource {
            dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
            url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE;DATABASE_TO_UPPER=false"
        }
    }
    test {
        dataSource {
            dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', …
Run Code Online (Sandbox Code Playgroud)

unit-testing hibernate grails3

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

分配了策略的用户无法访问 KV 版本 2 中的机密

我创建了一个 kv(版本 2)秘密引擎,安装在 /secret 上:

$ vault secrets list
Path          Type         Accessor              Description
----          ----         --------              -----------
cubbyhole/    cubbyhole    cubbyhole_915b3383    per-token private secret storage
identity/     identity     identity_9736df92     identity store
secret/       kv           kv_8ba16621           n/a
sys/          system       system_357a0e34       system endpoints used for control, policy and debugging

Run Code Online (Sandbox Code Playgroud)

我创建了一项策略,应该授予管理员访问以下所有内容的权限myproject

$ vault policy read myproject
path "secret/myproject/*" {
  capabilities = ["create","read","update","delete","list"]
}
Run Code Online (Sandbox Code Playgroud)

我在适当的路径中创建了一个秘密(带有根令牌):

$ vault kv put secret/myproject/entry1 pass=pass
Key              Value
---              -----
created_time     2022-05-11T15:06:49.658185443Z
deletion_time    n/a
destroyed        false
version          1
Run Code Online (Sandbox Code Playgroud)

我创建了一个已分配给定策略的用户:

$ …
Run Code Online (Sandbox Code Playgroud)

hashicorp-vault

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