X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=openflowplugin%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fopenflow%2Fmd%2Fcore%2Fsal%2FOFRpcFutureResultTransformFactory.java;h=41cb4bb63933fe522447fd7d111d18821d035343;hb=211261d0aadb59d9540649224d5b4e0d15d00bec;hp=a0bb177b2522b75ee67d5bc22a05960deb427c66;hpb=d4b81f43deae62aaea2f3ed2eb10652eabaa1a5c;p=openflowplugin.git diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/OFRpcFutureResultTransformFactory.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/OFRpcFutureResultTransformFactory.java index a0bb177b25..41cb4bb639 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/OFRpcFutureResultTransformFactory.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/OFRpcFutureResultTransformFactory.java @@ -1,33 +1,56 @@ /** * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * + * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.openflowplugin.openflow.md.core.sal; +import com.google.common.base.Function; import java.util.Collection; - import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.AddFlowOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.RemoveFlowOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.RemoveFlowOutputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.RemoveGroupOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.RemoveGroupOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.UpdateGroupOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.RemoveMeterOutput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.RemoveMeterOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.UpdateMeterOutput; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Function; - /** - * collection of transformation functions dedicated to rpc future results + * collection of transformation functions dedicated to rpc future results */ public abstract class OFRpcFutureResultTransformFactory { - - protected static Logger LOG = LoggerFactory + + private static final String MSG_ADD_FLOW_RPC = "Returning the Add Flow RPC result to MD-SAL"; + protected static final Logger LOG = LoggerFactory .getLogger(OFRpcFutureResultTransformFactory.class); + /** + * + * @param input rpc result input + * @param result results + * @param rpc result input type + * @return rpc result + */ + protected static RpcResult assembleRpcResult(RpcResult input, E result) { + Collection errors = input.getErrors(); + return Rpcs.getRpcResult(input.isSuccessful(), result, errors); + } + /** * @return translator from {@link UpdateFlowOutput} to {@link AddFlowOutput} */ @@ -35,7 +58,7 @@ public abstract class OFRpcFutureResultTransformFactory { return new Function,RpcResult>() { @Override - public RpcResult apply(final RpcResult input) { + public RpcResult apply(RpcResult input) { UpdateFlowOutput updateFlowOutput = input.getResult(); @@ -44,22 +67,124 @@ public abstract class OFRpcFutureResultTransformFactory { AddFlowOutput result = addFlowOutput.build(); RpcResult rpcResult = assembleRpcResult(input, result); - LOG.debug("Returning the Add Flow RPC result to MD-SAL"); + LOG.debug(MSG_ADD_FLOW_RPC); return rpcResult; } }; } - - + /** - * @param input - * @param result - * @return + * @return translator from {@link UpdateFlowOutput} to {@link RemoveFlowOutput} */ - protected static RpcResult assembleRpcResult(RpcResult input, E result) { - Collection errors = input.getErrors(); - RpcResult rpcResult = Rpcs.getRpcResult(input.isSuccessful(), result, errors); - return rpcResult; + public static Function,RpcResult> createForRemoveFlowOutput() { + return new Function,RpcResult>() { + + @Override + public RpcResult apply(RpcResult input) { + + UpdateFlowOutput updateFlowOutput = input.getResult(); + + RemoveFlowOutputBuilder removeFlowOutput = new RemoveFlowOutputBuilder(); + removeFlowOutput.setTransactionId(updateFlowOutput.getTransactionId()); + RemoveFlowOutput result = removeFlowOutput.build(); + + RpcResult rpcResult = assembleRpcResult(input, result); + LOG.debug("Returning the Remove Flow RPC result to MD-SAL"); + return rpcResult; + } + + }; } + + /** + * @return translator from {@link UpdateGroupOutput} to {@link AddGroupOutput} + */ + public static Function, RpcResult> createForAddGroupOutput() { + return new Function,RpcResult>() { + + @Override + public RpcResult apply(final RpcResult input) { + UpdateGroupOutput updateGroupOutput = input.getResult(); + + AddGroupOutputBuilder addGroupOutput = new AddGroupOutputBuilder(); + addGroupOutput.setTransactionId(updateGroupOutput.getTransactionId()); + AddGroupOutput result = addGroupOutput.build(); + + RpcResult rpcResult = assembleRpcResult(input, result); + LOG.debug("Returning the Add Group RPC result to MD-SAL"); + return rpcResult; + } + }; + } + + /** + * @return rpc result function for group udpate + */ + public static Function,RpcResult> createForRemoveGroupOutput() { + return new Function,RpcResult>() { + + @Override + public RpcResult apply(RpcResult input) { + + UpdateGroupOutput updateGroupOutput = input.getResult(); + + RemoveGroupOutputBuilder removeGroupOutput = new RemoveGroupOutputBuilder(); + removeGroupOutput.setTransactionId(updateGroupOutput.getTransactionId()); + RemoveGroupOutput result = removeGroupOutput.build(); + + RpcResult rpcResult = assembleRpcResult(input, result); + LOG.debug("Returning the Remove Group RPC result to MD-SAL"); + return rpcResult; + } + + }; + } + + /** + * @return translator from {@link UpdateMeterOutput} to {@link AddMeterOutput} + */ + public static Function, RpcResult> createForAddMeterOutput() { + return new Function,RpcResult>() { + + @Override + public RpcResult apply(final RpcResult input) { + UpdateMeterOutput updateMeterOutput = input.getResult(); + + AddMeterOutputBuilder addMeterOutput = new AddMeterOutputBuilder(); + addMeterOutput.setTransactionId(updateMeterOutput.getTransactionId()); + AddMeterOutput result = addMeterOutput.build(); + + RpcResult rpcResult = assembleRpcResult(input, result); + LOG.debug("Returning the Add Meter RPC result to MD-SAL"); + return rpcResult; + } + }; + } + + + /** + * @return return rpc result function + */ + public static Function, RpcResult> createForRemoveMeterOutput() { + return new Function,RpcResult>() { + + @Override + public RpcResult apply(final RpcResult input) { + UpdateMeterOutput updateMeterOutput = input.getResult(); + + RemoveMeterOutputBuilder removeMeterOutput = new RemoveMeterOutputBuilder(); + removeMeterOutput.setTransactionId(updateMeterOutput.getTransactionId()); + RemoveMeterOutput result = removeMeterOutput.build(); + + RpcResult rpcResult = assembleRpcResult(input, result); + LOG.debug("Returning the Remove Meter RPC result to MD-SAL"); + return rpcResult; + } + }; + } + + + + }