blob: ecf6cb71006bcfc558c96f93db975d5fb40ee020 [file] [log] [blame]
alshabibab984662014-12-04 18:56:18 -08001/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2014-present Open Networking Laboratory
alshabibab984662014-12-04 18:56:18 -08003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Brian O'Connorabafb502014-12-02 22:26:20 -080016package org.onosproject.net.intent;
Brian O'Connor520c0522014-11-23 23:50:47 -080017
Brian O'Connorabafb502014-12-02 22:26:20 -080018import org.onosproject.core.IdGenerator;
Brian O'Connor520c0522014-11-23 23:50:47 -080019
20import java.util.concurrent.atomic.AtomicLong;
21
22/**
23 * Mock id generator for testing.
24 */
Thomas Vachuska2048c1f2017-05-10 19:32:22 -070025public final class MockIdGenerator implements IdGenerator {
26
27 public static final MockIdGenerator INSTANCE = new MockIdGenerator();
Ray Milkey7c251822016-04-06 17:38:25 -070028
29 private static boolean generatorIsBound = false;
Thomas Vachuska2048c1f2017-05-10 19:32:22 -070030
31 // Ban public construction
32 private MockIdGenerator() {
33 }
34
35 /**
36 * Binds clean mock generator to the intent.
37 */
38 public static synchronized void cleanBind() {
39 INSTANCE.nextId = new AtomicLong(0);
Ray Milkey7c251822016-04-06 17:38:25 -070040 if (!generatorIsBound) {
41 generatorIsBound = true;
Thomas Vachuska2048c1f2017-05-10 19:32:22 -070042 Intent.unbindIdGenerator(INSTANCE);
43 Intent.bindIdGenerator(INSTANCE);
Ray Milkey7c251822016-04-06 17:38:25 -070044 }
45 }
Thomas Vachuska2048c1f2017-05-10 19:32:22 -070046
47 /**
48 * Unbinds mock generator from the intent.
49 */
50 public static synchronized void unbind() {
51 if (generatorIsBound) {
52 generatorIsBound = false;
53 Intent.unbindIdGenerator(INSTANCE);
54 }
55 }
56
Brian O'Connor520c0522014-11-23 23:50:47 -080057 private AtomicLong nextId = new AtomicLong(0);
58
59 @Override
60 public long getNewId() {
61 return nextId.getAndIncrement();
62 }
63}