From 7027679764eb24f34a0f6382c3bf58a11243a379 Mon Sep 17 00:00:00 2001 From: Benoit Moriceau Date: Thu, 3 Nov 2022 11:14:12 -0700 Subject: [PATCH 01/12] Extract Operation API --- .../java/io/airbyte/server/ServerFactory.java | 7 +++ .../airbyte/server/apis/ConfigurationApi.java | 39 +++++++++++---- .../server/apis/OperationApiController.java | 48 +++++++++++++++++++ .../apis/binders/OperationApiBinder.java | 16 +++++++ .../apis/factories/OperationApiFactory.java | 22 +++++++++ 5 files changed, 123 insertions(+), 9 deletions(-) create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/OperationApiController.java create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/binders/OperationApiBinder.java create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/factories/OperationApiFactory.java diff --git a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java index 3a368efa19046..73a0c95b28f42 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java +++ b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java @@ -26,6 +26,7 @@ import io.airbyte.server.apis.JobsApiController; import io.airbyte.server.apis.LogsApiController; import io.airbyte.server.apis.NotificationsApiController; +import io.airbyte.server.apis.OperationApiController; import io.airbyte.server.apis.binders.AttemptApiBinder; import io.airbyte.server.apis.binders.ConnectionApiBinder; import io.airbyte.server.apis.binders.DbMigrationBinder; @@ -37,6 +38,7 @@ import io.airbyte.server.apis.binders.JobsApiBinder; import io.airbyte.server.apis.binders.LogsApiBinder; import io.airbyte.server.apis.binders.NotificationApiBinder; +import io.airbyte.server.apis.binders.OperationApiBinder; import io.airbyte.server.apis.binders.SourceOauthApiBinder; import io.airbyte.server.apis.factories.AttemptApiFactory; import io.airbyte.server.apis.factories.ConnectionApiFactory; @@ -49,6 +51,7 @@ import io.airbyte.server.apis.factories.JobsApiFactory; import io.airbyte.server.apis.factories.LogsApiFactory; import io.airbyte.server.apis.factories.NotificationsApiFactory; +import io.airbyte.server.apis.factories.OperationApiFactory; import io.airbyte.server.apis.factories.SourceOauthApiFactory; import io.airbyte.server.handlers.AttemptHandler; import io.airbyte.server.handlers.ConnectionsHandler; @@ -184,6 +187,8 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul NotificationsApiFactory.setValues(workspacesHandler); + OperationApiFactory.setValues(operationsHandler); + // server configurations final Set> componentClasses = Set.of( ConfigurationApi.class, @@ -198,6 +203,7 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul JobsApiController.class, LogsApiController.class, NotificationsApiController.class, + OperationApiController.class, SourceOauthApiFactory.class); final Set components = Set.of( @@ -214,6 +220,7 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul new JobsApiBinder(), new LogsApiBinder(), new NotificationApiBinder(), + new OperationApiBinder(), new SourceOauthApiBinder()); // construct server diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java index ef048a1d8d706..1c4132b6ddab4 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java @@ -838,14 +838,22 @@ public JobInfoRead resetConnection(final ConnectionIdRequestBody connectionIdReq // Operations + /** + * This implementation has been moved to {@link OperationApiController}. Since the path of + * {@link OperationApiController} is more granular, it will override this implementation + */ @Override public CheckOperationRead checkOperation(final OperatorConfiguration operatorConfiguration) { - return execute(() -> operationsHandler.checkOperation(operatorConfiguration)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link OperationApiController}. Since the path of + * {@link OperationApiController} is more granular, it will override this implementation + */ @Override public OperationRead createOperation(final OperationCreate operationCreate) { - return execute(() -> operationsHandler.createOperation(operationCreate)); + throw new NotImplementedException(); } @Override @@ -853,27 +861,40 @@ public ConnectionState createOrUpdateState(final ConnectionStateCreateOrUpdate c return ConfigurationApi.execute(() -> stateHandler.createOrUpdateState(connectionStateCreateOrUpdate)); } + /** + * This implementation has been moved to {@link OperationApiController}. Since the path of + * {@link OperationApiController} is more granular, it will override this implementation + */ @Override public void deleteOperation(final OperationIdRequestBody operationIdRequestBody) { - execute(() -> { - operationsHandler.deleteOperation(operationIdRequestBody); - return null; - }); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link OperationApiController}. Since the path of + * {@link OperationApiController} is more granular, it will override this implementation + */ @Override public OperationReadList listOperationsForConnection(final ConnectionIdRequestBody connectionIdRequestBody) { - return execute(() -> operationsHandler.listOperationsForConnection(connectionIdRequestBody)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link OperationApiController}. Since the path of + * {@link OperationApiController} is more granular, it will override this implementation + */ @Override public OperationRead getOperation(final OperationIdRequestBody operationIdRequestBody) { - return execute(() -> operationsHandler.getOperation(operationIdRequestBody)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link OperationApiController}. Since the path of + * {@link OperationApiController} is more granular, it will override this implementation + */ @Override public OperationRead updateOperation(final OperationUpdate operationUpdate) { - return execute(() -> operationsHandler.updateOperation(operationUpdate)); + throw new NotImplementedException(); } @Override diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/OperationApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/OperationApiController.java new file mode 100644 index 0000000000000..6a663511fc5b0 --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/OperationApiController.java @@ -0,0 +1,48 @@ +package io.airbyte.server.apis; + +import io.airbyte.api.generated.OperationApi; +import io.airbyte.api.model.generated.CheckOperationRead; +import io.airbyte.api.model.generated.ConnectionIdRequestBody; +import io.airbyte.api.model.generated.OperationCreate; +import io.airbyte.api.model.generated.OperationIdRequestBody; +import io.airbyte.api.model.generated.OperationRead; +import io.airbyte.api.model.generated.OperationReadList; +import io.airbyte.api.model.generated.OperationUpdate; +import io.airbyte.api.model.generated.OperatorConfiguration; +import io.airbyte.server.handlers.OperationsHandler; +import javax.ws.rs.Path; +import lombok.AllArgsConstructor; + +@Path("/v1/operations") +@AllArgsConstructor +public class OperationApiController implements OperationApi { + + private final OperationsHandler operationsHandler; + + @Override public CheckOperationRead checkOperation(final OperatorConfiguration operatorConfiguration) { + return ConfigurationApi.execute(() -> operationsHandler.checkOperation(operatorConfiguration)); + } + + @Override public OperationRead createOperation(final OperationCreate operationCreate) { + return ConfigurationApi.execute(() -> operationsHandler.createOperation(operationCreate)); + } + + @Override public void deleteOperation(final OperationIdRequestBody operationIdRequestBody) { + ConfigurationApi.execute(() -> { + operationsHandler.deleteOperation(operationIdRequestBody); + return null; + }); + } + + @Override public OperationRead getOperation(final OperationIdRequestBody operationIdRequestBody) { + return ConfigurationApi.execute(() -> operationsHandler.getOperation(operationIdRequestBody)); + } + + @Override public OperationReadList listOperationsForConnection(final ConnectionIdRequestBody connectionIdRequestBody) { + return ConfigurationApi.execute(() -> operationsHandler.listOperationsForConnection(connectionIdRequestBody)); + } + + @Override public OperationRead updateOperation(final OperationUpdate operationUpdate) { + return ConfigurationApi.execute(() -> operationsHandler.updateOperation(operationUpdate)); + } +} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/binders/OperationApiBinder.java b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/OperationApiBinder.java new file mode 100644 index 0000000000000..ee98ecb3e4697 --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/OperationApiBinder.java @@ -0,0 +1,16 @@ +package io.airbyte.server.apis.binders; + +import io.airbyte.server.apis.OperationApiController; +import io.airbyte.server.apis.factories.OperationApiFactory; +import org.glassfish.hk2.utilities.binding.AbstractBinder; +import org.glassfish.jersey.process.internal.RequestScoped; + +public class OperationApiBinder extends AbstractBinder { + + @Override + protected void configure() { + bindFactory(OperationApiFactory.class) + .to(OperationApiController.class) + .in(RequestScoped.class); + } +} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/factories/OperationApiFactory.java b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/OperationApiFactory.java new file mode 100644 index 0000000000000..2e73f3736c308 --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/OperationApiFactory.java @@ -0,0 +1,22 @@ +package io.airbyte.server.apis.factories; + +import io.airbyte.server.apis.OperationApiController; +import io.airbyte.server.handlers.OperationsHandler; +import org.glassfish.hk2.api.Factory; + +public class OperationApiFactory implements Factory { + + private static OperationsHandler operationsHandler; + + public static void setValues(final OperationsHandler operationsHandler) { + OperationApiFactory.operationsHandler = operationsHandler; + } + + @Override public OperationApiController provide() { + return new OperationApiController(OperationApiFactory.operationsHandler); + } + + @Override public void dispose(final OperationApiController instance) { + /* no op */ + } +} From eb18779447397bc99dc96273480a55add539b3f9 Mon Sep 17 00:00:00 2001 From: Benoit Moriceau Date: Thu, 3 Nov 2022 11:37:51 -0700 Subject: [PATCH 02/12] Extract scheduler API --- .../java/io/airbyte/server/ServerFactory.java | 7 ++++ .../airbyte/server/apis/ConfigurationApi.java | 18 ++++++++-- .../server/apis/OperationApiController.java | 23 ++++++++---- .../server/apis/SchedulerApiController.java | 35 +++++++++++++++++++ .../apis/binders/OperationApiBinder.java | 5 +++ .../apis/binders/SchedulerApiBinder.java | 21 +++++++++++ .../apis/factories/OperationApiFactory.java | 11 ++++-- .../apis/factories/SchedulerApiFactory.java | 29 +++++++++++++++ 8 files changed, 138 insertions(+), 11 deletions(-) create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/SchedulerApiController.java create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/binders/SchedulerApiBinder.java create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/factories/SchedulerApiFactory.java diff --git a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java index 73a0c95b28f42..1052585ae4376 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java +++ b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java @@ -27,6 +27,7 @@ import io.airbyte.server.apis.LogsApiController; import io.airbyte.server.apis.NotificationsApiController; import io.airbyte.server.apis.OperationApiController; +import io.airbyte.server.apis.SchedulerApiController; import io.airbyte.server.apis.binders.AttemptApiBinder; import io.airbyte.server.apis.binders.ConnectionApiBinder; import io.airbyte.server.apis.binders.DbMigrationBinder; @@ -39,6 +40,7 @@ import io.airbyte.server.apis.binders.LogsApiBinder; import io.airbyte.server.apis.binders.NotificationApiBinder; import io.airbyte.server.apis.binders.OperationApiBinder; +import io.airbyte.server.apis.binders.SchedulerApiBinder; import io.airbyte.server.apis.binders.SourceOauthApiBinder; import io.airbyte.server.apis.factories.AttemptApiFactory; import io.airbyte.server.apis.factories.ConnectionApiFactory; @@ -52,6 +54,7 @@ import io.airbyte.server.apis.factories.LogsApiFactory; import io.airbyte.server.apis.factories.NotificationsApiFactory; import io.airbyte.server.apis.factories.OperationApiFactory; +import io.airbyte.server.apis.factories.SchedulerApiFactory; import io.airbyte.server.apis.factories.SourceOauthApiFactory; import io.airbyte.server.handlers.AttemptHandler; import io.airbyte.server.handlers.ConnectionsHandler; @@ -189,6 +192,8 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul OperationApiFactory.setValues(operationsHandler); + SchedulerApiFactory.setValues(schedulerHandler); + // server configurations final Set> componentClasses = Set.of( ConfigurationApi.class, @@ -204,6 +209,7 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul LogsApiController.class, NotificationsApiController.class, OperationApiController.class, + SchedulerApiController.class, SourceOauthApiFactory.class); final Set components = Set.of( @@ -221,6 +227,7 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul new LogsApiBinder(), new NotificationApiBinder(), new OperationApiBinder(), + new SchedulerApiBinder(), new SourceOauthApiBinder()); // construct server diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java index 1c4132b6ddab4..d702f3aa290d8 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java @@ -903,19 +903,31 @@ public ConnectionState getState(final ConnectionIdRequestBody connectionIdReques } // SCHEDULER + /** + * This implementation has been moved to {@link SchedulerApiController}. Since the path of + * {@link SchedulerApiController} is more granular, it will override this implementation + */ @Override public CheckConnectionRead executeSourceCheckConnection(final SourceCoreConfig sourceConfig) { - return execute(() -> schedulerHandler.checkSourceConnectionFromSourceCreate(sourceConfig)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SchedulerApiController}. Since the path of + * {@link SchedulerApiController} is more granular, it will override this implementation + */ @Override public CheckConnectionRead executeDestinationCheckConnection(final DestinationCoreConfig destinationConfig) { - return execute(() -> schedulerHandler.checkDestinationConnectionFromDestinationCreate(destinationConfig)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SchedulerApiController}. Since the path of + * {@link SchedulerApiController} is more granular, it will override this implementation + */ @Override public SourceDiscoverSchemaRead executeSourceDiscoverSchema(final SourceCoreConfig sourceCreate) { - return execute(() -> schedulerHandler.discoverSchemaForSourceFromSourceCreate(sourceCreate)); + throw new NotImplementedException(); } /** diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/OperationApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/OperationApiController.java index 6a663511fc5b0..fb6f9b04b0f27 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/OperationApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/OperationApiController.java @@ -1,3 +1,7 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + package io.airbyte.server.apis; import io.airbyte.api.generated.OperationApi; @@ -19,30 +23,37 @@ public class OperationApiController implements OperationApi { private final OperationsHandler operationsHandler; - @Override public CheckOperationRead checkOperation(final OperatorConfiguration operatorConfiguration) { + @Override + public CheckOperationRead checkOperation(final OperatorConfiguration operatorConfiguration) { return ConfigurationApi.execute(() -> operationsHandler.checkOperation(operatorConfiguration)); } - @Override public OperationRead createOperation(final OperationCreate operationCreate) { + @Override + public OperationRead createOperation(final OperationCreate operationCreate) { return ConfigurationApi.execute(() -> operationsHandler.createOperation(operationCreate)); } - @Override public void deleteOperation(final OperationIdRequestBody operationIdRequestBody) { + @Override + public void deleteOperation(final OperationIdRequestBody operationIdRequestBody) { ConfigurationApi.execute(() -> { operationsHandler.deleteOperation(operationIdRequestBody); return null; }); } - @Override public OperationRead getOperation(final OperationIdRequestBody operationIdRequestBody) { + @Override + public OperationRead getOperation(final OperationIdRequestBody operationIdRequestBody) { return ConfigurationApi.execute(() -> operationsHandler.getOperation(operationIdRequestBody)); } - @Override public OperationReadList listOperationsForConnection(final ConnectionIdRequestBody connectionIdRequestBody) { + @Override + public OperationReadList listOperationsForConnection(final ConnectionIdRequestBody connectionIdRequestBody) { return ConfigurationApi.execute(() -> operationsHandler.listOperationsForConnection(connectionIdRequestBody)); } - @Override public OperationRead updateOperation(final OperationUpdate operationUpdate) { + @Override + public OperationRead updateOperation(final OperationUpdate operationUpdate) { return ConfigurationApi.execute(() -> operationsHandler.updateOperation(operationUpdate)); } + } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/SchedulerApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/SchedulerApiController.java new file mode 100644 index 0000000000000..a3cd0baecbe1c --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/SchedulerApiController.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis; + +import io.airbyte.api.generated.SchedulerApi; +import io.airbyte.api.model.generated.CheckConnectionRead; +import io.airbyte.api.model.generated.DestinationCoreConfig; +import io.airbyte.api.model.generated.SourceCoreConfig; +import io.airbyte.api.model.generated.SourceDiscoverSchemaRead; +import io.airbyte.server.handlers.SchedulerHandler; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public class SchedulerApiController implements SchedulerApi { + + private final SchedulerHandler schedulerHandler; + + @Override + public CheckConnectionRead executeDestinationCheckConnection(final DestinationCoreConfig destinationCoreConfig) { + return ConfigurationApi.execute(() -> schedulerHandler.checkDestinationConnectionFromDestinationCreate(destinationCoreConfig)); + } + + @Override + public CheckConnectionRead executeSourceCheckConnection(final SourceCoreConfig sourceCoreConfig) { + return ConfigurationApi.execute(() -> schedulerHandler.checkSourceConnectionFromSourceCreate(sourceCoreConfig)); + } + + @Override + public SourceDiscoverSchemaRead executeSourceDiscoverSchema(final SourceCoreConfig sourceCoreConfig) { + return ConfigurationApi.execute(() -> schedulerHandler.discoverSchemaForSourceFromSourceCreate(sourceCoreConfig)); + } + +} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/binders/OperationApiBinder.java b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/OperationApiBinder.java index ee98ecb3e4697..52d55383aeca7 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/binders/OperationApiBinder.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/OperationApiBinder.java @@ -1,3 +1,7 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + package io.airbyte.server.apis.binders; import io.airbyte.server.apis.OperationApiController; @@ -13,4 +17,5 @@ protected void configure() { .to(OperationApiController.class) .in(RequestScoped.class); } + } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/binders/SchedulerApiBinder.java b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/SchedulerApiBinder.java new file mode 100644 index 0000000000000..64a904193b908 --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/SchedulerApiBinder.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis.binders; + +import io.airbyte.server.apis.SchedulerApiController; +import io.airbyte.server.apis.factories.SchedulerApiFactory; +import org.glassfish.hk2.utilities.binding.AbstractBinder; +import org.glassfish.jersey.process.internal.RequestScoped; + +public class SchedulerApiBinder extends AbstractBinder { + + @Override + protected void configure() { + bindFactory(SchedulerApiFactory.class) + .to(SchedulerApiController.class) + .in(RequestScoped.class); + } + +} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/factories/OperationApiFactory.java b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/OperationApiFactory.java index 2e73f3736c308..d74ad91381704 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/factories/OperationApiFactory.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/OperationApiFactory.java @@ -1,3 +1,7 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + package io.airbyte.server.apis.factories; import io.airbyte.server.apis.OperationApiController; @@ -12,11 +16,14 @@ public static void setValues(final OperationsHandler operationsHandler) { OperationApiFactory.operationsHandler = operationsHandler; } - @Override public OperationApiController provide() { + @Override + public OperationApiController provide() { return new OperationApiController(OperationApiFactory.operationsHandler); } - @Override public void dispose(final OperationApiController instance) { + @Override + public void dispose(final OperationApiController instance) { /* no op */ } + } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/factories/SchedulerApiFactory.java b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/SchedulerApiFactory.java new file mode 100644 index 0000000000000..7ba4cf9b9ff20 --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/SchedulerApiFactory.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis.factories; + +import io.airbyte.server.apis.SchedulerApiController; +import io.airbyte.server.handlers.SchedulerHandler; +import org.glassfish.hk2.api.Factory; + +public class SchedulerApiFactory implements Factory { + + private static SchedulerHandler schedulerHandler; + + public static void setValues(final SchedulerHandler schedulerHandler) { + SchedulerApiFactory.schedulerHandler = schedulerHandler; + } + + @Override + public SchedulerApiController provide() { + return new SchedulerApiController(SchedulerApiFactory.schedulerHandler); + } + + @Override + public void dispose(final SchedulerApiController instance) { + /* no op */ + } + +} From 05ffc3ad41e81bb77dbb9abb44d71804baf03076 Mon Sep 17 00:00:00 2001 From: Benoit Moriceau Date: Thu, 3 Nov 2022 11:38:56 -0700 Subject: [PATCH 03/12] Format --- .../server/apis/OperationApiController.java | 23 ++++++++++++++----- .../apis/binders/OperationApiBinder.java | 5 ++++ .../apis/factories/OperationApiFactory.java | 11 +++++++-- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/OperationApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/OperationApiController.java index 6a663511fc5b0..fb6f9b04b0f27 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/OperationApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/OperationApiController.java @@ -1,3 +1,7 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + package io.airbyte.server.apis; import io.airbyte.api.generated.OperationApi; @@ -19,30 +23,37 @@ public class OperationApiController implements OperationApi { private final OperationsHandler operationsHandler; - @Override public CheckOperationRead checkOperation(final OperatorConfiguration operatorConfiguration) { + @Override + public CheckOperationRead checkOperation(final OperatorConfiguration operatorConfiguration) { return ConfigurationApi.execute(() -> operationsHandler.checkOperation(operatorConfiguration)); } - @Override public OperationRead createOperation(final OperationCreate operationCreate) { + @Override + public OperationRead createOperation(final OperationCreate operationCreate) { return ConfigurationApi.execute(() -> operationsHandler.createOperation(operationCreate)); } - @Override public void deleteOperation(final OperationIdRequestBody operationIdRequestBody) { + @Override + public void deleteOperation(final OperationIdRequestBody operationIdRequestBody) { ConfigurationApi.execute(() -> { operationsHandler.deleteOperation(operationIdRequestBody); return null; }); } - @Override public OperationRead getOperation(final OperationIdRequestBody operationIdRequestBody) { + @Override + public OperationRead getOperation(final OperationIdRequestBody operationIdRequestBody) { return ConfigurationApi.execute(() -> operationsHandler.getOperation(operationIdRequestBody)); } - @Override public OperationReadList listOperationsForConnection(final ConnectionIdRequestBody connectionIdRequestBody) { + @Override + public OperationReadList listOperationsForConnection(final ConnectionIdRequestBody connectionIdRequestBody) { return ConfigurationApi.execute(() -> operationsHandler.listOperationsForConnection(connectionIdRequestBody)); } - @Override public OperationRead updateOperation(final OperationUpdate operationUpdate) { + @Override + public OperationRead updateOperation(final OperationUpdate operationUpdate) { return ConfigurationApi.execute(() -> operationsHandler.updateOperation(operationUpdate)); } + } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/binders/OperationApiBinder.java b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/OperationApiBinder.java index ee98ecb3e4697..52d55383aeca7 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/binders/OperationApiBinder.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/OperationApiBinder.java @@ -1,3 +1,7 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + package io.airbyte.server.apis.binders; import io.airbyte.server.apis.OperationApiController; @@ -13,4 +17,5 @@ protected void configure() { .to(OperationApiController.class) .in(RequestScoped.class); } + } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/factories/OperationApiFactory.java b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/OperationApiFactory.java index 2e73f3736c308..d74ad91381704 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/factories/OperationApiFactory.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/OperationApiFactory.java @@ -1,3 +1,7 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + package io.airbyte.server.apis.factories; import io.airbyte.server.apis.OperationApiController; @@ -12,11 +16,14 @@ public static void setValues(final OperationsHandler operationsHandler) { OperationApiFactory.operationsHandler = operationsHandler; } - @Override public OperationApiController provide() { + @Override + public OperationApiController provide() { return new OperationApiController(OperationApiFactory.operationsHandler); } - @Override public void dispose(final OperationApiController instance) { + @Override + public void dispose(final OperationApiController instance) { /* no op */ } + } From 88c255712c13278b9071b58f1fa5cc675ecc75af Mon Sep 17 00:00:00 2001 From: Benoit Moriceau Date: Thu, 3 Nov 2022 15:22:16 -0700 Subject: [PATCH 04/12] extract source api --- .../java/io/airbyte/server/ServerApp.java | 1 + .../java/io/airbyte/server/ServerFactory.java | 10 +++ .../airbyte/server/apis/ConfigurationApi.java | 63 +++++++++++--- .../server/apis/SourceApiController.java | 84 +++++++++++++++++++ .../server/apis/binders/SourceApiBinder.java | 21 +++++ .../apis/factories/SourceApiFactory.java | 32 +++++++ 6 files changed, 198 insertions(+), 13 deletions(-) create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/SourceApiController.java create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/binders/SourceApiBinder.java create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/factories/SourceApiFactory.java diff --git a/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java b/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java index 6d2dd86333822..ac5ea1df496ec 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java +++ b/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java @@ -367,6 +367,7 @@ public static ServerRunnable getServer(final ServerFactory apiFactory, openApiConfigHandler, operationsHandler, schedulerHandler, + sourceHandler, workspacesHandler); } diff --git a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java index e6fc1463c3262..bc5048a098aa7 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java +++ b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java @@ -29,6 +29,7 @@ import io.airbyte.server.apis.OpenapiApiController; import io.airbyte.server.apis.OperationApiController; import io.airbyte.server.apis.SchedulerApiController; +import io.airbyte.server.apis.SourceApiController; import io.airbyte.server.apis.binders.AttemptApiBinder; import io.airbyte.server.apis.binders.ConnectionApiBinder; import io.airbyte.server.apis.binders.DbMigrationBinder; @@ -43,6 +44,7 @@ import io.airbyte.server.apis.binders.OpenapiApiBinder; import io.airbyte.server.apis.binders.OperationApiBinder; import io.airbyte.server.apis.binders.SchedulerApiBinder; +import io.airbyte.server.apis.binders.SourceApiBinder; import io.airbyte.server.apis.binders.SourceOauthApiBinder; import io.airbyte.server.apis.factories.AttemptApiFactory; import io.airbyte.server.apis.factories.ConnectionApiFactory; @@ -58,6 +60,7 @@ import io.airbyte.server.apis.factories.OpenapiApiFactory; import io.airbyte.server.apis.factories.OperationApiFactory; import io.airbyte.server.apis.factories.SchedulerApiFactory; +import io.airbyte.server.apis.factories.SourceApiFactory; import io.airbyte.server.apis.factories.SourceOauthApiFactory; import io.airbyte.server.handlers.AttemptHandler; import io.airbyte.server.handlers.ConnectionsHandler; @@ -71,6 +74,7 @@ import io.airbyte.server.handlers.OpenApiConfigHandler; import io.airbyte.server.handlers.OperationsHandler; import io.airbyte.server.handlers.SchedulerHandler; +import io.airbyte.server.handlers.SourceHandler; import io.airbyte.server.handlers.WorkspacesHandler; import io.airbyte.server.scheduler.EventRunner; import io.airbyte.server.scheduler.SynchronousSchedulerClient; @@ -111,6 +115,7 @@ ServerRunnable create(final SynchronousSchedulerClient synchronousSchedulerClien final OpenApiConfigHandler openApiConfigHandler, final OperationsHandler operationsHandler, final SchedulerHandler schedulerHandler, + final SourceHandler sourceHandler, final WorkspacesHandler workspacesHandler); class Api implements ServerFactory { @@ -144,6 +149,7 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul final OpenApiConfigHandler openApiConfigHandler, final OperationsHandler operationsHandler, final SchedulerHandler schedulerHandler, + final SourceHandler sourceHandler, final WorkspacesHandler workspacesHandler) { final Map mdc = MDC.getCopyOfContextMap(); @@ -202,6 +208,8 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul SchedulerApiFactory.setValues(schedulerHandler); + SourceApiFactory.setValues(schedulerHandler, sourceHandler); + // server configurations final Set> componentClasses = Set.of( ConfigurationApi.class, @@ -219,6 +227,7 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul OpenapiApiController.class, OperationApiController.class, SchedulerApiController.class, + SourceApiController.class, SourceOauthApiFactory.class); final Set components = Set.of( @@ -238,6 +247,7 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul new OpenapiApiBinder(), new OperationApiBinder(), new SchedulerApiBinder(), + new SourceApiBinder(), new SourceOauthApiBinder()); // construct server diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java index e115d559cae2b..06534380d2679 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java @@ -436,57 +436,94 @@ public InternalOperationResult setWorkflowInAttempt(final SetWorkflowInAttemptRe // SOURCE IMPLEMENTATION + /** + * This implementation has been moved to {@link SourceApiController}. Since the path of + * {@link SourceApiController} is more granular, it will override this implementation + */ @Override public SourceRead createSource(final SourceCreate sourceCreate) { - return execute(() -> sourceHandler.createSource(sourceCreate)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceApiController}. Since the path of + * {@link SourceApiController} is more granular, it will override this implementation + */ @Override public SourceRead updateSource(final SourceUpdate sourceUpdate) { - return execute(() -> sourceHandler.updateSource(sourceUpdate)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceApiController}. Since the path of + * {@link SourceApiController} is more granular, it will override this implementation + */ @Override public SourceReadList listSourcesForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - return execute(() -> sourceHandler.listSourcesForWorkspace(workspaceIdRequestBody)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceApiController}. Since the path of + * {@link SourceApiController} is more granular, it will override this implementation + */ @Override public SourceReadList searchSources(final SourceSearch sourceSearch) { - return execute(() -> sourceHandler.searchSources(sourceSearch)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceApiController}. Since the path of + * {@link SourceApiController} is more granular, it will override this implementation + */ @Override public SourceRead getSource(final SourceIdRequestBody sourceIdRequestBody) { - return execute(() -> sourceHandler.getSource(sourceIdRequestBody)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceApiController}. Since the path of + * {@link SourceApiController} is more granular, it will override this implementation + */ @Override public void deleteSource(final SourceIdRequestBody sourceIdRequestBody) { - execute(() -> { - sourceHandler.deleteSource(sourceIdRequestBody); - return null; - }); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceApiController}. Since the path of + * {@link SourceApiController} is more granular, it will override this implementation + */ @Override public SourceRead cloneSource(final SourceCloneRequestBody sourceCloneRequestBody) { - return execute(() -> sourceHandler.cloneSource(sourceCloneRequestBody)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceApiController}. Since the path of + * {@link SourceApiController} is more granular, it will override this implementation + */ @Override public CheckConnectionRead checkConnectionToSource(final SourceIdRequestBody sourceIdRequestBody) { - return execute(() -> schedulerHandler.checkSourceConnectionFromSourceId(sourceIdRequestBody)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceApiController}. Since the path of + * {@link SourceApiController} is more granular, it will override this implementation + */ @Override public CheckConnectionRead checkConnectionToSourceForUpdate(final SourceUpdate sourceUpdate) { - return execute(() -> schedulerHandler.checkSourceConnectionFromSourceIdForUpdate(sourceUpdate)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceApiController}. Since the path of + * {@link SourceApiController} is more granular, it will override this implementation + */ @Override public SourceDiscoverSchemaRead discoverSchemaForSource(final SourceDiscoverSchemaRequestBody discoverSchemaRequestBody) { - return execute(() -> schedulerHandler.discoverSchemaForSourceFromSourceId(discoverSchemaRequestBody)); + throw new NotImplementedException(); } // DB MIGRATION diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/SourceApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/SourceApiController.java new file mode 100644 index 0000000000000..4086da7f60f2a --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/SourceApiController.java @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis; + +import io.airbyte.api.generated.SourceApi; +import io.airbyte.api.model.generated.CheckConnectionRead; +import io.airbyte.api.model.generated.SourceCloneRequestBody; +import io.airbyte.api.model.generated.SourceCreate; +import io.airbyte.api.model.generated.SourceDiscoverSchemaRead; +import io.airbyte.api.model.generated.SourceDiscoverSchemaRequestBody; +import io.airbyte.api.model.generated.SourceIdRequestBody; +import io.airbyte.api.model.generated.SourceRead; +import io.airbyte.api.model.generated.SourceReadList; +import io.airbyte.api.model.generated.SourceSearch; +import io.airbyte.api.model.generated.SourceUpdate; +import io.airbyte.api.model.generated.WorkspaceIdRequestBody; +import io.airbyte.server.handlers.SchedulerHandler; +import io.airbyte.server.handlers.SourceHandler; +import javax.ws.rs.Path; +import lombok.AllArgsConstructor; + +@Path("/v1/sources") +@AllArgsConstructor +public class SourceApiController implements SourceApi { + + private final SchedulerHandler schedulerHandler; + private final SourceHandler sourceHandler; + + @Override + public CheckConnectionRead checkConnectionToSource(final SourceIdRequestBody sourceIdRequestBody) { + return ConfigurationApi.execute(() -> schedulerHandler.checkSourceConnectionFromSourceId(sourceIdRequestBody)); + } + + @Override + public CheckConnectionRead checkConnectionToSourceForUpdate(final SourceUpdate sourceUpdate) { + return ConfigurationApi.execute(() -> schedulerHandler.checkSourceConnectionFromSourceIdForUpdate(sourceUpdate)); + } + + @Override + public SourceRead cloneSource(final SourceCloneRequestBody sourceCloneRequestBody) { + return ConfigurationApi.execute(() -> sourceHandler.cloneSource(sourceCloneRequestBody)); + } + + @Override + public SourceRead createSource(final SourceCreate sourceCreate) { + return ConfigurationApi.execute(() -> sourceHandler.createSource(sourceCreate)); + } + + @Override + public void deleteSource(final SourceIdRequestBody sourceIdRequestBody) { + ConfigurationApi.execute(() -> { + sourceHandler.deleteSource(sourceIdRequestBody); + return null; + }); + } + + @Override + public SourceDiscoverSchemaRead discoverSchemaForSource(final SourceDiscoverSchemaRequestBody sourceDiscoverSchemaRequestBody) { + return ConfigurationApi.execute(() -> schedulerHandler.discoverSchemaForSourceFromSourceId(sourceDiscoverSchemaRequestBody)); + } + + @Override + public SourceRead getSource(final SourceIdRequestBody sourceIdRequestBody) { + return ConfigurationApi.execute(() -> sourceHandler.getSource(sourceIdRequestBody)); + } + + @Override + public SourceReadList listSourcesForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { + return ConfigurationApi.execute(() -> sourceHandler.listSourcesForWorkspace(workspaceIdRequestBody)); + } + + @Override + public SourceReadList searchSources(final SourceSearch sourceSearch) { + return ConfigurationApi.execute(() -> sourceHandler.searchSources(sourceSearch)); + } + + @Override + public SourceRead updateSource(final SourceUpdate sourceUpdate) { + return ConfigurationApi.execute(() -> sourceHandler.updateSource(sourceUpdate)); + } + +} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/binders/SourceApiBinder.java b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/SourceApiBinder.java new file mode 100644 index 0000000000000..9707ee1d1477f --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/SourceApiBinder.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis.binders; + +import io.airbyte.server.apis.SourceApiController; +import io.airbyte.server.apis.factories.SourceApiFactory; +import org.glassfish.hk2.utilities.binding.AbstractBinder; +import org.glassfish.jersey.process.internal.RequestScoped; + +public class SourceApiBinder extends AbstractBinder { + + @Override + protected void configure() { + bindFactory(SourceApiFactory.class) + .to(SourceApiController.class) + .in(RequestScoped.class); + } + +} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/factories/SourceApiFactory.java b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/SourceApiFactory.java new file mode 100644 index 0000000000000..aceda0580dde4 --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/SourceApiFactory.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis.factories; + +import io.airbyte.server.apis.SourceApiController; +import io.airbyte.server.handlers.SchedulerHandler; +import io.airbyte.server.handlers.SourceHandler; +import org.glassfish.hk2.api.Factory; + +public class SourceApiFactory implements Factory { + + private static SchedulerHandler schedulerHandler; + private static SourceHandler sourceHandler; + + public static void setValues(final SchedulerHandler schedulerHandler, final SourceHandler sourceHandler) { + SourceApiFactory.schedulerHandler = schedulerHandler; + SourceApiFactory.sourceHandler = sourceHandler; + } + + @Override + public SourceApiController provide() { + return new SourceApiController(schedulerHandler, sourceHandler); + } + + @Override + public void dispose(final SourceApiController instance) { + /* no op */ + } + +} From af8651749e984e83d8a952c891b11417378a44db Mon Sep 17 00:00:00 2001 From: Benoit Moriceau Date: Fri, 4 Nov 2022 11:01:14 -0700 Subject: [PATCH 05/12] Extract source definition api --- .../java/io/airbyte/server/ServerApp.java | 1 + .../java/io/airbyte/server/ServerFactory.java | 10 ++ .../airbyte/server/apis/ConfigurationApi.java | 93 +++++++++++---- .../apis/SourceDefinitionApiController.java | 108 ++++++++++++++++++ .../binders/SourceDefinitionApiBinder.java | 21 ++++ .../factories/SourceDefinitionApiFactory.java | 29 +++++ 6 files changed, 239 insertions(+), 23 deletions(-) create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionApiController.java create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/binders/SourceDefinitionApiBinder.java create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/factories/SourceDefinitionApiFactory.java diff --git a/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java b/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java index ac5ea1df496ec..85fd59e241020 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java +++ b/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java @@ -368,6 +368,7 @@ public static ServerRunnable getServer(final ServerFactory apiFactory, operationsHandler, schedulerHandler, sourceHandler, + sourceDefinitionsHandler, workspacesHandler); } diff --git a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java index bc5048a098aa7..87bc02784a1f4 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java +++ b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java @@ -30,6 +30,7 @@ import io.airbyte.server.apis.OperationApiController; import io.airbyte.server.apis.SchedulerApiController; import io.airbyte.server.apis.SourceApiController; +import io.airbyte.server.apis.SourceDefinitionApiController; import io.airbyte.server.apis.binders.AttemptApiBinder; import io.airbyte.server.apis.binders.ConnectionApiBinder; import io.airbyte.server.apis.binders.DbMigrationBinder; @@ -45,6 +46,7 @@ import io.airbyte.server.apis.binders.OperationApiBinder; import io.airbyte.server.apis.binders.SchedulerApiBinder; import io.airbyte.server.apis.binders.SourceApiBinder; +import io.airbyte.server.apis.binders.SourceDefinitionApiBinder; import io.airbyte.server.apis.binders.SourceOauthApiBinder; import io.airbyte.server.apis.factories.AttemptApiFactory; import io.airbyte.server.apis.factories.ConnectionApiFactory; @@ -61,6 +63,7 @@ import io.airbyte.server.apis.factories.OperationApiFactory; import io.airbyte.server.apis.factories.SchedulerApiFactory; import io.airbyte.server.apis.factories.SourceApiFactory; +import io.airbyte.server.apis.factories.SourceDefinitionApiFactory; import io.airbyte.server.apis.factories.SourceOauthApiFactory; import io.airbyte.server.handlers.AttemptHandler; import io.airbyte.server.handlers.ConnectionsHandler; @@ -74,6 +77,7 @@ import io.airbyte.server.handlers.OpenApiConfigHandler; import io.airbyte.server.handlers.OperationsHandler; import io.airbyte.server.handlers.SchedulerHandler; +import io.airbyte.server.handlers.SourceDefinitionsHandler; import io.airbyte.server.handlers.SourceHandler; import io.airbyte.server.handlers.WorkspacesHandler; import io.airbyte.server.scheduler.EventRunner; @@ -116,6 +120,7 @@ ServerRunnable create(final SynchronousSchedulerClient synchronousSchedulerClien final OperationsHandler operationsHandler, final SchedulerHandler schedulerHandler, final SourceHandler sourceHandler, + final SourceDefinitionsHandler sourceDefinitionsHandler, final WorkspacesHandler workspacesHandler); class Api implements ServerFactory { @@ -150,6 +155,7 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul final OperationsHandler operationsHandler, final SchedulerHandler schedulerHandler, final SourceHandler sourceHandler, + final SourceDefinitionsHandler sourceDefinitionsHandler, final WorkspacesHandler workspacesHandler) { final Map mdc = MDC.getCopyOfContextMap(); @@ -210,6 +216,8 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul SourceApiFactory.setValues(schedulerHandler, sourceHandler); + SourceDefinitionApiFactory.setValues(sourceDefinitionsHandler); + // server configurations final Set> componentClasses = Set.of( ConfigurationApi.class, @@ -228,6 +236,7 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul OperationApiController.class, SchedulerApiController.class, SourceApiController.class, + SourceDefinitionApiController.class, SourceOauthApiFactory.class); final Set components = Set.of( @@ -248,6 +257,7 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul new OperationApiBinder(), new SchedulerApiBinder(), new SourceApiBinder(), + new SourceDefinitionApiBinder(), new SourceOauthApiBinder()); // construct server diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java index 06534380d2679..7e8deb80b1eac 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java @@ -281,85 +281,132 @@ public NotificationRead tryNotificationConfig(final Notification notification) { // SOURCE + /** + * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of + * {@link SourceDefinitionApiController} is more granular, it will override this implementation + */ @Override public SourceDefinitionReadList listSourceDefinitions() { - return execute(sourceDefinitionsHandler::listSourceDefinitions); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of + * {@link SourceDefinitionApiController} is more granular, it will override this implementation + */ @Override public SourceDefinitionReadList listSourceDefinitionsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - return execute(() -> sourceDefinitionsHandler.listSourceDefinitionsForWorkspace(workspaceIdRequestBody)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of + * {@link SourceDefinitionApiController} is more granular, it will override this implementation + */ @Override public SourceDefinitionReadList listLatestSourceDefinitions() { - return execute(sourceDefinitionsHandler::listLatestSourceDefinitions); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of + * {@link SourceDefinitionApiController} is more granular, it will override this implementation + */ @Override public PrivateSourceDefinitionReadList listPrivateSourceDefinitions(final WorkspaceIdRequestBody workspaceIdRequestBody) { - return execute(() -> sourceDefinitionsHandler.listPrivateSourceDefinitions(workspaceIdRequestBody)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of + * {@link SourceDefinitionApiController} is more granular, it will override this implementation + */ @Override public SourceDefinitionRead getSourceDefinition(final SourceDefinitionIdRequestBody sourceDefinitionIdRequestBody) { - return execute(() -> sourceDefinitionsHandler.getSourceDefinition(sourceDefinitionIdRequestBody)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of + * {@link SourceDefinitionApiController} is more granular, it will override this implementation + */ @Override public SourceDefinitionRead getSourceDefinitionForWorkspace(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { - return execute(() -> sourceDefinitionsHandler.getSourceDefinitionForWorkspace(sourceDefinitionIdWithWorkspaceId)); + throw new NotImplementedException(); } // TODO: Deprecate this route in favor of createCustomSourceDefinition // since all connector definitions created through the API are custom + /** + * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of + * {@link SourceDefinitionApiController} is more granular, it will override this implementation + */ @Override public SourceDefinitionRead createSourceDefinition(final SourceDefinitionCreate sourceDefinitionCreate) { - return execute(() -> sourceDefinitionsHandler.createPrivateSourceDefinition(sourceDefinitionCreate)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of + * {@link SourceDefinitionApiController} is more granular, it will override this implementation + */ @Override public SourceDefinitionRead createCustomSourceDefinition(final CustomSourceDefinitionCreate customSourceDefinitionCreate) { - return execute(() -> sourceDefinitionsHandler.createCustomSourceDefinition(customSourceDefinitionCreate)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of + * {@link SourceDefinitionApiController} is more granular, it will override this implementation + */ @Override public SourceDefinitionRead updateSourceDefinition(final SourceDefinitionUpdate sourceDefinitionUpdate) { - return execute(() -> sourceDefinitionsHandler.updateSourceDefinition(sourceDefinitionUpdate)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of + * {@link SourceDefinitionApiController} is more granular, it will override this implementation + */ @Override public SourceDefinitionRead updateCustomSourceDefinition(final CustomSourceDefinitionUpdate customSourceDefinitionUpdate) { - return execute(() -> sourceDefinitionsHandler.updateCustomSourceDefinition(customSourceDefinitionUpdate)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of + * {@link SourceDefinitionApiController} is more granular, it will override this implementation + */ @Override public void deleteSourceDefinition(final SourceDefinitionIdRequestBody sourceDefinitionIdRequestBody) { - execute(() -> { - sourceDefinitionsHandler.deleteSourceDefinition(sourceDefinitionIdRequestBody); - return null; - }); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of + * {@link SourceDefinitionApiController} is more granular, it will override this implementation + */ @Override public void deleteCustomSourceDefinition(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { - execute(() -> { - sourceDefinitionsHandler.deleteCustomSourceDefinition(sourceDefinitionIdWithWorkspaceId); - return null; - }); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of + * {@link SourceDefinitionApiController} is more granular, it will override this implementation + */ @Override public PrivateSourceDefinitionRead grantSourceDefinitionToWorkspace(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { - return execute(() -> sourceDefinitionsHandler.grantSourceDefinitionToWorkspace(sourceDefinitionIdWithWorkspaceId)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of + * {@link SourceDefinitionApiController} is more granular, it will override this implementation + */ @Override public void revokeSourceDefinitionFromWorkspace(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { - execute(() -> { - sourceDefinitionsHandler.revokeSourceDefinitionFromWorkspace(sourceDefinitionIdWithWorkspaceId); - return null; - }); + throw new NotImplementedException(); } // SOURCE SPECIFICATION diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionApiController.java new file mode 100644 index 0000000000000..ae5f2f8037487 --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionApiController.java @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis; + +import io.airbyte.api.generated.SourceDefinitionApi; +import io.airbyte.api.model.generated.CustomSourceDefinitionCreate; +import io.airbyte.api.model.generated.CustomSourceDefinitionUpdate; +import io.airbyte.api.model.generated.PrivateSourceDefinitionRead; +import io.airbyte.api.model.generated.PrivateSourceDefinitionReadList; +import io.airbyte.api.model.generated.SourceDefinitionCreate; +import io.airbyte.api.model.generated.SourceDefinitionIdRequestBody; +import io.airbyte.api.model.generated.SourceDefinitionIdWithWorkspaceId; +import io.airbyte.api.model.generated.SourceDefinitionRead; +import io.airbyte.api.model.generated.SourceDefinitionReadList; +import io.airbyte.api.model.generated.SourceDefinitionUpdate; +import io.airbyte.api.model.generated.WorkspaceIdRequestBody; +import io.airbyte.server.handlers.SourceDefinitionsHandler; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public class SourceDefinitionApiController implements SourceDefinitionApi { + + private final SourceDefinitionsHandler sourceDefinitionsHandler; + + @Override + public SourceDefinitionRead createCustomSourceDefinition(final CustomSourceDefinitionCreate customSourceDefinitionCreate) { + return ConfigurationApi.execute(() -> sourceDefinitionsHandler.createCustomSourceDefinition(customSourceDefinitionCreate)); + } + + // TODO: Deprecate this route in favor of createCustomSourceDefinition + // since all connector definitions created through the API are custom + @Override + public SourceDefinitionRead createSourceDefinition(final SourceDefinitionCreate sourceDefinitionCreate) { + return ConfigurationApi.execute(() -> sourceDefinitionsHandler.createPrivateSourceDefinition(sourceDefinitionCreate)); + } + + @Override + public void deleteCustomSourceDefinition(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { + ConfigurationApi.execute(() -> { + sourceDefinitionsHandler.deleteCustomSourceDefinition(sourceDefinitionIdWithWorkspaceId); + return null; + }); + } + + @Override + public void deleteSourceDefinition(final SourceDefinitionIdRequestBody sourceDefinitionIdRequestBody) { + ConfigurationApi.execute(() -> { + sourceDefinitionsHandler.deleteSourceDefinition(sourceDefinitionIdRequestBody); + return null; + }); + } + + @Override + public SourceDefinitionRead getSourceDefinition(final SourceDefinitionIdRequestBody sourceDefinitionIdRequestBody) { + return ConfigurationApi.execute(() -> sourceDefinitionsHandler.getSourceDefinition(sourceDefinitionIdRequestBody)); + } + + @Override + public SourceDefinitionRead getSourceDefinitionForWorkspace(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { + return ConfigurationApi.execute(() -> sourceDefinitionsHandler.getSourceDefinitionForWorkspace(sourceDefinitionIdWithWorkspaceId)); + } + + @Override + public PrivateSourceDefinitionRead grantSourceDefinitionToWorkspace(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { + return ConfigurationApi.execute(() -> sourceDefinitionsHandler.grantSourceDefinitionToWorkspace(sourceDefinitionIdWithWorkspaceId)); + } + + @Override + public SourceDefinitionReadList listLatestSourceDefinitions() { + return ConfigurationApi.execute(sourceDefinitionsHandler::listLatestSourceDefinitions); + } + + @Override + public PrivateSourceDefinitionReadList listPrivateSourceDefinitions(final WorkspaceIdRequestBody workspaceIdRequestBody) { + return ConfigurationApi.execute(() -> sourceDefinitionsHandler.listPrivateSourceDefinitions(workspaceIdRequestBody)); + } + + @Override + public SourceDefinitionReadList listSourceDefinitions() { + return ConfigurationApi.execute(sourceDefinitionsHandler::listSourceDefinitions); + } + + @Override + public SourceDefinitionReadList listSourceDefinitionsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { + return ConfigurationApi.execute(() -> sourceDefinitionsHandler.listSourceDefinitionsForWorkspace(workspaceIdRequestBody)); + } + + @Override + public void revokeSourceDefinitionFromWorkspace(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { + ConfigurationApi.execute(() -> { + sourceDefinitionsHandler.revokeSourceDefinitionFromWorkspace(sourceDefinitionIdWithWorkspaceId); + return null; + }); + } + + @Override + public SourceDefinitionRead updateCustomSourceDefinition(final CustomSourceDefinitionUpdate customSourceDefinitionUpdate) { + return ConfigurationApi.execute(() -> sourceDefinitionsHandler.updateCustomSourceDefinition(customSourceDefinitionUpdate)); + } + + @Override + public SourceDefinitionRead updateSourceDefinition(final SourceDefinitionUpdate sourceDefinitionUpdate) { + return ConfigurationApi.execute(() -> sourceDefinitionsHandler.updateSourceDefinition(sourceDefinitionUpdate)); + } + +} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/binders/SourceDefinitionApiBinder.java b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/SourceDefinitionApiBinder.java new file mode 100644 index 0000000000000..dfc976191c141 --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/SourceDefinitionApiBinder.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis.binders; + +import io.airbyte.server.apis.SourceDefinitionApiController; +import io.airbyte.server.apis.factories.SourceDefinitionApiFactory; +import org.glassfish.hk2.utilities.binding.AbstractBinder; +import org.glassfish.jersey.process.internal.RequestScoped; + +public class SourceDefinitionApiBinder extends AbstractBinder { + + @Override + protected void configure() { + bindFactory(SourceDefinitionApiFactory.class) + .to(SourceDefinitionApiController.class) + .in(RequestScoped.class); + } + +} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/factories/SourceDefinitionApiFactory.java b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/SourceDefinitionApiFactory.java new file mode 100644 index 0000000000000..15a08c6c9e850 --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/SourceDefinitionApiFactory.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis.factories; + +import io.airbyte.server.apis.SourceDefinitionApiController; +import io.airbyte.server.handlers.SourceDefinitionsHandler; +import org.glassfish.hk2.api.Factory; + +public class SourceDefinitionApiFactory implements Factory { + + private static SourceDefinitionsHandler sourceDefinitionsHandler; + + public static void setValues(final SourceDefinitionsHandler sourceDefinitionsHandler) { + SourceDefinitionApiFactory.sourceDefinitionsHandler = sourceDefinitionsHandler; + } + + @Override + public SourceDefinitionApiController provide() { + return new SourceDefinitionApiController(SourceDefinitionApiFactory.sourceDefinitionsHandler); + } + + @Override + public void dispose(final SourceDefinitionApiController instance) { + /* no op */ + } + +} From c76ed4eaccc81e766049429f5c0b83adb270627f Mon Sep 17 00:00:00 2001 From: Benoit Moriceau Date: Fri, 4 Nov 2022 11:03:41 -0700 Subject: [PATCH 06/12] Add path --- .../io/airbyte/server/apis/SourceDefinitionApiController.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionApiController.java index ae5f2f8037487..0369a05e48659 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionApiController.java @@ -17,8 +17,10 @@ import io.airbyte.api.model.generated.SourceDefinitionUpdate; import io.airbyte.api.model.generated.WorkspaceIdRequestBody; import io.airbyte.server.handlers.SourceDefinitionsHandler; +import javax.ws.rs.Path; import lombok.AllArgsConstructor; +@Path("/v1/source_definitions") @AllArgsConstructor public class SourceDefinitionApiController implements SourceDefinitionApi { From 6a57dcceaf4225d6cf214476a2f4cbc403d771ec Mon Sep 17 00:00:00 2001 From: Benoit Moriceau Date: Fri, 4 Nov 2022 11:22:34 -0700 Subject: [PATCH 07/12] Extract State API --- .../java/io/airbyte/server/ServerApp.java | 7 +++++ .../java/io/airbyte/server/ServerFactory.java | 6 ++++ .../airbyte/server/apis/ConfigurationApi.java | 12 +++++-- .../server/apis/StateApiController.java | 31 +++++++++++++++++++ .../server/apis/binders/StateApiBinder.java | 21 +++++++++++++ .../apis/factories/StateApiFactory.java | 29 +++++++++++++++++ 6 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/StateApiController.java create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/binders/StateApiBinder.java create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/factories/StateApiFactory.java diff --git a/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java b/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java index 85fd59e241020..45529d222929d 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java +++ b/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java @@ -25,6 +25,7 @@ import io.airbyte.config.persistence.ConfigRepository; import io.airbyte.config.persistence.SecretsRepositoryReader; import io.airbyte.config.persistence.SecretsRepositoryWriter; +import io.airbyte.config.persistence.StatePersistence; import io.airbyte.config.persistence.StreamResetPersistence; import io.airbyte.config.persistence.split_secrets.SecretPersistence; import io.airbyte.config.persistence.split_secrets.SecretsHydrator; @@ -65,6 +66,7 @@ import io.airbyte.server.handlers.SchedulerHandler; import io.airbyte.server.handlers.SourceDefinitionsHandler; import io.airbyte.server.handlers.SourceHandler; +import io.airbyte.server.handlers.StateHandler; import io.airbyte.server.handlers.WorkspacesHandler; import io.airbyte.server.scheduler.DefaultSynchronousSchedulerClient; import io.airbyte.server.scheduler.EventRunner; @@ -336,6 +338,10 @@ public static ServerRunnable getServer(final ServerFactory apiFactory, final OpenApiConfigHandler openApiConfigHandler = new OpenApiConfigHandler(); + final StatePersistence statePersistence = new StatePersistence(configsDatabase); + + final StateHandler stateHandler = new StateHandler(statePersistence); + LOGGER.info("Starting server..."); return apiFactory.create( @@ -369,6 +375,7 @@ public static ServerRunnable getServer(final ServerFactory apiFactory, schedulerHandler, sourceHandler, sourceDefinitionsHandler, + stateHandler, workspacesHandler); } diff --git a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java index 87bc02784a1f4..67804572ae9c3 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java +++ b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java @@ -65,6 +65,7 @@ import io.airbyte.server.apis.factories.SourceApiFactory; import io.airbyte.server.apis.factories.SourceDefinitionApiFactory; import io.airbyte.server.apis.factories.SourceOauthApiFactory; +import io.airbyte.server.apis.factories.StateApiFactory; import io.airbyte.server.handlers.AttemptHandler; import io.airbyte.server.handlers.ConnectionsHandler; import io.airbyte.server.handlers.DbMigrationHandler; @@ -79,6 +80,7 @@ import io.airbyte.server.handlers.SchedulerHandler; import io.airbyte.server.handlers.SourceDefinitionsHandler; import io.airbyte.server.handlers.SourceHandler; +import io.airbyte.server.handlers.StateHandler; import io.airbyte.server.handlers.WorkspacesHandler; import io.airbyte.server.scheduler.EventRunner; import io.airbyte.server.scheduler.SynchronousSchedulerClient; @@ -121,6 +123,7 @@ ServerRunnable create(final SynchronousSchedulerClient synchronousSchedulerClien final SchedulerHandler schedulerHandler, final SourceHandler sourceHandler, final SourceDefinitionsHandler sourceDefinitionsHandler, + final StateHandler stateHandler, final WorkspacesHandler workspacesHandler); class Api implements ServerFactory { @@ -156,6 +159,7 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul final SchedulerHandler schedulerHandler, final SourceHandler sourceHandler, final SourceDefinitionsHandler sourceDefinitionsHandler, + final StateHandler stateHandler, final WorkspacesHandler workspacesHandler) { final Map mdc = MDC.getCopyOfContextMap(); @@ -218,6 +222,8 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul SourceDefinitionApiFactory.setValues(sourceDefinitionsHandler); + StateApiFactory.setValues(stateHandler); + // server configurations final Set> componentClasses = Set.of( ConfigurationApi.class, diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java index 7e8deb80b1eac..d9b5330e5ea08 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java @@ -937,9 +937,13 @@ public OperationRead createOperation(final OperationCreate operationCreate) { throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link StateApiController}. Since the path of + * {@link StateApiController} is more granular, it will override this implementation + */ @Override public ConnectionState createOrUpdateState(final ConnectionStateCreateOrUpdate connectionStateCreateOrUpdate) { - return ConfigurationApi.execute(() -> stateHandler.createOrUpdateState(connectionStateCreateOrUpdate)); + throw new NotImplementedException(); } /** @@ -978,9 +982,13 @@ public OperationRead updateOperation(final OperationUpdate operationUpdate) { throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link StateApiController}. Since the path of + * {@link StateApiController} is more granular, it will override this implementation + */ @Override public ConnectionState getState(final ConnectionIdRequestBody connectionIdRequestBody) { - return ConfigurationApi.execute(() -> stateHandler.getState(connectionIdRequestBody)); + throw new NotImplementedException(); } // SCHEDULER diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/StateApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/StateApiController.java new file mode 100644 index 0000000000000..4a317db986962 --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/StateApiController.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis; + +import io.airbyte.api.generated.StateApi; +import io.airbyte.api.model.generated.ConnectionIdRequestBody; +import io.airbyte.api.model.generated.ConnectionState; +import io.airbyte.api.model.generated.ConnectionStateCreateOrUpdate; +import io.airbyte.server.handlers.StateHandler; +import javax.ws.rs.Path; +import lombok.AllArgsConstructor; + +@Path("/v1/state") +@AllArgsConstructor +public class StateApiController implements StateApi { + + private final StateHandler stateHandler; + + @Override + public ConnectionState createOrUpdateState(final ConnectionStateCreateOrUpdate connectionStateCreateOrUpdate) { + return ConfigurationApi.execute(() -> stateHandler.createOrUpdateState(connectionStateCreateOrUpdate)); + } + + @Override + public ConnectionState getState(final ConnectionIdRequestBody connectionIdRequestBody) { + return ConfigurationApi.execute(() -> stateHandler.getState(connectionIdRequestBody)); + } + +} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/binders/StateApiBinder.java b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/StateApiBinder.java new file mode 100644 index 0000000000000..65ab669528c0f --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/StateApiBinder.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis.binders; + +import io.airbyte.server.apis.StateApiController; +import io.airbyte.server.apis.factories.StateApiFactory; +import org.glassfish.hk2.utilities.binding.AbstractBinder; +import org.glassfish.jersey.process.internal.RequestScoped; + +public class StateApiBinder extends AbstractBinder { + + @Override + protected void configure() { + bindFactory(StateApiFactory.class) + .to(StateApiController.class) + .in(RequestScoped.class); + } + +} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/factories/StateApiFactory.java b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/StateApiFactory.java new file mode 100644 index 0000000000000..0498681d76292 --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/StateApiFactory.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis.factories; + +import io.airbyte.server.apis.StateApiController; +import io.airbyte.server.handlers.StateHandler; +import org.glassfish.hk2.api.Factory; + +public class StateApiFactory implements Factory { + + private static StateHandler stateHandler; + + public static void setValues(final StateHandler stateHandler) { + StateApiFactory.stateHandler = stateHandler; + } + + @Override + public StateApiController provide() { + return new StateApiController(StateApiFactory.stateHandler); + } + + @Override + public void dispose(final StateApiController instance) { + /* no op */ + } + +} From 30b991dca6b7d2b6af949c30440f73f683339999 Mon Sep 17 00:00:00 2001 From: Benoit Moriceau Date: Fri, 4 Nov 2022 11:56:37 -0700 Subject: [PATCH 08/12] extract webbackend api --- .../java/io/airbyte/server/ServerApp.java | 21 +++++++- .../java/io/airbyte/server/ServerFactory.java | 21 ++++++-- .../airbyte/server/apis/ConfigurationApi.java | 42 ++++++++++++--- .../server/apis/WebBackendApiController.java | 54 +++++++++++++++++++ .../apis/binders/WebBackendApiBinder.java | 16 ++++++ .../apis/factories/WebBackendApiFactory.java | 25 +++++++++ 6 files changed, 167 insertions(+), 12 deletions(-) create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/WebBackendApiController.java create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/binders/WebBackendApiBinder.java create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/factories/WebBackendApiFactory.java diff --git a/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java b/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java index 45529d222929d..86dae19bc73e7 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java +++ b/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java @@ -67,6 +67,8 @@ import io.airbyte.server.handlers.SourceDefinitionsHandler; import io.airbyte.server.handlers.SourceHandler; import io.airbyte.server.handlers.StateHandler; +import io.airbyte.server.handlers.WebBackendConnectionsHandler; +import io.airbyte.server.handlers.WebBackendGeographiesHandler; import io.airbyte.server.handlers.WorkspacesHandler; import io.airbyte.server.scheduler.DefaultSynchronousSchedulerClient; import io.airbyte.server.scheduler.EventRunner; @@ -342,6 +344,20 @@ public static ServerRunnable getServer(final ServerFactory apiFactory, final StateHandler stateHandler = new StateHandler(statePersistence); + final WebBackendConnectionsHandler webBackendConnectionsHandler = new WebBackendConnectionsHandler( + connectionsHandler, + stateHandler, + sourceHandler, + destinationHandler, + jobHistoryHandler, + schedulerHandler, + operationsHandler, + eventRunner, + configRepository + ); + + final WebBackendGeographiesHandler webBackendGeographiesHandler = new WebBackendGeographiesHandler(); + LOGGER.info("Starting server..."); return apiFactory.create( @@ -376,7 +392,10 @@ public static ServerRunnable getServer(final ServerFactory apiFactory, sourceHandler, sourceDefinitionsHandler, stateHandler, - workspacesHandler); + workspacesHandler,sub + webBackendConnectionsHandler, + webBackendGeographiesHandler + ); } @VisibleForTesting diff --git a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java index 67804572ae9c3..76b5b3346a6df 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java +++ b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java @@ -31,6 +31,7 @@ import io.airbyte.server.apis.SchedulerApiController; import io.airbyte.server.apis.SourceApiController; import io.airbyte.server.apis.SourceDefinitionApiController; +import io.airbyte.server.apis.WebBackendApiController; import io.airbyte.server.apis.binders.AttemptApiBinder; import io.airbyte.server.apis.binders.ConnectionApiBinder; import io.airbyte.server.apis.binders.DbMigrationBinder; @@ -48,6 +49,7 @@ import io.airbyte.server.apis.binders.SourceApiBinder; import io.airbyte.server.apis.binders.SourceDefinitionApiBinder; import io.airbyte.server.apis.binders.SourceOauthApiBinder; +import io.airbyte.server.apis.binders.WebBackendApiBinder; import io.airbyte.server.apis.factories.AttemptApiFactory; import io.airbyte.server.apis.factories.ConnectionApiFactory; import io.airbyte.server.apis.factories.DbMigrationApiFactory; @@ -66,6 +68,7 @@ import io.airbyte.server.apis.factories.SourceDefinitionApiFactory; import io.airbyte.server.apis.factories.SourceOauthApiFactory; import io.airbyte.server.apis.factories.StateApiFactory; +import io.airbyte.server.apis.factories.WebBackendApiFactory; import io.airbyte.server.handlers.AttemptHandler; import io.airbyte.server.handlers.ConnectionsHandler; import io.airbyte.server.handlers.DbMigrationHandler; @@ -81,6 +84,8 @@ import io.airbyte.server.handlers.SourceDefinitionsHandler; import io.airbyte.server.handlers.SourceHandler; import io.airbyte.server.handlers.StateHandler; +import io.airbyte.server.handlers.WebBackendConnectionsHandler; +import io.airbyte.server.handlers.WebBackendGeographiesHandler; import io.airbyte.server.handlers.WorkspacesHandler; import io.airbyte.server.scheduler.EventRunner; import io.airbyte.server.scheduler.SynchronousSchedulerClient; @@ -124,7 +129,9 @@ ServerRunnable create(final SynchronousSchedulerClient synchronousSchedulerClien final SourceHandler sourceHandler, final SourceDefinitionsHandler sourceDefinitionsHandler, final StateHandler stateHandler, - final WorkspacesHandler workspacesHandler); + final WorkspacesHandler workspacesHandler, + final WebBackendConnectionsHandler webBackendConnectionsHandler, + final WebBackendGeographiesHandler webBackendGeographiesHandler); class Api implements ServerFactory { @@ -160,7 +167,9 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul final SourceHandler sourceHandler, final SourceDefinitionsHandler sourceDefinitionsHandler, final StateHandler stateHandler, - final WorkspacesHandler workspacesHandler) { + final WorkspacesHandler workspacesHandler, + final WebBackendConnectionsHandler webBackendConnectionsHandler, + final WebBackendGeographiesHandler webBackendGeographiesHandler) { final Map mdc = MDC.getCopyOfContextMap(); // set static values for factory @@ -224,6 +233,8 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul StateApiFactory.setValues(stateHandler); + WebBackendApiFactory.setValues(webBackendConnectionsHandler, webBackendGeographiesHandler); + // server configurations final Set> componentClasses = Set.of( ConfigurationApi.class, @@ -243,7 +254,8 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul SchedulerApiController.class, SourceApiController.class, SourceDefinitionApiController.class, - SourceOauthApiFactory.class); + SourceOauthApiFactory.class, + WebBackendApiController.class); final Set components = Set.of( new CorsFilter(), @@ -264,7 +276,8 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul new SchedulerApiBinder(), new SourceApiBinder(), new SourceDefinitionApiBinder(), - new SourceOauthApiBinder()); + new SourceOauthApiBinder(), + new WebBackendApiBinder()); // construct server return new ServerApp(airbyteVersion, componentClasses, components); diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java index d9b5330e5ea08..2483f2139b2a0 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java @@ -1105,39 +1105,67 @@ public HealthCheckRead getHealthCheck() { // WEB BACKEND + /** + * This implementation has been moved to {@link HealthApiController}. Since the path of + * {@link HealthApiController} is more granular, it will override this implementation + */ @Override public WebBackendConnectionReadList webBackendListConnectionsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - return execute(() -> webBackendConnectionsHandler.webBackendListConnectionsForWorkspace(workspaceIdRequestBody)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link HealthApiController}. Since the path of + * {@link HealthApiController} is more granular, it will override this implementation + */ @Override public WebBackendGeographiesListResult webBackendListGeographies() { - return execute(webBackendGeographiesHandler::listGeographiesOSS); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link HealthApiController}. Since the path of + * {@link HealthApiController} is more granular, it will override this implementation + */ @Override public WebBackendConnectionRead webBackendGetConnection(final WebBackendConnectionRequestBody webBackendConnectionRequestBody) { - return execute(() -> webBackendConnectionsHandler.webBackendGetConnection(webBackendConnectionRequestBody)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link HealthApiController}. Since the path of + * {@link HealthApiController} is more granular, it will override this implementation + */ @Override public WebBackendConnectionRead webBackendCreateConnection(final WebBackendConnectionCreate webBackendConnectionCreate) { - return execute(() -> webBackendConnectionsHandler.webBackendCreateConnection(webBackendConnectionCreate)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link HealthApiController}. Since the path of + * {@link HealthApiController} is more granular, it will override this implementation + */ @Override public WebBackendConnectionRead webBackendUpdateConnection(final WebBackendConnectionUpdate webBackendConnectionUpdate) { - return execute(() -> webBackendConnectionsHandler.webBackendUpdateConnection(webBackendConnectionUpdate)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link HealthApiController}. Since the path of + * {@link HealthApiController} is more granular, it will override this implementation + */ @Override public ConnectionStateType getStateType(final ConnectionIdRequestBody connectionIdRequestBody) { - return ConfigurationApi.execute(() -> webBackendConnectionsHandler.getStateType(connectionIdRequestBody)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link HealthApiController}. Since the path of + * {@link HealthApiController} is more granular, it will override this implementation + */ @Override public WebBackendWorkspaceStateResult webBackendGetWorkspaceState(final WebBackendWorkspaceState webBackendWorkspaceState) { - return execute(() -> webBackendConnectionsHandler.getWorkspaceState(webBackendWorkspaceState)); + throw new NotImplementedException(); } // TODO: Move to common when all the api are moved diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/WebBackendApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/WebBackendApiController.java new file mode 100644 index 0000000000000..f9541b8c55625 --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/WebBackendApiController.java @@ -0,0 +1,54 @@ +package io.airbyte.server.apis; + +import io.airbyte.api.generated.WebBackendApi; +import io.airbyte.api.model.generated.ConnectionIdRequestBody; +import io.airbyte.api.model.generated.ConnectionStateType; +import io.airbyte.api.model.generated.WebBackendConnectionCreate; +import io.airbyte.api.model.generated.WebBackendConnectionRead; +import io.airbyte.api.model.generated.WebBackendConnectionReadList; +import io.airbyte.api.model.generated.WebBackendConnectionRequestBody; +import io.airbyte.api.model.generated.WebBackendConnectionUpdate; +import io.airbyte.api.model.generated.WebBackendGeographiesListResult; +import io.airbyte.api.model.generated.WebBackendWorkspaceState; +import io.airbyte.api.model.generated.WebBackendWorkspaceStateResult; +import io.airbyte.api.model.generated.WorkspaceIdRequestBody; +import io.airbyte.server.handlers.WebBackendConnectionsHandler; +import io.airbyte.server.handlers.WebBackendGeographiesHandler; +import javax.ws.rs.Path; +import lombok.AllArgsConstructor; + +@Path("/v1/web_backend") +@AllArgsConstructor +public class WebBackendApiController implements WebBackendApi { + + private final WebBackendConnectionsHandler webBackendConnectionsHandler; + private final WebBackendGeographiesHandler webBackendGeographiesHandler; + + @Override public ConnectionStateType getStateType(final ConnectionIdRequestBody connectionIdRequestBody) { + return ConfigurationApi.execute(() -> webBackendConnectionsHandler.getStateType(connectionIdRequestBody)); + } + + @Override public WebBackendConnectionRead webBackendCreateConnection(final WebBackendConnectionCreate webBackendConnectionCreate) { + return ConfigurationApi.execute(() -> webBackendConnectionsHandler.webBackendCreateConnection(webBackendConnectionCreate)); + } + + @Override public WebBackendConnectionRead webBackendGetConnection(final WebBackendConnectionRequestBody webBackendConnectionRequestBody) { + return ConfigurationApi.execute(() -> webBackendConnectionsHandler.webBackendGetConnection(webBackendConnectionRequestBody)); + } + + @Override public WebBackendWorkspaceStateResult webBackendGetWorkspaceState(final WebBackendWorkspaceState webBackendWorkspaceState) { + return ConfigurationApi.execute(() -> webBackendConnectionsHandler.getWorkspaceState(webBackendWorkspaceState)); + } + + @Override public WebBackendConnectionReadList webBackendListConnectionsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { + return ConfigurationApi.execute(() -> webBackendConnectionsHandler.webBackendListConnectionsForWorkspace(workspaceIdRequestBody)); + } + + @Override public WebBackendGeographiesListResult webBackendListGeographies() { + return ConfigurationApi.execute(webBackendGeographiesHandler::listGeographiesOSS); + } + + @Override public WebBackendConnectionRead webBackendUpdateConnection(final WebBackendConnectionUpdate webBackendConnectionUpdate) { + return ConfigurationApi.execute(() -> webBackendConnectionsHandler.webBackendUpdateConnection(webBackendConnectionUpdate)); + } +} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/binders/WebBackendApiBinder.java b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/WebBackendApiBinder.java new file mode 100644 index 0000000000000..a1c5ab68077aa --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/WebBackendApiBinder.java @@ -0,0 +1,16 @@ +package io.airbyte.server.apis.binders; + +import io.airbyte.server.apis.WebBackendApiController; +import io.airbyte.server.apis.factories.WebBackendApiFactory; +import org.glassfish.hk2.utilities.binding.AbstractBinder; +import org.glassfish.jersey.process.internal.RequestScoped; + +public class WebBackendApiBinder extends AbstractBinder { + + @Override + protected void configure() { + bindFactory(WebBackendApiFactory.class) + .to(WebBackendApiController.class) + .in(RequestScoped.class); + } +} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/factories/WebBackendApiFactory.java b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/WebBackendApiFactory.java new file mode 100644 index 0000000000000..4ab4d05fefca6 --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/WebBackendApiFactory.java @@ -0,0 +1,25 @@ +package io.airbyte.server.apis.factories; + +import io.airbyte.server.apis.WebBackendApiController; +import io.airbyte.server.handlers.WebBackendConnectionsHandler; +import io.airbyte.server.handlers.WebBackendGeographiesHandler; +import org.glassfish.hk2.api.Factory; + +public class WebBackendApiFactory implements Factory { + + private static WebBackendConnectionsHandler webBackendConnectionsHandler; + private static WebBackendGeographiesHandler webBackendGeographiesHandler; + + public static void setValues(final WebBackendConnectionsHandler webBackendConnectionsHandler, final WebBackendGeographiesHandler webBackendGeographiesHandler) { + WebBackendApiFactory.webBackendConnectionsHandler = webBackendConnectionsHandler; + WebBackendApiFactory.webBackendGeographiesHandler = webBackendGeographiesHandler; + } + + @Override public WebBackendApiController provide() { + return new WebBackendApiController(WebBackendApiFactory.webBackendConnectionsHandler, WebBackendApiFactory.webBackendGeographiesHandler); + } + + @Override public void dispose(final WebBackendApiController instance) { + /* no op */ + } +} From c72225da16f77e2793386e9219954badc004db42 Mon Sep 17 00:00:00 2001 From: Benoit Moriceau Date: Fri, 4 Nov 2022 13:44:22 -0700 Subject: [PATCH 09/12] extract webbackend api --- .../server/ConfigurationApiFactory.java | 3 --- .../java/io/airbyte/server/ServerApp.java | 8 +++--- .../airbyte/server/apis/ConfigurationApi.java | 23 ---------------- .../server/apis/WebBackendApiController.java | 26 ++++++++++++++----- .../apis/binders/WebBackendApiBinder.java | 5 ++++ .../apis/factories/WebBackendApiFactory.java | 14 +++++++--- 6 files changed, 38 insertions(+), 41 deletions(-) diff --git a/airbyte-server/src/main/java/io/airbyte/server/ConfigurationApiFactory.java b/airbyte-server/src/main/java/io/airbyte/server/ConfigurationApiFactory.java index 2421e4061c7a6..1d423e6836670 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/ConfigurationApiFactory.java +++ b/airbyte-server/src/main/java/io/airbyte/server/ConfigurationApiFactory.java @@ -31,7 +31,6 @@ public class ConfigurationApiFactory implements Factory { private static SecretsRepositoryReader secretsRepositoryReader; private static SecretsRepositoryWriter secretsRepositoryWriter; private static SynchronousSchedulerClient synchronousSchedulerClient; - private static StatePersistence statePersistence; private static Map mdc; private static TrackingClient trackingClient; private static WorkerEnvironment workerEnvironment; @@ -69,7 +68,6 @@ public static void setValues( ConfigurationApiFactory.logConfigs = logConfigs; ConfigurationApiFactory.airbyteVersion = airbyteVersion; ConfigurationApiFactory.eventRunner = eventRunner; - ConfigurationApiFactory.statePersistence = statePersistence; } @Override @@ -82,7 +80,6 @@ public ConfigurationApi provide() { ConfigurationApiFactory.secretsRepositoryReader, ConfigurationApiFactory.secretsRepositoryWriter, ConfigurationApiFactory.synchronousSchedulerClient, - ConfigurationApiFactory.statePersistence, ConfigurationApiFactory.trackingClient, ConfigurationApiFactory.workerEnvironment, ConfigurationApiFactory.logConfigs, diff --git a/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java b/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java index 86dae19bc73e7..a5e77a945ca6d 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java +++ b/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java @@ -353,8 +353,7 @@ public static ServerRunnable getServer(final ServerFactory apiFactory, schedulerHandler, operationsHandler, eventRunner, - configRepository - ); + configRepository); final WebBackendGeographiesHandler webBackendGeographiesHandler = new WebBackendGeographiesHandler(); @@ -392,10 +391,9 @@ public static ServerRunnable getServer(final ServerFactory apiFactory, sourceHandler, sourceDefinitionsHandler, stateHandler, - workspacesHandler,sub + workspacesHandler, webBackendConnectionsHandler, - webBackendGeographiesHandler - ); + webBackendGeographiesHandler); } @VisibleForTesting diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java index 2483f2139b2a0..9a27b8381c210 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java @@ -108,7 +108,6 @@ import io.airbyte.config.persistence.ConfigRepository; import io.airbyte.config.persistence.SecretsRepositoryReader; import io.airbyte.config.persistence.SecretsRepositoryWriter; -import io.airbyte.config.persistence.StatePersistence; import io.airbyte.persistence.job.JobPersistence; import io.airbyte.persistence.job.WorkspaceHelper; import io.airbyte.server.errors.BadObjectSchemaKnownException; @@ -117,13 +116,9 @@ import io.airbyte.server.handlers.DestinationDefinitionsHandler; import io.airbyte.server.handlers.DestinationHandler; import io.airbyte.server.handlers.JobHistoryHandler; -import io.airbyte.server.handlers.OperationsHandler; import io.airbyte.server.handlers.SchedulerHandler; import io.airbyte.server.handlers.SourceDefinitionsHandler; import io.airbyte.server.handlers.SourceHandler; -import io.airbyte.server.handlers.StateHandler; -import io.airbyte.server.handlers.WebBackendConnectionsHandler; -import io.airbyte.server.handlers.WebBackendGeographiesHandler; import io.airbyte.server.handlers.WorkspacesHandler; import io.airbyte.server.scheduler.EventRunner; import io.airbyte.server.scheduler.SynchronousSchedulerClient; @@ -145,19 +140,14 @@ public class ConfigurationApi implements io.airbyte.api.generated.V1Api { private final DestinationDefinitionsHandler destinationDefinitionsHandler; private final DestinationHandler destinationHandler; private final ConnectionsHandler connectionsHandler; - private final OperationsHandler operationsHandler; private final SchedulerHandler schedulerHandler; - private final StateHandler stateHandler; private final JobHistoryHandler jobHistoryHandler; - private final WebBackendConnectionsHandler webBackendConnectionsHandler; - private final WebBackendGeographiesHandler webBackendGeographiesHandler; public ConfigurationApi(final ConfigRepository configRepository, final JobPersistence jobPersistence, final SecretsRepositoryReader secretsRepositoryReader, final SecretsRepositoryWriter secretsRepositoryWriter, final SynchronousSchedulerClient synchronousSchedulerClient, - final StatePersistence statePersistence, final TrackingClient trackingClient, final WorkerEnvironment workerEnvironment, final LogConfigs logConfigs, @@ -185,7 +175,6 @@ public ConfigurationApi(final ConfigRepository configRepository, eventRunner, connectionsHandler); - stateHandler = new StateHandler(statePersistence); sourceHandler = new SourceHandler( configRepository, secretsRepositoryReader, @@ -193,7 +182,6 @@ public ConfigurationApi(final ConfigRepository configRepository, schemaValidator, connectionsHandler); sourceDefinitionsHandler = new SourceDefinitionsHandler(configRepository, synchronousSchedulerClient, sourceHandler); - operationsHandler = new OperationsHandler(configRepository); destinationHandler = new DestinationHandler( configRepository, secretsRepositoryReader, @@ -209,17 +197,6 @@ public ConfigurationApi(final ConfigRepository configRepository, sourceHandler); jobHistoryHandler = new JobHistoryHandler(jobPersistence, workerEnvironment, logConfigs, connectionsHandler, sourceHandler, sourceDefinitionsHandler, destinationHandler, destinationDefinitionsHandler, airbyteVersion); - webBackendConnectionsHandler = new WebBackendConnectionsHandler( - connectionsHandler, - stateHandler, - sourceHandler, - destinationHandler, - jobHistoryHandler, - schedulerHandler, - operationsHandler, - eventRunner, - configRepository); - webBackendGeographiesHandler = new WebBackendGeographiesHandler(); } // WORKSPACE diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/WebBackendApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/WebBackendApiController.java index f9541b8c55625..b9aea8f3cf2b4 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/WebBackendApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/WebBackendApiController.java @@ -1,3 +1,7 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + package io.airbyte.server.apis; import io.airbyte.api.generated.WebBackendApi; @@ -24,31 +28,39 @@ public class WebBackendApiController implements WebBackendApi { private final WebBackendConnectionsHandler webBackendConnectionsHandler; private final WebBackendGeographiesHandler webBackendGeographiesHandler; - @Override public ConnectionStateType getStateType(final ConnectionIdRequestBody connectionIdRequestBody) { + @Override + public ConnectionStateType getStateType(final ConnectionIdRequestBody connectionIdRequestBody) { return ConfigurationApi.execute(() -> webBackendConnectionsHandler.getStateType(connectionIdRequestBody)); } - @Override public WebBackendConnectionRead webBackendCreateConnection(final WebBackendConnectionCreate webBackendConnectionCreate) { + @Override + public WebBackendConnectionRead webBackendCreateConnection(final WebBackendConnectionCreate webBackendConnectionCreate) { return ConfigurationApi.execute(() -> webBackendConnectionsHandler.webBackendCreateConnection(webBackendConnectionCreate)); } - @Override public WebBackendConnectionRead webBackendGetConnection(final WebBackendConnectionRequestBody webBackendConnectionRequestBody) { + @Override + public WebBackendConnectionRead webBackendGetConnection(final WebBackendConnectionRequestBody webBackendConnectionRequestBody) { return ConfigurationApi.execute(() -> webBackendConnectionsHandler.webBackendGetConnection(webBackendConnectionRequestBody)); } - @Override public WebBackendWorkspaceStateResult webBackendGetWorkspaceState(final WebBackendWorkspaceState webBackendWorkspaceState) { + @Override + public WebBackendWorkspaceStateResult webBackendGetWorkspaceState(final WebBackendWorkspaceState webBackendWorkspaceState) { return ConfigurationApi.execute(() -> webBackendConnectionsHandler.getWorkspaceState(webBackendWorkspaceState)); } - @Override public WebBackendConnectionReadList webBackendListConnectionsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { + @Override + public WebBackendConnectionReadList webBackendListConnectionsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { return ConfigurationApi.execute(() -> webBackendConnectionsHandler.webBackendListConnectionsForWorkspace(workspaceIdRequestBody)); } - @Override public WebBackendGeographiesListResult webBackendListGeographies() { + @Override + public WebBackendGeographiesListResult webBackendListGeographies() { return ConfigurationApi.execute(webBackendGeographiesHandler::listGeographiesOSS); } - @Override public WebBackendConnectionRead webBackendUpdateConnection(final WebBackendConnectionUpdate webBackendConnectionUpdate) { + @Override + public WebBackendConnectionRead webBackendUpdateConnection(final WebBackendConnectionUpdate webBackendConnectionUpdate) { return ConfigurationApi.execute(() -> webBackendConnectionsHandler.webBackendUpdateConnection(webBackendConnectionUpdate)); } + } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/binders/WebBackendApiBinder.java b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/WebBackendApiBinder.java index a1c5ab68077aa..8ad66204be335 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/binders/WebBackendApiBinder.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/WebBackendApiBinder.java @@ -1,3 +1,7 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + package io.airbyte.server.apis.binders; import io.airbyte.server.apis.WebBackendApiController; @@ -13,4 +17,5 @@ protected void configure() { .to(WebBackendApiController.class) .in(RequestScoped.class); } + } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/factories/WebBackendApiFactory.java b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/WebBackendApiFactory.java index 4ab4d05fefca6..936e2d9705df8 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/factories/WebBackendApiFactory.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/WebBackendApiFactory.java @@ -1,3 +1,7 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + package io.airbyte.server.apis.factories; import io.airbyte.server.apis.WebBackendApiController; @@ -10,16 +14,20 @@ public class WebBackendApiFactory implements Factory { private static WebBackendConnectionsHandler webBackendConnectionsHandler; private static WebBackendGeographiesHandler webBackendGeographiesHandler; - public static void setValues(final WebBackendConnectionsHandler webBackendConnectionsHandler, final WebBackendGeographiesHandler webBackendGeographiesHandler) { + public static void setValues(final WebBackendConnectionsHandler webBackendConnectionsHandler, + final WebBackendGeographiesHandler webBackendGeographiesHandler) { WebBackendApiFactory.webBackendConnectionsHandler = webBackendConnectionsHandler; WebBackendApiFactory.webBackendGeographiesHandler = webBackendGeographiesHandler; } - @Override public WebBackendApiController provide() { + @Override + public WebBackendApiController provide() { return new WebBackendApiController(WebBackendApiFactory.webBackendConnectionsHandler, WebBackendApiFactory.webBackendGeographiesHandler); } - @Override public void dispose(final WebBackendApiController instance) { + @Override + public void dispose(final WebBackendApiController instance) { /* no op */ } + } From ecad901b4d5cd8f770a888ee2c51d51b3e6400de Mon Sep 17 00:00:00 2001 From: Benoit Moriceau Date: Fri, 4 Nov 2022 15:07:23 -0700 Subject: [PATCH 10/12] extract workspace api --- .../java/io/airbyte/server/ServerFactory.java | 11 ++- .../airbyte/server/apis/ConfigurationApi.java | 46 ++++++------ .../server/apis/WorkspaceApiController.java | 72 +++++++++++++++++++ .../apis/binders/WorkspaceApiBinder.java | 21 ++++++ .../apis/factories/WorkspaceApiFactory.java | 29 ++++++++ 5 files changed, 155 insertions(+), 24 deletions(-) create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/WorkspaceApiController.java create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/binders/WorkspaceApiBinder.java create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/factories/WorkspaceApiFactory.java diff --git a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java index 76b5b3346a6df..705f80cc040d7 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java +++ b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java @@ -32,6 +32,7 @@ import io.airbyte.server.apis.SourceApiController; import io.airbyte.server.apis.SourceDefinitionApiController; import io.airbyte.server.apis.WebBackendApiController; +import io.airbyte.server.apis.WorkspaceApiController; import io.airbyte.server.apis.binders.AttemptApiBinder; import io.airbyte.server.apis.binders.ConnectionApiBinder; import io.airbyte.server.apis.binders.DbMigrationBinder; @@ -50,6 +51,7 @@ import io.airbyte.server.apis.binders.SourceDefinitionApiBinder; import io.airbyte.server.apis.binders.SourceOauthApiBinder; import io.airbyte.server.apis.binders.WebBackendApiBinder; +import io.airbyte.server.apis.binders.WorkspaceApiBinder; import io.airbyte.server.apis.factories.AttemptApiFactory; import io.airbyte.server.apis.factories.ConnectionApiFactory; import io.airbyte.server.apis.factories.DbMigrationApiFactory; @@ -69,6 +71,7 @@ import io.airbyte.server.apis.factories.SourceOauthApiFactory; import io.airbyte.server.apis.factories.StateApiFactory; import io.airbyte.server.apis.factories.WebBackendApiFactory; +import io.airbyte.server.apis.factories.WorkspaceApiFactory; import io.airbyte.server.handlers.AttemptHandler; import io.airbyte.server.handlers.ConnectionsHandler; import io.airbyte.server.handlers.DbMigrationHandler; @@ -235,6 +238,8 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul WebBackendApiFactory.setValues(webBackendConnectionsHandler, webBackendGeographiesHandler); + WorkspaceApiFactory.setValues(workspacesHandler); + // server configurations final Set> componentClasses = Set.of( ConfigurationApi.class, @@ -255,7 +260,8 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul SourceApiController.class, SourceDefinitionApiController.class, SourceOauthApiFactory.class, - WebBackendApiController.class); + WebBackendApiController.class, + WorkspaceApiController.class); final Set components = Set.of( new CorsFilter(), @@ -277,7 +283,8 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul new SourceApiBinder(), new SourceDefinitionApiBinder(), new SourceOauthApiBinder(), - new WebBackendApiBinder()); + new WebBackendApiBinder(), + new WorkspaceApiBinder()); // construct server return new ServerApp(airbyteVersion, componentClasses, components); diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java index 9a27b8381c210..edd5d77163f89 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java @@ -119,7 +119,6 @@ import io.airbyte.server.handlers.SchedulerHandler; import io.airbyte.server.handlers.SourceDefinitionsHandler; import io.airbyte.server.handlers.SourceHandler; -import io.airbyte.server.handlers.WorkspacesHandler; import io.airbyte.server.scheduler.EventRunner; import io.airbyte.server.scheduler.SynchronousSchedulerClient; import io.airbyte.validation.json.JsonSchemaValidator; @@ -134,7 +133,6 @@ @Slf4j public class ConfigurationApi implements io.airbyte.api.generated.V1Api { - private final WorkspacesHandler workspacesHandler; private final SourceDefinitionsHandler sourceDefinitionsHandler; private final SourceHandler sourceHandler; private final DestinationDefinitionsHandler destinationDefinitionsHandler; @@ -189,62 +187,66 @@ public ConfigurationApi(final ConfigRepository configRepository, schemaValidator, connectionsHandler); destinationDefinitionsHandler = new DestinationDefinitionsHandler(configRepository, synchronousSchedulerClient, destinationHandler); - workspacesHandler = new WorkspacesHandler( - configRepository, - secretsRepositoryWriter, - connectionsHandler, - destinationHandler, - sourceHandler); jobHistoryHandler = new JobHistoryHandler(jobPersistence, workerEnvironment, logConfigs, connectionsHandler, sourceHandler, sourceDefinitionsHandler, destinationHandler, destinationDefinitionsHandler, airbyteVersion); } // WORKSPACE + /** + * This implementation has been moved to {@link WorkspaceApiController}. Since the path of + * {@link WorkspaceApiController} is more granular, it will override this implementation + */ @Override public WorkspaceReadList listWorkspaces() { - return execute(workspacesHandler::listWorkspaces); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link WorkspaceApiController}. Since the path of + * {@link WorkspaceApiController} is more granular, it will override this implementation + */ @Override public WorkspaceRead createWorkspace(final WorkspaceCreate workspaceCreate) { - return execute(() -> workspacesHandler.createWorkspace(workspaceCreate)); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link WorkspaceApiController}. Since the path of + * {@link WorkspaceApiController} is more granular, it will override this implementation + */ @Override public void deleteWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - execute(() -> { - workspacesHandler.deleteWorkspace(workspaceIdRequestBody); - return null; - }); + throw new NotImplementedException(); } + /** + * This implementation has been moved to {@link WorkspaceApiController}. Since the path of + * {@link WorkspaceApiController} is more granular, it will override this implementation + */ @Override public WorkspaceRead getWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - return execute(() -> workspacesHandler.getWorkspace(workspaceIdRequestBody)); + throw new NotImplementedException(); } @Override public WorkspaceRead getWorkspaceBySlug(final SlugRequestBody slugRequestBody) { - return execute(() -> workspacesHandler.getWorkspaceBySlug(slugRequestBody)); + throw new NotImplementedException(); } @Override public WorkspaceRead updateWorkspace(final WorkspaceUpdate workspaceUpdate) { - return execute(() -> workspacesHandler.updateWorkspace(workspaceUpdate)); + throw new NotImplementedException(); } @Override public WorkspaceRead updateWorkspaceName(final WorkspaceUpdateName workspaceUpdateName) { - return execute(() -> workspacesHandler.updateWorkspaceName(workspaceUpdateName)); + throw new NotImplementedException(); } @Override public void updateWorkspaceFeedback(final WorkspaceGiveFeedback workspaceGiveFeedback) { - execute(() -> { - workspacesHandler.setFeedbackDone(workspaceGiveFeedback); - return null; - }); + throw new NotImplementedException(); } /** diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/WorkspaceApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/WorkspaceApiController.java new file mode 100644 index 0000000000000..4c10642a9db8b --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/WorkspaceApiController.java @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis; + +import io.airbyte.api.generated.WorkspaceApi; +import io.airbyte.api.model.generated.SlugRequestBody; +import io.airbyte.api.model.generated.WorkspaceCreate; +import io.airbyte.api.model.generated.WorkspaceGiveFeedback; +import io.airbyte.api.model.generated.WorkspaceIdRequestBody; +import io.airbyte.api.model.generated.WorkspaceRead; +import io.airbyte.api.model.generated.WorkspaceReadList; +import io.airbyte.api.model.generated.WorkspaceUpdate; +import io.airbyte.api.model.generated.WorkspaceUpdateName; +import io.airbyte.server.handlers.WorkspacesHandler; +import javax.ws.rs.Path; +import lombok.AllArgsConstructor; + +@Path("/v1/workspaces") +@AllArgsConstructor +public class WorkspaceApiController implements WorkspaceApi { + + private final WorkspacesHandler workspacesHandler; + + @Override + public WorkspaceRead createWorkspace(final WorkspaceCreate workspaceCreate) { + return ConfigurationApi.execute(() -> workspacesHandler.createWorkspace(workspaceCreate)); + } + + @Override + public void deleteWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { + ConfigurationApi.execute(() -> { + workspacesHandler.deleteWorkspace(workspaceIdRequestBody); + return null; + }); + } + + @Override + public WorkspaceRead getWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { + return ConfigurationApi.execute(() -> workspacesHandler.getWorkspace(workspaceIdRequestBody)); + } + + @Override + public WorkspaceRead getWorkspaceBySlug(final SlugRequestBody slugRequestBody) { + return ConfigurationApi.execute(() -> workspacesHandler.getWorkspaceBySlug(slugRequestBody)); + } + + @Override + public WorkspaceReadList listWorkspaces() { + return ConfigurationApi.execute(workspacesHandler::listWorkspaces); + } + + @Override + public WorkspaceRead updateWorkspace(final WorkspaceUpdate workspaceUpdate) { + return ConfigurationApi.execute(() -> workspacesHandler.updateWorkspace(workspaceUpdate)); + } + + @Override + public void updateWorkspaceFeedback(final WorkspaceGiveFeedback workspaceGiveFeedback) { + ConfigurationApi.execute(() -> { + workspacesHandler.setFeedbackDone(workspaceGiveFeedback); + return null; + }); + } + + @Override + public WorkspaceRead updateWorkspaceName(final WorkspaceUpdateName workspaceUpdateName) { + return ConfigurationApi.execute(() -> workspacesHandler.updateWorkspaceName(workspaceUpdateName)); + } + +} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/binders/WorkspaceApiBinder.java b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/WorkspaceApiBinder.java new file mode 100644 index 0000000000000..f114235bac50b --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/WorkspaceApiBinder.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis.binders; + +import io.airbyte.server.apis.WorkspaceApiController; +import io.airbyte.server.apis.factories.WorkspaceApiFactory; +import org.glassfish.hk2.utilities.binding.AbstractBinder; +import org.glassfish.jersey.process.internal.RequestScoped; + +public class WorkspaceApiBinder extends AbstractBinder { + + @Override + protected void configure() { + bindFactory(WorkspaceApiFactory.class) + .to(WorkspaceApiController.class) + .in(RequestScoped.class); + } + +} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/factories/WorkspaceApiFactory.java b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/WorkspaceApiFactory.java new file mode 100644 index 0000000000000..644c7fdadc9aa --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/WorkspaceApiFactory.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis.factories; + +import io.airbyte.server.apis.WorkspaceApiController; +import io.airbyte.server.handlers.WorkspacesHandler; +import org.glassfish.hk2.api.Factory; + +public class WorkspaceApiFactory implements Factory { + + private static WorkspacesHandler workspacesHandler; + + public static void setValues(final WorkspacesHandler workspacesHandler) { + WorkspaceApiFactory.workspacesHandler = workspacesHandler; + } + + @Override + public WorkspaceApiController provide() { + return new WorkspaceApiController(WorkspaceApiFactory.workspacesHandler); + } + + @Override + public void dispose(final WorkspaceApiController instance) { + /* no op */ + } + +} From 1cf081b99fe7fd5b1f41f520d9947da1d650fec8 Mon Sep 17 00:00:00 2001 From: Benoit Moriceau Date: Fri, 4 Nov 2022 15:17:14 -0700 Subject: [PATCH 11/12] Extract source definition specification api --- .../java/io/airbyte/server/ServerFactory.java | 7 +++++ .../airbyte/server/apis/ConfigurationApi.java | 20 ++++--------- ...eDefinitionSpecificationApiController.java | 25 ++++++++++++++++ ...ourceDefinitionSpecificationApiBinder.java | 21 ++++++++++++++ ...urceDefinitionSpecificationApiFactory.java | 29 +++++++++++++++++++ 5 files changed, 88 insertions(+), 14 deletions(-) create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionSpecificationApiController.java create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/binders/SourceDefinitionSpecificationApiBinder.java create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/factories/SourceDefinitionSpecificationApiFactory.java diff --git a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java index 705f80cc040d7..c3c27d6a7667c 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java +++ b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java @@ -31,6 +31,7 @@ import io.airbyte.server.apis.SchedulerApiController; import io.airbyte.server.apis.SourceApiController; import io.airbyte.server.apis.SourceDefinitionApiController; +import io.airbyte.server.apis.SourceDefinitionSpecificationApiController; import io.airbyte.server.apis.WebBackendApiController; import io.airbyte.server.apis.WorkspaceApiController; import io.airbyte.server.apis.binders.AttemptApiBinder; @@ -49,6 +50,7 @@ import io.airbyte.server.apis.binders.SchedulerApiBinder; import io.airbyte.server.apis.binders.SourceApiBinder; import io.airbyte.server.apis.binders.SourceDefinitionApiBinder; +import io.airbyte.server.apis.binders.SourceDefinitionSpecificationApiBinder; import io.airbyte.server.apis.binders.SourceOauthApiBinder; import io.airbyte.server.apis.binders.WebBackendApiBinder; import io.airbyte.server.apis.binders.WorkspaceApiBinder; @@ -68,6 +70,7 @@ import io.airbyte.server.apis.factories.SchedulerApiFactory; import io.airbyte.server.apis.factories.SourceApiFactory; import io.airbyte.server.apis.factories.SourceDefinitionApiFactory; +import io.airbyte.server.apis.factories.SourceDefinitionSpecificationApiFactory; import io.airbyte.server.apis.factories.SourceOauthApiFactory; import io.airbyte.server.apis.factories.StateApiFactory; import io.airbyte.server.apis.factories.WebBackendApiFactory; @@ -234,6 +237,8 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul SourceDefinitionApiFactory.setValues(sourceDefinitionsHandler); + SourceDefinitionSpecificationApiFactory.setValues(schedulerHandler); + StateApiFactory.setValues(stateHandler); WebBackendApiFactory.setValues(webBackendConnectionsHandler, webBackendGeographiesHandler); @@ -259,6 +264,7 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul SchedulerApiController.class, SourceApiController.class, SourceDefinitionApiController.class, + SourceDefinitionSpecificationApiController.class, SourceOauthApiFactory.class, WebBackendApiController.class, WorkspaceApiController.class); @@ -282,6 +288,7 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul new SchedulerApiBinder(), new SourceApiBinder(), new SourceDefinitionApiBinder(), + new SourceDefinitionSpecificationApiBinder(), new SourceOauthApiBinder(), new WebBackendApiBinder(), new WorkspaceApiBinder()); diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java index edd5d77163f89..0bf0b55f81c10 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java @@ -116,7 +116,6 @@ import io.airbyte.server.handlers.DestinationDefinitionsHandler; import io.airbyte.server.handlers.DestinationHandler; import io.airbyte.server.handlers.JobHistoryHandler; -import io.airbyte.server.handlers.SchedulerHandler; import io.airbyte.server.handlers.SourceDefinitionsHandler; import io.airbyte.server.handlers.SourceHandler; import io.airbyte.server.scheduler.EventRunner; @@ -138,7 +137,6 @@ public class ConfigurationApi implements io.airbyte.api.generated.V1Api { private final DestinationDefinitionsHandler destinationDefinitionsHandler; private final DestinationHandler destinationHandler; private final ConnectionsHandler connectionsHandler; - private final SchedulerHandler schedulerHandler; private final JobHistoryHandler jobHistoryHandler; public ConfigurationApi(final ConfigRepository configRepository, @@ -162,17 +160,6 @@ public ConfigurationApi(final ConfigRepository configRepository, trackingClient, eventRunner); - schedulerHandler = new SchedulerHandler( - configRepository, - secretsRepositoryReader, - secretsRepositoryWriter, - synchronousSchedulerClient, - jobPersistence, - workerEnvironment, - logConfigs, - eventRunner, - connectionsHandler); - sourceHandler = new SourceHandler( configRepository, secretsRepositoryReader, @@ -390,9 +377,14 @@ public void revokeSourceDefinitionFromWorkspace(final SourceDefinitionIdWithWork // SOURCE SPECIFICATION + /** + * This implementation has been moved to {@link SourceDefinitionSpecificationApiController}. Since + * the path of {@link SourceDefinitionSpecificationApiController} is more granular, it will override + * this implementation + */ @Override public SourceDefinitionSpecificationRead getSourceDefinitionSpecification(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { - return execute(() -> schedulerHandler.getSourceDefinitionSpecification(sourceDefinitionIdWithWorkspaceId)); + throw new NotImplementedException(); } // OAUTH diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionSpecificationApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionSpecificationApiController.java new file mode 100644 index 0000000000000..001b75b7433c6 --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionSpecificationApiController.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis; + +import io.airbyte.api.generated.SourceDefinitionSpecificationApi; +import io.airbyte.api.model.generated.SourceDefinitionIdWithWorkspaceId; +import io.airbyte.api.model.generated.SourceDefinitionSpecificationRead; +import io.airbyte.server.handlers.SchedulerHandler; +import javax.ws.rs.Path; +import lombok.AllArgsConstructor; + +@Path("/v1/source_definition_specifications/get") +@AllArgsConstructor +public class SourceDefinitionSpecificationApiController implements SourceDefinitionSpecificationApi { + + private final SchedulerHandler schedulerHandler; + + @Override + public SourceDefinitionSpecificationRead getSourceDefinitionSpecification(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { + return ConfigurationApi.execute(() -> schedulerHandler.getSourceDefinitionSpecification(sourceDefinitionIdWithWorkspaceId)); + } + +} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/binders/SourceDefinitionSpecificationApiBinder.java b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/SourceDefinitionSpecificationApiBinder.java new file mode 100644 index 0000000000000..5a5ae758f0199 --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/SourceDefinitionSpecificationApiBinder.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis.binders; + +import io.airbyte.server.apis.SourceDefinitionSpecificationApiController; +import io.airbyte.server.apis.factories.SourceDefinitionSpecificationApiFactory; +import org.glassfish.hk2.utilities.binding.AbstractBinder; +import org.glassfish.jersey.process.internal.RequestScoped; + +public class SourceDefinitionSpecificationApiBinder extends AbstractBinder { + + @Override + protected void configure() { + bindFactory(SourceDefinitionSpecificationApiFactory.class) + .to(SourceDefinitionSpecificationApiController.class) + .in(RequestScoped.class); + } + +} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/factories/SourceDefinitionSpecificationApiFactory.java b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/SourceDefinitionSpecificationApiFactory.java new file mode 100644 index 0000000000000..8ea1f7d456ecd --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/SourceDefinitionSpecificationApiFactory.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis.factories; + +import io.airbyte.server.apis.SourceDefinitionSpecificationApiController; +import io.airbyte.server.handlers.SchedulerHandler; +import org.glassfish.hk2.api.Factory; + +public class SourceDefinitionSpecificationApiFactory implements Factory { + + private static SchedulerHandler schedulerHandler; + + public static void setValues(final SchedulerHandler schedulerHandler) { + SourceDefinitionSpecificationApiFactory.schedulerHandler = schedulerHandler; + } + + @Override + public SourceDefinitionSpecificationApiController provide() { + return new SourceDefinitionSpecificationApiController(SourceDefinitionSpecificationApiFactory.schedulerHandler); + } + + @Override + public void dispose(final SourceDefinitionSpecificationApiController instance) { + /* no op */ + } + +} From e1649aba4cab9787908871ecbddf65daa2414b8c Mon Sep 17 00:00:00 2001 From: Benoit Moriceau Date: Fri, 4 Nov 2022 15:31:33 -0700 Subject: [PATCH 12/12] Remove configuration API --- .../server/ConfigurationApiBinder.java | 20 - .../server/ConfigurationApiFactory.java | 95 -- .../java/io/airbyte/server/ServerApp.java | 15 - .../java/io/airbyte/server/ServerFactory.java | 72 +- .../io/airbyte/server/apis/ApiHelper.java | 35 + .../server/apis/AttemptApiController.java | 2 +- .../airbyte/server/apis/ConfigurationApi.java | 1163 ----------------- .../server/apis/ConnectionApiController.java | 18 +- .../server/apis/DbMigrationApiController.java | 4 +- .../server/apis/DestinationApiController.java | 18 +- .../DestinationDefinitionApiController.java | 28 +- ...nDefinitionSpecificationApiController.java | 2 +- .../apis/DestinationOauthApiController.java | 6 +- .../server/apis/JobsApiController.java | 12 +- .../server/apis/LogsApiController.java | 2 +- .../apis/NotificationsApiController.java | 2 +- .../server/apis/OpenapiApiController.java | 2 +- .../server/apis/OperationApiController.java | 12 +- .../server/apis/SchedulerApiController.java | 6 +- .../server/apis/SourceApiController.java | 20 +- .../apis/SourceDefinitionApiController.java | 28 +- ...eDefinitionSpecificationApiController.java | 2 +- .../server/apis/SourceOauthApiController.java | 6 +- .../server/apis/StateApiController.java | 4 +- .../server/apis/WebBackendApiController.java | 14 +- .../server/apis/WorkspaceApiController.java | 16 +- 26 files changed, 139 insertions(+), 1465 deletions(-) delete mode 100644 airbyte-server/src/main/java/io/airbyte/server/ConfigurationApiBinder.java delete mode 100644 airbyte-server/src/main/java/io/airbyte/server/ConfigurationApiFactory.java create mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/ApiHelper.java delete mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java diff --git a/airbyte-server/src/main/java/io/airbyte/server/ConfigurationApiBinder.java b/airbyte-server/src/main/java/io/airbyte/server/ConfigurationApiBinder.java deleted file mode 100644 index c4ddb4f0149e6..0000000000000 --- a/airbyte-server/src/main/java/io/airbyte/server/ConfigurationApiBinder.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2022 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.server; - -import io.airbyte.server.apis.ConfigurationApi; -import org.glassfish.hk2.utilities.binding.AbstractBinder; -import org.glassfish.jersey.process.internal.RequestScoped; - -public class ConfigurationApiBinder extends AbstractBinder { - - @Override - protected void configure() { - bindFactory(ConfigurationApiFactory.class) - .to(ConfigurationApi.class) - .in(RequestScoped.class); - } - -} diff --git a/airbyte-server/src/main/java/io/airbyte/server/ConfigurationApiFactory.java b/airbyte-server/src/main/java/io/airbyte/server/ConfigurationApiFactory.java deleted file mode 100644 index 1d423e6836670..0000000000000 --- a/airbyte-server/src/main/java/io/airbyte/server/ConfigurationApiFactory.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (c) 2022 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.server; - -import io.airbyte.analytics.TrackingClient; -import io.airbyte.commons.version.AirbyteVersion; -import io.airbyte.config.Configs.WorkerEnvironment; -import io.airbyte.config.helpers.LogConfigs; -import io.airbyte.config.persistence.ConfigRepository; -import io.airbyte.config.persistence.SecretsRepositoryReader; -import io.airbyte.config.persistence.SecretsRepositoryWriter; -import io.airbyte.config.persistence.StatePersistence; -import io.airbyte.db.Database; -import io.airbyte.persistence.job.JobPersistence; -import io.airbyte.server.apis.ConfigurationApi; -import io.airbyte.server.scheduler.EventRunner; -import io.airbyte.server.scheduler.SynchronousSchedulerClient; -import java.net.http.HttpClient; -import java.nio.file.Path; -import java.util.Map; -import org.flywaydb.core.Flyway; -import org.glassfish.hk2.api.Factory; -import org.slf4j.MDC; - -public class ConfigurationApiFactory implements Factory { - - private static ConfigRepository configRepository; - private static JobPersistence jobPersistence; - private static SecretsRepositoryReader secretsRepositoryReader; - private static SecretsRepositoryWriter secretsRepositoryWriter; - private static SynchronousSchedulerClient synchronousSchedulerClient; - private static Map mdc; - private static TrackingClient trackingClient; - private static WorkerEnvironment workerEnvironment; - private static LogConfigs logConfigs; - private static AirbyteVersion airbyteVersion; - private static EventRunner eventRunner; - - public static void setValues( - final ConfigRepository configRepository, - final SecretsRepositoryReader secretsRepositoryReader, - final SecretsRepositoryWriter secretsRepositoryWriter, - final JobPersistence jobPersistence, - final SynchronousSchedulerClient synchronousSchedulerClient, - final StatePersistence statePersistence, - final Map mdc, - final Database configsDatabase, - final Database jobsDatabase, - final TrackingClient trackingClient, - final WorkerEnvironment workerEnvironment, - final LogConfigs logConfigs, - final AirbyteVersion airbyteVersion, - final Path workspaceRoot, - final HttpClient httpClient, - final EventRunner eventRunner, - final Flyway configsFlyway, - final Flyway jobsFlyway) { - ConfigurationApiFactory.configRepository = configRepository; - ConfigurationApiFactory.jobPersistence = jobPersistence; - ConfigurationApiFactory.secretsRepositoryReader = secretsRepositoryReader; - ConfigurationApiFactory.secretsRepositoryWriter = secretsRepositoryWriter; - ConfigurationApiFactory.synchronousSchedulerClient = synchronousSchedulerClient; - ConfigurationApiFactory.mdc = mdc; - ConfigurationApiFactory.trackingClient = trackingClient; - ConfigurationApiFactory.workerEnvironment = workerEnvironment; - ConfigurationApiFactory.logConfigs = logConfigs; - ConfigurationApiFactory.airbyteVersion = airbyteVersion; - ConfigurationApiFactory.eventRunner = eventRunner; - } - - @Override - public ConfigurationApi provide() { - MDC.setContextMap(ConfigurationApiFactory.mdc); - - return new ConfigurationApi( - ConfigurationApiFactory.configRepository, - ConfigurationApiFactory.jobPersistence, - ConfigurationApiFactory.secretsRepositoryReader, - ConfigurationApiFactory.secretsRepositoryWriter, - ConfigurationApiFactory.synchronousSchedulerClient, - ConfigurationApiFactory.trackingClient, - ConfigurationApiFactory.workerEnvironment, - ConfigurationApiFactory.logConfigs, - ConfigurationApiFactory.airbyteVersion, - ConfigurationApiFactory.eventRunner); - } - - @Override - public void dispose(final ConfigurationApi service) { - /* noop */ - } - -} diff --git a/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java b/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java index a5e77a945ca6d..f674c90679cf4 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java +++ b/airbyte-server/src/main/java/io/airbyte/server/ServerApp.java @@ -360,22 +360,7 @@ public static ServerRunnable getServer(final ServerFactory apiFactory, LOGGER.info("Starting server..."); return apiFactory.create( - syncSchedulerClient, - configRepository, - secretsRepositoryReader, - secretsRepositoryWriter, - jobPersistence, - configsDatabase, - jobsDatabase, - trackingClient, - configs.getWorkerEnvironment(), - configs.getLogConfigs(), configs.getAirbyteVersion(), - configs.getWorkspaceRoot(), - httpClient, - eventRunner, - configsFlyway, - jobsFlyway, attemptHandler, connectionsHandler, dbMigrationHandler, diff --git a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java index c3c27d6a7667c..9add45db4ce20 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java +++ b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java @@ -4,18 +4,8 @@ package io.airbyte.server; -import io.airbyte.analytics.TrackingClient; import io.airbyte.commons.version.AirbyteVersion; -import io.airbyte.config.Configs.WorkerEnvironment; -import io.airbyte.config.helpers.LogConfigs; -import io.airbyte.config.persistence.ConfigRepository; -import io.airbyte.config.persistence.SecretsRepositoryReader; -import io.airbyte.config.persistence.SecretsRepositoryWriter; -import io.airbyte.config.persistence.StatePersistence; -import io.airbyte.db.Database; -import io.airbyte.persistence.job.JobPersistence; import io.airbyte.server.apis.AttemptApiController; -import io.airbyte.server.apis.ConfigurationApi; import io.airbyte.server.apis.ConnectionApiController; import io.airbyte.server.apis.DbMigrationApiController; import io.airbyte.server.apis.DestinationApiController; @@ -93,33 +83,13 @@ import io.airbyte.server.handlers.WebBackendConnectionsHandler; import io.airbyte.server.handlers.WebBackendGeographiesHandler; import io.airbyte.server.handlers.WorkspacesHandler; -import io.airbyte.server.scheduler.EventRunner; -import io.airbyte.server.scheduler.SynchronousSchedulerClient; -import java.net.http.HttpClient; -import java.nio.file.Path; import java.util.Map; import java.util.Set; -import org.flywaydb.core.Flyway; import org.slf4j.MDC; public interface ServerFactory { - ServerRunnable create(final SynchronousSchedulerClient synchronousSchedulerClient, - final ConfigRepository configRepository, - final SecretsRepositoryReader secretsRepositoryReader, - final SecretsRepositoryWriter secretsRepositoryWriter, - final JobPersistence jobPersistence, - final Database configsDatabase, - final Database jobsDatabase, - final TrackingClient trackingClient, - final WorkerEnvironment workerEnvironment, - final LogConfigs logConfigs, - final AirbyteVersion airbyteVersion, - final Path workspaceRoot, - final HttpClient httpClient, - final EventRunner eventRunner, - final Flyway configsFlyway, - final Flyway jobsFlyway, + ServerRunnable create(final AirbyteVersion airbyteVersion, final AttemptHandler attemptHandler, final ConnectionsHandler connectionsHandler, final DbMigrationHandler dbMigrationHandler, @@ -142,22 +112,7 @@ ServerRunnable create(final SynchronousSchedulerClient synchronousSchedulerClien class Api implements ServerFactory { @Override - public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedulerClient, - final ConfigRepository configRepository, - final SecretsRepositoryReader secretsRepositoryReader, - final SecretsRepositoryWriter secretsRepositoryWriter, - final JobPersistence jobPersistence, - final Database configsDatabase, - final Database jobsDatabase, - final TrackingClient trackingClient, - final WorkerEnvironment workerEnvironment, - final LogConfigs logConfigs, - final AirbyteVersion airbyteVersion, - final Path workspaceRoot, - final HttpClient httpClient, - final EventRunner eventRunner, - final Flyway configsFlyway, - final Flyway jobsFlyway, + public ServerRunnable create(final AirbyteVersion airbyteVersion, final AttemptHandler attemptHandler, final ConnectionsHandler connectionsHandler, final DbMigrationHandler dbMigrationHandler, @@ -178,27 +133,6 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul final WebBackendGeographiesHandler webBackendGeographiesHandler) { final Map mdc = MDC.getCopyOfContextMap(); - // set static values for factory - ConfigurationApiFactory.setValues( - configRepository, - secretsRepositoryReader, - secretsRepositoryWriter, - jobPersistence, - synchronousSchedulerClient, - new StatePersistence(configsDatabase), - mdc, - configsDatabase, - jobsDatabase, - trackingClient, - workerEnvironment, - logConfigs, - airbyteVersion, - workspaceRoot, - httpClient, - eventRunner, - configsFlyway, - jobsFlyway); - AttemptApiFactory.setValues(attemptHandler, mdc); ConnectionApiFactory.setValues( @@ -247,7 +181,6 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul // server configurations final Set> componentClasses = Set.of( - ConfigurationApi.class, AttemptApiController.class, ConnectionApiController.class, DbMigrationApiController.class, @@ -271,7 +204,6 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul final Set components = Set.of( new CorsFilter(), - new ConfigurationApiBinder(), new AttemptApiBinder(), new ConnectionApiBinder(), new DbMigrationBinder(), diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/ApiHelper.java b/airbyte-server/src/main/java/io/airbyte/server/apis/ApiHelper.java new file mode 100644 index 0000000000000..5164ea9135f72 --- /dev/null +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/ApiHelper.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.server.apis; + +import io.airbyte.config.persistence.ConfigNotFoundException; +import io.airbyte.server.errors.BadObjectSchemaKnownException; +import io.airbyte.server.errors.IdNotFoundKnownException; +import io.airbyte.validation.json.JsonValidationException; +import java.io.IOException; + +public class ApiHelper { + + static T execute(final HandlerCall call) { + try { + return call.call(); + } catch (final ConfigNotFoundException e) { + throw new IdNotFoundKnownException(String.format("Could not find configuration for %s: %s.", e.getType(), e.getConfigId()), + e.getConfigId(), e); + } catch (final JsonValidationException e) { + throw new BadObjectSchemaKnownException( + String.format("The provided configuration does not fulfill the specification. Errors: %s", e.getMessage()), e); + } catch (final IOException e) { + throw new RuntimeException(e); + } + } + + interface HandlerCall { + + T call() throws ConfigNotFoundException, IOException, JsonValidationException; + + } + +} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/AttemptApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/AttemptApiController.java index 71274154cca41..c31fa3b230674 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/AttemptApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/AttemptApiController.java @@ -21,7 +21,7 @@ public AttemptApiController(final AttemptHandler attemptHandler) { @Override public InternalOperationResult setWorkflowInAttempt(final SetWorkflowInAttemptRequestBody requestBody) { - return ConfigurationApi.execute(() -> attemptHandler.setWorkflowInAttempt(requestBody)); + return ApiHelper.execute(() -> attemptHandler.setWorkflowInAttempt(requestBody)); } } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java deleted file mode 100644 index 0bf0b55f81c10..0000000000000 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java +++ /dev/null @@ -1,1163 +0,0 @@ -/* - * Copyright (c) 2022 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.server.apis; - -import io.airbyte.analytics.TrackingClient; -import io.airbyte.api.model.generated.AttemptNormalizationStatusReadList; -import io.airbyte.api.model.generated.CheckConnectionRead; -import io.airbyte.api.model.generated.CheckOperationRead; -import io.airbyte.api.model.generated.CompleteDestinationOAuthRequest; -import io.airbyte.api.model.generated.CompleteSourceOauthRequest; -import io.airbyte.api.model.generated.ConnectionCreate; -import io.airbyte.api.model.generated.ConnectionIdRequestBody; -import io.airbyte.api.model.generated.ConnectionRead; -import io.airbyte.api.model.generated.ConnectionReadList; -import io.airbyte.api.model.generated.ConnectionSearch; -import io.airbyte.api.model.generated.ConnectionState; -import io.airbyte.api.model.generated.ConnectionStateCreateOrUpdate; -import io.airbyte.api.model.generated.ConnectionStateType; -import io.airbyte.api.model.generated.ConnectionUpdate; -import io.airbyte.api.model.generated.CustomDestinationDefinitionCreate; -import io.airbyte.api.model.generated.CustomDestinationDefinitionUpdate; -import io.airbyte.api.model.generated.CustomSourceDefinitionCreate; -import io.airbyte.api.model.generated.CustomSourceDefinitionUpdate; -import io.airbyte.api.model.generated.DbMigrationExecutionRead; -import io.airbyte.api.model.generated.DbMigrationReadList; -import io.airbyte.api.model.generated.DbMigrationRequestBody; -import io.airbyte.api.model.generated.DestinationCloneRequestBody; -import io.airbyte.api.model.generated.DestinationCoreConfig; -import io.airbyte.api.model.generated.DestinationCreate; -import io.airbyte.api.model.generated.DestinationDefinitionCreate; -import io.airbyte.api.model.generated.DestinationDefinitionIdRequestBody; -import io.airbyte.api.model.generated.DestinationDefinitionIdWithWorkspaceId; -import io.airbyte.api.model.generated.DestinationDefinitionRead; -import io.airbyte.api.model.generated.DestinationDefinitionReadList; -import io.airbyte.api.model.generated.DestinationDefinitionSpecificationRead; -import io.airbyte.api.model.generated.DestinationDefinitionUpdate; -import io.airbyte.api.model.generated.DestinationIdRequestBody; -import io.airbyte.api.model.generated.DestinationOauthConsentRequest; -import io.airbyte.api.model.generated.DestinationRead; -import io.airbyte.api.model.generated.DestinationReadList; -import io.airbyte.api.model.generated.DestinationSearch; -import io.airbyte.api.model.generated.DestinationUpdate; -import io.airbyte.api.model.generated.HealthCheckRead; -import io.airbyte.api.model.generated.InternalOperationResult; -import io.airbyte.api.model.generated.JobDebugInfoRead; -import io.airbyte.api.model.generated.JobIdRequestBody; -import io.airbyte.api.model.generated.JobInfoLightRead; -import io.airbyte.api.model.generated.JobInfoRead; -import io.airbyte.api.model.generated.JobListRequestBody; -import io.airbyte.api.model.generated.JobReadList; -import io.airbyte.api.model.generated.LogsRequestBody; -import io.airbyte.api.model.generated.Notification; -import io.airbyte.api.model.generated.NotificationRead; -import io.airbyte.api.model.generated.OAuthConsentRead; -import io.airbyte.api.model.generated.OperationCreate; -import io.airbyte.api.model.generated.OperationIdRequestBody; -import io.airbyte.api.model.generated.OperationRead; -import io.airbyte.api.model.generated.OperationReadList; -import io.airbyte.api.model.generated.OperationUpdate; -import io.airbyte.api.model.generated.OperatorConfiguration; -import io.airbyte.api.model.generated.PrivateDestinationDefinitionRead; -import io.airbyte.api.model.generated.PrivateDestinationDefinitionReadList; -import io.airbyte.api.model.generated.PrivateSourceDefinitionRead; -import io.airbyte.api.model.generated.PrivateSourceDefinitionReadList; -import io.airbyte.api.model.generated.SetInstancewideDestinationOauthParamsRequestBody; -import io.airbyte.api.model.generated.SetInstancewideSourceOauthParamsRequestBody; -import io.airbyte.api.model.generated.SetWorkflowInAttemptRequestBody; -import io.airbyte.api.model.generated.SlugRequestBody; -import io.airbyte.api.model.generated.SourceCloneRequestBody; -import io.airbyte.api.model.generated.SourceCoreConfig; -import io.airbyte.api.model.generated.SourceCreate; -import io.airbyte.api.model.generated.SourceDefinitionCreate; -import io.airbyte.api.model.generated.SourceDefinitionIdRequestBody; -import io.airbyte.api.model.generated.SourceDefinitionIdWithWorkspaceId; -import io.airbyte.api.model.generated.SourceDefinitionRead; -import io.airbyte.api.model.generated.SourceDefinitionReadList; -import io.airbyte.api.model.generated.SourceDefinitionSpecificationRead; -import io.airbyte.api.model.generated.SourceDefinitionUpdate; -import io.airbyte.api.model.generated.SourceDiscoverSchemaRead; -import io.airbyte.api.model.generated.SourceDiscoverSchemaRequestBody; -import io.airbyte.api.model.generated.SourceIdRequestBody; -import io.airbyte.api.model.generated.SourceOauthConsentRequest; -import io.airbyte.api.model.generated.SourceRead; -import io.airbyte.api.model.generated.SourceReadList; -import io.airbyte.api.model.generated.SourceSearch; -import io.airbyte.api.model.generated.SourceUpdate; -import io.airbyte.api.model.generated.WebBackendConnectionCreate; -import io.airbyte.api.model.generated.WebBackendConnectionRead; -import io.airbyte.api.model.generated.WebBackendConnectionReadList; -import io.airbyte.api.model.generated.WebBackendConnectionRequestBody; -import io.airbyte.api.model.generated.WebBackendConnectionUpdate; -import io.airbyte.api.model.generated.WebBackendGeographiesListResult; -import io.airbyte.api.model.generated.WebBackendWorkspaceState; -import io.airbyte.api.model.generated.WebBackendWorkspaceStateResult; -import io.airbyte.api.model.generated.WorkspaceCreate; -import io.airbyte.api.model.generated.WorkspaceGiveFeedback; -import io.airbyte.api.model.generated.WorkspaceIdRequestBody; -import io.airbyte.api.model.generated.WorkspaceRead; -import io.airbyte.api.model.generated.WorkspaceReadList; -import io.airbyte.api.model.generated.WorkspaceUpdate; -import io.airbyte.api.model.generated.WorkspaceUpdateName; -import io.airbyte.commons.version.AirbyteVersion; -import io.airbyte.config.Configs.WorkerEnvironment; -import io.airbyte.config.helpers.LogConfigs; -import io.airbyte.config.persistence.ConfigNotFoundException; -import io.airbyte.config.persistence.ConfigRepository; -import io.airbyte.config.persistence.SecretsRepositoryReader; -import io.airbyte.config.persistence.SecretsRepositoryWriter; -import io.airbyte.persistence.job.JobPersistence; -import io.airbyte.persistence.job.WorkspaceHelper; -import io.airbyte.server.errors.BadObjectSchemaKnownException; -import io.airbyte.server.errors.IdNotFoundKnownException; -import io.airbyte.server.handlers.ConnectionsHandler; -import io.airbyte.server.handlers.DestinationDefinitionsHandler; -import io.airbyte.server.handlers.DestinationHandler; -import io.airbyte.server.handlers.JobHistoryHandler; -import io.airbyte.server.handlers.SourceDefinitionsHandler; -import io.airbyte.server.handlers.SourceHandler; -import io.airbyte.server.scheduler.EventRunner; -import io.airbyte.server.scheduler.SynchronousSchedulerClient; -import io.airbyte.validation.json.JsonSchemaValidator; -import io.airbyte.validation.json.JsonValidationException; -import java.io.File; -import java.io.IOException; -import java.util.Map; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.NotImplementedException; - -@javax.ws.rs.Path("/v1") -@Slf4j -public class ConfigurationApi implements io.airbyte.api.generated.V1Api { - - private final SourceDefinitionsHandler sourceDefinitionsHandler; - private final SourceHandler sourceHandler; - private final DestinationDefinitionsHandler destinationDefinitionsHandler; - private final DestinationHandler destinationHandler; - private final ConnectionsHandler connectionsHandler; - private final JobHistoryHandler jobHistoryHandler; - - public ConfigurationApi(final ConfigRepository configRepository, - final JobPersistence jobPersistence, - final SecretsRepositoryReader secretsRepositoryReader, - final SecretsRepositoryWriter secretsRepositoryWriter, - final SynchronousSchedulerClient synchronousSchedulerClient, - final TrackingClient trackingClient, - final WorkerEnvironment workerEnvironment, - final LogConfigs logConfigs, - final AirbyteVersion airbyteVersion, - final EventRunner eventRunner) { - - final JsonSchemaValidator schemaValidator = new JsonSchemaValidator(); - - final WorkspaceHelper workspaceHelper = new WorkspaceHelper(configRepository, jobPersistence); - - connectionsHandler = new ConnectionsHandler( - configRepository, - workspaceHelper, - trackingClient, - eventRunner); - - sourceHandler = new SourceHandler( - configRepository, - secretsRepositoryReader, - secretsRepositoryWriter, - schemaValidator, - connectionsHandler); - sourceDefinitionsHandler = new SourceDefinitionsHandler(configRepository, synchronousSchedulerClient, sourceHandler); - destinationHandler = new DestinationHandler( - configRepository, - secretsRepositoryReader, - secretsRepositoryWriter, - schemaValidator, - connectionsHandler); - destinationDefinitionsHandler = new DestinationDefinitionsHandler(configRepository, synchronousSchedulerClient, destinationHandler); - jobHistoryHandler = new JobHistoryHandler(jobPersistence, workerEnvironment, logConfigs, connectionsHandler, sourceHandler, - sourceDefinitionsHandler, destinationHandler, destinationDefinitionsHandler, airbyteVersion); - } - - // WORKSPACE - - /** - * This implementation has been moved to {@link WorkspaceApiController}. Since the path of - * {@link WorkspaceApiController} is more granular, it will override this implementation - */ - @Override - public WorkspaceReadList listWorkspaces() { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link WorkspaceApiController}. Since the path of - * {@link WorkspaceApiController} is more granular, it will override this implementation - */ - @Override - public WorkspaceRead createWorkspace(final WorkspaceCreate workspaceCreate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link WorkspaceApiController}. Since the path of - * {@link WorkspaceApiController} is more granular, it will override this implementation - */ - @Override - public void deleteWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link WorkspaceApiController}. Since the path of - * {@link WorkspaceApiController} is more granular, it will override this implementation - */ - @Override - public WorkspaceRead getWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - throw new NotImplementedException(); - } - - @Override - public WorkspaceRead getWorkspaceBySlug(final SlugRequestBody slugRequestBody) { - throw new NotImplementedException(); - } - - @Override - public WorkspaceRead updateWorkspace(final WorkspaceUpdate workspaceUpdate) { - throw new NotImplementedException(); - } - - @Override - public WorkspaceRead updateWorkspaceName(final WorkspaceUpdateName workspaceUpdateName) { - throw new NotImplementedException(); - } - - @Override - public void updateWorkspaceFeedback(final WorkspaceGiveFeedback workspaceGiveFeedback) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link AttemptApiController}. Since the path of - * {@link AttemptApiController} is more granular, it will override this implementation - */ - @Override - public NotificationRead tryNotificationConfig(final Notification notification) { - throw new NotImplementedException(); - } - - // SOURCE - - /** - * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of - * {@link SourceDefinitionApiController} is more granular, it will override this implementation - */ - @Override - public SourceDefinitionReadList listSourceDefinitions() { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of - * {@link SourceDefinitionApiController} is more granular, it will override this implementation - */ - @Override - public SourceDefinitionReadList listSourceDefinitionsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of - * {@link SourceDefinitionApiController} is more granular, it will override this implementation - */ - @Override - public SourceDefinitionReadList listLatestSourceDefinitions() { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of - * {@link SourceDefinitionApiController} is more granular, it will override this implementation - */ - @Override - public PrivateSourceDefinitionReadList listPrivateSourceDefinitions(final WorkspaceIdRequestBody workspaceIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of - * {@link SourceDefinitionApiController} is more granular, it will override this implementation - */ - @Override - public SourceDefinitionRead getSourceDefinition(final SourceDefinitionIdRequestBody sourceDefinitionIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of - * {@link SourceDefinitionApiController} is more granular, it will override this implementation - */ - @Override - public SourceDefinitionRead getSourceDefinitionForWorkspace(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { - throw new NotImplementedException(); - } - - // TODO: Deprecate this route in favor of createCustomSourceDefinition - // since all connector definitions created through the API are custom - /** - * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of - * {@link SourceDefinitionApiController} is more granular, it will override this implementation - */ - @Override - public SourceDefinitionRead createSourceDefinition(final SourceDefinitionCreate sourceDefinitionCreate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of - * {@link SourceDefinitionApiController} is more granular, it will override this implementation - */ - @Override - public SourceDefinitionRead createCustomSourceDefinition(final CustomSourceDefinitionCreate customSourceDefinitionCreate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of - * {@link SourceDefinitionApiController} is more granular, it will override this implementation - */ - @Override - public SourceDefinitionRead updateSourceDefinition(final SourceDefinitionUpdate sourceDefinitionUpdate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of - * {@link SourceDefinitionApiController} is more granular, it will override this implementation - */ - @Override - public SourceDefinitionRead updateCustomSourceDefinition(final CustomSourceDefinitionUpdate customSourceDefinitionUpdate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of - * {@link SourceDefinitionApiController} is more granular, it will override this implementation - */ - @Override - public void deleteSourceDefinition(final SourceDefinitionIdRequestBody sourceDefinitionIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of - * {@link SourceDefinitionApiController} is more granular, it will override this implementation - */ - @Override - public void deleteCustomSourceDefinition(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of - * {@link SourceDefinitionApiController} is more granular, it will override this implementation - */ - @Override - public PrivateSourceDefinitionRead grantSourceDefinitionToWorkspace(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceDefinitionApiController}. Since the path of - * {@link SourceDefinitionApiController} is more granular, it will override this implementation - */ - @Override - public void revokeSourceDefinitionFromWorkspace(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { - throw new NotImplementedException(); - } - - // SOURCE SPECIFICATION - - /** - * This implementation has been moved to {@link SourceDefinitionSpecificationApiController}. Since - * the path of {@link SourceDefinitionSpecificationApiController} is more granular, it will override - * this implementation - */ - @Override - public SourceDefinitionSpecificationRead getSourceDefinitionSpecification(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { - throw new NotImplementedException(); - } - - // OAUTH - - /** - * This implementation has been moved to {@link SourceOauthApiController}. Since the path of - * {@link SourceOauthApiController} is more granular, it will override this implementation - */ - @Override - public OAuthConsentRead getSourceOAuthConsent(final SourceOauthConsentRequest sourceOauthConsentRequest) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceOauthApiController}. Since the path of - * {@link SourceOauthApiController} is more granular, it will override this implementation - */ - @Override - public Map completeSourceOAuth(final CompleteSourceOauthRequest completeSourceOauthRequest) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationOauthApiController}. Since the path of - * {@link DestinationOauthApiController} is more granular, it will override this implementation - */ - @Override - public OAuthConsentRead getDestinationOAuthConsent(final DestinationOauthConsentRequest destinationOauthConsentRequest) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationOauthApiController}. Since the path of - * {@link DestinationOauthApiController} is more granular, it will override this implementation - */ - @Override - public Map completeDestinationOAuth(final CompleteDestinationOAuthRequest requestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationOauthApiController}. Since the path of - * {@link DestinationOauthApiController} is more granular, it will override this implementation - */ - @Override - public void setInstancewideDestinationOauthParams(final SetInstancewideDestinationOauthParamsRequestBody requestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceOauthApiController}. Since the path of - * {@link SourceOauthApiController} is more granular, it will override this implementation - */ - @Override - public void setInstancewideSourceOauthParams(final SetInstancewideSourceOauthParamsRequestBody requestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link AttemptApiController}. Since the path of - * {@link AttemptApiController} is more granular, it will override this implementation - */ - @Override - public InternalOperationResult setWorkflowInAttempt(final SetWorkflowInAttemptRequestBody setWorkflowInAttemptRequestBody) { - throw new NotImplementedException(); - } - - // SOURCE IMPLEMENTATION - - /** - * This implementation has been moved to {@link SourceApiController}. Since the path of - * {@link SourceApiController} is more granular, it will override this implementation - */ - @Override - public SourceRead createSource(final SourceCreate sourceCreate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceApiController}. Since the path of - * {@link SourceApiController} is more granular, it will override this implementation - */ - @Override - public SourceRead updateSource(final SourceUpdate sourceUpdate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceApiController}. Since the path of - * {@link SourceApiController} is more granular, it will override this implementation - */ - @Override - public SourceReadList listSourcesForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceApiController}. Since the path of - * {@link SourceApiController} is more granular, it will override this implementation - */ - @Override - public SourceReadList searchSources(final SourceSearch sourceSearch) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceApiController}. Since the path of - * {@link SourceApiController} is more granular, it will override this implementation - */ - @Override - public SourceRead getSource(final SourceIdRequestBody sourceIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceApiController}. Since the path of - * {@link SourceApiController} is more granular, it will override this implementation - */ - @Override - public void deleteSource(final SourceIdRequestBody sourceIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceApiController}. Since the path of - * {@link SourceApiController} is more granular, it will override this implementation - */ - @Override - public SourceRead cloneSource(final SourceCloneRequestBody sourceCloneRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceApiController}. Since the path of - * {@link SourceApiController} is more granular, it will override this implementation - */ - @Override - public CheckConnectionRead checkConnectionToSource(final SourceIdRequestBody sourceIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceApiController}. Since the path of - * {@link SourceApiController} is more granular, it will override this implementation - */ - @Override - public CheckConnectionRead checkConnectionToSourceForUpdate(final SourceUpdate sourceUpdate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SourceApiController}. Since the path of - * {@link SourceApiController} is more granular, it will override this implementation - */ - @Override - public SourceDiscoverSchemaRead discoverSchemaForSource(final SourceDiscoverSchemaRequestBody discoverSchemaRequestBody) { - throw new NotImplementedException(); - } - - // DB MIGRATION - - /** - * This implementation has been moved to {@link DbMigrationApiController}. Since the path of - * {@link DbMigrationApiController} is more granular, it will override this implementation - */ - @Override - public DbMigrationReadList listMigrations(final DbMigrationRequestBody request) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DbMigrationApiController}. Since the path of - * {@link DbMigrationApiController} is more granular, it will override this implementation - */ - @Override - public DbMigrationExecutionRead executeMigrations(final DbMigrationRequestBody request) { - throw new NotImplementedException(); - } - - // DESTINATION - - /** - * This implementation has been moved to {@link DestinationDefinitionApiController}. Since the path - * of {@link DestinationDefinitionApiController} is more granular, it will override this - * implementation - */ - @Override - public DestinationDefinitionReadList listDestinationDefinitions() { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationDefinitionApiController}. Since the path - * of {@link DestinationDefinitionApiController} is more granular, it will override this - * implementation - */ - @Override - public DestinationDefinitionReadList listDestinationDefinitionsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationDefinitionApiController}. Since the path - * of {@link DestinationDefinitionApiController} is more granular, it will override this - * implementation - */ - @Override - public DestinationDefinitionReadList listLatestDestinationDefinitions() { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationDefinitionApiController}. Since the path - * of {@link DestinationDefinitionApiController} is more granular, it will override this - * implementation - */ - @Override - public PrivateDestinationDefinitionReadList listPrivateDestinationDefinitions(final WorkspaceIdRequestBody workspaceIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationDefinitionApiController}. Since the path - * of {@link DestinationDefinitionApiController} is more granular, it will override this - * implementation - */ - @Override - public DestinationDefinitionRead getDestinationDefinition(final DestinationDefinitionIdRequestBody destinationDefinitionIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationDefinitionApiController}. Since the path - * of {@link DestinationDefinitionApiController} is more granular, it will override this - * implementation - */ - @Override - public DestinationDefinitionRead getDestinationDefinitionForWorkspace( - final DestinationDefinitionIdWithWorkspaceId destinationDefinitionIdWithWorkspaceId) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationDefinitionApiController}. Since the path - * of {@link DestinationDefinitionApiController} is more granular, it will override this - * implementation - */ - // TODO: Deprecate this route in favor of createCustomDestinationDefinition - // since all connector definitions created through the API are custom - @Override - public DestinationDefinitionRead createDestinationDefinition(final DestinationDefinitionCreate destinationDefinitionCreate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationDefinitionApiController}. Since the path - * of {@link DestinationDefinitionApiController} is more granular, it will override this - * implementation - */ - @Override - public DestinationDefinitionRead createCustomDestinationDefinition(final CustomDestinationDefinitionCreate customDestinationDefinitionCreate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationDefinitionApiController}. Since the path - * of {@link DestinationDefinitionApiController} is more granular, it will override this - * implementation - */ - @Override - public DestinationDefinitionRead updateDestinationDefinition(final DestinationDefinitionUpdate destinationDefinitionUpdate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationDefinitionApiController}. Since the path - * of {@link DestinationDefinitionApiController} is more granular, it will override this - * implementation - */ - @Override - public DestinationDefinitionRead updateCustomDestinationDefinition(final CustomDestinationDefinitionUpdate customDestinationDefinitionUpdate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationDefinitionApiController}. Since the path - * of {@link DestinationDefinitionApiController} is more granular, it will override this - * implementation - */ - @Override - public void deleteDestinationDefinition(final DestinationDefinitionIdRequestBody destinationDefinitionIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationDefinitionApiController}. Since the path - * of {@link DestinationDefinitionApiController} is more granular, it will override this - * implementation - */ - @Override - public void deleteCustomDestinationDefinition(final DestinationDefinitionIdWithWorkspaceId destinationDefinitionIdWithWorkspaceId) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationDefinitionApiController}. Since the path - * of {@link DestinationDefinitionApiController} is more granular, it will override this - * implementation - */ - @Override - public PrivateDestinationDefinitionRead grantDestinationDefinitionToWorkspace( - final DestinationDefinitionIdWithWorkspaceId destinationDefinitionIdWithWorkspaceId) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationDefinitionApiController}. Since the path - * of {@link DestinationDefinitionApiController} is more granular, it will override this - * implementation - */ - @Override - public void revokeDestinationDefinitionFromWorkspace(final DestinationDefinitionIdWithWorkspaceId destinationDefinitionIdWithWorkspaceId) { - throw new NotImplementedException(); - } - - // DESTINATION SPECIFICATION - /** - * This implementation has been moved to {@link DestinationDefinitionSpecificationApiController}. - * Since the path of {@link DestinationDefinitionSpecificationApiController} is more granular, it - * will override this implementation - */ - @Override - public DestinationDefinitionSpecificationRead getDestinationDefinitionSpecification( - final DestinationDefinitionIdWithWorkspaceId destinationDefinitionIdWithWorkspaceId) { - throw new NotImplementedException(); - } - - // DESTINATION IMPLEMENTATION - - /** - * This implementation has been moved to {@link DestinationApiController}. Since the path of - * {@link DestinationApiController} is more granular, it will override this implementation - */ - @Override - public DestinationRead createDestination(final DestinationCreate destinationCreate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationApiController}. Since the path of - * {@link DestinationApiController} is more granular, it will override this implementation - */ - @Override - public void deleteDestination(final DestinationIdRequestBody destinationIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationApiController}. Since the path of - * {@link DestinationApiController} is more granular, it will override this implementation - */ - @Override - public DestinationRead updateDestination(final DestinationUpdate destinationUpdate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationApiController}. Since the path of - * {@link DestinationApiController} is more granular, it will override this implementation - */ - @Override - public DestinationReadList listDestinationsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationApiController}. Since the path of - * {@link DestinationApiController} is more granular, it will override this implementation - */ - @Override - public DestinationReadList searchDestinations(final DestinationSearch destinationSearch) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationApiController}. Since the path of - * {@link DestinationApiController} is more granular, it will override this implementation - */ - @Override - public DestinationRead getDestination(final DestinationIdRequestBody destinationIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationApiController}. Since the path of - * {@link DestinationApiController} is more granular, it will override this implementation - */ - @Override - public DestinationRead cloneDestination(final DestinationCloneRequestBody destinationCloneRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationApiController}. Since the path of - * {@link DestinationApiController} is more granular, it will override this implementation - */ - @Override - public CheckConnectionRead checkConnectionToDestination(final DestinationIdRequestBody destinationIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link DestinationApiController}. Since the path of - * {@link DestinationApiController} is more granular, it will override this implementation - */ - @Override - public CheckConnectionRead checkConnectionToDestinationForUpdate(final DestinationUpdate destinationUpdate) { - throw new NotImplementedException(); - } - - // CONNECTION - - /** - * This implementation has been moved to {@link ConnectionApiController}. Since the path of - * {@link ConnectionApiController} is more granular, it will override this implementation - */ - @Override - public ConnectionRead createConnection(final ConnectionCreate connectionCreate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link ConnectionApiController}. Since the path of - * {@link ConnectionApiController} is more granular, it will override this implementation - */ - @Override - public ConnectionRead updateConnection(final ConnectionUpdate connectionUpdate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link ConnectionApiController}. Since the path of - * {@link ConnectionApiController} is more granular, it will override this implementation - */ - @Override - public ConnectionReadList listConnectionsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link ConnectionApiController}. Since the path of - * {@link ConnectionApiController} is more granular, it will override this implementation - */ - @Override - public ConnectionReadList listAllConnectionsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link ConnectionApiController}. Since the path of - * {@link ConnectionApiController} is more granular, it will override this implementation - */ - @Override - public ConnectionReadList searchConnections(final ConnectionSearch connectionSearch) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link ConnectionApiController}. Since the path of - * {@link ConnectionApiController} is more granular, it will override this implementation - */ - @Override - public ConnectionRead getConnection(final ConnectionIdRequestBody connectionIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link ConnectionApiController}. Since the path of - * {@link ConnectionApiController} is more granular, it will override this implementation - */ - @Override - public void deleteConnection(final ConnectionIdRequestBody connectionIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link ConnectionApiController}. Since the path of - * {@link ConnectionApiController} is more granular, it will override this implementation - */ - @Override - public JobInfoRead syncConnection(final ConnectionIdRequestBody connectionIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link ConnectionApiController}. Since the path of - * {@link ConnectionApiController} is more granular, it will override this implementation - */ - @Override - public JobInfoRead resetConnection(final ConnectionIdRequestBody connectionIdRequestBody) { - throw new NotImplementedException(); - } - - // Operations - - /** - * This implementation has been moved to {@link OperationApiController}. Since the path of - * {@link OperationApiController} is more granular, it will override this implementation - */ - @Override - public CheckOperationRead checkOperation(final OperatorConfiguration operatorConfiguration) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link OperationApiController}. Since the path of - * {@link OperationApiController} is more granular, it will override this implementation - */ - @Override - public OperationRead createOperation(final OperationCreate operationCreate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link StateApiController}. Since the path of - * {@link StateApiController} is more granular, it will override this implementation - */ - @Override - public ConnectionState createOrUpdateState(final ConnectionStateCreateOrUpdate connectionStateCreateOrUpdate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link OperationApiController}. Since the path of - * {@link OperationApiController} is more granular, it will override this implementation - */ - @Override - public void deleteOperation(final OperationIdRequestBody operationIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link OperationApiController}. Since the path of - * {@link OperationApiController} is more granular, it will override this implementation - */ - @Override - public OperationReadList listOperationsForConnection(final ConnectionIdRequestBody connectionIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link OperationApiController}. Since the path of - * {@link OperationApiController} is more granular, it will override this implementation - */ - @Override - public OperationRead getOperation(final OperationIdRequestBody operationIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link OperationApiController}. Since the path of - * {@link OperationApiController} is more granular, it will override this implementation - */ - @Override - public OperationRead updateOperation(final OperationUpdate operationUpdate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link StateApiController}. Since the path of - * {@link StateApiController} is more granular, it will override this implementation - */ - @Override - public ConnectionState getState(final ConnectionIdRequestBody connectionIdRequestBody) { - throw new NotImplementedException(); - } - - // SCHEDULER - /** - * This implementation has been moved to {@link SchedulerApiController}. Since the path of - * {@link SchedulerApiController} is more granular, it will override this implementation - */ - @Override - public CheckConnectionRead executeSourceCheckConnection(final SourceCoreConfig sourceConfig) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SchedulerApiController}. Since the path of - * {@link SchedulerApiController} is more granular, it will override this implementation - */ - @Override - public CheckConnectionRead executeDestinationCheckConnection(final DestinationCoreConfig destinationConfig) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link SchedulerApiController}. Since the path of - * {@link SchedulerApiController} is more granular, it will override this implementation - */ - @Override - public SourceDiscoverSchemaRead executeSourceDiscoverSchema(final SourceCoreConfig sourceCreate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link JobsApiController}. Since the path of - * {@link JobsApiController} is more granular, it will override this implementation - */ - @Override - public JobInfoRead cancelJob(final JobIdRequestBody jobIdRequestBody) { - throw new NotImplementedException(); - } - - // JOB HISTORY - - /** - * This implementation has been moved to {@link JobsApiController}. Since the path of - * {@link JobsApiController} is more granular, it will override this implementation - */ - @Override - public JobReadList listJobsFor(final JobListRequestBody jobListRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link JobsApiController}. Since the path of - * {@link JobsApiController} is more granular, it will override this implementation - */ - @Override - public JobInfoRead getJobInfo(final JobIdRequestBody jobIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link JobsApiController}. Since the path of - * {@link JobsApiController} is more granular, it will override this implementation - */ - @Override - public JobInfoLightRead getJobInfoLight(final JobIdRequestBody jobIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link JobsApiController}. Since the path of - * {@link JobsApiController} is more granular, it will override this implementation - */ - @Override - public JobDebugInfoRead getJobDebugInfo(final JobIdRequestBody jobIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link JobsApiController}. Since the path of - * {@link JobsApiController} is more granular, it will override this implementation - */ - @Override - public AttemptNormalizationStatusReadList getAttemptNormalizationStatusesForJob(final JobIdRequestBody jobIdRequestBody) { - return execute(() -> jobHistoryHandler.getAttemptNormalizationStatuses(jobIdRequestBody)); - } - - /** - * This implementation has been moved to {@link LogsApiController}. Since the path of - * {@link LogsApiController} is more granular, it will override this implementation - */ - @Override - public File getLogs(final LogsRequestBody logsRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link HealthApiController}. Since the path of - * {@link HealthApiController} is more granular, it will override this implementation - */ - @Override - public File getOpenApiSpec() { - throw new NotImplementedException(); - } - - // HEALTH - /** - * This implementation has been moved to {@link HealthApiController}. Since the path of - * {@link HealthApiController} is more granular, it will override this implementation - */ - @Override - public HealthCheckRead getHealthCheck() { - throw new NotImplementedException(); - } - - // WEB BACKEND - - /** - * This implementation has been moved to {@link HealthApiController}. Since the path of - * {@link HealthApiController} is more granular, it will override this implementation - */ - @Override - public WebBackendConnectionReadList webBackendListConnectionsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link HealthApiController}. Since the path of - * {@link HealthApiController} is more granular, it will override this implementation - */ - @Override - public WebBackendGeographiesListResult webBackendListGeographies() { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link HealthApiController}. Since the path of - * {@link HealthApiController} is more granular, it will override this implementation - */ - @Override - public WebBackendConnectionRead webBackendGetConnection(final WebBackendConnectionRequestBody webBackendConnectionRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link HealthApiController}. Since the path of - * {@link HealthApiController} is more granular, it will override this implementation - */ - @Override - public WebBackendConnectionRead webBackendCreateConnection(final WebBackendConnectionCreate webBackendConnectionCreate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link HealthApiController}. Since the path of - * {@link HealthApiController} is more granular, it will override this implementation - */ - @Override - public WebBackendConnectionRead webBackendUpdateConnection(final WebBackendConnectionUpdate webBackendConnectionUpdate) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link HealthApiController}. Since the path of - * {@link HealthApiController} is more granular, it will override this implementation - */ - @Override - public ConnectionStateType getStateType(final ConnectionIdRequestBody connectionIdRequestBody) { - throw new NotImplementedException(); - } - - /** - * This implementation has been moved to {@link HealthApiController}. Since the path of - * {@link HealthApiController} is more granular, it will override this implementation - */ - @Override - public WebBackendWorkspaceStateResult webBackendGetWorkspaceState(final WebBackendWorkspaceState webBackendWorkspaceState) { - throw new NotImplementedException(); - } - - // TODO: Move to common when all the api are moved - static T execute(final HandlerCall call) { - try { - return call.call(); - } catch (final ConfigNotFoundException e) { - throw new IdNotFoundKnownException(String.format("Could not find configuration for %s: %s.", e.getType(), e.getConfigId()), - e.getConfigId(), e); - } catch (final JsonValidationException e) { - throw new BadObjectSchemaKnownException( - String.format("The provided configuration does not fulfill the specification. Errors: %s", e.getMessage()), e); - } catch (final IOException e) { - throw new RuntimeException(e); - } - } - - interface HandlerCall { - - T call() throws ConfigNotFoundException, IOException, JsonValidationException; - - } - -} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/ConnectionApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/ConnectionApiController.java index 21d80c04e84cb..fe29b42e1f333 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/ConnectionApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/ConnectionApiController.java @@ -35,37 +35,37 @@ public ConnectionApiController(final ConnectionsHandler connectionsHandler, @Override public ConnectionRead createConnection(final ConnectionCreate connectionCreate) { - return ConfigurationApi.execute(() -> connectionsHandler.createConnection(connectionCreate)); + return ApiHelper.execute(() -> connectionsHandler.createConnection(connectionCreate)); } @Override public ConnectionRead updateConnection(final ConnectionUpdate connectionUpdate) { - return ConfigurationApi.execute(() -> connectionsHandler.updateConnection(connectionUpdate)); + return ApiHelper.execute(() -> connectionsHandler.updateConnection(connectionUpdate)); } @Override public ConnectionReadList listConnectionsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - return ConfigurationApi.execute(() -> connectionsHandler.listConnectionsForWorkspace(workspaceIdRequestBody)); + return ApiHelper.execute(() -> connectionsHandler.listConnectionsForWorkspace(workspaceIdRequestBody)); } @Override public ConnectionReadList listAllConnectionsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - return ConfigurationApi.execute(() -> connectionsHandler.listAllConnectionsForWorkspace(workspaceIdRequestBody)); + return ApiHelper.execute(() -> connectionsHandler.listAllConnectionsForWorkspace(workspaceIdRequestBody)); } @Override public ConnectionReadList searchConnections(final ConnectionSearch connectionSearch) { - return ConfigurationApi.execute(() -> connectionsHandler.searchConnections(connectionSearch)); + return ApiHelper.execute(() -> connectionsHandler.searchConnections(connectionSearch)); } @Override public ConnectionRead getConnection(final ConnectionIdRequestBody connectionIdRequestBody) { - return ConfigurationApi.execute(() -> connectionsHandler.getConnection(connectionIdRequestBody.getConnectionId())); + return ApiHelper.execute(() -> connectionsHandler.getConnection(connectionIdRequestBody.getConnectionId())); } @Override public void deleteConnection(final ConnectionIdRequestBody connectionIdRequestBody) { - ConfigurationApi.execute(() -> { + ApiHelper.execute(() -> { operationsHandler.deleteOperationsForConnection(connectionIdRequestBody); connectionsHandler.deleteConnection(connectionIdRequestBody.getConnectionId()); return null; @@ -74,12 +74,12 @@ public void deleteConnection(final ConnectionIdRequestBody connectionIdRequestBo @Override public JobInfoRead syncConnection(final ConnectionIdRequestBody connectionIdRequestBody) { - return ConfigurationApi.execute(() -> schedulerHandler.syncConnection(connectionIdRequestBody)); + return ApiHelper.execute(() -> schedulerHandler.syncConnection(connectionIdRequestBody)); } @Override public JobInfoRead resetConnection(final ConnectionIdRequestBody connectionIdRequestBody) { - return ConfigurationApi.execute(() -> schedulerHandler.resetConnection(connectionIdRequestBody)); + return ApiHelper.execute(() -> schedulerHandler.resetConnection(connectionIdRequestBody)); } } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/DbMigrationApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/DbMigrationApiController.java index 93cb85dd33a7a..202b1c4da554f 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/DbMigrationApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/DbMigrationApiController.java @@ -22,12 +22,12 @@ public DbMigrationApiController(final DbMigrationHandler dbMigrationHandler) { @Override public DbMigrationExecutionRead executeMigrations(final DbMigrationRequestBody dbMigrationRequestBody) { - return ConfigurationApi.execute(() -> dbMigrationHandler.migrate(dbMigrationRequestBody)); + return ApiHelper.execute(() -> dbMigrationHandler.migrate(dbMigrationRequestBody)); } @Override public DbMigrationReadList listMigrations(final DbMigrationRequestBody dbMigrationRequestBody) { - return ConfigurationApi.execute(() -> dbMigrationHandler.list(dbMigrationRequestBody)); + return ApiHelper.execute(() -> dbMigrationHandler.list(dbMigrationRequestBody)); } } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationApiController.java index 99148027a59e0..8cbdbb5cd6d0c 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationApiController.java @@ -28,27 +28,27 @@ public class DestinationApiController implements DestinationApi { @Override public CheckConnectionRead checkConnectionToDestination(final DestinationIdRequestBody destinationIdRequestBody) { - return ConfigurationApi.execute(() -> schedulerHandler.checkDestinationConnectionFromDestinationId(destinationIdRequestBody)); + return ApiHelper.execute(() -> schedulerHandler.checkDestinationConnectionFromDestinationId(destinationIdRequestBody)); } @Override public CheckConnectionRead checkConnectionToDestinationForUpdate(final DestinationUpdate destinationUpdate) { - return ConfigurationApi.execute(() -> schedulerHandler.checkDestinationConnectionFromDestinationIdForUpdate(destinationUpdate)); + return ApiHelper.execute(() -> schedulerHandler.checkDestinationConnectionFromDestinationIdForUpdate(destinationUpdate)); } @Override public DestinationRead cloneDestination(final DestinationCloneRequestBody destinationCloneRequestBody) { - return ConfigurationApi.execute(() -> destinationHandler.cloneDestination(destinationCloneRequestBody)); + return ApiHelper.execute(() -> destinationHandler.cloneDestination(destinationCloneRequestBody)); } @Override public DestinationRead createDestination(final DestinationCreate destinationCreate) { - return ConfigurationApi.execute(() -> destinationHandler.createDestination(destinationCreate)); + return ApiHelper.execute(() -> destinationHandler.createDestination(destinationCreate)); } @Override public void deleteDestination(final DestinationIdRequestBody destinationIdRequestBody) { - ConfigurationApi.execute(() -> { + ApiHelper.execute(() -> { destinationHandler.deleteDestination(destinationIdRequestBody); return null; }); @@ -56,22 +56,22 @@ public void deleteDestination(final DestinationIdRequestBody destinationIdReques @Override public DestinationRead getDestination(final DestinationIdRequestBody destinationIdRequestBody) { - return ConfigurationApi.execute(() -> destinationHandler.getDestination(destinationIdRequestBody)); + return ApiHelper.execute(() -> destinationHandler.getDestination(destinationIdRequestBody)); } @Override public DestinationReadList listDestinationsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - return ConfigurationApi.execute(() -> destinationHandler.listDestinationsForWorkspace(workspaceIdRequestBody)); + return ApiHelper.execute(() -> destinationHandler.listDestinationsForWorkspace(workspaceIdRequestBody)); } @Override public DestinationReadList searchDestinations(final DestinationSearch destinationSearch) { - return ConfigurationApi.execute(() -> destinationHandler.searchDestinations(destinationSearch)); + return ApiHelper.execute(() -> destinationHandler.searchDestinations(destinationSearch)); } @Override public DestinationRead updateDestination(final DestinationUpdate destinationUpdate) { - return ConfigurationApi.execute(() -> destinationHandler.updateDestination(destinationUpdate)); + return ApiHelper.execute(() -> destinationHandler.updateDestination(destinationUpdate)); } } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationDefinitionApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationDefinitionApiController.java index 209a1f1c3eb00..f5916639534d5 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationDefinitionApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationDefinitionApiController.java @@ -28,19 +28,19 @@ public class DestinationDefinitionApiController implements DestinationDefinition @Override public DestinationDefinitionRead createCustomDestinationDefinition(final CustomDestinationDefinitionCreate customDestinationDefinitionCreate) { - return ConfigurationApi.execute(() -> destinationDefinitionsHandler.createCustomDestinationDefinition(customDestinationDefinitionCreate)); + return ApiHelper.execute(() -> destinationDefinitionsHandler.createCustomDestinationDefinition(customDestinationDefinitionCreate)); } // TODO: Deprecate this route in favor of createCustomDestinationDefinition // since all connector definitions created through the API are custom @Override public DestinationDefinitionRead createDestinationDefinition(final DestinationDefinitionCreate destinationDefinitionCreate) { - return ConfigurationApi.execute(() -> destinationDefinitionsHandler.createPrivateDestinationDefinition(destinationDefinitionCreate)); + return ApiHelper.execute(() -> destinationDefinitionsHandler.createPrivateDestinationDefinition(destinationDefinitionCreate)); } @Override public void deleteCustomDestinationDefinition(final DestinationDefinitionIdWithWorkspaceId destinationDefinitionIdWithWorkspaceId) { - ConfigurationApi.execute(() -> { + ApiHelper.execute(() -> { destinationDefinitionsHandler.deleteCustomDestinationDefinition(destinationDefinitionIdWithWorkspaceId); return null; }); @@ -48,7 +48,7 @@ public void deleteCustomDestinationDefinition(final DestinationDefinitionIdWithW @Override public void deleteDestinationDefinition(final DestinationDefinitionIdRequestBody destinationDefinitionIdRequestBody) { - ConfigurationApi.execute(() -> { + ApiHelper.execute(() -> { destinationDefinitionsHandler.deleteDestinationDefinition(destinationDefinitionIdRequestBody); return null; }); @@ -56,43 +56,43 @@ public void deleteDestinationDefinition(final DestinationDefinitionIdRequestBody @Override public DestinationDefinitionRead getDestinationDefinition(final DestinationDefinitionIdRequestBody destinationDefinitionIdRequestBody) { - return ConfigurationApi.execute(() -> destinationDefinitionsHandler.getDestinationDefinition(destinationDefinitionIdRequestBody)); + return ApiHelper.execute(() -> destinationDefinitionsHandler.getDestinationDefinition(destinationDefinitionIdRequestBody)); } @Override public DestinationDefinitionRead getDestinationDefinitionForWorkspace(final DestinationDefinitionIdWithWorkspaceId destinationDefinitionIdWithWorkspaceId) { - return ConfigurationApi.execute(() -> destinationDefinitionsHandler.getDestinationDefinitionForWorkspace(destinationDefinitionIdWithWorkspaceId)); + return ApiHelper.execute(() -> destinationDefinitionsHandler.getDestinationDefinitionForWorkspace(destinationDefinitionIdWithWorkspaceId)); } @Override public PrivateDestinationDefinitionRead grantDestinationDefinitionToWorkspace(final DestinationDefinitionIdWithWorkspaceId destinationDefinitionIdWithWorkspaceId) { - return ConfigurationApi + return ApiHelper .execute(() -> destinationDefinitionsHandler.grantDestinationDefinitionToWorkspace(destinationDefinitionIdWithWorkspaceId)); } @Override public DestinationDefinitionReadList listDestinationDefinitions() { - return ConfigurationApi.execute(destinationDefinitionsHandler::listDestinationDefinitions); + return ApiHelper.execute(destinationDefinitionsHandler::listDestinationDefinitions); } @Override public DestinationDefinitionReadList listDestinationDefinitionsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - return ConfigurationApi.execute(() -> destinationDefinitionsHandler.listDestinationDefinitionsForWorkspace(workspaceIdRequestBody)); + return ApiHelper.execute(() -> destinationDefinitionsHandler.listDestinationDefinitionsForWorkspace(workspaceIdRequestBody)); } @Override public DestinationDefinitionReadList listLatestDestinationDefinitions() { - return ConfigurationApi.execute(destinationDefinitionsHandler::listLatestDestinationDefinitions); + return ApiHelper.execute(destinationDefinitionsHandler::listLatestDestinationDefinitions); } @Override public PrivateDestinationDefinitionReadList listPrivateDestinationDefinitions(final WorkspaceIdRequestBody workspaceIdRequestBody) { - return ConfigurationApi.execute(() -> destinationDefinitionsHandler.listPrivateDestinationDefinitions(workspaceIdRequestBody)); + return ApiHelper.execute(() -> destinationDefinitionsHandler.listPrivateDestinationDefinitions(workspaceIdRequestBody)); } @Override public void revokeDestinationDefinitionFromWorkspace(final DestinationDefinitionIdWithWorkspaceId destinationDefinitionIdWithWorkspaceId) { - ConfigurationApi.execute(() -> { + ApiHelper.execute(() -> { destinationDefinitionsHandler.revokeDestinationDefinitionFromWorkspace(destinationDefinitionIdWithWorkspaceId); return null; }); @@ -100,12 +100,12 @@ public void revokeDestinationDefinitionFromWorkspace(final DestinationDefinition @Override public DestinationDefinitionRead updateCustomDestinationDefinition(final CustomDestinationDefinitionUpdate customDestinationDefinitionUpdate) { - return ConfigurationApi.execute(() -> destinationDefinitionsHandler.updateCustomDestinationDefinition(customDestinationDefinitionUpdate)); + return ApiHelper.execute(() -> destinationDefinitionsHandler.updateCustomDestinationDefinition(customDestinationDefinitionUpdate)); } @Override public DestinationDefinitionRead updateDestinationDefinition(final DestinationDefinitionUpdate destinationDefinitionUpdate) { - return ConfigurationApi.execute(() -> destinationDefinitionsHandler.updateDestinationDefinition(destinationDefinitionUpdate)); + return ApiHelper.execute(() -> destinationDefinitionsHandler.updateDestinationDefinition(destinationDefinitionUpdate)); } } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationDefinitionSpecificationApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationDefinitionSpecificationApiController.java index 1840593567464..74853019c8dc1 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationDefinitionSpecificationApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationDefinitionSpecificationApiController.java @@ -19,7 +19,7 @@ public class DestinationDefinitionSpecificationApiController implements Destinat @Override public DestinationDefinitionSpecificationRead getDestinationDefinitionSpecification(final DestinationDefinitionIdWithWorkspaceId destinationDefinitionIdWithWorkspaceId) { - return ConfigurationApi.execute(() -> schedulerHandler.getDestinationSpecification(destinationDefinitionIdWithWorkspaceId)); + return ApiHelper.execute(() -> schedulerHandler.getDestinationSpecification(destinationDefinitionIdWithWorkspaceId)); } } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationOauthApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationOauthApiController.java index 0a58c40a74137..fcbaa9a2675fd 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationOauthApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationOauthApiController.java @@ -22,17 +22,17 @@ public class DestinationOauthApiController implements DestinationOauthApi { @Override public Map completeDestinationOAuth(final CompleteDestinationOAuthRequest completeDestinationOAuthRequest) { - return ConfigurationApi.execute(() -> oAuthHandler.completeDestinationOAuth(completeDestinationOAuthRequest)); + return ApiHelper.execute(() -> oAuthHandler.completeDestinationOAuth(completeDestinationOAuthRequest)); } @Override public OAuthConsentRead getDestinationOAuthConsent(final DestinationOauthConsentRequest destinationOauthConsentRequest) { - return ConfigurationApi.execute(() -> oAuthHandler.getDestinationOAuthConsent(destinationOauthConsentRequest)); + return ApiHelper.execute(() -> oAuthHandler.getDestinationOAuthConsent(destinationOauthConsentRequest)); } @Override public void setInstancewideDestinationOauthParams(final SetInstancewideDestinationOauthParamsRequestBody setInstancewideDestinationOauthParamsRequestBody) { - ConfigurationApi.execute(() -> { + ApiHelper.execute(() -> { oAuthHandler.setDestinationInstancewideOauthParams(setInstancewideDestinationOauthParamsRequestBody); return null; }); diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/JobsApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/JobsApiController.java index 0c1eb3a276a1e..197a861a63e58 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/JobsApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/JobsApiController.java @@ -26,32 +26,32 @@ public class JobsApiController implements JobsApi { @Override public JobInfoRead cancelJob(final JobIdRequestBody jobIdRequestBody) { - return ConfigurationApi.execute(() -> schedulerHandler.cancelJob(jobIdRequestBody)); + return ApiHelper.execute(() -> schedulerHandler.cancelJob(jobIdRequestBody)); } @Override public AttemptNormalizationStatusReadList getAttemptNormalizationStatusesForJob(final JobIdRequestBody jobIdRequestBody) { - return ConfigurationApi.execute(() -> jobHistoryHandler.getAttemptNormalizationStatuses(jobIdRequestBody)); + return ApiHelper.execute(() -> jobHistoryHandler.getAttemptNormalizationStatuses(jobIdRequestBody)); } @Override public JobDebugInfoRead getJobDebugInfo(final JobIdRequestBody jobIdRequestBody) { - return ConfigurationApi.execute(() -> jobHistoryHandler.getJobDebugInfo(jobIdRequestBody)); + return ApiHelper.execute(() -> jobHistoryHandler.getJobDebugInfo(jobIdRequestBody)); } @Override public JobInfoRead getJobInfo(final JobIdRequestBody jobIdRequestBody) { - return ConfigurationApi.execute(() -> jobHistoryHandler.getJobInfo(jobIdRequestBody)); + return ApiHelper.execute(() -> jobHistoryHandler.getJobInfo(jobIdRequestBody)); } @Override public JobInfoLightRead getJobInfoLight(final JobIdRequestBody jobIdRequestBody) { - return ConfigurationApi.execute(() -> jobHistoryHandler.getJobInfoLight(jobIdRequestBody)); + return ApiHelper.execute(() -> jobHistoryHandler.getJobInfoLight(jobIdRequestBody)); } @Override public JobReadList listJobsFor(final JobListRequestBody jobListRequestBody) { - return ConfigurationApi.execute(() -> jobHistoryHandler.listJobsFor(jobListRequestBody)); + return ApiHelper.execute(() -> jobHistoryHandler.listJobsFor(jobListRequestBody)); } } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/LogsApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/LogsApiController.java index b3c1e5f586190..95e7758f4f689 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/LogsApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/LogsApiController.java @@ -19,7 +19,7 @@ public class LogsApiController implements LogsApi { @Override public File getLogs(final LogsRequestBody logsRequestBody) { - return ConfigurationApi.execute(() -> logsHandler.getLogs(logsRequestBody)); + return ApiHelper.execute(() -> logsHandler.getLogs(logsRequestBody)); } } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/NotificationsApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/NotificationsApiController.java index e6f6df3b6370f..981ad80f7e8d4 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/NotificationsApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/NotificationsApiController.java @@ -19,7 +19,7 @@ public class NotificationsApiController implements NotificationsApi { @Override public NotificationRead tryNotificationConfig(final Notification notification) { - return ConfigurationApi.execute(() -> workspacesHandler.tryNotification(notification)); + return ApiHelper.execute(() -> workspacesHandler.tryNotification(notification)); } } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/OpenapiApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/OpenapiApiController.java index c93ebd290fdda..ae749403b4201 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/OpenapiApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/OpenapiApiController.java @@ -18,7 +18,7 @@ public class OpenapiApiController implements OpenapiApi { @Override public File getOpenApiSpec() { - return ConfigurationApi.execute(openApiConfigHandler::getFile); + return ApiHelper.execute(openApiConfigHandler::getFile); } } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/OperationApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/OperationApiController.java index fb6f9b04b0f27..3b4eeb9ee431b 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/OperationApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/OperationApiController.java @@ -25,17 +25,17 @@ public class OperationApiController implements OperationApi { @Override public CheckOperationRead checkOperation(final OperatorConfiguration operatorConfiguration) { - return ConfigurationApi.execute(() -> operationsHandler.checkOperation(operatorConfiguration)); + return ApiHelper.execute(() -> operationsHandler.checkOperation(operatorConfiguration)); } @Override public OperationRead createOperation(final OperationCreate operationCreate) { - return ConfigurationApi.execute(() -> operationsHandler.createOperation(operationCreate)); + return ApiHelper.execute(() -> operationsHandler.createOperation(operationCreate)); } @Override public void deleteOperation(final OperationIdRequestBody operationIdRequestBody) { - ConfigurationApi.execute(() -> { + ApiHelper.execute(() -> { operationsHandler.deleteOperation(operationIdRequestBody); return null; }); @@ -43,17 +43,17 @@ public void deleteOperation(final OperationIdRequestBody operationIdRequestBody) @Override public OperationRead getOperation(final OperationIdRequestBody operationIdRequestBody) { - return ConfigurationApi.execute(() -> operationsHandler.getOperation(operationIdRequestBody)); + return ApiHelper.execute(() -> operationsHandler.getOperation(operationIdRequestBody)); } @Override public OperationReadList listOperationsForConnection(final ConnectionIdRequestBody connectionIdRequestBody) { - return ConfigurationApi.execute(() -> operationsHandler.listOperationsForConnection(connectionIdRequestBody)); + return ApiHelper.execute(() -> operationsHandler.listOperationsForConnection(connectionIdRequestBody)); } @Override public OperationRead updateOperation(final OperationUpdate operationUpdate) { - return ConfigurationApi.execute(() -> operationsHandler.updateOperation(operationUpdate)); + return ApiHelper.execute(() -> operationsHandler.updateOperation(operationUpdate)); } } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/SchedulerApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/SchedulerApiController.java index a3cd0baecbe1c..addc445d3c0fa 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/SchedulerApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/SchedulerApiController.java @@ -19,17 +19,17 @@ public class SchedulerApiController implements SchedulerApi { @Override public CheckConnectionRead executeDestinationCheckConnection(final DestinationCoreConfig destinationCoreConfig) { - return ConfigurationApi.execute(() -> schedulerHandler.checkDestinationConnectionFromDestinationCreate(destinationCoreConfig)); + return ApiHelper.execute(() -> schedulerHandler.checkDestinationConnectionFromDestinationCreate(destinationCoreConfig)); } @Override public CheckConnectionRead executeSourceCheckConnection(final SourceCoreConfig sourceCoreConfig) { - return ConfigurationApi.execute(() -> schedulerHandler.checkSourceConnectionFromSourceCreate(sourceCoreConfig)); + return ApiHelper.execute(() -> schedulerHandler.checkSourceConnectionFromSourceCreate(sourceCoreConfig)); } @Override public SourceDiscoverSchemaRead executeSourceDiscoverSchema(final SourceCoreConfig sourceCoreConfig) { - return ConfigurationApi.execute(() -> schedulerHandler.discoverSchemaForSourceFromSourceCreate(sourceCoreConfig)); + return ApiHelper.execute(() -> schedulerHandler.discoverSchemaForSourceFromSourceCreate(sourceCoreConfig)); } } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/SourceApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/SourceApiController.java index 4086da7f60f2a..595087e0d198f 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/SourceApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/SourceApiController.java @@ -30,27 +30,27 @@ public class SourceApiController implements SourceApi { @Override public CheckConnectionRead checkConnectionToSource(final SourceIdRequestBody sourceIdRequestBody) { - return ConfigurationApi.execute(() -> schedulerHandler.checkSourceConnectionFromSourceId(sourceIdRequestBody)); + return ApiHelper.execute(() -> schedulerHandler.checkSourceConnectionFromSourceId(sourceIdRequestBody)); } @Override public CheckConnectionRead checkConnectionToSourceForUpdate(final SourceUpdate sourceUpdate) { - return ConfigurationApi.execute(() -> schedulerHandler.checkSourceConnectionFromSourceIdForUpdate(sourceUpdate)); + return ApiHelper.execute(() -> schedulerHandler.checkSourceConnectionFromSourceIdForUpdate(sourceUpdate)); } @Override public SourceRead cloneSource(final SourceCloneRequestBody sourceCloneRequestBody) { - return ConfigurationApi.execute(() -> sourceHandler.cloneSource(sourceCloneRequestBody)); + return ApiHelper.execute(() -> sourceHandler.cloneSource(sourceCloneRequestBody)); } @Override public SourceRead createSource(final SourceCreate sourceCreate) { - return ConfigurationApi.execute(() -> sourceHandler.createSource(sourceCreate)); + return ApiHelper.execute(() -> sourceHandler.createSource(sourceCreate)); } @Override public void deleteSource(final SourceIdRequestBody sourceIdRequestBody) { - ConfigurationApi.execute(() -> { + ApiHelper.execute(() -> { sourceHandler.deleteSource(sourceIdRequestBody); return null; }); @@ -58,27 +58,27 @@ public void deleteSource(final SourceIdRequestBody sourceIdRequestBody) { @Override public SourceDiscoverSchemaRead discoverSchemaForSource(final SourceDiscoverSchemaRequestBody sourceDiscoverSchemaRequestBody) { - return ConfigurationApi.execute(() -> schedulerHandler.discoverSchemaForSourceFromSourceId(sourceDiscoverSchemaRequestBody)); + return ApiHelper.execute(() -> schedulerHandler.discoverSchemaForSourceFromSourceId(sourceDiscoverSchemaRequestBody)); } @Override public SourceRead getSource(final SourceIdRequestBody sourceIdRequestBody) { - return ConfigurationApi.execute(() -> sourceHandler.getSource(sourceIdRequestBody)); + return ApiHelper.execute(() -> sourceHandler.getSource(sourceIdRequestBody)); } @Override public SourceReadList listSourcesForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - return ConfigurationApi.execute(() -> sourceHandler.listSourcesForWorkspace(workspaceIdRequestBody)); + return ApiHelper.execute(() -> sourceHandler.listSourcesForWorkspace(workspaceIdRequestBody)); } @Override public SourceReadList searchSources(final SourceSearch sourceSearch) { - return ConfigurationApi.execute(() -> sourceHandler.searchSources(sourceSearch)); + return ApiHelper.execute(() -> sourceHandler.searchSources(sourceSearch)); } @Override public SourceRead updateSource(final SourceUpdate sourceUpdate) { - return ConfigurationApi.execute(() -> sourceHandler.updateSource(sourceUpdate)); + return ApiHelper.execute(() -> sourceHandler.updateSource(sourceUpdate)); } } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionApiController.java index 0369a05e48659..c47ab1fac43e6 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionApiController.java @@ -28,19 +28,19 @@ public class SourceDefinitionApiController implements SourceDefinitionApi { @Override public SourceDefinitionRead createCustomSourceDefinition(final CustomSourceDefinitionCreate customSourceDefinitionCreate) { - return ConfigurationApi.execute(() -> sourceDefinitionsHandler.createCustomSourceDefinition(customSourceDefinitionCreate)); + return ApiHelper.execute(() -> sourceDefinitionsHandler.createCustomSourceDefinition(customSourceDefinitionCreate)); } // TODO: Deprecate this route in favor of createCustomSourceDefinition // since all connector definitions created through the API are custom @Override public SourceDefinitionRead createSourceDefinition(final SourceDefinitionCreate sourceDefinitionCreate) { - return ConfigurationApi.execute(() -> sourceDefinitionsHandler.createPrivateSourceDefinition(sourceDefinitionCreate)); + return ApiHelper.execute(() -> sourceDefinitionsHandler.createPrivateSourceDefinition(sourceDefinitionCreate)); } @Override public void deleteCustomSourceDefinition(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { - ConfigurationApi.execute(() -> { + ApiHelper.execute(() -> { sourceDefinitionsHandler.deleteCustomSourceDefinition(sourceDefinitionIdWithWorkspaceId); return null; }); @@ -48,7 +48,7 @@ public void deleteCustomSourceDefinition(final SourceDefinitionIdWithWorkspaceId @Override public void deleteSourceDefinition(final SourceDefinitionIdRequestBody sourceDefinitionIdRequestBody) { - ConfigurationApi.execute(() -> { + ApiHelper.execute(() -> { sourceDefinitionsHandler.deleteSourceDefinition(sourceDefinitionIdRequestBody); return null; }); @@ -56,42 +56,42 @@ public void deleteSourceDefinition(final SourceDefinitionIdRequestBody sourceDef @Override public SourceDefinitionRead getSourceDefinition(final SourceDefinitionIdRequestBody sourceDefinitionIdRequestBody) { - return ConfigurationApi.execute(() -> sourceDefinitionsHandler.getSourceDefinition(sourceDefinitionIdRequestBody)); + return ApiHelper.execute(() -> sourceDefinitionsHandler.getSourceDefinition(sourceDefinitionIdRequestBody)); } @Override public SourceDefinitionRead getSourceDefinitionForWorkspace(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { - return ConfigurationApi.execute(() -> sourceDefinitionsHandler.getSourceDefinitionForWorkspace(sourceDefinitionIdWithWorkspaceId)); + return ApiHelper.execute(() -> sourceDefinitionsHandler.getSourceDefinitionForWorkspace(sourceDefinitionIdWithWorkspaceId)); } @Override public PrivateSourceDefinitionRead grantSourceDefinitionToWorkspace(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { - return ConfigurationApi.execute(() -> sourceDefinitionsHandler.grantSourceDefinitionToWorkspace(sourceDefinitionIdWithWorkspaceId)); + return ApiHelper.execute(() -> sourceDefinitionsHandler.grantSourceDefinitionToWorkspace(sourceDefinitionIdWithWorkspaceId)); } @Override public SourceDefinitionReadList listLatestSourceDefinitions() { - return ConfigurationApi.execute(sourceDefinitionsHandler::listLatestSourceDefinitions); + return ApiHelper.execute(sourceDefinitionsHandler::listLatestSourceDefinitions); } @Override public PrivateSourceDefinitionReadList listPrivateSourceDefinitions(final WorkspaceIdRequestBody workspaceIdRequestBody) { - return ConfigurationApi.execute(() -> sourceDefinitionsHandler.listPrivateSourceDefinitions(workspaceIdRequestBody)); + return ApiHelper.execute(() -> sourceDefinitionsHandler.listPrivateSourceDefinitions(workspaceIdRequestBody)); } @Override public SourceDefinitionReadList listSourceDefinitions() { - return ConfigurationApi.execute(sourceDefinitionsHandler::listSourceDefinitions); + return ApiHelper.execute(sourceDefinitionsHandler::listSourceDefinitions); } @Override public SourceDefinitionReadList listSourceDefinitionsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - return ConfigurationApi.execute(() -> sourceDefinitionsHandler.listSourceDefinitionsForWorkspace(workspaceIdRequestBody)); + return ApiHelper.execute(() -> sourceDefinitionsHandler.listSourceDefinitionsForWorkspace(workspaceIdRequestBody)); } @Override public void revokeSourceDefinitionFromWorkspace(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { - ConfigurationApi.execute(() -> { + ApiHelper.execute(() -> { sourceDefinitionsHandler.revokeSourceDefinitionFromWorkspace(sourceDefinitionIdWithWorkspaceId); return null; }); @@ -99,12 +99,12 @@ public void revokeSourceDefinitionFromWorkspace(final SourceDefinitionIdWithWork @Override public SourceDefinitionRead updateCustomSourceDefinition(final CustomSourceDefinitionUpdate customSourceDefinitionUpdate) { - return ConfigurationApi.execute(() -> sourceDefinitionsHandler.updateCustomSourceDefinition(customSourceDefinitionUpdate)); + return ApiHelper.execute(() -> sourceDefinitionsHandler.updateCustomSourceDefinition(customSourceDefinitionUpdate)); } @Override public SourceDefinitionRead updateSourceDefinition(final SourceDefinitionUpdate sourceDefinitionUpdate) { - return ConfigurationApi.execute(() -> sourceDefinitionsHandler.updateSourceDefinition(sourceDefinitionUpdate)); + return ApiHelper.execute(() -> sourceDefinitionsHandler.updateSourceDefinition(sourceDefinitionUpdate)); } } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionSpecificationApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionSpecificationApiController.java index 001b75b7433c6..4068f11740489 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionSpecificationApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionSpecificationApiController.java @@ -19,7 +19,7 @@ public class SourceDefinitionSpecificationApiController implements SourceDefinit @Override public SourceDefinitionSpecificationRead getSourceDefinitionSpecification(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { - return ConfigurationApi.execute(() -> schedulerHandler.getSourceDefinitionSpecification(sourceDefinitionIdWithWorkspaceId)); + return ApiHelper.execute(() -> schedulerHandler.getSourceDefinitionSpecification(sourceDefinitionIdWithWorkspaceId)); } } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/SourceOauthApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/SourceOauthApiController.java index fc454fa10cc9b..84e0782a30200 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/SourceOauthApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/SourceOauthApiController.java @@ -22,17 +22,17 @@ public class SourceOauthApiController implements SourceOauthApi { @Override public Map completeSourceOAuth(final CompleteSourceOauthRequest completeSourceOauthRequest) { - return ConfigurationApi.execute(() -> oAuthHandler.completeSourceOAuth(completeSourceOauthRequest)); + return ApiHelper.execute(() -> oAuthHandler.completeSourceOAuth(completeSourceOauthRequest)); } @Override public OAuthConsentRead getSourceOAuthConsent(final SourceOauthConsentRequest sourceOauthConsentRequest) { - return ConfigurationApi.execute(() -> oAuthHandler.getSourceOAuthConsent(sourceOauthConsentRequest)); + return ApiHelper.execute(() -> oAuthHandler.getSourceOAuthConsent(sourceOauthConsentRequest)); } @Override public void setInstancewideSourceOauthParams(final SetInstancewideSourceOauthParamsRequestBody setInstancewideSourceOauthParamsRequestBody) { - ConfigurationApi.execute(() -> { + ApiHelper.execute(() -> { oAuthHandler.setSourceInstancewideOauthParams(setInstancewideSourceOauthParamsRequestBody); return null; }); diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/StateApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/StateApiController.java index 4a317db986962..e148c1010fe3a 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/StateApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/StateApiController.java @@ -20,12 +20,12 @@ public class StateApiController implements StateApi { @Override public ConnectionState createOrUpdateState(final ConnectionStateCreateOrUpdate connectionStateCreateOrUpdate) { - return ConfigurationApi.execute(() -> stateHandler.createOrUpdateState(connectionStateCreateOrUpdate)); + return ApiHelper.execute(() -> stateHandler.createOrUpdateState(connectionStateCreateOrUpdate)); } @Override public ConnectionState getState(final ConnectionIdRequestBody connectionIdRequestBody) { - return ConfigurationApi.execute(() -> stateHandler.getState(connectionIdRequestBody)); + return ApiHelper.execute(() -> stateHandler.getState(connectionIdRequestBody)); } } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/WebBackendApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/WebBackendApiController.java index b9aea8f3cf2b4..e08cef94ee0b6 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/WebBackendApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/WebBackendApiController.java @@ -30,37 +30,37 @@ public class WebBackendApiController implements WebBackendApi { @Override public ConnectionStateType getStateType(final ConnectionIdRequestBody connectionIdRequestBody) { - return ConfigurationApi.execute(() -> webBackendConnectionsHandler.getStateType(connectionIdRequestBody)); + return ApiHelper.execute(() -> webBackendConnectionsHandler.getStateType(connectionIdRequestBody)); } @Override public WebBackendConnectionRead webBackendCreateConnection(final WebBackendConnectionCreate webBackendConnectionCreate) { - return ConfigurationApi.execute(() -> webBackendConnectionsHandler.webBackendCreateConnection(webBackendConnectionCreate)); + return ApiHelper.execute(() -> webBackendConnectionsHandler.webBackendCreateConnection(webBackendConnectionCreate)); } @Override public WebBackendConnectionRead webBackendGetConnection(final WebBackendConnectionRequestBody webBackendConnectionRequestBody) { - return ConfigurationApi.execute(() -> webBackendConnectionsHandler.webBackendGetConnection(webBackendConnectionRequestBody)); + return ApiHelper.execute(() -> webBackendConnectionsHandler.webBackendGetConnection(webBackendConnectionRequestBody)); } @Override public WebBackendWorkspaceStateResult webBackendGetWorkspaceState(final WebBackendWorkspaceState webBackendWorkspaceState) { - return ConfigurationApi.execute(() -> webBackendConnectionsHandler.getWorkspaceState(webBackendWorkspaceState)); + return ApiHelper.execute(() -> webBackendConnectionsHandler.getWorkspaceState(webBackendWorkspaceState)); } @Override public WebBackendConnectionReadList webBackendListConnectionsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - return ConfigurationApi.execute(() -> webBackendConnectionsHandler.webBackendListConnectionsForWorkspace(workspaceIdRequestBody)); + return ApiHelper.execute(() -> webBackendConnectionsHandler.webBackendListConnectionsForWorkspace(workspaceIdRequestBody)); } @Override public WebBackendGeographiesListResult webBackendListGeographies() { - return ConfigurationApi.execute(webBackendGeographiesHandler::listGeographiesOSS); + return ApiHelper.execute(webBackendGeographiesHandler::listGeographiesOSS); } @Override public WebBackendConnectionRead webBackendUpdateConnection(final WebBackendConnectionUpdate webBackendConnectionUpdate) { - return ConfigurationApi.execute(() -> webBackendConnectionsHandler.webBackendUpdateConnection(webBackendConnectionUpdate)); + return ApiHelper.execute(() -> webBackendConnectionsHandler.webBackendUpdateConnection(webBackendConnectionUpdate)); } } diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/WorkspaceApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/WorkspaceApiController.java index 4c10642a9db8b..bf31ac5704a70 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/WorkspaceApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/WorkspaceApiController.java @@ -25,12 +25,12 @@ public class WorkspaceApiController implements WorkspaceApi { @Override public WorkspaceRead createWorkspace(final WorkspaceCreate workspaceCreate) { - return ConfigurationApi.execute(() -> workspacesHandler.createWorkspace(workspaceCreate)); + return ApiHelper.execute(() -> workspacesHandler.createWorkspace(workspaceCreate)); } @Override public void deleteWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - ConfigurationApi.execute(() -> { + ApiHelper.execute(() -> { workspacesHandler.deleteWorkspace(workspaceIdRequestBody); return null; }); @@ -38,27 +38,27 @@ public void deleteWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) @Override public WorkspaceRead getWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - return ConfigurationApi.execute(() -> workspacesHandler.getWorkspace(workspaceIdRequestBody)); + return ApiHelper.execute(() -> workspacesHandler.getWorkspace(workspaceIdRequestBody)); } @Override public WorkspaceRead getWorkspaceBySlug(final SlugRequestBody slugRequestBody) { - return ConfigurationApi.execute(() -> workspacesHandler.getWorkspaceBySlug(slugRequestBody)); + return ApiHelper.execute(() -> workspacesHandler.getWorkspaceBySlug(slugRequestBody)); } @Override public WorkspaceReadList listWorkspaces() { - return ConfigurationApi.execute(workspacesHandler::listWorkspaces); + return ApiHelper.execute(workspacesHandler::listWorkspaces); } @Override public WorkspaceRead updateWorkspace(final WorkspaceUpdate workspaceUpdate) { - return ConfigurationApi.execute(() -> workspacesHandler.updateWorkspace(workspaceUpdate)); + return ApiHelper.execute(() -> workspacesHandler.updateWorkspace(workspaceUpdate)); } @Override public void updateWorkspaceFeedback(final WorkspaceGiveFeedback workspaceGiveFeedback) { - ConfigurationApi.execute(() -> { + ApiHelper.execute(() -> { workspacesHandler.setFeedbackDone(workspaceGiveFeedback); return null; }); @@ -66,7 +66,7 @@ public void updateWorkspaceFeedback(final WorkspaceGiveFeedback workspaceGiveFee @Override public WorkspaceRead updateWorkspaceName(final WorkspaceUpdateName workspaceUpdateName) { - return ConfigurationApi.execute(() -> workspacesHandler.updateWorkspaceName(workspaceUpdateName)); + return ApiHelper.execute(() -> workspacesHandler.updateWorkspaceName(workspaceUpdateName)); } }