com.basho.riak.client.api.GenericRiakCommand Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of riak-client Show documentation
Show all versions of riak-client Show documentation
HttpClient-based client for Riak
The newest version!
/*
* Copyright 2013-2016 Basho Technologies Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.basho.riak.client.api;
import com.basho.riak.client.api.commands.CoreFutureAdapter;
import com.basho.riak.client.core.FutureOperation;
import com.basho.riak.client.core.RiakCluster;
import com.basho.riak.client.core.RiakFuture;
/**
* @author Sergey Galkin
* @since 2.1.0
*/
public abstract class GenericRiakCommand extends RiakCommand
{
public static abstract class GenericRiakCommandWithSameInfo extends GenericRiakCommand
{
@Override
protected I convertInfo(I coreInfo) {
return coreInfo;
}
}
protected abstract FutureOperation buildCoreOperation();
protected RiakFuture executeAsync(RiakCluster cluster)
{
final FutureOperation coreOperation = buildCoreOperation();
assert coreOperation != null;
final RiakFuture coreFuture = cluster.execute(coreOperation);
assert coreFuture != null;
final CoreFutureAdapter future =
new CoreFutureAdapter(coreFuture)
{
@Override
protected R convertResponse(CoreR coreResponse)
{
return GenericRiakCommand.this.convertResponse(coreOperation, coreResponse);
}
@Override
protected I convertQueryInfo(CoreI coreQueryInfo)
{
return GenericRiakCommand.this.convertInfo(coreQueryInfo);
}
};
coreFuture.addListener(future);
return future;
}
protected abstract R convertResponse(FutureOperation request, CoreR coreResponse);
protected abstract I convertInfo(CoreI coreInfo);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy