如何使用Jackson从JSON树接收节点名称?JSON-File看起来像这样:
{
node1:"value1",
node2:"value2",
node3:{
node3.1:"value3.1",
node3.2:"value3.2"
}
}
Run Code Online (Sandbox Code Playgroud)
我有
JsonNode rootNode = mapper.readTree(fileReader);
Run Code Online (Sandbox Code Playgroud)
并需要类似的东西
for (JsonNode node : rootNode){
if (node.getName().equals("foo"){
//bar
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
我没有@Inherited在Java中获得注释.如果它自动为你继承了这些方法,那么如果我需要以自己的方式实现该方法那么那么呢?
如何了解我的实施方式?
再加上它是说,如果我不想用这个,做它,而在一个老式的Java办法,我必须实现的equals(),toString()以及hashCode()该方法的Object类,也是的注释类型的方法java.lang.annotation.Annotation类.
这是为什么?
即使我不知道@Inherited注释和用于工作的程序,我也从未实现过.
请有人从头开始解释我这件事.
我正在尝试实现一个gradle任务,从一系列环境变量值和shell执行中动态创建buildsignature.properties文件.我有它主要工作,但我似乎无法获得shell命令的输出.这是我的任务......
task generateBuildSignature << {
ext.whoami = exec() {
executable = "whoami"
}
ext.hostname = exec() {
executable = "hostname"
}
ext.buildTag = System.env.BUILD_TAG ?: "dev"
ant.propertyfile(
file: "${buildDir}/buildsignature.properties",
comment: "This file is automatically generated - DO NOT EDIT!" ) {
entry( key: "version", value: "${project.version}" )
entry( key: "buildTimestamp", value: "${new Date().format('yyyy-MM-dd HH:mm:ss z')}" )
entry( key: "buildUser", value: "${ext.whoami}" )
entry( key: "buildSystem", value: "${ext.hostname}" )
entry( key: "buildTag", value: "$ext.buildTag" )
}
}
Run Code Online (Sandbox Code Playgroud)
但是,生成的属性字段无法获得buildUser和buildSystem的预期结果.
#This file is …Run Code Online (Sandbox Code Playgroud) 如何解析格式化时间,hh:mm:ss以字符串形式输入以获取java中的整数值(忽略冒号)?
假设我想查看流中是否存在对象,如果它不存在,则抛出异常.我可以做的orElseThrow一种方法是使用该方法:
List<String> values = new ArrayList<>();
values.add("one");
//values.add("two"); // exception thrown
values.add("three");
String two = values.stream()
.filter(s -> s.equals("two"))
.findAny()
.orElseThrow(() -> new RuntimeException("not found"));
Run Code Online (Sandbox Code Playgroud)
反过来呢?如果我想在发现任何匹配时抛出异常:
String two = values.stream()
.filter(s -> s.equals("two"))
.findAny()
.ifPresentThrow(() -> new RuntimeException("not found"));
Run Code Online (Sandbox Code Playgroud)
我可以存储Optional,并在isPresent之后进行检查:
Optional<String> two = values.stream()
.filter(s -> s.equals("two"))
.findAny();
if (two.isPresent()) {
throw new RuntimeException("not found");
}
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这种ifPresentThrow行为?试图以这种方式投掷一个不好的做法?
当我推动我的部署由于某种原因我得到我的pod上的错误 __CODE__
以下是我的yaml:
这是在本地运行,而不是在任何云解决方案上运行
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.16.0 ()
creationTimestamp: null
labels:
io.kompose.service: ckan
name: ckan
spec:
replicas: 1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
io.kompose.service: ckan
spec:
containers:
image: slckan/docker_ckan
name: ckan
ports:
- containerPort: 5000
resources: {}
volumeMounts:
- name: ckan-home
mountPath: /usr/lib/ckan/
subPath: ckan
volumes:
- name: ckan-home
persistentVolumeClaim:
claimName: ckan-pv-home-claim
restartPolicy: Always
status: {}
Run Code Online (Sandbox Code Playgroud)
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: ckan-pv-home-claim
labels:
io.kompose.service: ckan
spec:
storageClassName: ckan-home-sc
accessModes: …Run Code Online (Sandbox Code Playgroud) 我正在关注Jenkins管道的教程,我可以在节点6.10 docker容器下找到一个"hello world".
但是,当我向ember initrepo 添加一个默认的EmberJS应用程序(使用)并尝试在管道中构建它时,它在运行npm install时失败(因为目录访问问题).Jenkins文件可以在这里看到:https://github.com/CloudTrap/pipeline-tutorial/blob/fix-build/Jenkinsfile
构建打印的错误消息(在本地安装并java -jar jenkins.war在Macbook上运行,不相关但仅包括在内)是:
npm ERR! Linux 4.9.12-moby
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v6.10.0
npm ERR! npm v3.10.10
npm ERR! path /.npm
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir
npm ERR! Error: EACCES: permission denied, mkdir '/.npm'
npm ERR! at Error (native)
npm ERR! { Error: EACCES: permission denied, mkdir '/.npm'
npm ERR! at Error (native)
npm ERR! …Run Code Online (Sandbox Code Playgroud) 考虑一个将接口实现作为参数的函数,如下所示:
interface Callback {
fun done()
}
class SomeClass {
fun doSomeThing(callback: Callback) {
// do something
callback.done()
}
}
Run Code Online (Sandbox Code Playgroud)
当我想测试这个函数的调用者时,我可以做类似的事情
val captor = ArgumentCaptor.forClass(Callback::class)
Mockito.verify(someClass).doSomeThing(captor.capture())
Run Code Online (Sandbox Code Playgroud)
为了测试调用回调时其他类的作用,我可以这样做
captor.value.done()
Run Code Online (Sandbox Code Playgroud)
问题:如果我用高阶函数替换回调接口,我该怎么做呢?
fun doSomeThing(done: () -> Unit) {
// do something
done.invoke()
}
Run Code Online (Sandbox Code Playgroud)
这可以用ArgumentCaptor来完成,我必须使用哪个类 ArgumentCaptor.forClass(???)
我有一个执行testng测试套件的gradle任务.我希望能够将标志传递给任务以便使用特殊的testng xml套件文件(或者如果未设置标志,则只使用默认套件).
gradle test
Run Code Online (Sandbox Code Playgroud)
应该运行默认的标准测试套件
gradle test -Pspecial
Run Code Online (Sandbox Code Playgroud)
应该运行特殊的测试套件
我一直在尝试这样的事情:
test {
if (special) {
test(testng_special.xml);
}
else {
test(testng_default.xml);
}
}
Run Code Online (Sandbox Code Playgroud)
但是我得到一个未定义的属性错误.这是怎样的正确方法?
我正在尝试将Jenkins文件用于Jenkins中的所有构建,并且我有以下问题.我们基本上有3种构建:
我应该如何将所有上述构建包含在一个Jenkins文件中.现在我唯一的想法就是创造一个巨人,如果它将检查它是哪个分支并将执行这些步骤.
所以我有两个问题:
1.在Jenkinsfile中这样做是否合适?
作为参考,这是我目前的Jenkinsfile:
def servers = ['server1', 'server2']
def version = "1.0.0-${env.BUILD_ID}"
stage 'Build, UT, IT'
node {
checkout scm
env.PATH = "${tool 'Maven'}/bin:${env.PATH}"
withEnv(["PATH+MAVEN=${tool 'Maven'}/bin"]) {
sh "mvn -e org.codehaus.mojo:versions-maven-plugin:2.1:set -DnewVersion=$version -DgenerateBackupPoms=false"
sh 'mvn -e clean deploy'
sh 'mvn -e scm:tag'
}
}
def nodes = [:]
for (int i = 0; i < servers.size(); i++) {
def server = servers.get(i)
nodes["$server"] = { …Run Code Online (Sandbox Code Playgroud) java ×4
gradle ×2
jenkins ×2
annotations ×1
date ×1
docker ×1
ember.js ×1
inheritance ×1
jackson ×1
java-8 ×1
json ×1
kotlin ×1
kubernetes ×1
mockito ×1
npm ×1
properties ×1
task ×1
testng ×1