/* * Copyright (c) 2014, 2015 Brocade Communications 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 */ /** * Generated file * Generated from: yang module name: toaster-consumer-impl yang module local name: toaster-consumer-impl * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator * Generated at: Wed Feb 05 11:31:30 CET 2014 * * Do not modify this file unless it is present under src/main directory */ package org.opendaylight.controller.config.yang.config.kitchen_service.impl; import java.util.concurrent.Future; import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker; import org.opendaylight.controller.sample.kitchen.api.EggsType; import org.opendaylight.controller.sample.kitchen.api.KitchenService; import org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.toaster.rev091120.ToastType; import org.opendaylight.yangtools.yang.common.RpcResult; import org.osgi.framework.BundleContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * */ public final class KitchenServiceModule extends AbstractKitchenServiceModule { private static final Logger log = LoggerFactory.getLogger(KitchenServiceModule.class); private BundleContext bundleContext; public KitchenServiceModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { super(identifier, dependencyResolver); } public KitchenServiceModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, final KitchenServiceModule oldModule, final java.lang.AutoCloseable oldInstance) { super(identifier, dependencyResolver, oldModule, oldInstance); } @Override protected void customValidation(){ // No need to validate dependencies, since all dependencies have mandatory true flag in yang // config-subsystem will perform the validation } @Override public AutoCloseable createInstance() { // The KitchenServiceImpl instance is created and advertised with the OSGi registry via blueprint // so obtain it here so we can return it to the config system. It's possible the blueprint container // hasn't been created yet so we busy wait 5 min for the service. final WaitingServiceTracker tracker = WaitingServiceTracker.create( KitchenService.class, bundleContext); final KitchenService kitchenService = tracker.waitForService(WaitingServiceTracker.FIVE_MINUTES); final class AutoCloseableKitchenService implements KitchenService, AutoCloseable { @Override public void close() { // We need to close the ServiceTracker however we don't want to close the actual // KitchenService instance because its life-cycle is controlled via blueprint. tracker.close(); log.info("KitchenService (instance {}) closed.", kitchenService); } @Override public Future> makeBreakfast(final EggsType eggs, final Class toast, final int toastDoneness) { return kitchenService.makeBreakfast(eggs, toast, toastDoneness); } } return new AutoCloseableKitchenService(); } public void setBundleContext(BundleContext bundleContext) { this.bundleContext = bundleContext; } }