Skip to content

Commit 88c2557

Browse files
committed
extract source api
1 parent 97b33a1 commit 88c2557

File tree

6 files changed

+198
-13
lines changed

6 files changed

+198
-13
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,7 @@ public static ServerRunnable getServer(final ServerFactory apiFactory,
367367
openApiConfigHandler,
368368
operationsHandler,
369369
schedulerHandler,
370+
sourceHandler,
370371
workspacesHandler);
371372
}
372373

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import io.airbyte.server.apis.OpenapiApiController;
3030
import io.airbyte.server.apis.OperationApiController;
3131
import io.airbyte.server.apis.SchedulerApiController;
32+
import io.airbyte.server.apis.SourceApiController;
3233
import io.airbyte.server.apis.binders.AttemptApiBinder;
3334
import io.airbyte.server.apis.binders.ConnectionApiBinder;
3435
import io.airbyte.server.apis.binders.DbMigrationBinder;
@@ -43,6 +44,7 @@
4344
import io.airbyte.server.apis.binders.OpenapiApiBinder;
4445
import io.airbyte.server.apis.binders.OperationApiBinder;
4546
import io.airbyte.server.apis.binders.SchedulerApiBinder;
47+
import io.airbyte.server.apis.binders.SourceApiBinder;
4648
import io.airbyte.server.apis.binders.SourceOauthApiBinder;
4749
import io.airbyte.server.apis.factories.AttemptApiFactory;
4850
import io.airbyte.server.apis.factories.ConnectionApiFactory;
@@ -58,6 +60,7 @@
5860
import io.airbyte.server.apis.factories.OpenapiApiFactory;
5961
import io.airbyte.server.apis.factories.OperationApiFactory;
6062
import io.airbyte.server.apis.factories.SchedulerApiFactory;
63+
import io.airbyte.server.apis.factories.SourceApiFactory;
6164
import io.airbyte.server.apis.factories.SourceOauthApiFactory;
6265
import io.airbyte.server.handlers.AttemptHandler;
6366
import io.airbyte.server.handlers.ConnectionsHandler;
@@ -71,6 +74,7 @@
7174
import io.airbyte.server.handlers.OpenApiConfigHandler;
7275
import io.airbyte.server.handlers.OperationsHandler;
7376
import io.airbyte.server.handlers.SchedulerHandler;
77+
import io.airbyte.server.handlers.SourceHandler;
7478
import io.airbyte.server.handlers.WorkspacesHandler;
7579
import io.airbyte.server.scheduler.EventRunner;
7680
import io.airbyte.server.scheduler.SynchronousSchedulerClient;
@@ -111,6 +115,7 @@ ServerRunnable create(final SynchronousSchedulerClient synchronousSchedulerClien
111115
final OpenApiConfigHandler openApiConfigHandler,
112116
final OperationsHandler operationsHandler,
113117
final SchedulerHandler schedulerHandler,
118+
final SourceHandler sourceHandler,
114119
final WorkspacesHandler workspacesHandler);
115120

