*/
package org.opendaylight.controller.cluster.datastore;
-import com.google.common.annotations.VisibleForTesting;
-import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
-import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry;
-import org.opendaylight.mdsal.binding.generator.api.ClassLoadingStrategy;
-import org.opendaylight.mdsal.binding.generator.util.BindingRuntimeContext;
+import java.util.Map;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.mdsal.dom.api.DOMSchemaService;
/**
- * Factory for creating DatastoreContextIntrospector instances.
+ * Factory for creating {@link DatastoreContextIntrospector} instances.
*
* @author Thomas Pantelis
*/
-public class DatastoreContextIntrospectorFactory {
- private final DOMSchemaService schemaService;
- private final ClassLoadingStrategy classLoadingStrategy;
-
- public DatastoreContextIntrospectorFactory(DOMSchemaService schemaService,
- ClassLoadingStrategy classLoadingStrategy) {
- this.schemaService = schemaService;
- this.classLoadingStrategy = classLoadingStrategy;
- }
-
- public DatastoreContextIntrospector newInstance(LogicalDatastoreType datastoreType) {
- return new DatastoreContextIntrospector(DatastoreContext.newBuilder()
- .logicalStoreType(datastoreType).tempFileDirectory("./data").build(), newBindingSerializer());
- }
-
- @VisibleForTesting
- DatastoreContextIntrospector newInstance(DatastoreContext context) {
- return new DatastoreContextIntrospector(context, newBindingSerializer());
- }
-
- private BindingNormalizedNodeSerializer newBindingSerializer() {
- BindingNormalizedNodeCodecRegistry codecRegistry = new BindingNormalizedNodeCodecRegistry(
- BindingRuntimeContext.create(classLoadingStrategy, schemaService.getGlobalContext()));
- return codecRegistry;
- }
+@NonNullByDefault
+public interface DatastoreContextIntrospectorFactory {
+ /**
+ * Create a new {@link DatastoreContextIntrospector} initialized with specified properties.
+ *
+ * @param datastoreType Datastore type
+ * @param properties optional initial properties
+ * @return A new DatastoreContextIntrospector
+ */
+ DatastoreContextIntrospector newInstance(LogicalDatastoreType datastoreType,
+ @Nullable Map<String, Object> properties);
}