小编ato*_*tok的帖子

可以在Kotlin中使用Mockito吗?

我面临的问题是Matchers.anyObject()回报null.当用于仅接受非可空类型的mock方法时,它会导致抛出"不应为null"异常.

`when`(mockedBackend.login(anyObject())).thenAnswer { invocationOnMock -> someResponse }
Run Code Online (Sandbox Code Playgroud)

模拟方法:

public open fun login(userCredentials: UserCredentials): Response
Run Code Online (Sandbox Code Playgroud)

java mocking mockito kotlin

61
推荐指数
4
解决办法
2万
查看次数

是否存在构建脚本依赖项的Gradle"dependencies"任务?

可以运行gradlew dependencies以了解模块任务的依赖关系.有没有办法找到buildscript依赖传递依赖

示例: classpath 'com.android.tools.build:gradle:1.0.0'直接取决于:

com.android.tools.build builder
com.android.tools.lint lint
net.sf.proguard proguard-gradle
tools.base project-test-lib
Run Code Online (Sandbox Code Playgroud)

可以在MVNRepository看到.但是这些工件有自己的依赖关系.有没有办法找到那些没有手动遍历整个依赖树?

作为澄清,我所说的类路径定义如下:

buildscript {
    repositories {}
    dependencies { .... }
}
Run Code Online (Sandbox Code Playgroud)

java gradle

22
推荐指数
2
解决办法
6270
查看次数

如何创建rx.Single的缓存/热门版本?

RxJava v1.0.13引入了一种新的Observable:rx.Single.它非常适合请求 - 响应模型,但缺少引入doOnNext()等运算符的标准副作用.因此,结果会发生很多事情要困难得多.

我的想法是用同一个Single实例的多个订阅替换doOnNext().但这可能导致底层工作多次完成:每次订阅一次.

示例rx.Single实现:

private class WorkerSubscribe<SomeData>() : Single.OnSubscribe<SomeData> {
    override fun call(sub: SingleSubscriber<in SomeData>) {
        try {
            val result = fetchSomeData()
            sub.onSuccess(result)
        } catch(t: Throwable) {
            sub.onError(t)
        }
    }
}

val single = Single.create<SomeData>(WorkerSubscribe())
Run Code Online (Sandbox Code Playgroud)

用法:

single.subscribe({}, {})
single.subscribe({}, {})   // Data is fetched for the second time
Run Code Online (Sandbox Code Playgroud)

是否有可能创建一个单独的实例,即使多次调用single.subscribe(),也不会多次fetchSomeData(),但缓存并返回相同的结果?

java reactive-programming kotlin rx-java

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

如何将java.util.stream.Stream <Something>转换为kotlin.Sequence <Something>

Java 8 Streams非常强大,但是当不需要并行性时,Kotlin Sequence似乎更易于使用.

有没有办法将a stream.sequencial()转换为序列?

java kotlin java-stream

13
推荐指数
2
解决办法
1583
查看次数

在Android库中使用Kotlin作为AAR分发

甚至可以使用Kotlin编写一个库吗?

我看到的问题是,这将取决于specyfic版本kotlin-stdlibkotlin-runtime并迫使图书馆的用户使用相同的版本.

我正在考虑使用jarjar重新包装那些但是那么,如何将它们包括在胖子型分发中?在解压缩的内部我看到/libs目录 - 有没有办法使用它?

android kotlin aar

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

用于Yubico OpenPGP智能卡的PGP数据加密

