Example usage for java.util StringJoiner add

List of usage examples for java.util StringJoiner add

Introduction

In this page you can find the example usage for java.util StringJoiner add.

Prototype

public StringJoiner add(CharSequence newElement) 

Source Link

Document

Adds a copy of the given CharSequence value as the next element of the StringJoiner value.

Usage

From source file:org.elasticsearch.client.RequestConvertersTests.java

public void testPutMapping() throws IOException {
    PutMappingRequest putMappingRequest = new PutMappingRequest();

    String[] indices = randomIndicesNames(0, 5);
    putMappingRequest.indices(indices);/*from   w w w  .j av a 2  s  .c  om*/

    String type = randomAlphaOfLengthBetween(3, 10);
    putMappingRequest.type(type);

    Map<String, String> expectedParams = new HashMap<>();

    setRandomTimeout(putMappingRequest::timeout, AcknowledgedRequest.DEFAULT_ACK_TIMEOUT, expectedParams);
    setRandomMasterTimeout(putMappingRequest, expectedParams);

    Request request = RequestConverters.putMapping(putMappingRequest);
    StringJoiner endpoint = new StringJoiner("/", "/", "");
    String index = String.join(",", indices);
    if (Strings.hasLength(index)) {
        endpoint.add(index);
    }
    endpoint.add("_mapping");
    endpoint.add(type);
    assertEquals(endpoint.toString(), request.getEndpoint());

    assertEquals(expectedParams, request.getParameters());
    assertEquals(HttpPut.METHOD_NAME, request.getMethod());
    assertToXContentBody(putMappingRequest, request.getEntity());
}

From source file:org.elasticsearch.client.RequestConvertersTests.java

public void testGetSettings() throws IOException {
    String[] indicesUnderTest = randomBoolean() ? null : randomIndicesNames(0, 5);

    GetSettingsRequest getSettingsRequest = new GetSettingsRequest().indices(indicesUnderTest);

    Map<String, String> expectedParams = new HashMap<>();
    setRandomMasterTimeout(getSettingsRequest, expectedParams);
    setRandomIndicesOptions(getSettingsRequest::indicesOptions, getSettingsRequest::indicesOptions,
            expectedParams);//from  w  ww  .j  a v a  2 s. c o m

    setRandomLocal(getSettingsRequest, expectedParams);

    if (randomBoolean()) {
        // the request object will not have include_defaults present unless it is set to
        // true
        getSettingsRequest.includeDefaults(randomBoolean());
        if (getSettingsRequest.includeDefaults()) {
            expectedParams.put("include_defaults", Boolean.toString(true));
        }
    }

    StringJoiner endpoint = new StringJoiner("/", "/", "");
    if (indicesUnderTest != null && indicesUnderTest.length > 0) {
        endpoint.add(String.join(",", indicesUnderTest));
    }
    endpoint.add("_settings");

    if (randomBoolean()) {
        String[] names = randomBoolean() ? null : new String[randomIntBetween(0, 3)];
        if (names != null) {
            for (int x = 0; x < names.length; x++) {
                names[x] = randomAlphaOfLengthBetween(3, 10);
            }
        }
        getSettingsRequest.names(names);
        if (names != null && names.length > 0) {
            endpoint.add(String.join(",", names));
        }
    }

    Request request = RequestConverters.getSettings(getSettingsRequest);

    assertThat(endpoint.toString(), equalTo(request.getEndpoint()));
    assertThat(request.getParameters(), equalTo(expectedParams));
    assertThat(request.getMethod(), equalTo(HttpGet.METHOD_NAME));
    assertThat(request.getEntity(), nullValue());
}

From source file:org.elasticsearch.client.RequestConvertersTests.java

