JDT LS based index for searches and refactorings to replace Jandex

This commit is contained in:
BoykoAlex
2019-02-12 00:09:09 -05:00
parent 4d6634e09a
commit 2b2413ee60
158 changed files with 115097 additions and 1687 deletions

View File

@@ -11,4 +11,10 @@ Require-Bundle: org.junit,
org.springframework.tooling.ls.eclipse.commons,
org.eclipse.jdt.core,
org.apache.commons.io,
org.springframework.tooling.jdt.ls.commons
org.springframework.tooling.jdt.ls.commons,
org.eclipse.lsp4j,
org.eclipse.m2e.core,
org.eclipse.m2e.maven.runtime,
org.eclipse.m2e.core.ui,
com.google.gson,
org.eclipse.lsp4j.jsonrpc

View File

@@ -0,0 +1,720 @@
{
"fqName": "java.util.Map",
"bindingKey": "Ljava/util/Map;",
"clazz": false,
"annotation": false,
"interfaze": true,
"enam": false,
"superClassName": "java.lang.Object",
"superInterfaceNames": [],
"fields": [],
"methods": [
{
"bindingKey": "Ljava/util/Map;.size()I",
"constructor": false,
"returnType": {
"kind": "INT",
"name": "I"
},
"parameters": [],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 1025,
"name": "size",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~size",
"label": "int java.util.Map.size()"
},
{
"bindingKey": "Ljava/util/Map;.isEmpty()Z",
"constructor": false,
"returnType": {
"kind": "BOOLEAN",
"name": "Z"
},
"parameters": [],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 1025,
"name": "isEmpty",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~isEmpty",
"label": "boolean java.util.Map.isEmpty()"
},
{
"bindingKey": "Ljava/util/Map;.containsKey(Ljava/lang/Object;)Z",
"constructor": false,
"returnType": {
"kind": "BOOLEAN",
"name": "Z"
},
"parameters": [
{
"kind": "CLASS",
"name": "Ljava.lang.Object;"
}
],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 1025,
"name": "containsKey",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~containsKey~Ljava.lang.Object;",
"label": "boolean java.util.Map.containsKey(Object key)"
},
{
"bindingKey": "Ljava/util/Map;.containsValue(Ljava/lang/Object;)Z",
"constructor": false,
"returnType": {
"kind": "BOOLEAN",
"name": "Z"
},
"parameters": [
{
"kind": "CLASS",
"name": "Ljava.lang.Object;"
}
],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 1025,
"name": "containsValue",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~containsValue~Ljava.lang.Object;",
"label": "boolean java.util.Map.containsValue(Object value)"
},
{
"bindingKey": "Ljava/util/Map;.get(Ljava/lang/Object;)TV;",
"constructor": false,
"returnType": {
"kind": "TYPE_VARIABLE",
"name": "TV;"
},
"parameters": [
{
"kind": "CLASS",
"name": "Ljava.lang.Object;"
}
],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 1025,
"name": "get",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~get~Ljava.lang.Object;",
"label": "V java.util.Map.get(Object key)"
},
{
"bindingKey": "Ljava/util/Map;.put(TK;TV;)TV;",
"constructor": false,
"returnType": {
"kind": "TYPE_VARIABLE",
"name": "TV;"
},
"parameters": [
{
"kind": "TYPE_VARIABLE",
"name": "TK;"
},
{
"kind": "TYPE_VARIABLE",
"name": "TV;"
}
],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 1025,
"name": "put",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~put~TK;~TV;",
"label": "V java.util.Map.put(K key, V value)"
},
{
"bindingKey": "Ljava/util/Map;.remove(Ljava/lang/Object;)TV;",
"constructor": false,
"returnType": {
"kind": "TYPE_VARIABLE",
"name": "TV;"
},
"parameters": [
{
"kind": "CLASS",
"name": "Ljava.lang.Object;"
}
],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 1025,
"name": "remove",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~remove~Ljava.lang.Object;",
"label": "V java.util.Map.remove(Object key)"
},
{
"bindingKey": "Ljava/util/Map;.putAll(Ljava/util/Map\u003c+TK;+TV;\u003e;)V",
"constructor": false,
"returnType": {
"kind": "VOID",
"name": "V"
},
"parameters": [
{
"kind": "PARAMETERIZED",
"name": "Ljava.util.Map\u003c+TK;+TV;\u003e;",
"extras": {
"owner": {
"kind": "CLASS",
"name": "Ljava.util.Map;"
},
"arguments": [
{
"kind": "WILDCARD",
"name": "+TK;"
},
{
"kind": "WILDCARD",
"name": "+TV;"
}
]
}
}
],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 1025,
"name": "putAll",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~putAll~Ljava.util.Map\\\u003c+TK;+TV;\u003e;",
"label": "void java.util.Map.putAll(Map\u003c? extends K, ? extends V\u003e m)"
},
{
"bindingKey": "Ljava/util/Map;.clear()V",
"constructor": false,
"returnType": {
"kind": "VOID",
"name": "V"
},
"parameters": [],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 1025,
"name": "clear",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~clear",
"label": "void java.util.Map.clear()"
},
{
"bindingKey": "Ljava/util/Map;.keySet()Ljava.util.Set\u003cTK;\u003e;",
"constructor": false,
"returnType": {
"kind": "PARAMETERIZED",
"name": "Ljava.util.Set\u003cTK;\u003e;",
"extras": {
"owner": {
"kind": "CLASS",
"name": "Ljava.util.Set;"
},
"arguments": [
{
"kind": "TYPE_VARIABLE",
"name": "TK;"
}
]
}
},
"parameters": [],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 1025,
"name": "keySet",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~keySet",
"label": "Set\u003cK\u003e java.util.Map.keySet()"
},
{
"bindingKey": "Ljava/util/Map;.values()Ljava.util.Collection\u003cTV;\u003e;",
"constructor": false,
"returnType": {
"kind": "PARAMETERIZED",
"name": "Ljava.util.Collection\u003cTV;\u003e;",
"extras": {
"owner": {
"kind": "CLASS",
"name": "Ljava.util.Collection;"
},
"arguments": [
{
"kind": "TYPE_VARIABLE",
"name": "TV;"
}
]
}
},
"parameters": [],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 1025,
"name": "values",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~values",
"label": "Collection\u003cV\u003e java.util.Map.values()"
},
{
"bindingKey": "Ljava/util/Map;.entrySet()Ljava.util.Set\u003cLjava.util.Map$Entry\u003cTK;TV;\u003e;\u003e;",
"constructor": false,
"returnType": {
"kind": "PARAMETERIZED",
"name": "Ljava.util.Set\u003cLjava.util.Map$Entry\u003cTK;TV;\u003e;\u003e;",
"extras": {
"owner": {
"kind": "CLASS",
"name": "Ljava.util.Set;"
},
"arguments": [
{
"kind": "PARAMETERIZED",
"name": "Ljava.util.Map$Entry\u003cTK;TV;\u003e;",
"extras": {
"owner": {
"kind": "CLASS",
"name": "Ljava.util.Map$Entry;"
},
"arguments": [
{
"kind": "TYPE_VARIABLE",
"name": "TK;"
},
{
"kind": "TYPE_VARIABLE",
"name": "TV;"
}
]
}
}
]
}
},
"parameters": [],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 1025,
"name": "entrySet",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~entrySet",
"label": "Set\u003cEntry\u003cK, V\u003e\u003e java.util.Map.entrySet()"
},
{
"bindingKey": "Ljava/util/Map;.equals(Ljava/lang/Object;)Z",
"constructor": false,
"returnType": {
"kind": "BOOLEAN",
"name": "Z"
},
"parameters": [
{
"kind": "CLASS",
"name": "Ljava.lang.Object;"
}
],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 1025,
"name": "equals",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~equals~Ljava.lang.Object;",
"label": "boolean java.util.Map.equals(Object o)"
},
{
"bindingKey": "Ljava/util/Map;.hashCode()I",
"constructor": false,
"returnType": {
"kind": "INT",
"name": "I"
},
"parameters": [],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 1025,
"name": "hashCode",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~hashCode",
"label": "int java.util.Map.hashCode()"
},
{
"bindingKey": "Ljava/util/Map;.getOrDefault(Ljava/lang/Object;TV;)TV;",
"constructor": false,
"returnType": {
"kind": "TYPE_VARIABLE",
"name": "TV;"
},
"parameters": [
{
"kind": "CLASS",
"name": "Ljava.lang.Object;"
},
{
"kind": "TYPE_VARIABLE",
"name": "TV;"
}
],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 65537,
"name": "getOrDefault",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~getOrDefault~Ljava.lang.Object;~TV;",
"label": "V java.util.Map.getOrDefault(Object key, V defaultValue)"
},
{
"bindingKey": "Ljava/util/Map;.forEach(Ljava/util/function/BiConsumer\u003c-TK;-TV;\u003e;)V",
"constructor": false,
"returnType": {
"kind": "VOID",
"name": "V"
},
"parameters": [
{
"kind": "PARAMETERIZED",
"name": "Ljava.util.function.BiConsumer\u003c-TK;-TV;\u003e;",
"extras": {
"owner": {
"kind": "CLASS",
"name": "Ljava.util.function.BiConsumer;"
},
"arguments": [
{
"kind": "WILDCARD",
"name": "-TK;"
},
{
"kind": "WILDCARD",
"name": "-TV;"
}
]
}
}
],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 65537,
"name": "forEach",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~forEach~Ljava.util.function.BiConsumer\\\u003c-TK;-TV;\u003e;",
"label": "void java.util.Map.forEach(BiConsumer\u003c? super K, ? super V\u003e action)"
},
{
"bindingKey": "Ljava/util/Map;.replaceAll(Ljava/util/function/BiFunction\u003c-TK;-TV;+TV;\u003e;)V",
"constructor": false,
"returnType": {
"kind": "VOID",
"name": "V"
},
"parameters": [
{
"kind": "PARAMETERIZED",
"name": "Ljava.util.function.BiFunction\u003c-TK;-TV;+TV;\u003e;",
"extras": {
"owner": {
"kind": "CLASS",
"name": "Ljava.util.function.BiFunction;"
},
"arguments": [
{
"kind": "WILDCARD",
"name": "-TK;"
},
{
"kind": "WILDCARD",
"name": "-TV;"
},
{
"kind": "WILDCARD",
"name": "+TV;"
}
]
}
}
],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 65537,
"name": "replaceAll",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~replaceAll~Ljava.util.function.BiFunction\\\u003c-TK;-TV;+TV;\u003e;",
"label": "void java.util.Map.replaceAll(BiFunction\u003c? super K, ? super V, ? extends V\u003e function)"
},
{
"bindingKey": "Ljava/util/Map;.putIfAbsent(TK;TV;)TV;",
"constructor": false,
"returnType": {
"kind": "TYPE_VARIABLE",
"name": "TV;"
},
"parameters": [
{
"kind": "TYPE_VARIABLE",
"name": "TK;"
},
{
"kind": "TYPE_VARIABLE",
"name": "TV;"
}
],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 65537,
"name": "putIfAbsent",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~putIfAbsent~TK;~TV;",
"label": "V java.util.Map.putIfAbsent(K key, V value)"
},
{
"bindingKey": "Ljava/util/Map;.remove(Ljava/lang/Object;Ljava/lang/Object;)Z",
"constructor": false,
"returnType": {
"kind": "BOOLEAN",
"name": "Z"
},
"parameters": [
{
"kind": "CLASS",
"name": "Ljava.lang.Object;"
},
{
"kind": "CLASS",
"name": "Ljava.lang.Object;"
}
],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 65537,
"name": "remove",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~remove~Ljava.lang.Object;~Ljava.lang.Object;",
"label": "boolean java.util.Map.remove(Object key, Object value)"
},
{
"bindingKey": "Ljava/util/Map;.replace(TK;TV;TV;)Z",
"constructor": false,
"returnType": {
"kind": "BOOLEAN",
"name": "Z"
},
"parameters": [
{
"kind": "TYPE_VARIABLE",
"name": "TK;"
},
{
"kind": "TYPE_VARIABLE",
"name": "TV;"
},
{
"kind": "TYPE_VARIABLE",
"name": "TV;"
}
],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 65537,
"name": "replace",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~replace~TK;~TV;~TV;",
"label": "boolean java.util.Map.replace(K key, V oldValue, V newValue)"
},
{
"bindingKey": "Ljava/util/Map;.replace(TK;TV;)TV;",
"constructor": false,
"returnType": {
"kind": "TYPE_VARIABLE",
"name": "TV;"
},
"parameters": [
{
"kind": "TYPE_VARIABLE",
"name": "TK;"
},
{
"kind": "TYPE_VARIABLE",
"name": "TV;"
}
],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 65537,
"name": "replace",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~replace~TK;~TV;",
"label": "V java.util.Map.replace(K key, V value)"
},
{
"bindingKey": "Ljava/util/Map;.computeIfAbsent(TK;Ljava/util/function/Function\u003c-TK;+TV;\u003e;)TV;",
"constructor": false,
"returnType": {
"kind": "TYPE_VARIABLE",
"name": "TV;"
},
"parameters": [
{
"kind": "TYPE_VARIABLE",
"name": "TK;"
},
{
"kind": "PARAMETERIZED",
"name": "Ljava.util.function.Function\u003c-TK;+TV;\u003e;",
"extras": {
"owner": {
"kind": "CLASS",
"name": "Ljava.util.function.Function;"
},
"arguments": [
{
"kind": "WILDCARD",
"name": "-TK;"
},
{
"kind": "WILDCARD",
"name": "+TV;"
}
]
}
}
],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 65537,
"name": "computeIfAbsent",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~computeIfAbsent~TK;~Ljava.util.function.Function\\\u003c-TK;+TV;\u003e;",
"label": "V java.util.Map.computeIfAbsent(K key, Function\u003c? super K, ? extends V\u003e mappingFunction)"
},
{
"bindingKey": "Ljava/util/Map;.computeIfPresent(TK;Ljava/util/function/BiFunction\u003c-TK;-TV;+TV;\u003e;)TV;",
"constructor": false,
"returnType": {
"kind": "TYPE_VARIABLE",
"name": "TV;"
},
"parameters": [
{
"kind": "TYPE_VARIABLE",
"name": "TK;"
},
{
"kind": "PARAMETERIZED",
"name": "Ljava.util.function.BiFunction\u003c-TK;-TV;+TV;\u003e;",
"extras": {
"owner": {
"kind": "CLASS",
"name": "Ljava.util.function.BiFunction;"
},
"arguments": [
{
"kind": "WILDCARD",
"name": "-TK;"
},
{
"kind": "WILDCARD",
"name": "-TV;"
},
{
"kind": "WILDCARD",
"name": "+TV;"
}
]
}
}
],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 65537,
"name": "computeIfPresent",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~computeIfPresent~TK;~Ljava.util.function.BiFunction\\\u003c-TK;-TV;+TV;\u003e;",
"label": "V java.util.Map.computeIfPresent(K key, BiFunction\u003c? super K, ? super V, ? extends V\u003e remappingFunction)"
},
{
"bindingKey": "Ljava/util/Map;.compute(TK;Ljava/util/function/BiFunction\u003c-TK;-TV;+TV;\u003e;)TV;",
"constructor": false,
"returnType": {
"kind": "TYPE_VARIABLE",
"name": "TV;"
},
"parameters": [
{
"kind": "TYPE_VARIABLE",
"name": "TK;"
},
{
"kind": "PARAMETERIZED",
"name": "Ljava.util.function.BiFunction\u003c-TK;-TV;+TV;\u003e;",
"extras": {
"owner": {
"kind": "CLASS",
"name": "Ljava.util.function.BiFunction;"
},
"arguments": [
{
"kind": "WILDCARD",
"name": "-TK;"
},
{
"kind": "WILDCARD",
"name": "-TV;"
},
{
"kind": "WILDCARD",
"name": "+TV;"
}
]
}
}
],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 65537,
"name": "compute",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~compute~TK;~Ljava.util.function.BiFunction\\\u003c-TK;-TV;+TV;\u003e;",
"label": "V java.util.Map.compute(K key, BiFunction\u003c? super K, ? super V, ? extends V\u003e remappingFunction)"
},
{
"bindingKey": "Ljava/util/Map;.merge(TK;TV;Ljava/util/function/BiFunction\u003c-TV;-TV;+TV;\u003e;)TV;",
"constructor": false,
"returnType": {
"kind": "TYPE_VARIABLE",
"name": "TV;"
},
"parameters": [
{
"kind": "TYPE_VARIABLE",
"name": "TK;"
},
{
"kind": "TYPE_VARIABLE",
"name": "TV;"
},
{
"kind": "PARAMETERIZED",
"name": "Ljava.util.function.BiFunction\u003c-TV;-TV;+TV;\u003e;",
"extras": {
"owner": {
"kind": "CLASS",
"name": "Ljava.util.function.BiFunction;"
},
"arguments": [
{
"kind": "WILDCARD",
"name": "-TV;"
},
{
"kind": "WILDCARD",
"name": "-TV;"
},
{
"kind": "WILDCARD",
"name": "+TV;"
}
]
}
}
],
"annotations": [],
"declaringType": "Ljava/util/Map;",
"flags": 65537,
"name": "merge",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map~merge~TK;~TV;~Ljava.util.function.BiFunction\\\u003c-TV;-TV;+TV;\u003e;",
"label": "V java.util.Map.merge(K key, V value, BiFunction\u003c? super V, ? super V, ? extends V\u003e remappingFunction)"
}
],
"annotations": [],
"classpathEntry": {
"cpe": {
"kind": "binary",
"path": "/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/rt.jar",
"sourceContainerUrl": "file:/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/src.zip",
"isSystem": true,
"isOwn": false
}
},
"flags": 1537,
"name": "Map",
"handleIdentifier": "\u003dtest-webflux-project/\\/Library\\/Java\\/JavaVirtualMachines\\/jdk1.8.0_151.jdk\\/Contents\\/Home\\/jre\\/lib\\/rt.jar\u003cjava.util(Map.class[Map",
"label": "java.util.Map\u003cK, V\u003e"
}

