/* * Copyright 2015 Open Networking Laboratory * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.onosproject.store.consistent.impl; import org.onosproject.store.service.DistributedQueue; import org.onosproject.store.service.DistributedQueueBuilder; import org.onosproject.store.service.Serializer; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkState; /** * Default implementation of a {@code DistributedQueueBuilder}. * * @param queue entry type */ public class DefaultDistributedQueueBuilder implements DistributedQueueBuilder { private Serializer serializer; private String name; private boolean persistenceEnabled = true; private final DatabaseManager databaseManager; private boolean metering = true; public DefaultDistributedQueueBuilder(DatabaseManager databaseManager) { this.databaseManager = databaseManager; } @Override public DistributedQueueBuilder withName(String name) { checkArgument(name != null && !name.isEmpty()); this.name = name; return this; } @Override public DistributedQueueBuilder withSerializer(Serializer serializer) { checkArgument(serializer != null); this.serializer = serializer; return this; } @Override public DistributedQueueBuilder withMeteringDisabled() { metering = false; return this; } @Override public DistributedQueueBuilder withPersistenceDisabled() { persistenceEnabled = false; return this; } private boolean validInputs() { return name != null && serializer != null; } @Override public DistributedQueue build() { checkState(validInputs()); return new DefaultDistributedQueue<>( name, persistenceEnabled ? databaseManager.partitionedDatabase : databaseManager.inMemoryDatabase, serializer, metering); } }