/** * <code>.org.apache.geode.internal.protocol.protobuf.v1.ExecuteFunctionOnRegionRequest executeFunctionOnRegionRequest = 18;</code> */ public Builder mergeExecuteFunctionOnRegionRequest(org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest value) { if (executeFunctionOnRegionRequestBuilder_ == null) { if (messageTypeCase_ == 18 && messageType_ != org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest.getDefaultInstance()) { messageType_ = org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest.newBuilder((org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest) messageType_) .mergeFrom(value).buildPartial(); } else { messageType_ = value; } onChanged(); } else { if (messageTypeCase_ == 18) { executeFunctionOnRegionRequestBuilder_.mergeFrom(value); } executeFunctionOnRegionRequestBuilder_.setMessage(value); } messageTypeCase_ = 18; return this; } /**
public Builder mergeFrom(org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest other) { if (other == org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest.getDefaultInstance()) return this; if (!other.getFunctionID().isEmpty()) { functionID_ = other.functionID_; onChanged(); if (!other.getRegion().isEmpty()) { region_ = other.region_; onChanged(); if (other.hasArguments()) { mergeArguments(other.getArguments());
@java.lang.Override public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } if (!(obj instanceof org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest)) { return super.equals(obj); } org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest other = (org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest) obj; boolean result = true; result = result && getFunctionID() .equals(other.getFunctionID()); result = result && getRegion() .equals(other.getRegion()); result = result && (hasArguments() == other.hasArguments()); if (hasArguments()) { result = result && getArguments() .equals(other.getArguments()); } result = result && getKeyFilterList() .equals(other.getKeyFilterList()); result = result && unknownFields.equals(other.unknownFields); return result; }
case 18: result = result && getExecuteFunctionOnRegionRequest() .equals(other.getExecuteFunctionOnRegionRequest()); break; case 19:
@java.lang.Override public org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest buildPartial() { org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest result = new org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; result.functionID_ = functionID_; result.region_ = region_; if (argumentsBuilder_ == null) { result.arguments_ = arguments_; } else { result.arguments_ = argumentsBuilder_.build(); } if (keyFilterBuilder_ == null) { if (((bitField0_ & 0x00000008) == 0x00000008)) { keyFilter_ = java.util.Collections.unmodifiableList(keyFilter_); bitField0_ = (bitField0_ & ~0x00000008); } result.keyFilter_ = keyFilter_; } else { result.keyFilter_ = keyFilterBuilder_.build(); } result.bitField0_ = to_bitField0_; onBuilt(); return result; }
@java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; size = 0; if (!getFunctionIDBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, functionID_); } if (!getRegionBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, region_); } if (arguments_ != null) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(3, getArguments()); } for (int i = 0; i < keyFilter_.size(); i++) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(4, keyFilter_.get(i)); } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; }
/** * <code>.org.apache.geode.internal.protocol.protobuf.v1.ExecuteFunctionOnRegionRequest executeFunctionOnRegionRequest = 18;</code> */ private com.google.protobuf.SingleFieldBuilderV3< org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest, org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest.Builder, org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequestOrBuilder> getExecuteFunctionOnRegionRequestFieldBuilder() { if (executeFunctionOnRegionRequestBuilder_ == null) { if (!(messageTypeCase_ == 18)) { messageType_ = org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest.getDefaultInstance(); } executeFunctionOnRegionRequestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest, org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest.Builder, org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequestOrBuilder>( (org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest) messageType_, getParentForChildren(), isClean()); messageType_ = null; } messageTypeCase_ = 18; onChanged();; return executeFunctionOnRegionRequestBuilder_; }
@java.lang.Override public int hashCode() { if (memoizedHashCode != 0) { return memoizedHashCode; } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); hash = (37 * hash) + FUNCTIONID_FIELD_NUMBER; hash = (53 * hash) + getFunctionID().hashCode(); hash = (37 * hash) + REGION_FIELD_NUMBER; hash = (53 * hash) + getRegion().hashCode(); if (hasArguments()) { hash = (37 * hash) + ARGUMENTS_FIELD_NUMBER; hash = (53 * hash) + getArguments().hashCode(); } if (getKeyFilterCount() > 0) { hash = (37 * hash) + KEYFILTER_FIELD_NUMBER; hash = (53 * hash) + getKeyFilterList().hashCode(); } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; }
@Override public Result<ExecuteFunctionOnRegionResponse> process( ProtobufSerializationService serializationService, ExecuteFunctionOnRegionRequest request, MessageExecutionContext messageExecutionContext) throws InvalidExecutionContextException, ConnectionStateException, EncodingException, DecodingException { final String functionID = request.getFunctionID(); final String regionName = request.getRegion(); Object arguments = getFunctionArguments(request, serializationService); Set<?> filter = parseFilter(serializationService, request); SecureFunctionService functionService = messageExecutionContext.getSecureCache().getFunctionService(); List<Object> results = functionService.executeFunctionOnRegion(functionID, regionName, arguments, filter); final ExecuteFunctionOnRegionResponse.Builder responseMessage = ExecuteFunctionOnRegionResponse.newBuilder(); for (Object result : results) { responseMessage.addResults(serializationService.encode(result)); } return Success.of(responseMessage.build()); }
/** * <code>.org.apache.geode.internal.protocol.protobuf.v1.ExecuteFunctionOnRegionRequest executeFunctionOnRegionRequest = 18;</code> */ public org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest getExecuteFunctionOnRegionRequest() { if (executeFunctionOnRegionRequestBuilder_ == null) { if (messageTypeCase_ == 18) { return (org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest) messageType_; } return org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest.getDefaultInstance(); } else { if (messageTypeCase_ == 18) { return executeFunctionOnRegionRequestBuilder_.getMessage(); } return org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest.getDefaultInstance(); } } /**
@java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (!getFunctionIDBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, functionID_); } if (!getRegionBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 2, region_); } if (arguments_ != null) { output.writeMessage(3, getArguments()); } for (int i = 0; i < keyFilter_.size(); i++) { output.writeMessage(4, keyFilter_.get(i)); } unknownFields.writeTo(output); }
@Override public List<T> executeOnRegion(Object arguments, String regionName, Object... keyFilters) throws IOException { List<BasicTypes.EncodedValue> encodedFilters = Arrays.asList(keyFilters).stream() .map(valueEncoder::encodeValue).collect(Collectors.toList()); ClientProtocol.Message request = ClientProtocol.Message.newBuilder() .setExecuteFunctionOnRegionRequest(FunctionAPI.ExecuteFunctionOnRegionRequest.newBuilder() .setRegion(regionName).addAllKeyFilter(encodedFilters).setFunctionID(functionId)) .build(); final FunctionAPI.ExecuteFunctionOnRegionResponse response = channel .sendRequest(request, ClientProtocol.Message.MessageTypeCase.EXECUTEFUNCTIONONREGIONRESPONSE) .getExecuteFunctionOnRegionResponse(); return response.getResultsList().stream().map(value -> (T) valueEncoder.decodeValue(value)) .collect(Collectors.toList()); }
@java.lang.Override public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder() {
/** * <code>.org.apache.geode.internal.protocol.protobuf.v1.ExecuteFunctionOnRegionRequest executeFunctionOnRegionRequest = 18;</code> */ public org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequestOrBuilder getExecuteFunctionOnRegionRequestOrBuilder() { if ((messageTypeCase_ == 18) && (executeFunctionOnRegionRequestBuilder_ != null)) { return executeFunctionOnRegionRequestBuilder_.getMessageOrBuilder(); } else { if (messageTypeCase_ == 18) { return (org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest) messageType_; } return org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest.getDefaultInstance(); } } /**
@Test public void requiresPermissions() throws Exception { final FunctionAPI.ExecuteFunctionOnRegionRequest request = FunctionAPI.ExecuteFunctionOnRegionRequest.newBuilder().setFunctionID(TEST_FUNCTION_ID) .setRegion(TEST_REGION).build(); SecurityService securityService = mock(SecurityService.class); when(securityService.isIntegratedSecurity()).thenReturn(true); doThrow(new NotAuthorizedException("we should catch this")).when(securityService) .authorize(Mockito.eq(ResourcePermissions.DATA_WRITE), any()); ServerMessageExecutionContext context = new ServerMessageExecutionContext(cacheStub, mock(ProtobufClientStatistics.class), securityService); expectedException.expect(NotAuthorizedException.class); operationHandler.process(serializationService, request, context); }
@java.lang.Override public org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest getDefaultInstanceForType() { return org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest.getDefaultInstance(); }
private Object getFunctionArguments(ExecuteFunctionOnRegionRequest request, ProtobufSerializationService serializationService) throws DecodingException { if (request.hasArguments()) { return serializationService.decode(request.getArguments()); } else { return null; } } }
@Test public void functionNotFound() throws Exception { final FunctionAPI.ExecuteFunctionOnRegionRequest request = FunctionAPI.ExecuteFunctionOnRegionRequest.newBuilder().setFunctionID(TEST_FUNCTION_ID) .setRegion(TEST_REGION).build(); FunctionService.unregisterFunction(TEST_FUNCTION_ID); expectedException.expect(IllegalArgumentException.class); final Result<FunctionAPI.ExecuteFunctionOnRegionResponse> result = operationHandler.process(serializationService, request, mockedMessageExecutionContext()); }
@Test public void failsOnUnknownRegion() throws Exception { final FunctionAPI.ExecuteFunctionOnRegionRequest request = FunctionAPI.ExecuteFunctionOnRegionRequest.newBuilder().setFunctionID(TEST_FUNCTION_ID) .setRegion(NOT_A_REGION).build(); expectedException.expect(RegionDestroyedException.class); final Result<FunctionAPI.ExecuteFunctionOnRegionResponse> result = operationHandler.process(serializationService, request, mockedMessageExecutionContext()); }
/** * <code>.org.apache.geode.internal.protocol.protobuf.v1.ExecuteFunctionOnRegionRequest executeFunctionOnRegionRequest = 18;</code> */ public org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest getExecuteFunctionOnRegionRequest() { if (messageTypeCase_ == 18) { return (org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest) messageType_; } return org.apache.geode.internal.protocol.protobuf.v1.FunctionAPI.ExecuteFunctionOnRegionRequest.getDefaultInstance(); } /**