import static java.util.Objects.requireNonNull;
import java.util.concurrent.Executor;
-import org.opendaylight.netconf.client.mdsal.NetconfDevice.SchemaResourcesDTO;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.netconf.client.mdsal.api.BaseNetconfSchemaProvider;
import org.opendaylight.netconf.client.mdsal.api.DeviceActionFactory;
+import org.opendaylight.netconf.client.mdsal.api.DeviceNetconfSchemaProvider;
import org.opendaylight.netconf.client.mdsal.api.RemoteDeviceHandler;
import org.opendaylight.netconf.client.mdsal.api.RemoteDeviceId;
-public class NetconfDeviceBuilder {
+// FIXME: everything except DeviceActionFactory is mandatory, hence this builder is a superfluous indirection
+public final class NetconfDeviceBuilder {
private boolean reconnectOnSchemasChange;
- private SchemaResourcesDTO schemaResourcesDTO;
+ private DeviceNetconfSchemaProvider deviceSchemaProvider;
private RemoteDeviceId id;
private RemoteDeviceHandler salFacade;
- private Executor globalProcessingExecutor;
+ // FIXME: this should not be here
+ private Executor processingExecutor;
private DeviceActionFactory deviceActionFactory;
- private BaseNetconfSchemaProvider baseSchemas;
+ private BaseNetconfSchemaProvider baseSchemaProvider;
- public NetconfDeviceBuilder setReconnectOnSchemasChange(final boolean reconnectOnSchemasChange) {
+ public @NonNull NetconfDeviceBuilder setReconnectOnSchemasChange(final boolean reconnectOnSchemasChange) {
this.reconnectOnSchemasChange = reconnectOnSchemasChange;
return this;
}
- public NetconfDeviceBuilder setId(final RemoteDeviceId id) {
- this.id = id;
+ public @NonNull NetconfDeviceBuilder setId(final RemoteDeviceId id) {
+ this.id = requireNonNull(id);
return this;
}
- public NetconfDeviceBuilder setSchemaResourcesDTO(final SchemaResourcesDTO schemaResourcesDTO) {
- this.schemaResourcesDTO = schemaResourcesDTO;
+ public @NonNull NetconfDeviceBuilder setSalFacade(final RemoteDeviceHandler salFacade) {
+ this.salFacade = requireNonNull(salFacade);
return this;
}
- public NetconfDeviceBuilder setSalFacade(final RemoteDeviceHandler salFacade) {
- this.salFacade = salFacade;
+ public @NonNull NetconfDeviceBuilder setProcessingExecutor(final Executor processingExecutor) {
+ this.processingExecutor = requireNonNull(processingExecutor);
return this;
}
- public NetconfDeviceBuilder setGlobalProcessingExecutor(final Executor globalProcessingExecutor) {
- this.globalProcessingExecutor = globalProcessingExecutor;
- return this;
- }
-
- public NetconfDeviceBuilder setDeviceActionFactory(final DeviceActionFactory deviceActionFactory) {
+ public @NonNull NetconfDeviceBuilder setDeviceActionFactory(final DeviceActionFactory deviceActionFactory) {
this.deviceActionFactory = deviceActionFactory;
return this;
}
- public NetconfDeviceBuilder setBaseSchemas(final BaseNetconfSchemaProvider baseSchemas) {
- this.baseSchemas = requireNonNull(baseSchemas);
+ public @NonNull NetconfDeviceBuilder setBaseSchemaProvider(final BaseNetconfSchemaProvider baseSchemaProvider) {
+ this.baseSchemaProvider = requireNonNull(baseSchemaProvider);
return this;
}
- public NetconfDevice build() {
- validation();
- return new NetconfDevice(schemaResourcesDTO, baseSchemas, id, salFacade,
- globalProcessingExecutor, reconnectOnSchemasChange, deviceActionFactory);
+ public @NonNull NetconfDeviceBuilder setDeviceSchemaProvider(
+ final DeviceNetconfSchemaProvider deviceSchemaProvider) {
+ this.deviceSchemaProvider = requireNonNull(deviceSchemaProvider);
+ return this;
}
- private void validation() {
- requireNonNull(baseSchemas, "BaseSchemas is not initialized");
- requireNonNull(id, "RemoteDeviceId is not initialized");
- requireNonNull(salFacade, "RemoteDeviceHandler is not initialized");
- requireNonNull(globalProcessingExecutor, "ExecutorService is not initialized");
- requireNonNull(schemaResourcesDTO, "SchemaResourceDTO is not initialized");
+ public @NonNull NetconfDevice build() {
+ return new NetconfDevice(
+ requireNonNull(id, "RemoteDeviceId is not initialized"),
+ requireNonNull(baseSchemaProvider, "BaseNetconfSchemaProvider is not initialized"),
+ requireNonNull(deviceSchemaProvider, "DeviceNetconfSchemaProvider is not initialized"),
+ requireNonNull(salFacade, "RemoteDeviceHandler is not initialized"),
+ requireNonNull(processingExecutor, "Executor is not initialized"),
+ reconnectOnSchemasChange, deviceActionFactory);
}
}