Merge pull request #1967 from nosqlbench/nosqlbench-1966-varargs

Nosqlbench 1966 varargs
This commit is contained in:
Jonathan Shook 2024-06-24 13:35:34 -05:00 committed by GitHub
commit 337eaccdb0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 11 additions and 19 deletions

View File

@ -1,15 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="linkedinput" type="JarApplication" folderName="nbr integration tests">
<extension name="software.aws.toolkits.jetbrains.core.execution.JavaAwsConnectionExtension">
<option name="credential" />
<option name="region" />
<option name="useCurrentConnection" value="false" />
</extension>
<option name="JAR_PATH" value="$PROJECT_DIR$/nbr/target/nbr.jar" />
<option name="PROGRAM_PARAMETERS" value="script src/test/resources/scripts/examples/linkedinput.js" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/nbr-examples" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
<option name="ALTERNATIVE_JRE_PATH" value="/usr/java/jdk-21" />
<method v="2" />
</configuration>
</component>

View File

@ -89,7 +89,7 @@ public class NBSession extends NBHeartbeatComponent implements Function<List<Cmd
try (ResultContext results = new ResultContext(collector).ok()) {
for (Cmd cmd : assembledCommands) {
String explanation = " in context " + cmd.getTargetContext() + ", command '" + cmd.toString() + "'";
String explanation = "in container '" + cmd.getTargetContext() + "', command '" + cmd.toString() + "'";
try (NBInvokableCommand command = NBCommandAssembly.resolve(cmd,this::getContext)) {
NBCommandParams params = NBCommandAssembly.paramsFor(cmd);
NBBufferedContainer container = getContext(cmd.getTargetContext());

View File

@ -83,8 +83,14 @@ public class ArgsComparator implements Comparator<Constructor<?>> {
int paramLen = ctor.getParameterCount();
int argsLen = arguments.length;
if (paramLen!=argsLen && !ctor.isVarArgs()) {
return MATCHRANK.INCOMPATIBLE;
if (ctor.isVarArgs()) {
if (argsLen<paramLen-1) {
return MATCHRANK.INCOMPATIBLE;
}
} else {
if (paramLen!=argsLen) {
return MATCHRANK.INCOMPATIBLE;
}
}
int len = arguments.length; // only consider varargs if some provided
@ -94,7 +100,8 @@ public class ArgsComparator implements Comparator<Constructor<?>> {
Class<?>[] atypes = Arrays.stream(arguments).map(Object::getClass).toArray(i -> new Class<?>[i]);
for (int position = 0; position < len; position++) {
Class<?> ptype = ptypes[position];
Class<?> ptype = (position<ptypes.length) ? ptypes[position] : ptypes[ptypes.length-1];
Class<?> atype = (position<atypes.length) ? atypes[position] : atypes[atypes.length-1];
Class<?> across = WRAPPER_TYPE_MAP.get(atype);
Class<?> pcross = WRAPPER_TYPE_MAP.get(ptype);