Add UnsignedLongBitmap
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / AbstractDatastoreContextIntrospectorFactory.java
1 /*
2  * Copyright (c) 2018 Inocybe Technologies and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.controller.cluster.datastore;
9
10 import com.google.common.annotations.VisibleForTesting;
11 import java.util.Map;
12 import org.eclipse.jdt.annotation.NonNull;
13 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
14 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.distributed.datastore.provider.rev140612.DataStorePropertiesContainer;
16 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
17 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
18
19 abstract class AbstractDatastoreContextIntrospectorFactory implements DatastoreContextIntrospectorFactory {
20     @Override
21     public DatastoreContextIntrospector newInstance(final LogicalDatastoreType datastoreType,
22             final Map<String, Object> properties) {
23         final DatastoreContextIntrospector inst = newInstance(datastoreType);
24         inst.update(properties);
25         return inst;
26     }
27
28     @VisibleForTesting
29     final DatastoreContextIntrospector newInstance(final LogicalDatastoreType datastoreType) {
30         return newInstance(DatastoreContext.newBuilder()
31                 .logicalStoreType(datastoreType)
32                 .tempFileDirectory("./data")
33                 .build());
34     }
35
36     @VisibleForTesting
37     final @NonNull DatastoreContextIntrospector newInstance(final DatastoreContext context) {
38         final DataStorePropertiesContainer defaultPropsContainer = (DataStorePropertiesContainer)
39                 serializer().fromNormalizedNode(YangInstanceIdentifier.of(DataStorePropertiesContainer.QNAME),
40                     ImmutableNodes.containerNode(DataStorePropertiesContainer.QNAME)).getValue();
41
42         return new DatastoreContextIntrospector(context, defaultPropsContainer);
43     }
44
45     abstract BindingNormalizedNodeSerializer serializer();
46 }