List of usage examples for java.util StringJoiner add
public StringJoiner add(CharSequence newElement)
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(); } } }