Update e2e tests

- Fix native configs for win in sample app.
- Integrate spring-native with samples app.
- Tweak e2e workflow to upload artifacts and some other generic changes.
- Relates #401
This commit is contained in:
Janne Valkealahti
2022-05-08 14:18:47 +01:00
parent 6d39c2b059
commit c6a8e1c65c
7 changed files with 727 additions and 18 deletions

View File

@@ -19,7 +19,7 @@ jobs:
- nickname: linux
os: ubuntu-latest
graal: 22.0.0.2
name: CI Native ${{ matrix.nickname }}
name: E2E ${{ matrix.nickname }}
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v2
@@ -39,6 +39,14 @@ jobs:
node-version: '14'
- run: |
./mvnw clean package -Pnative
- uses: actions/upload-artifact@v2
with:
name: spring-shell-samples-${{ matrix.nickname }}
retention-days: 1
path: |
spring-shell-samples/target/*.jar
spring-shell-samples/target/spring-shell-samples
spring-shell-samples/target/spring-shell-samples.exe
- name: compile e2e module
working-directory: e2e/spring-shell-e2e
run: |

View File

@@ -13,9 +13,9 @@ export const cliPath = path.resolve(cliPathRelative);
export const jarPath = path.resolve(jarPathRelative);
export const nativeDesc = 'native';
export const jarDesc = 'jar';
export const jarCommand = 'java';
export const jarCommand = isWindows ? 'java.exe' : 'java';
export const nativeCommand = cliPath;
export const jarOptions = ['-jar', jarPath];
export const waitForExpectDefaultTimeout = 10000;
export const waitForExpectDefaultInterval = 100;
export const testTimeout = 20000;
export const waitForExpectDefaultTimeout = 30000;
export const waitForExpectDefaultInterval = 2000;
export const testTimeout = 100000;

View File

@@ -14,6 +14,10 @@
<description>Examples of using Spring Shell 2</description>
<properties>
<spring-native.version>0.11.1</spring-native.version>
</properties>
<build>
<plugins>
<plugin>
@@ -37,7 +41,13 @@
</dependency>
<dependency>
<groupId>org.springframework.shell</groupId>
<artifactId>spring-shell-starter</artifactId>
<artifactId>spring-shell-starter-jna</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.experimental</groupId>
<artifactId>spring-aot</artifactId>
<version>${spring-native.version}</version>
<optional>true</optional>
</dependency>
</dependencies>
@@ -45,9 +55,6 @@
<profile>
<id>native</id>
<!-- needs GRAALVM_HOME to point to graal tools -->
<properties>
<spring-native.version>0.11.1</spring-native.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.experimental</groupId>

View File

@@ -0,0 +1,189 @@
/*
* Copyright 2022 the original author or authors.
*
* Licensed 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
*
* https://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.
*/
package org.springframework.shell.samples.config;
import com.sun.jna.CallbackReference;
import com.sun.jna.Native;
import com.sun.jna.NativeLong;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.ptr.PointerByReference;
import org.springframework.nativex.hint.FieldHint;
import org.springframework.nativex.hint.JdkProxyHint;
import org.springframework.nativex.hint.MethodHint;
import org.springframework.nativex.hint.NativeHint;
import org.springframework.nativex.hint.ResourceHint;
import org.springframework.nativex.hint.TypeAccess;
import org.springframework.nativex.hint.TypeHint;
import org.springframework.nativex.type.NativeConfiguration;
@NativeHint(
resources = {
@ResourceHint(
patterns = {
"completion/.*",
"template/.*.st",
"org/springframework/shell/component/.*.stg",
"com/sun/jna/win32-x86-64/jnidispatch.dll"
}
),
},
types = {
@TypeHint(
types = {
CallbackReference.class, Native.class, NativeLong.class, PointerByReference.class, IntByReference.class
},
typeNames = { "com.sun.jna.Klass" },
access = {
TypeAccess.PUBLIC_CLASSES, TypeAccess.PUBLIC_CONSTRUCTORS, TypeAccess.PUBLIC_FIELDS,
TypeAccess.PUBLIC_METHODS, TypeAccess.DECLARED_CLASSES, TypeAccess.DECLARED_CONSTRUCTORS,
TypeAccess.DECLARED_FIELDS, TypeAccess.DECLARED_METHODS
}
),
@TypeHint(
types = Structure.class,
fields = {
@FieldHint( name = "memory", allowWrite = true),
@FieldHint( name = "typeInfo")
},
methods = {
@MethodHint( name = "newInstance", parameterTypes = { Class.class, Pointer.class }),
@MethodHint( name = "newInstance", parameterTypes = { Class.class, long.class }),
@MethodHint( name = "newInstance", parameterTypes = { Class.class })
},
access = {
TypeAccess.PUBLIC_CLASSES, TypeAccess.PUBLIC_CONSTRUCTORS, TypeAccess.PUBLIC_FIELDS,
TypeAccess.PUBLIC_METHODS, TypeAccess.DECLARED_CLASSES, TypeAccess.DECLARED_CONSTRUCTORS,
TypeAccess.DECLARED_FIELDS, TypeAccess.DECLARED_METHODS
}
),
@TypeHint(
typeNames = "com.sun.jna.Structure$FFIType",
access = {
TypeAccess.PUBLIC_CONSTRUCTORS, TypeAccess.DECLARED_CLASSES, TypeAccess.DECLARED_CONSTRUCTORS,
TypeAccess.DECLARED_FIELDS, TypeAccess.DECLARED_METHODS
}
),
@TypeHint(
typeNames = "com.sun.jna.Structure$FFIType$size_t",
access = {
TypeAccess.PUBLIC_CONSTRUCTORS, TypeAccess.DECLARED_CLASSES, TypeAccess.DECLARED_CONSTRUCTORS,
TypeAccess.DECLARED_FIELDS, TypeAccess.DECLARED_METHODS
}
),
@TypeHint(
typeNames = "org.jline.terminal.impl.jna.win.Kernel32$CHAR_INFO",
access = {
TypeAccess.PUBLIC_CONSTRUCTORS, TypeAccess.DECLARED_CLASSES, TypeAccess.DECLARED_CONSTRUCTORS,
TypeAccess.DECLARED_FIELDS, TypeAccess.DECLARED_METHODS
}
),
@TypeHint(
typeNames = "org.jline.terminal.impl.jna.win.Kernel32$CONSOLE_CURSOR_INFO",
access = {
TypeAccess.PUBLIC_CONSTRUCTORS, TypeAccess.DECLARED_CLASSES, TypeAccess.DECLARED_CONSTRUCTORS,
TypeAccess.DECLARED_FIELDS, TypeAccess.DECLARED_METHODS
}
),
@TypeHint(
typeNames = "org.jline.terminal.impl.jna.win.Kernel32$CONSOLE_SCREEN_BUFFER_INFO",
access = {
TypeAccess.PUBLIC_CONSTRUCTORS, TypeAccess.DECLARED_CLASSES, TypeAccess.DECLARED_CONSTRUCTORS,
TypeAccess.DECLARED_FIELDS, TypeAccess.DECLARED_METHODS
}
),
@TypeHint(
typeNames = "org.jline.terminal.impl.jna.win.Kernel32$COORD",
access = {
TypeAccess.PUBLIC_CONSTRUCTORS, TypeAccess.DECLARED_CLASSES, TypeAccess.DECLARED_CONSTRUCTORS,
TypeAccess.DECLARED_FIELDS, TypeAccess.DECLARED_METHODS
}
),
@TypeHint(
typeNames = "org.jline.terminal.impl.jna.win.Kernel32$INPUT_RECORD",
access = {
TypeAccess.PUBLIC_CONSTRUCTORS, TypeAccess.DECLARED_CLASSES, TypeAccess.DECLARED_CONSTRUCTORS,
TypeAccess.DECLARED_FIELDS, TypeAccess.DECLARED_METHODS
}
),
@TypeHint(
typeNames = "org.jline.terminal.impl.jna.win.Kernel32$INPUT_RECORD$EventUnion",
access = {
TypeAccess.PUBLIC_CONSTRUCTORS, TypeAccess.DECLARED_CLASSES, TypeAccess.DECLARED_CONSTRUCTORS,
TypeAccess.DECLARED_FIELDS, TypeAccess.DECLARED_METHODS
}
),
@TypeHint(
typeNames = "org.jline.terminal.impl.jna.win.Kernel32$KEY_EVENT_RECORD",
access = {
TypeAccess.PUBLIC_CONSTRUCTORS, TypeAccess.DECLARED_CLASSES, TypeAccess.DECLARED_CONSTRUCTORS,
TypeAccess.DECLARED_FIELDS, TypeAccess.DECLARED_METHODS
}
),
@TypeHint(
typeNames = "org.jline.terminal.impl.jna.win.Kernel32$MOUSE_EVENT_RECORD",
access = {
TypeAccess.PUBLIC_CONSTRUCTORS, TypeAccess.DECLARED_CLASSES, TypeAccess.DECLARED_CONSTRUCTORS,
TypeAccess.DECLARED_FIELDS, TypeAccess.DECLARED_METHODS
}
),
@TypeHint(
typeNames = "org.jline.terminal.impl.jna.win.Kernel32$WINDOW_BUFFER_SIZE_RECORD",
access = {
TypeAccess.PUBLIC_CONSTRUCTORS, TypeAccess.DECLARED_CLASSES, TypeAccess.DECLARED_CONSTRUCTORS,
TypeAccess.DECLARED_FIELDS, TypeAccess.DECLARED_METHODS
}
),
@TypeHint(
typeNames = "org.jline.terminal.impl.jna.win.Kernel32$MENU_EVENT_RECORD",
access = {
TypeAccess.PUBLIC_CONSTRUCTORS, TypeAccess.DECLARED_CLASSES, TypeAccess.DECLARED_CONSTRUCTORS,
TypeAccess.DECLARED_FIELDS, TypeAccess.DECLARED_METHODS
}
),
@TypeHint(
typeNames = "org.jline.terminal.impl.jna.win.Kernel32$FOCUS_EVENT_RECORD",
access = {
TypeAccess.PUBLIC_CONSTRUCTORS, TypeAccess.DECLARED_CLASSES, TypeAccess.DECLARED_CONSTRUCTORS,
TypeAccess.DECLARED_FIELDS, TypeAccess.DECLARED_METHODS
}
),
@TypeHint(
typeNames = "org.jline.terminal.impl.jna.win.Kernel32$SMALL_RECT",
access = {
TypeAccess.PUBLIC_CONSTRUCTORS, TypeAccess.DECLARED_CLASSES, TypeAccess.DECLARED_CONSTRUCTORS,
TypeAccess.DECLARED_FIELDS, TypeAccess.DECLARED_METHODS
}
),
@TypeHint(
typeNames = "org.jline.terminal.impl.jna.win.Kernel32$UnionChar",
access = {
TypeAccess.PUBLIC_CONSTRUCTORS, TypeAccess.DECLARED_CLASSES, TypeAccess.DECLARED_CONSTRUCTORS,
TypeAccess.DECLARED_FIELDS, TypeAccess.DECLARED_METHODS
}
)
},
jdkProxies = {
@JdkProxyHint( typeNames = { "com.sun.jna.Library" }),
@JdkProxyHint( typeNames = { "com.sun.jna.Callback" }),
@JdkProxyHint( typeNames = { "org.jline.terminal.impl.jna.win.Kernel32" }),
@JdkProxyHint( typeNames = { "org.jline.terminal.impl.jna.linux.CLibrary" })
}
)
public class SpringShellNativeConfiguration implements NativeConfiguration {
}