public void testSearchTemplate() throws Exception {
    // Create a random request.
    String[] indices = randomIndicesNames(0, 5);
    SearchRequest searchRequest = new SearchRequest(indices);

    Map<String, String> expectedParams = new HashMap<>();
    setRandomSearchParams(searchRequest, expectedParams);
    setRandomIndicesOptions(searchRequest::indicesOptions, searchRequest::indicesOptions, expectedParams);

    SearchTemplateRequest searchTemplateRequest = new SearchTemplateRequest(searchRequest);

    searchTemplateRequest.setScript("{\"query\": { \"match\" : { \"{{field}}\" : \"{{value}}\" }}}");
    searchTemplateRequest.setScriptType(ScriptType.INLINE);
    searchTemplateRequest.setProfile(randomBoolean());

    Map<String, Object> scriptParams = new HashMap<>();
    scriptParams.put("field", "name");
    scriptParams.put("value", "soren");
    searchTemplateRequest.setScriptParams(scriptParams);

    // Verify that the resulting REST request looks as expected.
    Request request = RequestConverters.searchTemplate(searchTemplateRequest);
    StringJoiner endpoint = new StringJoiner("/", "/", "");
    String index = String.join(",", indices);
    if (Strings.hasLength(index)) {
        endpoint.add(index);
    }/* ww  w . j  av  a 2s .c  om*/
    endpoint.add("_search/template");

    assertEquals(HttpGet.METHOD_NAME, request.getMethod());
    assertEquals(endpoint.toString(), request.getEndpoint());
    assertEquals(expectedParams, request.getParameters());
    assertToXContentBody(searchTemplateRequest, request.getEntity());
}

From source file:org.elasticsearch.client.RequestConvertersTests.java

public void testGetMapping() throws IOException {
    GetMappingsRequest getMappingRequest = new GetMappingsRequest();

    String[] indices = Strings.EMPTY_ARRAY;
    if (randomBoolean()) {
        indices = randomIndicesNames(0, 5);
        getMappingRequest.indices(indices);
    } else if (randomBoolean()) {
        getMappingRequest.indices((String[]) null);
    }/*from  w  w  w  .j a  v  a 2s . c o m*/

    String type = null;
    if (randomBoolean()) {
        type = randomAlphaOfLengthBetween(3, 10);
        getMappingRequest.types(type);
    } else if (randomBoolean()) {
        getMappingRequest.types((String[]) null);
    }

    Map<String, String> expectedParams = new HashMap<>();

    setRandomIndicesOptions(getMappingRequest::indicesOptions, getMappingRequest::indicesOptions,
            expectedParams);
    setRandomMasterTimeout(getMappingRequest, expectedParams);
    setRandomLocal(getMappingRequest, expectedParams);

    Request request = RequestConverters.getMappings(getMappingRequest);
    StringJoiner endpoint = new StringJoiner("/", "/", "");
    String index = String.join(",", indices);
    if (Strings.hasLength(index)) {
        endpoint.add(index);
    }
    endpoint.add("_mapping");
    if (type != null) {
        endpoint.add(type);
    }
    assertThat(endpoint.toString(), equalTo(request.getEndpoint()));

    assertThat(expectedParams, equalTo(request.getParameters()));
    assertThat(HttpGet.METHOD_NAME, equalTo(request.getMethod()));
}

From source file:org.elasticsearch.client.RequestConvertersTests.java

public void testFieldCaps() {
    // Create a random request.
    String[] indices = randomIndicesNames(0, 5);
    String[] fields = generateRandomStringArray(5, 10, false, false);

    FieldCapabilitiesRequest fieldCapabilitiesRequest = new FieldCapabilitiesRequest().indices(indices)
            .fields(fields);//from   ww w.  j  a  v  a 2  s. c o m

    Map<String, String> indicesOptionsParams = new HashMap<>();
    setRandomIndicesOptions(fieldCapabilitiesRequest::indicesOptions, fieldCapabilitiesRequest::indicesOptions,
            indicesOptionsParams);

    Request request = RequestConverters.fieldCaps(fieldCapabilitiesRequest);

    // Verify that the resulting REST request looks as expected.
    StringJoiner endpoint = new StringJoiner("/", "/", "");
    String joinedIndices = String.join(",", indices);
    if (!joinedIndices.isEmpty()) {
        endpoint.add(joinedIndices);
    }
    endpoint.add("_field_caps");

    assertEquals(endpoint.toString(), request.getEndpoint());
    assertEquals(4, request.getParameters().size());

    // Note that we don't check the field param value explicitly, as field names are
    // passed through
    // a hash set before being added to the request, and can appear in a
    // non-deterministic order.
    assertThat(request.getParameters(), hasKey("fields"));
    String[] requestFields = Strings.splitStringByCommaToArray(request.getParameters().get("fields"));
    assertEquals(new HashSet<>(Arrays.asList(fields)), new HashSet<>(Arrays.asList(requestFields)));

    for (Map.Entry<String, String> param : indicesOptionsParams.entrySet()) {
        assertThat(request.getParameters(), hasEntry(param.getKey(), param.getValue()));
    }

    assertNull(request.getEntity());
}

