Skip to content

Commit baf6466

Browse files
authored
Extract Operation API (#18928)
* Extract Operation API * Format
1 parent aaeec26 commit baf6466

File tree

5 files changed

+146
-9
lines changed

5 files changed

+146
-9
lines changed

airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import io.airbyte.server.apis.LogsApiController;
2828
import io.airbyte.server.apis.NotificationsApiController;
2929
import io.airbyte.server.apis.OpenapiApiController;
30+
import io.airbyte.server.apis.OperationApiController;
3031
import io.airbyte.server.apis.binders.AttemptApiBinder;
3132
import io.airbyte.server.apis.binders.ConnectionApiBinder;
3233
import io.airbyte.server.apis.binders.DbMigrationBinder;
@@ -39,6 +40,7 @@
3940
import io.airbyte.server.apis.binders.LogsApiBinder;
4041
import io.airbyte.server.apis.binders.NotificationApiBinder;
4142
import io.airbyte.server.apis.binders.OpenapiApiBinder;
43+
import io.airbyte.server.apis.binders.OperationApiBinder;
4244
import io.airbyte.server.apis.binders.SourceOauthApiBinder;
4345
import io.airbyte.server.apis.factories.AttemptApiFactory;
4446
import io.airbyte.server.apis.factories.ConnectionApiFactory;
@@ -52,6 +54,7 @@
5254
import io.airbyte.server.apis.factories.LogsApiFactory;
5355
import io.airbyte.server.apis.factories.NotificationsApiFactory;
5456
import io.airbyte.server.apis.factories.OpenapiApiFactory;
57+
import io.airbyte.server.apis.factories.OperationApiFactory;
5558
import io.airbyte.server.apis.factories.SourceOauthApiFactory;
5659
import io.airbyte.server.handlers.AttemptHandler;
5760
import io.airbyte.server.handlers.ConnectionsHandler;
@@ -190,6 +193,8 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul
190193

191194
NotificationsApiFactory.setValues(workspacesHandler);
192195

196+
OperationApiFactory.setValues(operationsHandler);
197+
193198
OpenapiApiFactory.setValues(openApiConfigHandler);
194199

195200
// server configurations
@@ -207,6 +212,7 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul
207212
LogsApiController.class,
208213
NotificationsApiController.class,
209214
OpenapiApiController.class,
215+
OperationApiController.class,
210216
SourceOauthApiFactory.class);
211217

212218
final Set<Object> components = Set.of(
@@ -224,6 +230,7 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul
224230
new LogsApiBinder(),
225231
new NotificationApiBinder(),
226232
new OpenapiApiBinder(),
233+
new OperationApiBinder(),
227234
new SourceOauthApiBinder());
228235

229236
// construct server

airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -835,42 +835,63 @@ public JobInfoRead resetConnection(final ConnectionIdRequestBody connectionIdReq
835835

836836
// Operations
837837

838+
/**
839+
* This implementation has been moved to {@link OperationApiController}. Since the path of
840+
* {@link OperationApiController} is more granular, it will override this implementation
841+
*/
838842
@Override
839843
public CheckOperationRead checkOperation(final OperatorConfiguration operatorConfiguration) {
840-
return execute(() -> operationsHandler.checkOperation(operatorConfiguration));
844+
throw new NotImplementedException();
841845
}
842846

847+
/**
848+
* This implementation has been moved to {@link OperationApiController}. Since the path of
849+
* {@link OperationApiController} is more granular, it will override this implementation
850+
*/
843851
@Override
844852
public OperationRead createOperation(final OperationCreate operationCreate) {
845-
return execute(() -> operationsHandler.createOperation(operationCreate));
853+
throw new NotImplementedException();
846854
}
847855

848856
@Override
849857
public ConnectionState createOrUpdateState(final ConnectionStateCreateOrUpdate connectionStateCreateOrUpdate) {
850858
return ConfigurationApi.execute(() -> stateHandler.createOrUpdateState(connectionStateCreateOrUpdate));
851859
}
852860

861+
/**
862+
* This implementation has been moved to {@link OperationApiController}. Since the path of
863+
* {@link OperationApiController} is more granular, it will override this implementation
864+
*/
853865
@Override
854866
public void deleteOperation(final OperationIdRequestBody operationIdRequestBody) {
855-
execute(() -> {
856-
operationsHandler.deleteOperation(operationIdRequestBody);
857-
return null;
858-
});
867+
throw new NotImplementedException();
859868
}
860869

870+
/**
871+
* This implementation has been moved to {@link OperationApiController}. Since the path of
872+
* {@link OperationApiController} is more granular, it will override this implementation
873+
*/
861874
@Override
862875
public OperationReadList listOperationsForConnection(final ConnectionIdRequestBody connectionIdRequestBody) {
863-
return execute(() -> operationsHandler.listOperationsForConnection(connectionIdRequestBody));
876+
throw new NotImplementedException();
864877
}
865878

879+
/**
880+
* This implementation has been moved to {@link OperationApiController}. Since the path of
881+
* {@link OperationApiController} is more granular, it will override this implementation
882+
*/
866883
@Override
867884
public OperationRead getOperation(final OperationIdRequestBody operationIdRequestBody) {
868-
return execute(() -> operationsHandler.getOperation(operationIdRequestBody));
885+
throw new NotImplementedException();
869886
}
870887

888+
/**
889+
* This implementation has been moved to {@link OperationApiController}. Since the path of
890+
* {@link OperationApiController} is more granular, it will override this implementation
891+
*/
871892
@Override
872893
public OperationRead updateOperation(final OperationUpdate operationUpdate) {
873-
return execute(() -> operationsHandler.updateOperation(operationUpdate));
894+
throw new NotImplementedException();
874895
}
875896

876897
@Override
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*
2+
* Copyright (c) 2022 Airbyte, Inc., all rights reserved.
3+
*/
4+
5+
package io.airbyte.server.apis;
6+
7+
import io.airbyte.api.generated.OperationApi;
8+
import io.airbyte.api.model.generated.CheckOperationRead;
9+
import io.airbyte.api.model.generated.ConnectionIdRequestBody;
10+
import io.airbyte.api.model.generated.OperationCreate;
11+
import io.airbyte.api.model.generated.OperationIdRequestBody;
12+
import io.airbyte.api.model.generated.OperationRead;
13+
import io.airbyte.api.model.generated.OperationReadList;
14+
import io.airbyte.api.model.generated.OperationUpdate;
15+
import io.airbyte.api.model.generated.OperatorConfiguration;
16+
import io.airbyte.server.handlers.OperationsHandler;
17+
import javax.ws.rs.Path;
18+
import lombok.AllArgsConstructor;
19+
20+
@Path("/v1/operations")
21+
@AllArgsConstructor
22+
public class OperationApiController implements OperationApi {
23+
24+
private final OperationsHandler operationsHandler;
25+
26+
@Override
27+
public CheckOperationRead checkOperation(final OperatorConfiguration operatorConfiguration) {
28+
return ConfigurationApi.execute(() -> operationsHandler.checkOperation(operatorConfiguration));
29+
}
30+
31+
@Override
32+
public OperationRead createOperation(final OperationCreate operationCreate) {
33+
return ConfigurationApi.execute(() -> operationsHandler.createOperation(operationCreate));
34+
}
35+
36+
@Override
37+
public void deleteOperation(final OperationIdRequestBody operationIdRequestBody) {
38+
ConfigurationApi.execute(() -> {
39+
operationsHandler.deleteOperation(operationIdRequestBody);
40+
return null;
41+
});
42+
}
43+
44+
@Override
45+
public OperationRead getOperation(final OperationIdRequestBody operationIdRequestBody) {
46+
return ConfigurationApi.execute(() -> operationsHandler.getOperation(operationIdRequestBody));
47+
}
48+
49+
@Override
50+
public OperationReadList listOperationsForConnection(final ConnectionIdRequestBody connectionIdRequestBody) {
51+
return ConfigurationApi.execute(() -> operationsHandler.listOperationsForConnection(connectionIdRequestBody));
52+
}
53+
54+
@Override
55+
public OperationRead updateOperation(final OperationUpdate operationUpdate) {
56+
return ConfigurationApi.execute(() -> operationsHandler.updateOperation(operationUpdate));
57+
}
58+
59+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* Copyright (c) 2022 Airbyte, Inc., all rights reserved.
3+
*/
4+
5+
package io.airbyte.server.apis.binders;
6+
7+
import io.airbyte.server.apis.OperationApiController;
8+
import io.airbyte.server.apis.factories.OperationApiFactory;
9+
import org.glassfish.hk2.utilities.binding.AbstractBinder;
10+
import org.glassfish.jersey.process.internal.RequestScoped;
11+
12+
public class OperationApiBinder extends AbstractBinder {
13+
14+
@Override
15+
protected void configure() {
16+
bindFactory(OperationApiFactory.class)
17+
.to(OperationApiController.class)
18+
.in(RequestScoped.class);
19+
}
20+
21+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* Copyright (c) 2022 Airbyte, Inc., all rights reserved.
3+
*/
4+
5+
package io.airbyte.server.apis.factories;
6+
7+
import io.airbyte.server.apis.OperationApiController;
8+
import io.airbyte.server.handlers.OperationsHandler;
9+
import org.glassfish.hk2.api.Factory;
10+
11+
public class OperationApiFactory implements Factory<OperationApiController> {
12+
13+
private static OperationsHandler operationsHandler;
14+
15+
public static void setValues(final OperationsHandler operationsHandler) {
16+
OperationApiFactory.operationsHandler = operationsHandler;
17+
}
18+
19+
@Override
20+
public OperationApiController provide() {
21+
return new OperationApiController(OperationApiFactory.operationsHandler);
22+
}
23+
24+
@Override
25+
public void dispose(final OperationApiController instance) {
26+
/* no op */
27+
}
28+
29+
}

0 commit comments

Comments
 (0)