116121
class Api implements ServerFactory {
@@ -144,6 +149,7 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul
144149
final OpenApiConfigHandler openApiConfigHandler,
145150
final OperationsHandler operationsHandler,
146151
final SchedulerHandler schedulerHandler,
152+
final SourceHandler sourceHandler,
147153
final WorkspacesHandler workspacesHandler) {
148154
final Map<String, String> mdc = MDC.getCopyOfContextMap();
149155

@@ -202,6 +208,8 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul
202208

203209
SchedulerApiFactory.setValues(schedulerHandler);
204210

211+
SourceApiFactory.setValues(schedulerHandler, sourceHandler);
212+
205213
// server configurations
206214
final Set<Class<?>> componentClasses = Set.of(
207215
ConfigurationApi.class,
@@ -219,6 +227,7 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul
219227
OpenapiApiController.class,
220228
OperationApiController.class,
221229
SchedulerApiController.class,
230+
SourceApiController.class,
222231
SourceOauthApiFactory.class);
223232

224233
final Set<Object> components = Set.of(
@@ -238,6 +247,7 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul
238247
new OpenapiApiBinder(),
239248
new OperationApiBinder(),
240249
new SchedulerApiBinder(),
250+
new SourceApiBinder(),
241251
new SourceOauthApiBinder());
242252

243253
// construct server

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

Lines changed: 50 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -436,57 +436,94 @@ public InternalOperationResult setWorkflowInAttempt(final SetWorkflowInAttemptRe
436436

437437
// SOURCE IMPLEMENTATION
438438

439+
/**
440+
* This implementation has been moved to {@link SourceApiController}. Since the path of
441+
* {@link SourceApiController} is more granular, it will override this implementation
442+
*/
439443
@Override
440444
public SourceRead createSource(final SourceCreate sourceCreate) {
441-
return execute(() -> sourceHandler.createSource(sourceCreate));
445+
throw new NotImplementedException();
442446
}
443447

448+
/**
449+
* This implementation has been moved to {@link SourceApiController}. Since the path of
450+
* {@link SourceApiController} is more granular, it will override this implementation
451+
*/
444452
@Override
445453
public SourceRead updateSource(final SourceUpdate sourceUpdate) {
446-
return execute(() -> sourceHandler.updateSource(sourceUpdate));
454+
throw new NotImplementedException();
447455
}
448456

457+
/**
458+
* This implementation has been moved to {@link SourceApiController}. Since the path of
459+
* {@link SourceApiController} is more granular, it will override this implementation
460+
*/
449461
@Override
450462
public SourceReadList listSourcesForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) {
451-
return execute(() -> sourceHandler.listSourcesForWorkspace(workspaceIdRequestBody));
463+
throw new NotImplementedException();
452464
}
453465

466+
/**
467+
* This implementation has been moved to {@link SourceApiController}. Since the path of
468+
* {@link SourceApiController} is more granular, it will override this implementation
469+
*/
454470
@Override
455471
public SourceReadList searchSources(final SourceSearch sourceSearch) {
456-
return execute(() -> sourceHandler.searchSources(sourceSearch));
472+
throw new NotImplementedException();
457473
}
458474

475+
/**
476+
* This implementation has been moved to {@link SourceApiController}. Since the path of
477+
* {@link SourceApiController} is more granular, it will override this implementation
478+
*/
459479
@Override
460480
public SourceRead getSource(final SourceIdRequestBody sourceIdRequestBody) {
461-
return execute(() -> sourceHandler.getSource(sourceIdRequestBody));
481+
throw new NotImplementedException();
462482
}
463483

484+
/**
485+
* This implementation has been moved to {@link SourceApiController}. Since the path of
486+
* {@link SourceApiController} is more granular, it will override this implementation
487+
*/
464488
@Override
465489
public void deleteSource(final SourceIdRequestBody sourceIdRequestBody) {
466-
execute(() -> {
467-
sourceHandler.deleteSource(sourceIdRequestBody);
468-
return null;
469-
});
490+
throw new NotImplementedException();
470491
}
471492

493+
/**
494+
* This implementation has been moved to {@link SourceApiController}. Since the path of
495+
* {@link SourceApiController} is more granular, it will override this implementation
496+
*/
472497
@Override
473498
public SourceRead cloneSource(final SourceCloneRequestBody sourceCloneRequestBody) {
474-
return execute(() -> sourceHandler.cloneSource(sourceCloneRequestBody));
499+
throw new NotImplementedException();
475500
}
476501

502+
/**
503+
* This implementation has been moved to {@link SourceApiController}. Since the path of
504+
* {@link SourceApiController} is more granular, it will override this implementation
505+
*/
477506
@Override
478507
public CheckConnectionRead checkConnectionToSource(final SourceIdRequestBody sourceIdRequestBody) {
479-
return execute(() -> schedulerHandler.checkSourceConnectionFromSourceId(sourceIdRequestBody));
508+
throw new NotImplementedException();
480509
}
481510

511+
/**
512+
* This implementation has been moved to {@link SourceApiController}. Since the path of
513+
* {@link SourceApiController} is more granular, it will override this implementation
514+
*/
482515
@Override
483516
public CheckConnectionRead checkConnectionToSourceForUpdate(final SourceUpdate sourceUpdate) {
484-
return execute(() -> schedulerHandler.checkSourceConnectionFromSourceIdForUpdate(sourceUpdate));
517+
throw new NotImplementedException();
485518
}
486519

520+
/**
521+
* This implementation has been moved to {@link SourceApiController}. Since the path of
522+
* {@link SourceApiController} is more granular, it will override this implementation
523+
*/
487524
@Override
488525
public SourceDiscoverSchemaRead discoverSchemaForSource(final SourceDiscoverSchemaRequestBody discoverSchemaRequestBody) {
489-
return execute(() -> schedulerHandler.discoverSchemaForSourceFromSourceId(discoverSchemaRequestBody));
526+
throw new NotImplementedException();
490527
}
491528

492529
// DB MIGRATION
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
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.SourceApi;
8+
import io.airbyte.api.model.generated.CheckConnectionRead;
9+
import io.airbyte.api.model.generated.SourceCloneRequestBody;
10+
import io.airbyte.api.model.generated.SourceCreate;
11+
import io.airbyte.api.model.generated.SourceDiscoverSchemaRead;
12+
import io.airbyte.api.model.generated.SourceDiscoverSchemaRequestBody;
13+
import io.airbyte.api.model.generated.SourceIdRequestBody;
14+
import io.airbyte.api.model.generated.SourceRead;
15+
import io.airbyte.api.model.generated.SourceReadList;
16+
import io.airbyte.api.model.generated.SourceSearch;
17+
import io.airbyte.api.model.generated.SourceUpdate;
18+
import io.airbyte.api.model.generated.WorkspaceIdRequestBody;
19+
import io.airbyte.server.handlers.SchedulerHandler;
20+
import io.airbyte.server.handlers.SourceHandler;
21+
import javax.ws.rs.Path;
22+
import lombok.AllArgsConstructor;
23+
24+
@Path("/v1/sources")
25+
@AllArgsConstructor
26+
public class SourceApiController implements SourceApi {
27+
28+
private final SchedulerHandler schedulerHandler;
29+
private final SourceHandler sourceHandler;
30+
31+
@Override
32+
public CheckConnectionRead checkConnectionToSource(final SourceIdRequestBody sourceIdRequestBody) {
33+
return ConfigurationApi.execute(() -> schedulerHandler.checkSourceConnectionFromSourceId(sourceIdRequestBody));
34+
}
35+
36+
@Override
37+
public CheckConnectionRead checkConnectionToSourceForUpdate(final SourceUpdate sourceUpdate) {
38+
return ConfigurationApi.execute(() -> schedulerHandler.checkSourceConnectionFromSourceIdForUpdate(sourceUpdate));
39+
}
40+
41+
@Override
42+
public SourceRead cloneSource(final SourceCloneRequestBody sourceCloneRequestBody) {
43+
return ConfigurationApi.execute(() -> sourceHandler.cloneSource(sourceCloneRequestBody));
44+
}
45+
46+
@Override
47+
public SourceRead createSource(final SourceCreate sourceCreate) {
48+
return ConfigurationApi.execute(() -> sourceHandler.createSource(sourceCreate));
49+
}
50+
51+
@Override
52+
public void deleteSource(final SourceIdRequestBody sourceIdRequestBody) {
53+
ConfigurationApi.execute(() -> {
54+
sourceHandler.deleteSource(sourceIdRequestBody);
55+
return null;
56+
});
57+
}
58+
59+
@Override
60+
public SourceDiscoverSchemaRead discoverSchemaForSource(final SourceDiscoverSchemaRequestBody sourceDiscoverSchemaRequestBody) {
61+
return ConfigurationApi.execute(() -> schedulerHandler.discoverSchemaForSourceFromSourceId(sourceDiscoverSchemaRequestBody));
62+
}
63+
64+
@Override
65+
public SourceRead getSource(final SourceIdRequestBody sourceIdRequestBody) {
66+
return ConfigurationApi.execute(() -> sourceHandler.getSource(sourceIdRequestBody));
67+
}
68+
69+
@Override
70+
public SourceReadList listSourcesForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) {
71+
return ConfigurationApi.execute(() -> sourceHandler.listSourcesForWorkspace(workspaceIdRequestBody));
72+
}
73+
74+
@Override
75+
public SourceReadList searchSources(final SourceSearch sourceSearch) {
76+
return ConfigurationApi.execute(() -> sourceHandler.searchSources(sourceSearch));
77+
}
78+
79+
@Override
80+
public SourceRead updateSource(final SourceUpdate sourceUpdate) {
81+
return ConfigurationApi.execute(() -> sourceHandler.updateSource(sourceUpdate));
82+
}
83+
84+
}
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.SourceApiController;
8+
import io.airbyte.server.apis.factories.SourceApiFactory;
9+
import org.glassfish.hk2.utilities.binding.AbstractBinder;
10+
import org.glassfish.jersey.process.internal.RequestScoped;
11+
12+
public class SourceApiBinder extends AbstractBinder {
13+
14+
@Override
15+
protected void configure() {
16+
bindFactory(SourceApiFactory.class)
17+
.to(SourceApiController.class)
18+
.in(RequestScoped.class);
19+
}
20+
21+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
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.SourceApiController;
8+
import io.airbyte.server.handlers.SchedulerHandler;
9+
import io.airbyte.server.handlers.SourceHandler;
10+
import org.glassfish.hk2.api.Factory;
11+
12+
public class SourceApiFactory implements Factory<SourceApiController> {
13+
14+
private static SchedulerHandler schedulerHandler;
15+
private static SourceHandler sourceHandler;
16+
17+
public static void setValues(final SchedulerHandler schedulerHandler, final SourceHandler sourceHandler) {
18+
SourceApiFactory.schedulerHandler = schedulerHandler;
19+
SourceApiFactory.sourceHandler = sourceHandler;
20+
}
21+
22+
@Override
23+
public SourceApiController provide() {
24+
return new SourceApiController(schedulerHandler, sourceHandler);
25+
}
26+
27+
@Override
28+
public void dispose(final SourceApiController instance) {
29+
/* no op */
30+
}
31+
32+
}

0 commit comments

Comments
 (0)