From source file:org.elasticsearch.client.RequestConvertersTests.java

public void testSearch() throws Exception {
    String[] indices = randomIndicesNames(0, 5);
    SearchRequest searchRequest = new SearchRequest(indices);

    int numTypes = randomIntBetween(0, 5);
    String[] types = new String[numTypes];
    for (int i = 0; i < numTypes; i++) {
        types[i] = "type-" + randomAlphaOfLengthBetween(2, 5);
    }//from www.  j a v  a2  s.c o m
    searchRequest.types(types);

    Map<String, String> expectedParams = new HashMap<>();
    setRandomSearchParams(searchRequest, expectedParams);
    setRandomIndicesOptions(searchRequest::indicesOptions, searchRequest::indicesOptions, expectedParams);

    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    // rarely skip setting the search source completely
    if (frequently()) {
        // frequently set the search source to have some content, otherwise leave it
        // empty but still set it
        if (frequently()) {
            if (randomBoolean()) {
                searchSourceBuilder.size(randomIntBetween(0, Integer.MAX_VALUE));
            }
            if (randomBoolean()) {
                searchSourceBuilder.from(randomIntBetween(0, Integer.MAX_VALUE));
            }
            if (randomBoolean()) {
                searchSourceBuilder.minScore(randomFloat());
            }
            if (randomBoolean()) {
                searchSourceBuilder.explain(randomBoolean());
            }
            if (randomBoolean()) {
                searchSourceBuilder.profile(randomBoolean());
            }
            if (randomBoolean()) {
                searchSourceBuilder
                        .highlighter(new HighlightBuilder().field(randomAlphaOfLengthBetween(3, 10)));
            }
            if (randomBoolean()) {
                searchSourceBuilder.query(new TermQueryBuilder(randomAlphaOfLengthBetween(3, 10),
                        randomAlphaOfLengthBetween(3, 10)));
            }
            if (randomBoolean()) {
                searchSourceBuilder.aggregation(
                        new TermsAggregationBuilder(randomAlphaOfLengthBetween(3, 10), ValueType.STRING)
                                .field(randomAlphaOfLengthBetween(3, 10)));
            }
            if (randomBoolean()) {
                searchSourceBuilder
                        .suggest(new SuggestBuilder().addSuggestion(randomAlphaOfLengthBetween(3, 10),
                                new CompletionSuggestionBuilder(randomAlphaOfLengthBetween(3, 10))));
            }
            if (randomBoolean()) {
                searchSourceBuilder.addRescorer(new QueryRescorerBuilder(new TermQueryBuilder(
                        randomAlphaOfLengthBetween(3, 10), randomAlphaOfLengthBetween(3, 10))));
            }
            if (randomBoolean()) {
                searchSourceBuilder.collapse(new CollapseBuilder(randomAlphaOfLengthBetween(3, 10)));
            }
        }
        searchRequest.source(searchSourceBuilder);
    }

    Request request = RequestConverters.search(searchRequest);
    StringJoiner endpoint = new StringJoiner("/", "/", "");
    String index = String.join(",", indices);
    if (Strings.hasLength(index)) {
        endpoint.add(index);
    }
    String type = String.join(",", types);
    if (Strings.hasLength(type)) {
        endpoint.add(type);
    }
    endpoint.add("_search");
    assertEquals(HttpPost.METHOD_NAME, request.getMethod());
    assertEquals(endpoint.toString(), request.getEndpoint());
    assertEquals(expectedParams, request.getParameters());
    assertToXContentBody(searchSourceBuilder, request.getEntity());
}

From source file:org.openecomp.sdc.be.model.operations.impl.PropertyOperation.java

