diff --git a/hazelcast/src/main/java/com/hazelcast/client/impl/protocol/task/AbstractMultiPartitionMessageTask.java b/hazelcast/src/main/java/com/hazelcast/client/impl/protocol/task/AbstractMultiPartitionMessageTask.java index b71e5c1ae06f..c06b8fb85fcf 100644 --- a/hazelcast/src/main/java/com/hazelcast/client/impl/protocol/task/AbstractMultiPartitionMessageTask.java +++ b/hazelcast/src/main/java/com/hazelcast/client/impl/protocol/task/AbstractMultiPartitionMessageTask.java @@ -20,6 +20,9 @@ import com.hazelcast.client.impl.protocol.ClientMessage; import com.hazelcast.core.ExecutionCallback; import com.hazelcast.instance.Node; +import com.hazelcast.map.impl.MapService; +import com.hazelcast.map.impl.MapServiceContext; +import com.hazelcast.map.impl.operation.MapOperationProvider; import com.hazelcast.nio.Connection; import com.hazelcast.spi.OperationFactory; import com.hazelcast.spi.impl.operationservice.InternalOperationService; @@ -41,6 +44,12 @@ protected void processMessage() { operationService.invokeOnPartitionsAsync(getServiceName(), operationFactory, getPartitions(), this); } + protected final MapOperationProvider getMapOperationProvider(String mapName) { + MapService mapService = getService(MapService.SERVICE_NAME); + MapServiceContext mapServiceContext = mapService.getMapServiceContext(); + return mapServiceContext.getMapOperationProvider(mapName); + } + public abstract Collection getPartitions(); protected abstract OperationFactory createOperationFactory(); diff --git a/hazelcast/src/main/java/com/hazelcast/client/impl/protocol/task/map/MapExecuteOnKeysMessageTask.java b/hazelcast/src/main/java/com/hazelcast/client/impl/protocol/task/map/MapExecuteOnKeysMessageTask.java index ab8e842df3ca..cee71b5ca55e 100644 --- a/hazelcast/src/main/java/com/hazelcast/client/impl/protocol/task/map/MapExecuteOnKeysMessageTask.java +++ b/hazelcast/src/main/java/com/hazelcast/client/impl/protocol/task/map/MapExecuteOnKeysMessageTask.java @@ -23,7 +23,7 @@ import com.hazelcast.map.EntryProcessor; import com.hazelcast.map.impl.MapEntries; import com.hazelcast.map.impl.MapService; -import com.hazelcast.map.impl.operation.MultipleEntryOperationFactory; +import com.hazelcast.map.impl.operation.MapOperationProvider; import com.hazelcast.nio.Connection; import com.hazelcast.nio.serialization.Data; import com.hazelcast.security.permission.ActionConstants; @@ -51,9 +51,10 @@ public MapExecuteOnKeysMessageTask(ClientMessage clientMessage, Node node, Conne @Override protected OperationFactory createOperationFactory() { - EntryProcessor entryProcessor = serializationService.toObject(parameters.entryProcessor); - Set keys = new HashSet(parameters.keys); - return new MultipleEntryOperationFactory(parameters.name, keys, entryProcessor); + EntryProcessor processor = serializationService.toObject(parameters.entryProcessor); + MapOperationProvider operationProvider = getMapOperationProvider(parameters.name); + return operationProvider.createMultipleEntryOperationFactory(parameters.name, + new HashSet(parameters.keys), processor); } @Override