我正在尝试在Java应用程序中实现基于Yubikey NEO OpenPGP智能卡小程序的PGP加密.这似乎是一个黑暗的艺术,并不容易谷歌这个东西,但这里是我到目前为止的地方:

  1. 卡被初始化,密钥使用gpg工具生成.它通常有效.我有.asc格式的公钥,并设法加载它org.bouncycastle.openpgp

  2. 使用javax.smartcardioAPI 连接USB加密狗中的智能卡.

  3. 选择OpenPGP小程序

    val pgpAID = bytes(0xD2, 0x76, 0x00, 0x01, 0x24, 0x01)
    val answer = cardChannel.transmit(CommandAPDU(0x00, 0xA4, 0x04, 0x00, pgpAID))
    
    Run Code Online (Sandbox Code Playgroud)
  4. 成功向卡片出示正确的PIN码

    val pin = "123456"
    return bytes(0x00, 0x20, 0x00, 0x82, pin.length) + pin.toByteArray(Charsets.UTF_8)
    
    Run Code Online (Sandbox Code Playgroud)
  5. 发送准成功(见下文)decipher命令

    bytes(0x00, 0x2a, 0x80, 0x86, data.size) + data + bytes(0x00)
    
    Run Code Online (Sandbox Code Playgroud)

    何时data = "xxxx".toByteArray(),结果是SW=9000(=成功)但没有返回数据.这是一个天真的测试,因为第52页的OpenPGP applet文档提到了这一点

    在加密之前,命令输入(填充指示符字节除外)应根据PKCS#1格式化.

我不知道如何加密数据并将其转换为PKCS#1格式.

我也试过阅读Yubico OpenPGP卡实现测试,但它只提供了另一个"失败"的例子(第196行).我尝试运行它,但结果是不同的:测试期望SW=0050(表示异常?)和我得到的是SW=6f00(没有精确的诊断,根据这个文件).

我用完整的代码创建了一个GitHub存储库.它是用Kotlin编写的,但应该很容易阅读.

java encryption smartcard openpgp yubico

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

如何正确读取处理程序中的POST请求正文?

我现在使用的代码:

    Pooled<ByteBuffer> pooledByteBuffer = exchange.getConnection().getBufferPool().allocate();
    ByteBuffer byteBuffer = pooledByteBuffer.getResource();

    int limit = byteBuffer.limit();

    byteBuffer.clear();

    exchange.getRequestChannel().read(byteBuffer);
    int pos = byteBuffer.position();
    byteBuffer.rewind();
    byte[] bytes = new byte[pos];
    byteBuffer.get(bytes);

    String requestBody = new String(bytes, Charset.forName("UTF-8") );

    byteBuffer.clear();
    pooledByteBuffer.free();
Run Code Online (Sandbox Code Playgroud)

它似乎工作正常但我不确定是否需要clear()ByteBuffer才能将其返回池中.我甚至不确定使用exchange.getConnection().getBufferPool().allocate();.文档中没有太多关于它的内容.

java undertow

11
推荐指数
2
解决办法
6574
查看次数

演员(Akka)和代理(JADE)在分布式系统中有什么区别?

Akka演员和Jade特工的概念有什么实质性的区别吗?

据我所知,通过创建独立实体(具有系统逻辑块)可以通过在它们之间发送消息进行通信来实现系统分发.

还有其他因素使它们不同(如表现或预期目的)?

java akka agents-jade

9
推荐指数
2
解决办法
3683
查看次数

如何在android库gradle项目中包含依赖项?

我正在使用Android Studio使用Gradle构建一个Android库项目.它有一些本地依赖:

compile project(':androidlibrary')

嵌套的附加外部依赖项:

compile group: 'com.google.guava', name: 'guava', version: '14.0.1'

我设法构建aar文件,但不包括外部或本地依赖项.我希望在发布到maven时POM文件中会提到外部依赖项,但本地的依赖项呢?

建立这样的项目的正确方法是什么?

java android gradle maven android-library

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

如何在非Android Gradle Java应用程序中使用Dagger?

Dagger被宣传为"Android和Java的快速依赖注入器".但是我不能让它在没有Gradle'android'插件的情况下运行.

compile 'com.squareup.dagger:dagger:1.2.1'
provided 'com.squareup.dagger:dagger-compiler:1.2.1'
Run Code Online (Sandbox Code Playgroud)

有没有provided在的Java"或"应用" gradle这个插件,我使用.在这个错误报告中甚至提到了.

让它''编译'yelds没有结果.java.lang.IllegalStateException: Module adapter for class ... could not be loaded.抛出同样的东西.

如何使用'java'和'application'来配置使用dagger注释处理器?

java dependency-injection gradle dagger

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