private boolean isPropertyOmitted(List<PropertyDefinition> newProperties,
        List<PropertyDefinition> oldProperties, String dataTypeName) {

    boolean isValid = validateChangeInCaseOfEmptyProperties(newProperties, oldProperties, dataTypeName);
    if (false == isValid) {
        log.debug("At least one property is missing in the new data type {}", dataTypeName);
        return false;
    }/*  ww w . j a  v  a  2  s  .  com*/

    if (newProperties != null && oldProperties != null) {

        List<String> newProps = newProperties.stream().map(p -> p.getName()).collect(Collectors.toList());
        List<String> oldProps = oldProperties.stream().map(p -> p.getName()).collect(Collectors.toList());

        if (false == newProps.containsAll(oldProps)) {
            StringJoiner joiner = new StringJoiner(",", "[", "]");
            newProps.forEach(p -> joiner.add(p));
            log.debug(
                    "Properties {} in data type {} are missing, but they already defined in the existing data type",
                    joiner.toString(), dataTypeName);
            return true;
        }

    }
    return false;
}

From source file:org.ballerinalang.bre.bvm.BLangVM.java

/**
 * Act as a virtual CPU./*from w  w w. ja  v  a 2 s  .c  o m*/
 */
private void exec() {
    int i;
    int j;
    int cpIndex; // Index of the constant pool
    FunctionCallCPEntry funcCallCPEntry;
    FunctionRefCPEntry funcRefCPEntry;
    TypeRefCPEntry typeRefCPEntry;
    FunctionInfo functionInfo;
    InstructionCALL callIns;

    boolean debugEnabled = programFile.getDebugger().isDebugEnabled();

    StackFrame currentSF, callersSF;
    int callersRetRegIndex;

    while (ip >= 0 && ip < code.length && controlStack.currentFrame != null) {

        if (debugEnabled) {
            debug();
        }
        Instruction instruction = code[ip];
        int opcode = instruction.getOpcode();
        int[] operands = instruction.getOperands();
        ip++;
        StackFrame sf = controlStack.currentFrame;

        switch (opcode) {
        case InstructionCodes.ICONST:
            cpIndex = operands[0];
            i = operands[1];
            sf.longRegs[i] = ((IntegerCPEntry) constPool[cpIndex]).getValue();
            break;
        case InstructionCodes.FCONST:
            cpIndex = operands[0];
            i = operands[1];
            sf.doubleRegs[i] = ((FloatCPEntry) constPool[cpIndex]).getValue();
            break;
        case InstructionCodes.SCONST:
            cpIndex = operands[0];
            i = operands[1];
            sf.stringRegs[i] = ((StringCPEntry) constPool[cpIndex]).getValue();
            break;
        case InstructionCodes.ICONST_0:
            i = operands[0];
            sf.longRegs[i] = 0;
            break;
        case InstructionCodes.ICONST_1:
            i = operands[0];
            sf.longRegs[i] = 1;
            break;
        case InstructionCodes.ICONST_2:
            i = operands[0];
            sf.longRegs[i] = 2;
            break;
        case InstructionCodes.ICONST_3:
            i = operands[0];
            sf.longRegs[i] = 3;
            break;
        case InstructionCodes.ICONST_4:
            i = operands[0];
            sf.longRegs[i] = 4;
            break;
        case InstructionCodes.ICONST_5:
            i = operands[0];
            sf.longRegs[i] = 5;
            break;
        case InstructionCodes.FCONST_0:
            i = operands[0];
            sf.doubleRegs[i] = 0;
            break;
        case InstructionCodes.FCONST_1:
            i = operands[0];
            sf.doubleRegs[i] = 1;
            break;
        case InstructionCodes.FCONST_2:
            i = operands[0];
            sf.doubleRegs[i] = 2;
            break;
        case InstructionCodes.FCONST_3:
            i = operands[0];
            sf.doubleRegs[i] = 3;
            break;
        case InstructionCodes.FCONST_4:
            i = operands[0];
            sf.doubleRegs[i] = 4;
            break;
        case InstructionCodes.FCONST_5:
            i = operands[0];
            sf.doubleRegs[i] = 5;
            break;
        case InstructionCodes.BCONST_0:
            i = operands[0];
            sf.intRegs[i] = 0;
            break;
        case InstructionCodes.BCONST_1:
            i = operands[0];
            sf.intRegs[i] = 1;
            break;
        case InstructionCodes.RCONST_NULL:
            i = operands[0];
            sf.refRegs[i] = null;
            break;

        case InstructionCodes.IMOVE:
        case InstructionCodes.FMOVE:
        case InstructionCodes.SMOVE:
        case InstructionCodes.BMOVE:
        case InstructionCodes.LMOVE:
        case InstructionCodes.RMOVE:
        case InstructionCodes.IALOAD:
        case InstructionCodes.FALOAD:
        case InstructionCodes.SALOAD:
        case InstructionCodes.BALOAD:
        case InstructionCodes.LALOAD:
        case InstructionCodes.RALOAD:
        case InstructionCodes.JSONALOAD:
        case InstructionCodes.IGLOAD:
        case InstructionCodes.FGLOAD:
        case InstructionCodes.SGLOAD:
        case InstructionCodes.BGLOAD:
        case InstructionCodes.LGLOAD:
        case InstructionCodes.RGLOAD:
        case InstructionCodes.IFIELDLOAD:
        case InstructionCodes.FFIELDLOAD:
        case InstructionCodes.SFIELDLOAD:
        case InstructionCodes.BFIELDLOAD:
        case InstructionCodes.LFIELDLOAD:
        case InstructionCodes.RFIELDLOAD:
        case InstructionCodes.MAPLOAD:
        case InstructionCodes.JSONLOAD:
        case InstructionCodes.ENUMERATORLOAD:
            execLoadOpcodes(sf, opcode, operands);
            break;

        case InstructionCodes.ISTORE:
        case InstructionCodes.FSTORE:
        case InstructionCodes.SSTORE:
        case InstructionCodes.BSTORE:
        case InstructionCodes.LSTORE:
        case InstructionCodes.RSTORE:
        case InstructionCodes.IASTORE:
        case InstructionCodes.FASTORE:
        case InstructionCodes.SASTORE:
        case InstructionCodes.BASTORE:
        case InstructionCodes.LASTORE:
        case InstructionCodes.RASTORE:
        case InstructionCodes.JSONASTORE:
        case InstructionCodes.IGSTORE:
        case InstructionCodes.FGSTORE:
        case InstructionCodes.SGSTORE:
        case InstructionCodes.BGSTORE:
        case InstructionCodes.LGSTORE:
        case InstructionCodes.RGSTORE:
        case InstructionCodes.IFIELDSTORE:
        case InstructionCodes.FFIELDSTORE:
        case InstructionCodes.SFIELDSTORE:
        case InstructionCodes.BFIELDSTORE:
        case InstructionCodes.LFIELDSTORE:
        case InstructionCodes.RFIELDSTORE:
        case InstructionCodes.MAPSTORE:
        case InstructionCodes.JSONSTORE:
            execStoreOpcodes(sf, opcode, operands);
            break;

        case InstructionCodes.IADD:
        case InstructionCodes.FADD:
        case InstructionCodes.SADD:
        case InstructionCodes.XMLADD:
        case InstructionCodes.ISUB:
        case InstructionCodes.FSUB:
        case InstructionCodes.IMUL:
        case InstructionCodes.FMUL:
        case InstructionCodes.IDIV:
        case InstructionCodes.FDIV:
        case InstructionCodes.IMOD:
        case InstructionCodes.FMOD:
        case InstructionCodes.INEG:
        case InstructionCodes.FNEG:
        case InstructionCodes.BNOT:
        case InstructionCodes.IEQ:
        case InstructionCodes.FEQ:
        case InstructionCodes.SEQ:
        case InstructionCodes.BEQ:
        case InstructionCodes.REQ:
        case InstructionCodes.TEQ:
        case InstructionCodes.INE:
        case InstructionCodes.FNE:
        case InstructionCodes.SNE:
        case InstructionCodes.BNE:
        case InstructionCodes.RNE:
        case InstructionCodes.TNE:
            execBinaryOpCodes(sf, opcode, operands);
            break;

        case InstructionCodes.LENGTHOF:
            calculateLength(operands, sf);
            break;
        case InstructionCodes.TYPELOAD:
            cpIndex = operands[0];
            j = operands[1];
            TypeRefCPEntry typeEntry = (TypeRefCPEntry) constPool[cpIndex];
            sf.refRegs[j] = new BTypeValue(typeEntry.getType());
            break;
        case InstructionCodes.TYPEOF:
            i = operands[0];
            j = operands[1];
            if (sf.refRegs[i] == null) {
                handleNullRefError();
                break;
            }
            sf.refRegs[j] = new BTypeValue(sf.refRegs[i].getType());
            break;

        case InstructionCodes.IGT:
        case InstructionCodes.FGT:
        case InstructionCodes.IGE:
        case InstructionCodes.FGE:
        case InstructionCodes.ILT:
        case InstructionCodes.FLT:
        case InstructionCodes.ILE:
        case InstructionCodes.FLE:
        case InstructionCodes.REQ_NULL:
        case InstructionCodes.RNE_NULL:
        case InstructionCodes.BR_TRUE:
        case InstructionCodes.BR_FALSE:
        case InstructionCodes.GOTO:
        case InstructionCodes.HALT:
        case InstructionCodes.SEQ_NULL:
        case InstructionCodes.SNE_NULL:
            execCmpAndBranchOpcodes(sf, opcode, operands);
            break;

        case InstructionCodes.TR_RETRY:
            i = operands[0];
            j = operands[1];
            retryTransaction(i, j);
            break;
        case InstructionCodes.CALL:
            callIns = (InstructionCALL) instruction;
            invokeCallableUnit(callIns.functionInfo, callIns.argRegs, callIns.retRegs);
            break;
        case InstructionCodes.VCALL:
            InstructionVCALL vcallIns = (InstructionVCALL) instruction;
            invokeVirtualFunction(vcallIns.receiverRegIndex, vcallIns.functionInfo, vcallIns.argRegs,
                    vcallIns.retRegs);
            break;
        case InstructionCodes.ACALL:
            InstructionACALL acallIns = (InstructionACALL) instruction;
            invokeAction(acallIns.actionName, acallIns.argRegs, acallIns.retRegs);
            break;
        case InstructionCodes.TCALL:
            InstructionTCALL tcallIns = (InstructionTCALL) instruction;
            invokeCallableUnit(tcallIns.transformerInfo, tcallIns.argRegs, tcallIns.retRegs);
            break;
        case InstructionCodes.TR_BEGIN:
            i = operands[0];
            j = operands[1];
            beginTransaction(i, j);
            break;
        case InstructionCodes.TR_END:
            i = operands[0];
            endTransaction(i);
            break;
        case InstructionCodes.WRKSEND:
            InstructionWRKSendReceive wrkSendIns = (InstructionWRKSendReceive) instruction;
            handleWorkerSend(wrkSendIns.dataChannelInfo, wrkSendIns.types, wrkSendIns.regs);
            break;
        case InstructionCodes.WRKRECEIVE:
            InstructionWRKSendReceive wrkReceiveIns = (InstructionWRKSendReceive) instruction;
            handleWorkerReceive(wrkReceiveIns.dataChannelInfo, wrkReceiveIns.types, wrkReceiveIns.regs);
            break;
        case InstructionCodes.FORKJOIN:
            InstructionFORKJOIN forkJoinIns = (InstructionFORKJOIN) instruction;
            invokeForkJoin(forkJoinIns);
            break;
        case InstructionCodes.WRKSTART:
            startWorkers();
            break;
        case InstructionCodes.WRKRETURN:
            handleWorkerReturn();
            break;
        case InstructionCodes.THROW:
            i = operands[0];
            if (i >= 0) {
                BStruct error = (BStruct) sf.refRegs[i];
                if (error == null) {
                    handleNullRefError();
                    break;
                }

                BLangVMErrors.attachCallStack(error, context, ip);
                context.setError(error);
            }
            handleError();
            break;
        case InstructionCodes.ERRSTORE:
            i = operands[0];
            sf.refRegs[i] = context.getError();
            // clear error.
            context.setError(null);
            break;
        case InstructionCodes.FPCALL:
            i = operands[0];
            if (sf.refRegs[i] == null) {
                handleNullRefError();
                break;
            }
            cpIndex = operands[1];
            funcCallCPEntry = (FunctionCallCPEntry) constPool[cpIndex];
            funcRefCPEntry = ((BFunctionPointer) sf.refRegs[i]).value();
            functionInfo = funcRefCPEntry.getFunctionInfo();
            if (functionInfo.isNative()) {
                invokeNativeFunction(functionInfo, funcCallCPEntry.getArgRegs(), funcCallCPEntry.getRetRegs());
            } else {
                invokeCallableUnit(functionInfo, funcCallCPEntry.getArgRegs(), funcCallCPEntry.getRetRegs());
            }
            break;
        case InstructionCodes.FPLOAD:
            i = operands[0];
            j = operands[1];
            funcRefCPEntry = (FunctionRefCPEntry) constPool[i];
            sf.refRegs[j] = new BFunctionPointer(funcRefCPEntry);
            break;

        case InstructionCodes.I2ANY:
        case InstructionCodes.F2ANY:
        case InstructionCodes.S2ANY:
        case InstructionCodes.B2ANY:
        case InstructionCodes.L2ANY:
        case InstructionCodes.ANY2I:
        case InstructionCodes.ANY2F:
        case InstructionCodes.ANY2S:
        case InstructionCodes.ANY2B:
        case InstructionCodes.ANY2L:
        case InstructionCodes.ANY2JSON:
        case InstructionCodes.ANY2XML:
        case InstructionCodes.ANY2MAP:
        case InstructionCodes.ANY2TYPE:
        case InstructionCodes.ANY2E:
        case InstructionCodes.ANY2T:
        case InstructionCodes.ANY2C:
        case InstructionCodes.NULL2JSON:
        case InstructionCodes.CHECKCAST:
        case InstructionCodes.B2JSON:
        case InstructionCodes.JSON2I:
        case InstructionCodes.JSON2F:
        case InstructionCodes.JSON2S:
        case InstructionCodes.JSON2B:
        case InstructionCodes.NULL2S:
            execTypeCastOpcodes(sf, opcode, operands);
            break;

        case InstructionCodes.I2F:
        case InstructionCodes.I2S:
        case InstructionCodes.I2B:
        case InstructionCodes.I2JSON:
        case InstructionCodes.F2I:
        case InstructionCodes.F2S:
        case InstructionCodes.F2B:
        case InstructionCodes.F2JSON:
        case InstructionCodes.S2I:
        case InstructionCodes.S2F:
        case InstructionCodes.S2B:
        case InstructionCodes.S2JSON:
        case InstructionCodes.B2I:
        case InstructionCodes.B2F:
        case InstructionCodes.B2S:
        case InstructionCodes.DT2XML:
        case InstructionCodes.DT2JSON:
        case InstructionCodes.T2MAP:
        case InstructionCodes.T2JSON:
        case InstructionCodes.MAP2T:
        case InstructionCodes.JSON2T:
        case InstructionCodes.XMLATTRS2MAP:
        case InstructionCodes.S2XML:
        case InstructionCodes.S2JSONX:
        case InstructionCodes.XML2S:
            execTypeConversionOpcodes(sf, opcode, operands);
            break;

        case InstructionCodes.INEWARRAY:
            i = operands[0];
            sf.refRegs[i] = new BIntArray();
            break;
        case InstructionCodes.ARRAYLEN:
            i = operands[0];
            j = operands[1];

            BValue value = sf.refRegs[i];

            if (value == null) {
                handleNullRefError();
                break;
            }

            if (value.getType().getTag() == TypeTags.JSON_TAG) {
                sf.longRegs[j] = ((BJSON) value).value().size();
                break;
            }

            sf.longRegs[j] = ((BNewArray) value).size();
            break;
        case InstructionCodes.FNEWARRAY:
            i = operands[0];
            sf.refRegs[i] = new BFloatArray();
            break;
        case InstructionCodes.SNEWARRAY:
            i = operands[0];
            sf.refRegs[i] = new BStringArray();
            break;
        case InstructionCodes.BNEWARRAY:
            i = operands[0];
            sf.refRegs[i] = new BBooleanArray();
            break;
        case InstructionCodes.LNEWARRAY:
            i = operands[0];
            sf.refRegs[i] = new BBlobArray();
            break;
        case InstructionCodes.RNEWARRAY:
            i = operands[0];
            cpIndex = operands[1];
            typeRefCPEntry = (TypeRefCPEntry) constPool[cpIndex];
            sf.refRegs[i] = new BRefValueArray(typeRefCPEntry.getType());
            break;
        case InstructionCodes.JSONNEWARRAY:
            i = operands[0];
            j = operands[1];
            // This is a temporary solution to create n-valued JSON array
            StringJoiner stringJoiner = new StringJoiner(",", "[", "]");
            for (int index = 0; index < sf.longRegs[j]; index++) {
                stringJoiner.add(null);
            }
            sf.refRegs[i] = new BJSON(stringJoiner.toString());
            break;

        case InstructionCodes.NEWSTRUCT:
            createNewStruct(operands, sf);
            break;
        case InstructionCodes.NEWCONNECTOR:
            createNewConnector(operands, sf);
            break;
        case InstructionCodes.NEWMAP:
            i = operands[0];
            sf.refRegs[i] = new BMap<String, BRefType>();
            break;
        case InstructionCodes.NEWJSON:
            i = operands[0];
            cpIndex = operands[1];
            typeRefCPEntry = (TypeRefCPEntry) constPool[cpIndex];
            sf.refRegs[i] = new BJSON("{}", typeRefCPEntry.getType());
            break;
        case InstructionCodes.NEWTABLE:
            i = operands[0];
            cpIndex = operands[1];
            typeRefCPEntry = (TypeRefCPEntry) constPool[cpIndex];
            sf.refRegs[i] = new BTable(typeRefCPEntry.getType());
            break;
        case InstructionCodes.NEW_INT_RANGE:
            createNewIntRange(operands, sf);
            break;
        case InstructionCodes.IRET:
            i = operands[0];
            j = operands[1];
            currentSF = controlStack.currentFrame;
            callersSF = controlStack.currentFrame.prevStackFrame;
            callersRetRegIndex = currentSF.retRegIndexes[i];
            callersSF.longRegs[callersRetRegIndex] = currentSF.longRegs[j];
            break;
        case InstructionCodes.FRET:
            i = operands[0];
            j = operands[1];
            currentSF = controlStack.currentFrame;
            callersSF = controlStack.currentFrame.prevStackFrame;
            callersRetRegIndex = currentSF.retRegIndexes[i];
            callersSF.doubleRegs[callersRetRegIndex] = currentSF.doubleRegs[j];
            break;
        case InstructionCodes.SRET:
            i = operands[0];
            j = operands[1];
            currentSF = controlStack.currentFrame;
            callersSF = controlStack.currentFrame.prevStackFrame;
            callersRetRegIndex = currentSF.retRegIndexes[i];
            callersSF.stringRegs[callersRetRegIndex] = currentSF.stringRegs[j];
            break;
        case InstructionCodes.BRET:
            i = operands[0];
            j = operands[1];
            currentSF = controlStack.currentFrame;
            callersSF = controlStack.currentFrame.prevStackFrame;
            callersRetRegIndex = currentSF.retRegIndexes[i];
            callersSF.intRegs[callersRetRegIndex] = currentSF.intRegs[j];
            break;
        case InstructionCodes.LRET:
            i = operands[0];
            j = operands[1];
            currentSF = controlStack.currentFrame;
            callersSF = controlStack.currentFrame.prevStackFrame;
            callersRetRegIndex = currentSF.retRegIndexes[i];
            callersSF.byteRegs[callersRetRegIndex] = currentSF.byteRegs[j];
            break;
        case InstructionCodes.RRET:
            i = operands[0];
            j = operands[1];
            currentSF = controlStack.currentFrame;
            callersSF = controlStack.currentFrame.prevStackFrame;
            callersRetRegIndex = currentSF.retRegIndexes[i];
            callersSF.refRegs[callersRetRegIndex] = currentSF.refRegs[j];
            break;
        case InstructionCodes.RET:
            handleReturn();
            break;
        case InstructionCodes.XMLATTRSTORE:
        case InstructionCodes.XMLATTRLOAD:
        case InstructionCodes.XML2XMLATTRS:
        case InstructionCodes.S2QNAME:
        case InstructionCodes.NEWQNAME:
        case InstructionCodes.NEWXMLELEMENT:
        case InstructionCodes.NEWXMLCOMMENT:
        case InstructionCodes.NEWXMLTEXT:
        case InstructionCodes.NEWXMLPI:
        case InstructionCodes.XMLSTORE:
        case InstructionCodes.XMLLOAD:
            execXMLOpcodes(sf, opcode, operands);
            break;
        case InstructionCodes.ITR_NEW:
        case InstructionCodes.ITR_NEXT:
        case InstructionCodes.ITR_HAS_NEXT:
            execIteratorOperation(sf, instruction);
            break;
        case InstructionCodes.LOCK:
            InstructionLock instructionLock = (InstructionLock) instruction;
            handleVariableLock(instructionLock.types, instructionLock.varRegs);
            break;
        case InstructionCodes.UNLOCK:
            InstructionLock instructionUnLock = (InstructionLock) instruction;
            handleVariableUnlock(instructionUnLock.types, instructionUnLock.varRegs);
            break;
        default:
            throw new UnsupportedOperationException();
        }
    }
}