/** * <code>.org.apache.geode.internal.protocol.protobuf.v1.EncodedValueList listResult = 2;</code> */ public Builder mergeListResult(org.apache.geode.internal.protocol.protobuf.v1.BasicTypes.EncodedValueList value) { if (listResultBuilder_ == null) { if (resultCase_ == 2 && result_ != org.apache.geode.internal.protocol.protobuf.v1.BasicTypes.EncodedValueList.getDefaultInstance()) { result_ = org.apache.geode.internal.protocol.protobuf.v1.BasicTypes.EncodedValueList.newBuilder((org.apache.geode.internal.protocol.protobuf.v1.BasicTypes.EncodedValueList) result_) .mergeFrom(value).buildPartial(); } else { result_ = value; } onChanged(); } else { if (resultCase_ == 2) { listResultBuilder_.mergeFrom(value); } listResultBuilder_.setMessage(value); } resultCase_ = 2; return this; } /**
private void checkResults(final String query, EncodedValue[] bindParameters, String[] fieldnames, final Object[]... rows) throws InvalidExecutionContextException, ConnectionStateException, EncodingException, DecodingException { ProtobufSerializationService serializer = new ProtobufSerializationService(); final Result<OQLQueryResponse> results = invokeHandler(query, bindParameters, serializer); List<BasicTypes.EncodedValueList> expected = new ArrayList<>(); for (Object[] row : rows) { List<EncodedValue> encodedRow = Arrays.asList(row).stream().map(serializer::encode).collect(Collectors.toList()); expected.add(BasicTypes.EncodedValueList.newBuilder().addAllElement(encodedRow).build()); } assertEquals(expected, results.getMessage().getTableResult().getRowList()); assertEquals(Arrays.asList(fieldnames), results.getMessage().getTableResult().getFieldNameList()); }
private OQLQueryResponse encodeResults(final ProtobufSerializationService serializationService, final Object value) throws EncodingException { final Builder builder = OQLQueryResponse.newBuilder(); // The result is a single value if (!(value instanceof SelectResults)) { builder.setSingleResult(serializationService.encode(value)); return builder.build(); } SelectResults<?> selectResults = (SelectResults<?>) value; // The result is a list of objects if (!selectResults.getCollectionType().getElementType().isStructType()) { BasicTypes.EncodedValueList.Builder listResult = BasicTypes.EncodedValueList.newBuilder(); selectResults.stream().map(serializationService::encode).forEach(listResult::addElement); builder.setListResult(listResult); return builder.build(); } // The result is a list of structs SelectResults<Struct> structResults = (SelectResults<Struct>) selectResults; StructType elementType = (StructType) structResults.getCollectionType().getElementType(); BasicTypes.Table.Builder tableResult = BasicTypes.Table.newBuilder(); tableResult.addAllFieldName(Arrays.asList(elementType.getFieldNames())); for (Struct row : structResults) { tableResult.addRow(encodeStruct(serializationService, row)); } builder.setTableResult(tableResult); return builder.build(); }
@Test public void queryForMultipleStructs() throws ConnectionStateException, DecodingException, InvalidExecutionContextException, EncodingException, NameResolutionException, TypeMismatchException, QueryInvocationTargetException, FunctionDomainException { Query query = mock(DefaultQuery.class); when(queryService.newQuery(eq(SELECT_STAR_QUERY))).thenReturn(query); SelectResults results = new LinkedStructSet(); StructTypeImpl elementType = new StructTypeImpl(new String[] {"field1"}); results.setElementType(elementType); results.add(new StructImpl(elementType, new Object[] {STRING_RESULT_1})); results.add(new StructImpl(elementType, new Object[] {STRING_RESULT_2})); when(query.execute((Object[]) any())).thenReturn(results); final OQLQueryRequest request = OQLQueryRequest.newBuilder().setQuery(SELECT_STAR_QUERY).build(); final Result<OQLQueryResponse> result = operationHandler.process(serializationService, request, TestExecutionContext.getNoAuthCacheExecutionContext(cacheStub)); assertEquals( Arrays.asList( BasicTypes.EncodedValueList.newBuilder() .addElement(serializationService.encode(STRING_RESULT_1)).build(), BasicTypes.EncodedValueList.newBuilder() .addElement(serializationService.encode(STRING_RESULT_2)).build()), result.getMessage().getTableResult().getRowList()); }
@java.lang.Override public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder() {
private BasicTypes.EncodedValueList.Builder encodeStruct( final ProtobufSerializationService serializationService, final Struct row) throws EncodingException { BasicTypes.EncodedValueList.Builder structBuilder = BasicTypes.EncodedValueList.newBuilder(); for (Object element : row.getFieldValues()) { structBuilder.addElement(serializationService.encode(element)); } return structBuilder; }