View File

@@ -0,0 +1,69 @@
{
"fqName": "org.test.NestedRouter3",
"bindingKey": "Lorg/test/NestedRouter3;",
"clazz": true,
"annotation": false,
"interfaze": false,
"enam": false,
"superInterfaceNames": [],
"fields": [],
"methods": [
{
"bindingKey": "Lorg/test/NestedRouter3;.routingFunction()Lorg/springframework/web/reactive/function/server/RouterFunction\u003cLorg/springframework/web/reactive/function/server/ServerResponse;\u003e;",
"constructor": false,
"returnType": {
"kind": "PARAMETERIZED",
"name": "Lorg/springframework/web/reactive/function/server/RouterFunction\u003cLorg/springframework/web/reactive/function/server/ServerResponse;\u003e;",
"extras": {
"owner": {
"kind": "CLASS",
"name": "Lorg/springframework/web/reactive/function/server/RouterFunction;"
},
"arguments": [
{
"kind": "CLASS",
"name": "Lorg/springframework/web/reactive/function/server/ServerResponse;"
}
]
}
},
"parameters": [],
"annotations": [
{
"fqName": "org.springframework.context.annotation.Bean",
"valuePairs": {},
"name": "Bean",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{NestedRouter3.java[NestedRouter3~routingFunction}Bean",
"label": "Bean"
}
],
"declaringType": "Lorg/test/NestedRouter3;",
"flags": 1,
"name": "routingFunction",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{NestedRouter3.java[NestedRouter3~routingFunction",
"label": "RouterFunction\u003cServerResponse\u003e org.test.NestedRouter3.routingFunction()"
}
],
"annotations": [
{
"fqName": "org.springframework.context.annotation.Configuration",
"valuePairs": {},
"name": "Configuration",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{NestedRouter3.java[NestedRouter3}Configuration",
"label": "Configuration"
}
],
"classpathEntry": {
"cpe": {
"kind": "source",
"path": "/Users/aboyko/Documents/junit-workspace/test-webflux-project/src/main/java",
"outputFolder": "/Users/aboyko/Documents/junit-workspace/test-webflux-project/target/classes",
"isSystem": false,
"isOwn": true
}
},
"flags": 1,
"name": "NestedRouter3",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{NestedRouter3.java[NestedRouter3",
"label": "org.test.NestedRouter3"
}

View File

@@ -0,0 +1,274 @@
{
"fqName": "org.test.Quote",
"bindingKey": "Lorg/test/Quote;",
"clazz": true,
"annotation": false,
"interfaze": false,
"enam": false,
"superInterfaceNames": [],
"fields": [
{
"bindingKey": "Lorg/test/Quote;.MATH_CONTEXT",
"type": {
"kind": "CLASS",
"name": "Ljava/math/MathContext;"
},
"enumConstant": false,
"annotations": [],
"declaringType": "Lorg/test/Quote;",
"flags": 26,
"name": "MATH_CONTEXT",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{Quote.java[Quote^MATH_CONTEXT",
"label": "MathContext MATH_CONTEXT"
},
{
"bindingKey": "Lorg/test/Quote;.ticker",
"type": {
"kind": "CLASS",
"name": "Ljava/lang/String;"
},
"enumConstant": false,
"annotations": [],
"declaringType": "Lorg/test/Quote;",
"flags": 2,
"name": "ticker",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{Quote.java[Quote^ticker",
"label": "String ticker"
},
{
"bindingKey": "Lorg/test/Quote;.price",
"type": {
"kind": "CLASS",
"name": "Ljava/math/BigDecimal;"
},
"enumConstant": false,
"annotations": [],
"declaringType": "Lorg/test/Quote;",
"flags": 2,
"name": "price",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{Quote.java[Quote^price",
"label": "BigDecimal price"
},
{
"bindingKey": "Lorg/test/Quote;.instant",
"type": {
"kind": "CLASS",
"name": "Ljava/time/Instant;"
},
"enumConstant": false,
"annotations": [],
"declaringType": "Lorg/test/Quote;",
"flags": 2,
"name": "instant",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{Quote.java[Quote^instant",
"label": "Instant instant"
}
],
"methods": [
{
"bindingKey": "Lorg/test/Quote;.()V",
"constructor": true,
"returnType": {
"kind": "VOID",
"name": "V"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/test/Quote;",
"flags": 1,
"name": "Quote",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{Quote.java[Quote~Quote",
"label": "org.test.Quote.Quote()"
},
{
"bindingKey": "Lorg/test/Quote;.(Ljava/lang/String;Ljava/math/BigDecimal;)V",
"constructor": true,
"returnType": {
"kind": "VOID",
"name": "V"
},
"parameters": [
{
"kind": "CLASS",
"name": "Ljava/lang/String;"
},
{
"kind": "CLASS",
"name": "Ljava/math/BigDecimal;"
}
],
"annotations": [],
"declaringType": "Lorg/test/Quote;",
"flags": 1,
"name": "Quote",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{Quote.java[Quote~Quote~QString;~QBigDecimal;",
"label": "org.test.Quote.Quote(String ticker, BigDecimal price)"
},
{
"bindingKey": "Lorg/test/Quote;.(Ljava/lang/String;Ljava/lang/Double;)V",
"constructor": true,
"returnType": {
"kind": "VOID",
"name": "V"
},
"parameters": [
{
"kind": "CLASS",
"name": "Ljava/lang/String;"
},
{
"kind": "CLASS",
"name": "Ljava/lang/Double;"
}
],
"annotations": [],
"declaringType": "Lorg/test/Quote;",
"flags": 1,
"name": "Quote",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{Quote.java[Quote~Quote~QString;~QDouble;",
"label": "org.test.Quote.Quote(String ticker, Double price)"
},
{
"bindingKey": "Lorg/test/Quote;.getTicker()Ljava/lang/String;",
"constructor": false,
"returnType": {
"kind": "CLASS",
"name": "Ljava/lang/String;"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/test/Quote;",
"flags": 1,
"name": "getTicker",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{Quote.java[Quote~getTicker",
"label": "String org.test.Quote.getTicker()"
},
{
"bindingKey": "Lorg/test/Quote;.setTicker(Ljava/lang/String;)V",
"constructor": false,
"returnType": {
"kind": "VOID",
"name": "V"
},
"parameters": [
{
"kind": "CLASS",
"name": "Ljava/lang/String;"
}
],
"annotations": [],
"declaringType": "Lorg/test/Quote;",
"flags": 1,
"name": "setTicker",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{Quote.java[Quote~setTicker~QString;",
"label": "void org.test.Quote.setTicker(String ticker)"
},
{
"bindingKey": "Lorg/test/Quote;.getPrice()Ljava/math/BigDecimal;",
"constructor": false,
"returnType": {
"kind": "CLASS",
"name": "Ljava/math/BigDecimal;"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/test/Quote;",
"flags": 1,
"name": "getPrice",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{Quote.java[Quote~getPrice",
"label": "BigDecimal org.test.Quote.getPrice()"
},
{
"bindingKey": "Lorg/test/Quote;.setPrice(Ljava/math/BigDecimal;)V",
"constructor": false,
"returnType": {
"kind": "VOID",
"name": "V"
},
"parameters": [
{
"kind": "CLASS",
"name": "Ljava/math/BigDecimal;"
}
],
"annotations": [],
"declaringType": "Lorg/test/Quote;",
"flags": 1,
"name": "setPrice",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{Quote.java[Quote~setPrice~QBigDecimal;",
"label": "void org.test.Quote.setPrice(BigDecimal price)"
},
{
"bindingKey": "Lorg/test/Quote;.getInstant()Ljava/time/Instant;",
"constructor": false,
"returnType": {
"kind": "CLASS",
"name": "Ljava/time/Instant;"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/test/Quote;",
"flags": 1,
"name": "getInstant",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{Quote.java[Quote~getInstant",
"label": "Instant org.test.Quote.getInstant()"
},
{
"bindingKey": "Lorg/test/Quote;.setInstant(Ljava/time/Instant;)V",
"constructor": false,
"returnType": {
"kind": "VOID",
"name": "V"
},
"parameters": [
{
"kind": "CLASS",
"name": "Ljava/time/Instant;"
}
],
"annotations": [],
"declaringType": "Lorg/test/Quote;",
"flags": 1,
"name": "setInstant",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{Quote.java[Quote~setInstant~QInstant;",
"label": "void org.test.Quote.setInstant(Instant instant)"
},
{
"bindingKey": "Lorg/test/Quote;.toString()Ljava/lang/String;",
"constructor": false,
"returnType": {
"kind": "CLASS",
"name": "Ljava/lang/String;"
},
"parameters": [],
"annotations": [
{
"fqName": "java.lang.Override",
"valuePairs": {},
"name": "Override",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{Quote.java[Quote~toString}Override",
"label": "Override"
}
],
"declaringType": "Lorg/test/Quote;",
"flags": 1,
"name": "toString",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{Quote.java[Quote~toString",
"label": "String org.test.Quote.toString()"
}
],
"annotations": [],
"classpathEntry": {
"cpe": {
"kind": "source",
"path": "/Users/aboyko/Documents/junit-workspace/test-webflux-project/src/main/java",
"outputFolder": "/Users/aboyko/Documents/junit-workspace/test-webflux-project/target/classes",
"isSystem": false,
"isOwn": true
}
},
"flags": 1,
"name": "Quote",
"handleIdentifier": "\u003dtest-webflux-project/src\\/main\\/java\u003corg.test{Quote.java[Quote",
"label": "org.test.Quote"
}

View File

@@ -0,0 +1,632 @@
{
"fqName": "org.springframework.boot.autoconfigure.web.ServerProperties",
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"clazz": true,
"annotation": false,
"interfaze": false,
"enam": false,
"superClassName": "java.lang.Object",
"superInterfaceNames": [],
"fields": [
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.port",
"type": {
"kind": "CLASS",
"name": "Ljava.lang.Integer;"
},
"enumConstant": false,
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 2,
"name": "port",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties^port",
"label": "Integer port"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.address",
"type": {
"kind": "CLASS",
"name": "Ljava.net.InetAddress;"
},
"enumConstant": false,
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 2,
"name": "address",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties^address",
"label": "InetAddress address"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.error",
"type": {
"kind": "CLASS",
"name": "Lorg.springframework.boot.autoconfigure.web.ErrorProperties;"
},
"enumConstant": false,
"annotations": [
{
"fqName": "org.springframework.boot.context.properties.NestedConfigurationProperty",
"valuePairs": {},
"name": "org.springframework.boot.context.properties.NestedConfigurationProperty",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties^error}org.springframework.boot.context.properties.NestedConfigurationProperty",
"label": "org.springframework.boot.context.properties.NestedConfigurationProperty"
}
],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 18,
"name": "error",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties^error",
"label": "ErrorProperties error"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.useForwardHeaders",
"type": {
"kind": "CLASS",
"name": "Ljava.lang.Boolean;"
},
"enumConstant": false,
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 2,
"name": "useForwardHeaders",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties^useForwardHeaders",
"label": "Boolean useForwardHeaders"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.serverHeader",
"type": {
"kind": "CLASS",
"name": "Ljava.lang.String;"
},
"enumConstant": false,
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 2,
"name": "serverHeader",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties^serverHeader",
"label": "String serverHeader"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.maxHttpHeaderSize",
"type": {
"kind": "INT",
"name": "I"
},
"enumConstant": false,
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 2,
"name": "maxHttpHeaderSize",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties^maxHttpHeaderSize",
"label": "int maxHttpHeaderSize"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.connectionTimeout",
"type": {
"kind": "CLASS",
"name": "Ljava.time.Duration;"
},
"enumConstant": false,
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 2,
"name": "connectionTimeout",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties^connectionTimeout",
"label": "Duration connectionTimeout"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.ssl",
"type": {
"kind": "CLASS",
"name": "Lorg.springframework.boot.web.server.Ssl;"
},
"enumConstant": false,
"annotations": [
{
"fqName": "org.springframework.boot.context.properties.NestedConfigurationProperty",
"valuePairs": {},
"name": "org.springframework.boot.context.properties.NestedConfigurationProperty",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties^ssl}org.springframework.boot.context.properties.NestedConfigurationProperty",
"label": "org.springframework.boot.context.properties.NestedConfigurationProperty"
}
],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 2,
"name": "ssl",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties^ssl",
"label": "Ssl ssl"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.compression",
"type": {
"kind": "CLASS",
"name": "Lorg.springframework.boot.web.server.Compression;"
},
"enumConstant": false,
"annotations": [
{
"fqName": "org.springframework.boot.context.properties.NestedConfigurationProperty",
"valuePairs": {},
"name": "org.springframework.boot.context.properties.NestedConfigurationProperty",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties^compression}org.springframework.boot.context.properties.NestedConfigurationProperty",
"label": "org.springframework.boot.context.properties.NestedConfigurationProperty"
}
],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 18,
"name": "compression",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties^compression",
"label": "Compression compression"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.http2",
"type": {
"kind": "CLASS",
"name": "Lorg.springframework.boot.web.server.Http2;"
},
"enumConstant": false,
"annotations": [
{
"fqName": "org.springframework.boot.context.properties.NestedConfigurationProperty",
"valuePairs": {},
"name": "org.springframework.boot.context.properties.NestedConfigurationProperty",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties^http2}org.springframework.boot.context.properties.NestedConfigurationProperty",
"label": "org.springframework.boot.context.properties.NestedConfigurationProperty"
}
],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 18,
"name": "http2",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties^http2",
"label": "Http2 http2"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.servlet",
"type": {
"kind": "CLASS",
"name": "Lorg.springframework.boot.autoconfigure.web.ServerProperties$Servlet;"
},
"enumConstant": false,
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 18,
"name": "servlet",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties^servlet",
"label": "Servlet servlet"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.tomcat",
"type": {
"kind": "CLASS",
"name": "Lorg.springframework.boot.autoconfigure.web.ServerProperties$Tomcat;"
},
"enumConstant": false,
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 18,
"name": "tomcat",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties^tomcat",
"label": "Tomcat tomcat"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.jetty",
"type": {
"kind": "CLASS",
"name": "Lorg.springframework.boot.autoconfigure.web.ServerProperties$Jetty;"
},
"enumConstant": false,
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 18,
"name": "jetty",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties^jetty",
"label": "Jetty jetty"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.undertow",
"type": {
"kind": "CLASS",
"name": "Lorg.springframework.boot.autoconfigure.web.ServerProperties$Undertow;"
},
"enumConstant": false,
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 18,
"name": "undertow",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties^undertow",
"label": "Undertow undertow"
}
],
"methods": [
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.()V",
"constructor": true,
"returnType": {
"kind": "VOID",
"name": "V"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "ServerProperties",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~ServerProperties",
"label": "org.springframework.boot.autoconfigure.web.ServerProperties.ServerProperties()"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.getPort()Ljava.lang.Integer;",
"constructor": false,
"returnType": {
"kind": "CLASS",
"name": "Ljava.lang.Integer;"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "getPort",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~getPort",
"label": "Integer org.springframework.boot.autoconfigure.web.ServerProperties.getPort()"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.setPort(Ljava/lang/Integer;)V",
"constructor": false,
"returnType": {
"kind": "VOID",
"name": "V"
},
"parameters": [
{
"kind": "CLASS",
"name": "Ljava.lang.Integer;"
}
],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "setPort",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~setPort~Ljava.lang.Integer;",
"label": "void org.springframework.boot.autoconfigure.web.ServerProperties.setPort(Integer port)"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.getAddress()Ljava.net.InetAddress;",
"constructor": false,
"returnType": {
"kind": "CLASS",
"name": "Ljava.net.InetAddress;"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "getAddress",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~getAddress",
"label": "InetAddress org.springframework.boot.autoconfigure.web.ServerProperties.getAddress()"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.setAddress(Ljava/net/InetAddress;)V",
"constructor": false,
"returnType": {
"kind": "VOID",
"name": "V"
},
"parameters": [
{
"kind": "CLASS",
"name": "Ljava.net.InetAddress;"
}
],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "setAddress",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~setAddress~Ljava.net.InetAddress;",
"label": "void org.springframework.boot.autoconfigure.web.ServerProperties.setAddress(InetAddress address)"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.isUseForwardHeaders()Ljava.lang.Boolean;",
"constructor": false,
"returnType": {
"kind": "CLASS",
"name": "Ljava.lang.Boolean;"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "isUseForwardHeaders",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~isUseForwardHeaders",
"label": "Boolean org.springframework.boot.autoconfigure.web.ServerProperties.isUseForwardHeaders()"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.setUseForwardHeaders(Ljava/lang/Boolean;)V",
"constructor": false,
"returnType": {
"kind": "VOID",
"name": "V"
},
"parameters": [
{
"kind": "CLASS",
"name": "Ljava.lang.Boolean;"
}
],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "setUseForwardHeaders",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~setUseForwardHeaders~Ljava.lang.Boolean;",
"label": "void org.springframework.boot.autoconfigure.web.ServerProperties.setUseForwardHeaders(Boolean useForwardHeaders)"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.getServerHeader()Ljava.lang.String;",
"constructor": false,
"returnType": {
"kind": "CLASS",
"name": "Ljava.lang.String;"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "getServerHeader",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~getServerHeader",
"label": "String org.springframework.boot.autoconfigure.web.ServerProperties.getServerHeader()"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.setServerHeader(Ljava/lang/String;)V",
"constructor": false,
"returnType": {
"kind": "VOID",
"name": "V"
},
"parameters": [
{
"kind": "CLASS",
"name": "Ljava.lang.String;"
}
],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "setServerHeader",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~setServerHeader~Ljava.lang.String;",
"label": "void org.springframework.boot.autoconfigure.web.ServerProperties.setServerHeader(String serverHeader)"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.getMaxHttpHeaderSize()I",
"constructor": false,
"returnType": {
"kind": "INT",
"name": "I"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "getMaxHttpHeaderSize",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~getMaxHttpHeaderSize",
"label": "int org.springframework.boot.autoconfigure.web.ServerProperties.getMaxHttpHeaderSize()"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.setMaxHttpHeaderSize(I)V",
"constructor": false,
"returnType": {
"kind": "VOID",
"name": "V"
},
"parameters": [
{
"kind": "INT",
"name": "I"
}
],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "setMaxHttpHeaderSize",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~setMaxHttpHeaderSize~I",
"label": "void org.springframework.boot.autoconfigure.web.ServerProperties.setMaxHttpHeaderSize(int maxHttpHeaderSize)"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.getConnectionTimeout()Ljava.time.Duration;",
"constructor": false,
"returnType": {
"kind": "CLASS",
"name": "Ljava.time.Duration;"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "getConnectionTimeout",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~getConnectionTimeout",
"label": "Duration org.springframework.boot.autoconfigure.web.ServerProperties.getConnectionTimeout()"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.setConnectionTimeout(Ljava/time/Duration;)V",
"constructor": false,
"returnType": {
"kind": "VOID",
"name": "V"
},
"parameters": [
{
"kind": "CLASS",
"name": "Ljava.time.Duration;"
}
],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "setConnectionTimeout",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~setConnectionTimeout~Ljava.time.Duration;",
"label": "void org.springframework.boot.autoconfigure.web.ServerProperties.setConnectionTimeout(Duration connectionTimeout)"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.getError()Lorg.springframework.boot.autoconfigure.web.ErrorProperties;",
"constructor": false,
"returnType": {
"kind": "CLASS",
"name": "Lorg.springframework.boot.autoconfigure.web.ErrorProperties;"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "getError",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~getError",
"label": "ErrorProperties org.springframework.boot.autoconfigure.web.ServerProperties.getError()"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.getSsl()Lorg.springframework.boot.web.server.Ssl;",
"constructor": false,
"returnType": {
"kind": "CLASS",
"name": "Lorg.springframework.boot.web.server.Ssl;"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "getSsl",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~getSsl",
"label": "Ssl org.springframework.boot.autoconfigure.web.ServerProperties.getSsl()"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.setSsl(Lorg/springframework/boot/web/server/Ssl;)V",
"constructor": false,
"returnType": {
"kind": "VOID",
"name": "V"
},
"parameters": [
{
"kind": "CLASS",
"name": "Lorg.springframework.boot.web.server.Ssl;"
}
],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "setSsl",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~setSsl~Lorg.springframework.boot.web.server.Ssl;",
"label": "void org.springframework.boot.autoconfigure.web.ServerProperties.setSsl(Ssl ssl)"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.getCompression()Lorg.springframework.boot.web.server.Compression;",
"constructor": false,
"returnType": {
"kind": "CLASS",
"name": "Lorg.springframework.boot.web.server.Compression;"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "getCompression",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~getCompression",
"label": "Compression org.springframework.boot.autoconfigure.web.ServerProperties.getCompression()"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.getHttp2()Lorg.springframework.boot.web.server.Http2;",
"constructor": false,
"returnType": {
"kind": "CLASS",
"name": "Lorg.springframework.boot.web.server.Http2;"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "getHttp2",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~getHttp2",
"label": "Http2 org.springframework.boot.autoconfigure.web.ServerProperties.getHttp2()"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.getServlet()Lorg.springframework.boot.autoconfigure.web.ServerProperties$Servlet;",
"constructor": false,
"returnType": {
"kind": "CLASS",
"name": "Lorg.springframework.boot.autoconfigure.web.ServerProperties$Servlet;"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "getServlet",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~getServlet",
"label": "Servlet org.springframework.boot.autoconfigure.web.ServerProperties.getServlet()"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.getTomcat()Lorg.springframework.boot.autoconfigure.web.ServerProperties$Tomcat;",
"constructor": false,
"returnType": {
"kind": "CLASS",
"name": "Lorg.springframework.boot.autoconfigure.web.ServerProperties$Tomcat;"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "getTomcat",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~getTomcat",
"label": "Tomcat org.springframework.boot.autoconfigure.web.ServerProperties.getTomcat()"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.getJetty()Lorg.springframework.boot.autoconfigure.web.ServerProperties$Jetty;",
"constructor": false,
"returnType": {
"kind": "CLASS",
"name": "Lorg.springframework.boot.autoconfigure.web.ServerProperties$Jetty;"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "getJetty",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~getJetty",
"label": "Jetty org.springframework.boot.autoconfigure.web.ServerProperties.getJetty()"
},
{
"bindingKey": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;.getUndertow()Lorg.springframework.boot.autoconfigure.web.ServerProperties$Undertow;",
"constructor": false,
"returnType": {
"kind": "CLASS",
"name": "Lorg.springframework.boot.autoconfigure.web.ServerProperties$Undertow;"
},
"parameters": [],
"annotations": [],
"declaringType": "Lorg/springframework/boot/autoconfigure/web/ServerProperties;",
"flags": 1,
"name": "getUndertow",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties~getUndertow",
"label": "Undertow org.springframework.boot.autoconfigure.web.ServerProperties.getUndertow()"
}
],
"annotations": [
{
"fqName": "org.springframework.boot.context.properties.ConfigurationProperties",
"valuePairs": {
"ignoreUnknownFields": true,
"prefix": "server"
},
"name": "org.springframework.boot.context.properties.ConfigurationProperties",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties}org.springframework.boot.context.properties.ConfigurationProperties",
"label": "org.springframework.boot.context.properties.ConfigurationProperties"
}
],
"classpathEntry": {
"cpe": {
"kind": "binary",
"path": "/Users/aboyko/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/2.0.0.RELEASE/spring-boot-autoconfigure-2.0.0.RELEASE.jar",
"sourceContainerUrl": "file:/Users/aboyko/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/2.0.0.RELEASE/spring-boot-autoconfigure-2.0.0.RELEASE-sources.jar",
"isSystem": false,
"isOwn": false
}
},
"flags": 1,
"name": "ServerProperties",
"handleIdentifier": "\u003dtest-webflux-project/\\/Users\\/aboyko\\/.m2\\/repository\\/org\\/springframework\\/boot\\/spring-boot-autoconfigure\\/2.0.0.RELEASE\\/spring-boot-autoconfigure-2.0.0.RELEASE.jar\u003corg.springframework.boot.autoconfigure.web(ServerProperties.class[ServerProperties",
"label": "org.springframework.boot.autoconfigure.web.ServerProperties"
}

View File

@@ -0,0 +1,175 @@
/*******************************************************************************
* Copyright (c) 2019 Pivotal, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Pivotal, Inc. - initial API and implementation
*******************************************************************************/
package org.springframework.tooling.ls.eclipse.commons.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import org.eclipse.core.resources.IProject;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.ide.vscode.commons.protocol.java.JavaDataParams;
import org.springframework.ide.vscode.commons.protocol.java.JavaSearchParams;
import org.springframework.ide.vscode.commons.protocol.java.JavaTypeHierarchyParams;
import org.springframework.ide.vscode.commons.protocol.java.TypeData;
import org.springframework.tooling.ls.eclipse.commons.STS4LanguageClientImpl;
public class JavaLangugeClientTest {
private static STS4LanguageClientImpl client = new STS4LanguageClientImpl();
private static IProject project;
@AfterClass
public static void tearDown() throws Exception {
TestUtils.deleteAllProjects();
}
@BeforeClass
public static void setupAll() throws Exception {
project = TestUtils.importMavenProject("test-webflux-project");
assertNotNull(project);
}
@Test
public void findTypeInJRE() throws Exception {
TypeData data = client
.javaType(new JavaDataParams(project.getLocationURI().toString(), "Ljava/util/Map;", true))
.get(10, TimeUnit.SECONDS);
assertNotNull(data);
assertEquals(TestUtils.loadJsonString("Map.json"), TestUtils.toJsonString(data));
}
@Test
public void findTypeInJar() throws Exception {
TypeData data = client
.javaType(new JavaDataParams(project.getLocationURI().toString(),
"Lorg/springframework/boot/autoconfigure/web/ServerProperties;", true))
.get(10, TimeUnit.SECONDS);
assertNotNull(data);
assertEquals(TestUtils.loadJsonString("ServerProperties.json"), TestUtils.toJsonString(data));
}
@Test
public void findTypeInSource1() throws Exception {
TypeData data = client
.javaType(new JavaDataParams(project.getLocationURI().toString(), "Lorg/test/Quote;", true))
.get(10, TimeUnit.SECONDS);
assertNotNull(data);
assertEquals(TestUtils.loadJsonString("Quote.json"), TestUtils.toJsonString(data));
}
@Test
public void findTypeInSource2() throws Exception {
TypeData data = client
.javaType(new JavaDataParams(project.getLocationURI().toString(), "Lorg/test/NestedRouter3;", true))
.get(10, TimeUnit.SECONDS);
assertNotNull(data);
assertEquals(TestUtils.loadJsonString("NestedRouter3.json"), TestUtils.toJsonString(data));
}
@Test
public void fuzzyFindTypesIncludingSysLibs() throws Exception {
List<TypeData> data = client
.javaSearchTypes(new JavaSearchParams(project.getLocationURI().toString(), "util.Map", true, true))
.get(100, TimeUnit.SECONDS);
assertNotNull(data);
assertTrue(data.size() > 500);
List<TypeData> closeMatches = data.stream().filter(t -> t.getFqName().contains("util.Map")).collect(Collectors.toList());
assertEquals(2, closeMatches.size());
assertNotNull(closeMatches.stream().filter(t -> "java.util.Map".equals(t.getFqName())).findFirst().orElse(null));
}
@Test
public void fuzzyFindTypesExcludingSysLibs() throws Exception {
List<TypeData> data = client
.javaSearchTypes(new JavaSearchParams(project.getLocationURI().toString(), "util.Map", true, false))
.get(10, TimeUnit.SECONDS);
assertNotNull(data);
assertEquals(186, data.size());
TestUtils.saveJsonData("search-util-map.json", data);
List<TypeData> closeMatches = data.stream().filter(t -> t.getFqName().contains("util.Map")).collect(Collectors.toList());
assertEquals(1, closeMatches.size());
assertEquals("io.netty.util.Mapping", closeMatches.get(0).getFqName());
}
@Test
public void searchPackagesIncludingSysLibs() throws Exception {
List<String> packages = client.javaSearchPackages(new JavaSearchParams(project.getLocationURI().toString(), "java.lang", true, true)).get(30, TimeUnit.SECONDS);
assertTrue(packages.size() > 15 && packages.size() < 25);
}
@Test
public void searchPackagesExcludingSysLibs() throws Exception {
List<String> packages = client.javaSearchPackages(new JavaSearchParams(project.getLocationURI().toString(), "java.lang", true, false)).get(30, TimeUnit.SECONDS);
assertEquals(1, packages.size());
packages = client.javaSearchPackages(new JavaSearchParams(project.getLocationURI().toString(), "org.test", true, false)).get(30, TimeUnit.SECONDS);
assertTrue(packages.contains("org.test"));
}
@Test
public void map_Subtypes() throws Exception {
List<TypeData> data = client
.javaSubTypes(new JavaTypeHierarchyParams(project.getLocationURI().toString(), "java.util.Map"))
.get(10, TimeUnit.SECONDS);
assertNotNull(data);
assertTrue(data.size() > 200);
assertTrue(data.stream().filter(t -> "java.util.AbstractMap".equals(t.getFqName())).findFirst().isPresent());
}
@Test
public void arrayList_SuperTypes() throws Exception {
List<TypeData> data = client
.javaSuperTypes(new JavaTypeHierarchyParams(project.getLocationURI().toString(), "java.util.ArrayList"))
.get(10, TimeUnit.SECONDS);
assertNotNull(data);
Set<String> actual = data.stream().map(t -> t.getFqName()).collect(Collectors.toSet());
Set<String> expected = new HashSet<>(Arrays.asList(
"java.util.List",
"java.util.RandomAccess",
"java.lang.Cloneable",
"java.io.Serializable",
"java.util.AbstractList",
"java.util.Collection",
"java.lang.Object",
"java.util.AbstractCollection",
"java.lang.Iterable"
));
assertEquals(expected, actual);
}
@Test
public void taskExecutorFactoryBean_SuperTypes() throws Exception {
List<TypeData> data = client
.javaSuperTypes(new JavaTypeHierarchyParams(project.getLocationURI().toString(), "org.springframework.scheduling.config.TaskExecutorFactoryBean"))
.get(100000, TimeUnit.SECONDS);
assertNotNull(data);
Set<String> actual = data.stream().map(t -> t.getFqName()).collect(Collectors.toSet());
Set<String> expected = new HashSet<>(Arrays.asList(
"org.springframework.beans.factory.FactoryBean",
"org.springframework.beans.factory.DisposableBean",
"org.springframework.beans.factory.Aware",
"java.lang.Object",
"org.springframework.beans.factory.BeanNameAware",
"org.springframework.beans.factory.InitializingBean"
));
assertEquals(expected, actual);
}
}

View File

@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2018 Pivotal, Inc.
* Copyright (c) 2018, 2019 Pivotal, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -19,10 +19,10 @@ import org.eclipse.jdt.core.IField;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;
import org.eclipse.lsp4j.MarkupContent;
import org.junit.After;
import org.junit.Test;
import org.springframework.tooling.jdt.ls.commons.java.JavaDataParams;
import org.springframework.tooling.jdt.ls.commons.javadoc.JavadocResponse;
import org.springframework.ide.vscode.commons.protocol.java.JavaDataParams;
import org.springframework.tooling.ls.eclipse.commons.STS4LanguageClientImpl;
public class JavadocTest {
@@ -44,9 +44,9 @@ public class JavadocTest {
String expectedBindingKey = "Lcom/sample/SampleJavadoc;";
assertEquals(expectedBindingKey, type.getKey());
JavaDataParams params = new JavaDataParams(project.getProject().getLocation().toFile().toURI().toString(), expectedBindingKey);
JavadocResponse response = client.javadoc(params).get(1, TimeUnit.SECONDS);
assertEquals("**Sample class**", response.getContent());
JavaDataParams params = new JavaDataParams(project.getProject().getLocation().toFile().toURI().toString(), expectedBindingKey, false);
MarkupContent response = client.javadoc(params).get(1, TimeUnit.SECONDS);
assertEquals("**Sample class**", response.getValue());
}
@Test
@@ -61,9 +61,9 @@ public class JavadocTest {
String expectedBindingKey = "Lcom/sample/SampleJavadoc;.number";
assertEquals(expectedBindingKey, field.getKey());
JavaDataParams params = new JavaDataParams(project.getProject().getLocation().toFile().toURI().toString(), expectedBindingKey);
JavadocResponse response = client.javadoc(params).get(1, TimeUnit.SECONDS);
assertEquals("**Sample field**", response.getContent());
JavaDataParams params = new JavaDataParams(project.getProject().getLocation().toFile().toURI().toString(), expectedBindingKey, false);
MarkupContent response = client.javadoc(params).get(1, TimeUnit.SECONDS);
assertEquals("**Sample field**", response.getValue());
}
@Test
@@ -78,9 +78,9 @@ public class JavadocTest {
String expectedBindingKey = "Lcom/sample/SampleJavadoc;.getNumber()V";
assertEquals(expectedBindingKey, method.getKey());
JavaDataParams params = new JavaDataParams(project.getProject().getLocation().toFile().toURI().toString(), expectedBindingKey);
JavadocResponse response = client.javadoc(params).get(1, TimeUnit.SECONDS);
assertEquals("**Sample getter**", response.getContent());
JavaDataParams params = new JavaDataParams(project.getProject().getLocation().toFile().toURI().toString(), expectedBindingKey, false);
MarkupContent response = client.javadoc(params).get(1, TimeUnit.SECONDS);
assertEquals("**Sample getter**", response.getValue());
}
}

View File

@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2018 Pivotal, Inc.
* Copyright (c) 2018, 2019 Pivotal, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -13,20 +13,37 @@
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.apache.maven.model.Model;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceDescription;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.m2e.core.MavenPlugin;
import org.eclipse.m2e.core.project.IMavenProjectImportResult;
import org.eclipse.m2e.core.project.MavenProjectInfo;
import org.eclipse.m2e.core.project.ProjectImportConfiguration;
import org.eclipse.m2e.core.project.ResolverConfiguration;
import org.springframework.ide.vscode.commons.protocol.java.TypeData;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class TestUtils {
private static Gson gson = new GsonBuilder().setPrettyPrinting().create();
public static IJavaProject createTestProject(String name) throws Exception {
File testProjectSourceLocation = new File(FileLocator.toFileURL(Platform.getBundle("org.springframework.tooling.ls.eclipse.commons.test").getEntry("test-projects/"+name)).toURI());
File targetWorkspace = ResourcesPlugin.getWorkspace().getRoot().getLocation().toFile();
@@ -44,6 +61,34 @@ public class TestUtils {
return JavaCore.create(project);
}
public static IProject importMavenProject(String name) throws Exception {
File testProjectSourceLocation = new File(FileLocator.toFileURL(Platform.getBundle("org.springframework.tooling.ls.eclipse.commons.test").getEntry("test-projects/"+name)).toURI());
File targetWorkspace = ResourcesPlugin.getWorkspace().getRoot().getLocation().toFile();
File destDir = new File(targetWorkspace, name);
FileUtils.copyDirectory(testProjectSourceLocation, destDir);
File pom = new File(destDir, "pom.xml");
return createEclipseProjectFromExistingMavenProject(pom, new NullProgressMonitor()).get(0);
}
public static void saveJsonData(String fileName, Object data) throws Exception {
File jsonFile = new File("/Users/aboyko/git/sts4/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons.test/java-data-json/"+fileName);
FileUtils.write(jsonFile, toJsonString(data));
}
public static String toJsonString(Object obj) {
return gson.toJson(obj);
}
public static TypeData loadJsonData(String fileName) throws Exception {
return gson.fromJson(loadJsonString(fileName), TypeData.class);
}
public static String loadJsonString(String fileName) throws Exception {
File jsonFile = new File(FileLocator.toFileURL(Platform.getBundle("org.springframework.tooling.ls.eclipse.commons.test").getEntry("java-data-json/"+fileName)).toURI());
return FileUtils.readFileToString(jsonFile);
}
public static void deleteAllProjects() throws Exception {
IProject[] allProjects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
for (IProject project : allProjects) {
@@ -75,5 +120,54 @@ public class TestUtils {
}
}
public static void setAutoBuilding(boolean enabled) throws CoreException {
IWorkspaceDescription wsd = ResourcesPlugin.getWorkspace().getDescription();
if (!wsd.isAutoBuilding() == enabled) {
wsd.setAutoBuilding(enabled);
ResourcesPlugin.getWorkspace().setDescription(wsd);
}
}
public static List<IProject> createEclipseProjectFromExistingMavenProject(File pomFile, IProgressMonitor monitor) throws Exception {
Model model = MavenPlugin.getMavenModelManager().readMavenModel(pomFile);
String derivedProjectName = model.getName();
if (derivedProjectName == null) {
derivedProjectName = model.getArtifactId();
}
if (derivedProjectName == null) {
String[] groupPieces = model.getGroupId().split("\\.");
int lastIndex = groupPieces.length - 1;
if (lastIndex >= 0) {
derivedProjectName = groupPieces[lastIndex];
} else {
throw new Exception("Bad pom.xml: no name, artifactId, or groupId.");
}
}
MavenProjectInfo parent = null;
MavenProjectInfo projectInfo = new MavenProjectInfo(derivedProjectName, pomFile, model, parent);
ArrayList<MavenProjectInfo> projectInfos = new ArrayList<MavenProjectInfo>();
projectInfos.add(projectInfo);
ResolverConfiguration resolverConfiguration = new ResolverConfiguration();
String activeProfiles = "pom.xml";
resolverConfiguration.setSelectedProfiles(activeProfiles);
ProjectImportConfiguration configuration = new ProjectImportConfiguration(resolverConfiguration);
List<IMavenProjectImportResult> importResults = MavenPlugin.getProjectConfigurationManager().importProjects(projectInfos, configuration,
monitor);
List<IProject> projects = new ArrayList<>(importResults.size());
for (IMavenProjectImportResult importResult : importResults) {
// skip projects which have not been properly imported
IProject project = importResult.getProject();
if (project != null) {
MavenPlugin.getProjectConfigurationManager().updateProjectConfiguration(project, monitor);
project.refreshLocal(IResource.DEPTH_INFINITE, null);
assertTrue(project.hasNature(JavaCore.NATURE_ID));
ResourcesPlugin.getWorkspace().build(IncrementalProjectBuilder.FULL_BUILD, null);
projects.add(project);
}
}
return projects;
}
}

View File

@@ -0,0 +1,233 @@
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
# JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
# M2_HOME - location of maven2's installed home dir
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
# e.g. to debug Maven itself, use
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------
if [ -z "$MAVEN_SKIP_RC" ] ; then
if [ -f /etc/mavenrc ] ; then
. /etc/mavenrc
fi
if [ -f "$HOME/.mavenrc" ] ; then
. "$HOME/.mavenrc"
fi
fi
# OS specific support. $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
CYGWIN*) cygwin=true ;;
MINGW*) mingw=true;;
Darwin*) darwin=true
#
# Look for the Apple JDKs first to preserve the existing behaviour, and then look
# for the new JDKs provided by Oracle.
#
if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then
#
# Apple JDKs
#
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
fi
if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then
#
# Apple JDKs
#
export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
fi
if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then
#
# Oracle JDKs
#
export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
fi
if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then
#
# Apple JDKs
#
export JAVA_HOME=`/usr/libexec/java_home`
fi
;;
esac
if [ -z "$JAVA_HOME" ] ; then
if [ -r /etc/gentoo-release ] ; then
JAVA_HOME=`java-config --jre-home`
fi
fi
if [ -z "$M2_HOME" ] ; then
## resolve links - $0 may be a link to maven's home
PRG="$0"
# need this for relative symlinks
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG="`dirname "$PRG"`/$link"
fi
done
saveddir=`pwd`
M2_HOME=`dirname "$PRG"`/..
# make it fully qualified
M2_HOME=`cd "$M2_HOME" && pwd`
cd "$saveddir"
# echo Using m2 at $M2_HOME
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --unix "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi
# For Migwn, ensure paths are in UNIX format before anything is touched
if $mingw ; then
[ -n "$M2_HOME" ] &&
M2_HOME="`(cd "$M2_HOME"; pwd)`"
[ -n "$JAVA_HOME" ] &&
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
# TODO classpath?
fi
if [ -z "$JAVA_HOME" ]; then
javaExecutable="`which javac`"
if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
# readlink(1) is not available as standard on Solaris 10.
readLink=`which readlink`
if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
if $darwin ; then
javaHome="`dirname \"$javaExecutable\"`"
javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
else
javaExecutable="`readlink -f \"$javaExecutable\"`"
fi
javaHome="`dirname \"$javaExecutable\"`"
javaHome=`expr "$javaHome" : '\(.*\)/bin'`
JAVA_HOME="$javaHome"
export JAVA_HOME
fi
fi
fi
if [ -z "$JAVACMD" ] ; then
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
else
JAVACMD="`which java`"
fi
fi
if [ ! -x "$JAVACMD" ] ; then
echo "Error: JAVA_HOME is not defined correctly." >&2
echo " We cannot execute $JAVACMD" >&2
exit 1
fi
if [ -z "$JAVA_HOME" ] ; then
echo "Warning: JAVA_HOME environment variable is not set."
fi
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --path --windows "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
fi
# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {
local basedir=$(pwd)
local wdir=$(pwd)
while [ "$wdir" != '/' ] ; do
if [ -d "$wdir"/.mvn ] ; then
basedir=$wdir
break
fi
wdir=$(cd "$wdir/.."; pwd)
done
echo "${basedir}"
}
# concatenates all lines of a file
concat_lines() {
if [ -f "$1" ]; then
echo "$(tr -s '\n' ' ' < "$1")"
fi
}
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)}
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
export MAVEN_CMD_LINE_ARGS
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
exec "$JAVACMD" \
$MAVEN_OPTS \
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
${WRAPPER_LAUNCHER} "$@"

View File

@@ -0,0 +1,145 @@
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM http://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre
@setlocal
set ERROR_CODE=0
@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal
@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome
echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init
echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
@REM ==== END VALIDATION ====
:init
set MAVEN_CMD_LINE_ARGS=%*
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir
:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir
:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"
:endDetectBaseDir
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
:endReadAdditionalConfig
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="".\.mvn\wrapper\maven-wrapper.jar""
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS%
if ERRORLEVEL 1 goto error
goto end
:error
set ERROR_CODE=1
:end
@endlocal & set ERROR_CODE=%ERROR_CODE%
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
exit /B %ERROR_CODE%

View File

@@ -0,0 +1,49 @@
<?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>com.example</groupId>
<artifactId>test-webflux-project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,17 @@
package org.test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
private static final Logger log = LoggerFactory.getLogger(Application.class);
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}

View File

@@ -0,0 +1,33 @@
package org.test;
import static org.springframework.http.MediaType.APPLICATION_JSON;
import static org.springframework.web.reactive.function.server.RequestPredicates.GET;
import static org.springframework.web.reactive.function.server.RequestPredicates.POST;
import static org.springframework.web.reactive.function.server.RequestPredicates.accept;
import static org.springframework.web.reactive.function.server.RequestPredicates.contentType;
import static org.springframework.web.reactive.function.server.RequestPredicates.method;
import static org.springframework.web.reactive.function.server.RequestPredicates.path;
import static org.springframework.web.reactive.function.server.RouterFunctions.nest;
import static org.springframework.web.reactive.function.server.RouterFunctions.route;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.web.reactive.function.server.RouterFunction;
import org.springframework.web.reactive.function.server.ServerResponse;
@Configuration
public class NestedRouter1 {
@Bean
public RouterFunction<ServerResponse> routingFunction1() {
PersonHandler1 handler = new PersonHandler1();
return nest(path("/person"),
nest(accept(APPLICATION_JSON),
route(GET("/{id}"), handler::getPerson)
.andRoute(method(HttpMethod.GET), handler::listPeople)
).andRoute(POST("/").and(contentType(APPLICATION_JSON)), handler::createPerson));
}
}

View File

@@ -0,0 +1,35 @@
package org.test;
import static org.springframework.http.MediaType.APPLICATION_JSON;
import static org.springframework.http.MediaType.APPLICATION_PDF;
import static org.springframework.http.MediaType.TEXT_PLAIN;
import static org.springframework.web.reactive.function.server.RequestPredicates.GET;
import static org.springframework.web.reactive.function.server.RequestPredicates.POST;
import static org.springframework.web.reactive.function.server.RequestPredicates.accept;
import static org.springframework.web.reactive.function.server.RequestPredicates.contentType;
import static org.springframework.web.reactive.function.server.RequestPredicates.method;
import static org.springframework.web.reactive.function.server.RequestPredicates.path;
import static org.springframework.web.reactive.function.server.RouterFunctions.nest;
import static org.springframework.web.reactive.function.server.RouterFunctions.route;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.web.reactive.function.server.RouterFunction;
import org.springframework.web.reactive.function.server.ServerResponse;
@Configuration
public class NestedRouter2 {
@Bean
public RouterFunction<ServerResponse> routingFunction2() {
PersonHandler2 handler = new PersonHandler2();
return nest(accept(APPLICATION_JSON),
nest(path("/person"),
route(GET("/{id}"), handler::getPerson)
.andRoute(method(HttpMethod.GET).and(method(HttpMethod.HEAD)).and(accept(TEXT_PLAIN)), handler::listPeople)
).andRoute(POST("/").and(contentType(APPLICATION_JSON)).and(contentType(APPLICATION_PDF)), handler::createPerson));
}
}

View File

@@ -0,0 +1,39 @@
package org.test;
import static org.springframework.http.MediaType.APPLICATION_JSON;
import static org.springframework.web.reactive.function.server.RequestPredicates.GET;
import static org.springframework.web.reactive.function.server.RequestPredicates.POST;
import static org.springframework.web.reactive.function.server.RequestPredicates.accept;
import static org.springframework.web.reactive.function.server.RequestPredicates.contentType;
import static org.springframework.web.reactive.function.server.RequestPredicates.method;
import static org.springframework.web.reactive.function.server.RequestPredicates.path;
import static org.springframework.web.reactive.function.server.RouterFunctions.nest;
import static org.springframework.web.reactive.function.server.RouterFunctions.route;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.web.reactive.function.server.RouterFunction;
import org.springframework.web.reactive.function.server.ServerResponse;
@Configuration
public class NestedRouter3 {
@Bean
public RouterFunction<ServerResponse> routingFunction() {
PersonHandler3 handler = new PersonHandler3();
return nest(path("/person"),
nest(path("/sub1"),
nest(path("/sub2"),
nest(accept(APPLICATION_JSON),
route(GET("/{id}"), handler::getPerson)
.andRoute(method(HttpMethod.GET), handler::listPeople))
.andRoute(GET("/nestedGet"), handler::getPerson))
.and(nest(path("/andNestPath"),
route(GET("/andNestPathGET"), handler::getPerson))))
.andRoute(POST("/").and(contentType(APPLICATION_JSON)), handler::createPerson))
.and(nest(method(HttpMethod.DELETE), route(path("/nestedDelete"), handler::deletePerson)));
}
}

View File

@@ -0,0 +1,22 @@
package org.test;
import org.springframework.web.reactive.function.server.ServerRequest;
import org.springframework.web.reactive.function.server.ServerResponse;
import reactor.core.publisher.Mono;
public class PersonHandler1 {
public Mono<ServerResponse> getPerson(ServerRequest request) {
return ServerResponse.notFound().build();
}
public Mono<ServerResponse> createPerson(ServerRequest request) {
return ServerResponse.notFound().build();
}
public Mono<ServerResponse> listPeople(ServerRequest request) {
return ServerResponse.notFound().build();
}
}

View File

@@ -0,0 +1,22 @@
package org.test;
import org.springframework.web.reactive.function.server.ServerRequest;
import org.springframework.web.reactive.function.server.ServerResponse;
import reactor.core.publisher.Mono;
public class PersonHandler2 {
public Mono<ServerResponse> getPerson(ServerRequest request) {
return ServerResponse.notFound().build();
}
public Mono<ServerResponse> createPerson(ServerRequest request) {
return ServerResponse.notFound().build();
}
public Mono<ServerResponse> listPeople(ServerRequest request) {
return ServerResponse.notFound().build();
}
}

View File

@@ -0,0 +1,26 @@
package org.test;
import org.springframework.web.reactive.function.server.ServerRequest;
import org.springframework.web.reactive.function.server.ServerResponse;
import reactor.core.publisher.Mono;
public class PersonHandler3 {
public Mono<ServerResponse> getPerson(ServerRequest request) {
return ServerResponse.notFound().build();
}
public Mono<ServerResponse> createPerson(ServerRequest request) {
return ServerResponse.notFound().build();
}
public Mono<ServerResponse> listPeople(ServerRequest request) {
return ServerResponse.notFound().build();
}
public Mono<ServerResponse> deletePerson(ServerRequest request) {
return ServerResponse.notFound().build();
}
}

View File

@@ -0,0 +1,61 @@
package org.test;
import java.math.BigDecimal;
import java.math.MathContext;
import java.time.Instant;
public class Quote {
private static final MathContext MATH_CONTEXT = new MathContext(2);
private String ticker;
private BigDecimal price;
private Instant instant;
public Quote() {
}
public Quote(String ticker, BigDecimal price) {
this.ticker = ticker;
this.price = price;
}
public Quote(String ticker, Double price) {
this(ticker, new BigDecimal(price, MATH_CONTEXT));
}
public String getTicker() {
return ticker;
}
public void setTicker(String ticker) {
this.ticker = ticker;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public Instant getInstant() {
return instant;
}
public void setInstant(Instant instant) {
this.instant = instant;
}
@Override
public String toString() {
return "Quote{" +
"ticker='" + ticker + '\'' +
", price=" + price +
", instant=" + instant +
'}';
}
}

View File

@@ -0,0 +1,67 @@
package org.test;
import java.math.BigDecimal;
import java.math.MathContext;
import java.time.Duration;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.function.BiFunction;
import reactor.core.publisher.Flux;
import reactor.core.publisher.SynchronousSink;
import org.springframework.stereotype.Component;
@Component
public class QuoteGenerator {
private final MathContext mathContext = new MathContext(2);
private final Random random = new Random();
private final List<Quote> prices = new ArrayList<>();
/**
* Bootstraps the generator with tickers and initial prices
*/
public QuoteGenerator() {
this.prices.add(new Quote("CTXS", 82.26));
this.prices.add(new Quote("DELL", 63.74));
this.prices.add(new Quote("GOOG", 847.24));
this.prices.add(new Quote("MSFT", 65.11));
this.prices.add(new Quote("ORCL", 45.71));
this.prices.add(new Quote("RHT", 84.29));
this.prices.add(new Quote("VMW", 92.21));
}
public Flux<Quote> fetchQuoteStream(Duration period) {
// We use here Flux.generate to create quotes,
// iterating on each stock starting at index 0
return Flux.generate(() -> 0,
(BiFunction<Integer, SynchronousSink<Quote>, Integer>) (index, sink) -> {
Quote updatedQuote = updateQuote(this.prices.get(index));
sink.next(updatedQuote);
return ++index % this.prices.size();
})
// We want to emit them with a specific period;
// to do so, we zip that Flux with a Flux.interval
.zipWith(Flux.interval(period)).map(t -> t.getT1())
// Because values are generated in batches,
// we need to set their timestamp after their creation
.map(quote -> {
quote.setInstant(Instant.now());
return quote;
})
.log("io.spring.workshop.stockquotes");
}
private Quote updateQuote(Quote quote) {
BigDecimal priceChange = quote.getPrice()
.multiply(new BigDecimal(0.05 * this.random.nextDouble()), this.mathContext);
return new Quote(quote.getTicker(), quote.getPrice().add(priceChange));
}
}

View File

@@ -0,0 +1,48 @@
package org.test;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.server.ServerRequest;
import org.springframework.web.reactive.function.server.ServerResponse;
import static java.time.Duration.ofMillis;
import static org.springframework.http.MediaType.APPLICATION_JSON;
import static org.springframework.http.MediaType.APPLICATION_STREAM_JSON;
import static org.springframework.http.MediaType.TEXT_PLAIN;
import static org.springframework.web.reactive.function.server.ServerResponse.ok;
@Component
public class QuoteHandler {
private final Flux<Quote> quoteStream;
public QuoteHandler(QuoteGenerator quoteGenerator) {
this.quoteStream = quoteGenerator.fetchQuoteStream(ofMillis(200)).share();
}
public Mono<ServerResponse> hello(ServerRequest request) {
return ok().contentType(TEXT_PLAIN)
.body(BodyInserters.fromObject("Hello Spring!"));
}
public Mono<ServerResponse> echo(ServerRequest request) {
return ok().contentType(TEXT_PLAIN)
.body(request.bodyToMono(String.class), String.class);
}
public Mono<ServerResponse> streamQuotes(ServerRequest request) {
return ok()
.contentType(APPLICATION_STREAM_JSON)
.body(this.quoteStream, Quote.class);
}
public Mono<ServerResponse> fetchQuotes(ServerRequest request) {
int size = Integer.parseInt(request.queryParam("size").orElse("10"));
return ok()
.contentType(APPLICATION_JSON)
.body(this.quoteStream.take(size), Quote.class);
}
}

View File

@@ -0,0 +1,28 @@
package org.test;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.function.server.RouterFunction;
import org.springframework.web.reactive.function.server.RouterFunctions;
import org.springframework.web.reactive.function.server.ServerResponse;
import static org.springframework.http.MediaType.APPLICATION_JSON;
import static org.springframework.http.MediaType.APPLICATION_STREAM_JSON;
import static org.springframework.http.MediaType.TEXT_PLAIN;
import static org.springframework.web.reactive.function.server.RequestPredicates.GET;
import static org.springframework.web.reactive.function.server.RequestPredicates.POST;
import static org.springframework.web.reactive.function.server.RequestPredicates.accept;
import static org.springframework.web.reactive.function.server.RequestPredicates.contentType;
@Configuration
public class QuoteRouter {
@Bean
public RouterFunction<ServerResponse> route(QuoteHandler quoteHandler) {
return RouterFunctions
.route(GET("/hello").and(accept(TEXT_PLAIN)), quoteHandler::hello)
.andRoute(POST("/echo").and(accept(TEXT_PLAIN).and(contentType(TEXT_PLAIN))), quoteHandler::echo)
.andRoute(GET("/quotes").and(accept(APPLICATION_JSON)), quoteHandler::fetchQuotes)
.andRoute(GET("/quotes").and(accept(APPLICATION_STREAM_JSON)), quoteHandler::streamQuotes);
}
}

View File

@@ -0,0 +1,24 @@
package org.test;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@RestController
public class UserController {
@GetMapping(path = "/users", produces = MediaType.APPLICATION_JSON_VALUE)
public Flux<Object> listUsers() {
return null;
}
@GetMapping(path = "/users/{username}", produces = MediaType.APPLICATION_JSON_VALUE)
public Mono<Object> showUsers(@PathVariable String username) {
return null;
}
}