- final ReadWriteTransaction tx = dataProvider.newReadWriteTransaction();
- ListenableFuture<Optional<DataObject>> readFuture =
- tx.read( LogicalDatastoreType.OPERATIONAL, TOASTER_IID );
-
- final ListenableFuture<RpcResult<TransactionStatus>> commitFuture =
- Futures.transform( readFuture, new AsyncFunction<Optional<DataObject>,
- RpcResult<TransactionStatus>>() {
-
- @Override
- public ListenableFuture<RpcResult<TransactionStatus>> apply(
- Optional<DataObject> toasterData ) throws Exception {
-
- ToasterStatus toasterStatus = ToasterStatus.Up;
- if( toasterData.isPresent() ) {
- toasterStatus = ((Toaster)toasterData.get()).getToasterStatus();
- }
-
- LOG.debug( "Read toaster status: {}", toasterStatus );
-
- if( toasterStatus == ToasterStatus.Up ) {
-
- if( outOfBread() ) {
- LOG.debug( "Toaster is out of bread" );
-
- return Futures.immediateFuture( RpcResultBuilder.<TransactionStatus>failed()
- .withRpcError( makeToasterOutOfBreadError() ).build() );
- }