From fc88978ee13658d1cc17ea2cb9b14deaedf0410e Mon Sep 17 00:00:00 2001 From: Jian Li Date: Tue, 17 Oct 2017 00:47:53 +0900 Subject: [PATCH] Activate the application grpc service during registry startup Change-Id: Id1be2f5f65b021583820a15ca0dc07c290dc60e7 --- .../services/nb/GrpcNbApplicationService.java | 39 ++++++++++++++++++- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbApplicationService.java b/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbApplicationService.java index 9bbd813468..bce4406cab 100644 --- a/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbApplicationService.java +++ b/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbApplicationService.java @@ -16,6 +16,7 @@ package org.onosproject.incubator.protobuf.services.nb; import com.google.common.annotations.Beta; +import io.grpc.BindableService; import io.grpc.stub.StreamObserver; import org.apache.felix.scr.annotations.Activate; import org.apache.felix.scr.annotations.Component; @@ -37,6 +38,10 @@ import org.onosproject.incubator.protobuf.models.core.ApplicationEnumsProtoTrans import org.onosproject.incubator.protobuf.models.core.ApplicationIdProtoTranslator; import org.onosproject.incubator.protobuf.models.core.ApplicationProtoTranslator; import org.onosproject.incubator.protobuf.models.security.PermissionProtoTranslator; +import org.onosproject.protobuf.api.GrpcServiceRegistry; +import org.slf4j.Logger; + +import static org.slf4j.LoggerFactory.getLogger; /** * A server that provides access to the methods exposed by {@link ApplicationService}. @@ -46,17 +51,40 @@ import org.onosproject.incubator.protobuf.models.security.PermissionProtoTransla @Component(immediate = true) public class GrpcNbApplicationService { + private final Logger log = getLogger(getClass()); + + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) + protected GrpcServiceRegistry registry; + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected ApplicationService applicationService; + private static ApplicationServiceNbServerInternal instance = null; + + @Activate public void activate() { - //TODO this should contact the registry service and register an instance - // of this service. + registry.register(getInnerInstance()); + log.info("Started."); } @Deactivate public void deactivate() { + registry.unregister(getInnerInstance()); + log.info("Stopped"); + } + + /** + * Register Application Service, Used for unit testing purposes. + * + * @return An instance of binding Application service + */ + public InProcessServer registerInProcessServer() { + InProcessServer inprocessServer = + new InProcessServer(GrpcNbApplicationService.ApplicationServiceNbServerInternal.class); + inprocessServer.addServiceToBind(getInnerInstance()); + + return inprocessServer; } private class ApplicationServiceNbServerInternal extends ApplicationServiceImplBase { @@ -124,4 +152,11 @@ public class GrpcNbApplicationService { responseObserver.onCompleted(); } } + + private ApplicationServiceNbServerInternal getInnerInstance() { + if (instance == null) { + instance = new ApplicationServiceNbServerInternal(); + } + return instance; + } }