View File

@@ -0,0 +1,512 @@
[
{
"name" : "com.sun.jna.Native",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "java.lang.Class",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "java.lang.reflect.Method",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "java.lang.String",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "java.nio.Buffer",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "java.nio.ByteBuffer",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "java.nio.CharBuffer",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "java.nio.ShortBuffer",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "java.nio.IntBuffer",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "java.nio.LongBuffer",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "java.nio.FloatBuffer",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "java.nio.DoubleBuffer",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "java.lang.Void",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "TYPE" }
]
},
{
"name" : "java.lang.Boolean",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "value", "allowWrite" : true },
{ "name" : "TYPE" }
]
},
{
"name" : "java.lang.Byte",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "value", "allowWrite" : true },
{ "name" : "TYPE" }
]
},
{
"name" : "java.lang.Character",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "value", "allowWrite" : true },
{ "name" : "TYPE" }
]
},
{
"name" : "java.lang.Short",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "value", "allowWrite" : true },
{ "name" : "TYPE" }
]
},
{
"name" : "java.lang.Integer",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "value", "allowWrite" : true },
{ "name" : "TYPE" }
]
},
{
"name" : "java.lang.Long",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "value", "allowWrite" : true },
{ "name" : "TYPE" }
]
},
{
"name" : "java.lang.Float",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "value", "allowWrite" : true },
{ "name" : "TYPE" }
]
},
{
"name" : "java.lang.Double",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "value", "allowWrite" : true },
{ "name" : "TYPE" }
]
},
{
"name" : "com.sun.jna.Pointer",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "peer", "allowWrite" : true }
]
},
{
"name" : "com.sun.jna.Structure$ByValue",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "com.sun.jna.WString",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "com.sun.jna.NativeMapped",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "com.sun.jna.IntegerType",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "com.sun.jna.PointerType",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "com.sun.jna.JNIEnv",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "com.sun.jna.Native$ffi_callback",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "com.sun.jna.FromNativeConverter",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "com.sun.jna.Structure",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "memory", "allowWrite" : true },
{ "name" : "typeInfo", "allowWrite" : true }
],
"methods" : [
{ "name" : "newInstance", "parameterTypes" : ["java.lang.Class","com.sun.jna.Pointer"] },
{ "name" : "newInstance", "parameterTypes" : ["java.lang.Class", "long"] },
{ "name" : "newInstance", "parameterTypes" : ["java.lang.Class"] },
{ "name" : "getTypeInfo", "parameterTypes": ["java.lang.Object"] }
]
},
{
"name" : "com.sun.jna.Callback",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "com.sun.jna.CallbackReference$AttachOptions",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "com.sun.jna.CallbackReference",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "com.sun.jna.IntegerType",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "value", "allowWrite" : true }
]
},
{
"name" : "com.sun.jna.PointerType",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "pointer", "allowWrite" : true }
]
},
{
"name" : "com.sun.jna.Structure$FFIType",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "com.sun.jna.Structure$FFIType$size_t",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "com.sun.jna.Structure$FFIType$FFITypes",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "ffi_type_void", "allowWrite" : true },
{ "name" : "ffi_type_float", "allowWrite" : true },
{ "name" : "ffi_type_double", "allowWrite" : true },
{ "name" : "ffi_type_longdouble", "allowWrite" : true },
{ "name" : "ffi_type_uint8", "allowWrite" : true },
{ "name" : "ffi_type_sint8", "allowWrite" : true },
{ "name" : "ffi_type_uint16", "allowWrite" : true },
{ "name" : "ffi_type_sint16", "allowWrite" : true },
{ "name" : "ffi_type_uint32", "allowWrite" : true },
{ "name" : "ffi_type_sint32", "allowWrite" : true },
{ "name" : "ffi_type_uint64", "allowWrite" : true },
{ "name" : "ffi_type_sint64", "allowWrite" : true },
{ "name" : "ffi_type_pointer", "allowWrite" : true }
]
},
{
"name" : "com.sun.jna.NativeLong",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "com.sun.jna.ptr.PointerByReference",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true
},
{
"name" : "org.jline.terminal.impl.jna.win.Kernel32$CHAR_INFO",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "uChar", "allowWrite" : true },
{ "name" : "Attributes", "allowWrite" : true }
]
},
{
"name" : "org.jline.terminal.impl.jna.win.Kernel32$CONSOLE_CURSOR_INFO",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "dwSize", "allowWrite" : true },
{ "name" : "bVisible", "allowWrite" : true }
]
},
{
"name" : "org.jline.terminal.impl.jna.win.Kernel32$CONSOLE_SCREEN_BUFFER_INFO",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "dwSize", "allowWrite" : true },
{ "name" : "dwCursorPosition", "allowWrite" : true },
{ "name" : "wAttributes", "allowWrite" : true },
{ "name" : "srWindow", "allowWrite" : true },
{ "name" : "dwMaximumWindowSize", "allowWrite" : true }
]
},
{
"name" : "org.jline.terminal.impl.jna.win.Kernel32$COORD",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "X", "allowWrite" : true },
{ "name" : "Y", "allowWrite" : true }
]
},
{
"name" : "org.jline.terminal.impl.jna.win.Kernel32$INPUT_RECORD",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "EventType", "allowWrite" : true },
{ "name" : "Event", "allowWrite" : true }
]
},
{
"name" : "org.jline.terminal.impl.jna.win.Kernel32$INPUT_RECORD$EventUnion",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "KeyEvent", "allowWrite" : true },
{ "name" : "MouseEvent", "allowWrite" : true },
{ "name" : "WindowBufferSizeEvent", "allowWrite" : true },
{ "name" : "MenuEvent", "allowWrite" : true },
{ "name" : "FocusEvent", "allowWrite" : true }
]
},
{
"name" : "org.jline.terminal.impl.jna.win.Kernel32$KEY_EVENT_RECORD",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "bKeyDown", "allowWrite" : true },
{ "name" : "wRepeatCount", "allowWrite" : true },
{ "name" : "wVirtualKeyCode", "allowWrite" : true },
{ "name" : "wVirtualScanCode", "allowWrite" : true },
{ "name" : "uChar", "allowWrite" : true },
{ "name" : "dwControlKeyState", "allowWrite" : true }
]
},
{
"name" : "org.jline.terminal.impl.jna.win.Kernel32$MOUSE_EVENT_RECORD",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "dwMousePosition", "allowWrite" : true },
{ "name" : "dwButtonState", "allowWrite" : true },
{ "name" : "dwControlKeyState", "allowWrite" : true },
{ "name" : "dwEventFlags", "allowWrite" : true }
]
},
{
"name" : "org.jline.terminal.impl.jna.win.Kernel32$WINDOW_BUFFER_SIZE_RECORD",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "dwSize", "allowWrite" : true }
]
},
{
"name" : "org.jline.terminal.impl.jna.win.Kernel32$MENU_EVENT_RECORD",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "dwCommandId", "allowWrite" : true }
]
},
{
"name" : "org.jline.terminal.impl.jna.win.Kernel32$FOCUS_EVENT_RECORD",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "bSetFocus", "allowWrite" : true }
]
},
{
"name" : "org.jline.terminal.impl.jna.win.Kernel32$SMALL_RECT",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "Left", "allowWrite" : true },
{ "name" : "Top", "allowWrite" : true },
{ "name" : "Right", "allowWrite" : true },
{ "name" : "Bottom", "allowWrite" : true }
]
},
{
"name" : "org.jline.terminal.impl.jna.win.Kernel32$UnionChar",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"fields" : [
{ "name" : "UnicodeChar", "allowWrite" : true },
{ "name" : "AsciiChar", "allowWrite" : true }
]
}
]

View File

@@ -1,9 +0,0 @@
[
{
"name":"org.springframework.shell.samples.jcommander.Args",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
}
]

View File

@@ -0,0 +1,2 @@
org.springframework.nativex.type.NativeConfiguration=\
org.springframework.shell.samples.config.SpringShellNativeConfiguration