29
29
import io .airbyte .data .services .DestinationService ;
30
30
import io .airbyte .data .services .OAuthService ;
31
31
import io .airbyte .data .services .SourceService ;
32
+ import io .airbyte .domain .models .EntitledConnectorSpec ;
33
+ import io .airbyte .domain .services .entitlements .ConnectorConfigEntitlementService ;
34
+ import io .airbyte .persistence .job .WorkspaceHelper ;
32
35
import io .airbyte .validation .json .JsonValidationException ;
33
36
import jakarta .inject .Singleton ;
34
37
import java .io .IOException ;
@@ -50,17 +53,23 @@ public class ConnectorDefinitionSpecificationHandler {
50
53
private final SourceService sourceService ;
51
54
private final DestinationService destinationService ;
52
55
private final OAuthService oAuthService ;
56
+ private final ConnectorConfigEntitlementService connectorConfigEntitlementService ;
57
+ private final WorkspaceHelper workspaceHelper ;
53
58
54
59
public ConnectorDefinitionSpecificationHandler (final ActorDefinitionVersionHelper actorDefinitionVersionHelper ,
55
60
final JobConverter jobConverter ,
56
61
final SourceService sourceService ,
57
62
final DestinationService destinationService ,
58
- final OAuthService oauthService ) {
63
+ final WorkspaceHelper workspaceHelper ,
64
+ final OAuthService oauthService ,
65
+ final ConnectorConfigEntitlementService connectorConfigEntitlementService ) {
59
66
this .actorDefinitionVersionHelper = actorDefinitionVersionHelper ;
60
67
this .jobConverter = jobConverter ;
61
68
this .sourceService = sourceService ;
62
69
this .destinationService = destinationService ;
63
70
this .oAuthService = oauthService ;
71
+ this .connectorConfigEntitlementService = connectorConfigEntitlementService ;
72
+ this .workspaceHelper = workspaceHelper ;
64
73
}
65
74
66
75
/**
@@ -78,9 +87,9 @@ public SourceDefinitionSpecificationRead getSpecificationForSourceId(final Sourc
78
87
final StandardSourceDefinition sourceDefinition = sourceService .getStandardSourceDefinition (source .getSourceDefinitionId ());
79
88
final ActorDefinitionVersion sourceVersion =
80
89
actorDefinitionVersionHelper .getSourceVersion (sourceDefinition , source .getWorkspaceId (), sourceIdRequestBody .getSourceId ());
81
- final io . airbyte . protocol . models . v0 . ConnectorSpecification spec = sourceVersion . getSpec ();
82
-
83
- return getSourceSpecificationRead (sourceDefinition , spec , source .getWorkspaceId ());
90
+ final EntitledConnectorSpec entitledConnectorSpec =
91
+ connectorConfigEntitlementService . getEntitledConnectorSpec ( source . getWorkspaceId (), sourceVersion );
92
+ return getSourceSpecificationRead (sourceDefinition , entitledConnectorSpec , source .getWorkspaceId ());
84
93
}
85
94
86
95
/**
@@ -98,9 +107,10 @@ public SourceDefinitionSpecificationRead getSourceDefinitionSpecification(final
98
107
final StandardSourceDefinition source = sourceService .getStandardSourceDefinition (sourceDefinitionId );
99
108
final ActorDefinitionVersion sourceVersion =
100
109
actorDefinitionVersionHelper .getSourceVersion (source , sourceDefinitionIdWithWorkspaceId .getWorkspaceId ());
101
- final io .airbyte .protocol .models .v0 .ConnectorSpecification spec = sourceVersion .getSpec ();
102
-
103
- return getSourceSpecificationRead (source , spec , sourceDefinitionIdWithWorkspaceId .getWorkspaceId ());
110
+ final UUID organizationId = workspaceHelper .getOrganizationForWorkspace (sourceDefinitionIdWithWorkspaceId .getWorkspaceId ());
111
+ final EntitledConnectorSpec entitledConnectorSpec =
112
+ connectorConfigEntitlementService .getEntitledConnectorSpec (organizationId , sourceVersion );
113
+ return getSourceSpecificationRead (source , entitledConnectorSpec , sourceDefinitionIdWithWorkspaceId .getWorkspaceId ());
104
114
}
105
115
106
116
/**
@@ -120,8 +130,11 @@ public DestinationDefinitionSpecificationRead getSpecificationForDestinationId(f
120
130
final ActorDefinitionVersion destinationVersion =
121
131
actorDefinitionVersionHelper .getDestinationVersion (destinationDefinition , destination .getWorkspaceId (),
122
132
destinationIdRequestBody .getDestinationId ());
123
- final io .airbyte .protocol .models .v0 .ConnectorSpecification spec = destinationVersion .getSpec ();
124
- return getDestinationSpecificationRead (destinationDefinition , spec , destinationVersion .getSupportsRefreshes (), destination .getWorkspaceId ());
133
+ final UUID organizationId = workspaceHelper .getOrganizationForWorkspace (destination .getWorkspaceId ());
134
+ final EntitledConnectorSpec entitledConnectorSpec =
135
+ connectorConfigEntitlementService .getEntitledConnectorSpec (organizationId , destinationVersion );
136
+ return getDestinationSpecificationRead (destinationDefinition , entitledConnectorSpec , destinationVersion .getSupportsRefreshes (),
137
+ destination .getWorkspaceId ());
125
138
}
126
139
127
140
/**
@@ -141,17 +154,19 @@ public DestinationDefinitionSpecificationRead getDestinationSpecification(final
141
154
final StandardDestinationDefinition destination = destinationService .getStandardDestinationDefinition (destinationDefinitionId );
142
155
final ActorDefinitionVersion destinationVersion =
143
156
actorDefinitionVersionHelper .getDestinationVersion (destination , destinationDefinitionIdWithWorkspaceId .getWorkspaceId ());
144
- final io .airbyte .protocol .models .v0 .ConnectorSpecification spec = destinationVersion .getSpec ();
145
-
146
- return getDestinationSpecificationRead (destination , spec , destinationVersion .getSupportsRefreshes (),
157
+ final UUID organizationId = workspaceHelper .getOrganizationForWorkspace (destinationDefinitionIdWithWorkspaceId .getWorkspaceId ());
158
+ final EntitledConnectorSpec entitledConnectorSpec =
159
+ connectorConfigEntitlementService .getEntitledConnectorSpec (organizationId , destinationVersion );
160
+ return getDestinationSpecificationRead (destination , entitledConnectorSpec , destinationVersion .getSupportsRefreshes (),
147
161
destinationDefinitionIdWithWorkspaceId .getWorkspaceId ());
148
162
}
149
163
150
164
@ VisibleForTesting
151
165
SourceDefinitionSpecificationRead getSourceSpecificationRead (final StandardSourceDefinition sourceDefinition ,
152
- final io . airbyte . protocol . models . v0 . ConnectorSpecification spec ,
166
+ final EntitledConnectorSpec entitledConnectorSpec ,
153
167
final UUID workspaceId )
154
168
throws IOException {
169
+ final io .airbyte .protocol .models .v0 .ConnectorSpecification spec = entitledConnectorSpec .getSpec ();
155
170
final SourceDefinitionSpecificationRead specRead = new SourceDefinitionSpecificationRead ()
156
171
.jobInfo (jobConverter .getSynchronousJobRead (SynchronousJobMetadata .mock (JobConfig .ConfigType .GET_SPEC )))
157
172
.connectionSpecification (spec .getConnectionSpecification ())
@@ -174,10 +189,11 @@ SourceDefinitionSpecificationRead getSourceSpecificationRead(final StandardSourc
174
189
175
190
@ VisibleForTesting
176
191
DestinationDefinitionSpecificationRead getDestinationSpecificationRead (final StandardDestinationDefinition destinationDefinition ,
177
- final io . airbyte . protocol . models . v0 . ConnectorSpecification spec ,
192
+ final EntitledConnectorSpec entitledConnectorSpec ,
178
193
final boolean supportsRefreshes ,
179
194
final UUID workspaceId )
180
195
throws IOException {
196
+ final io .airbyte .protocol .models .v0 .ConnectorSpecification spec = entitledConnectorSpec .getSpec ();
181
197
final DestinationDefinitionSpecificationRead specRead = new DestinationDefinitionSpecificationRead ()
182
198
.jobInfo (jobConverter .getSynchronousJobRead (SynchronousJobMetadata .mock (JobConfig .ConfigType .GET_SPEC )))
183
199
.supportedDestinationSyncModes (getFinalDestinationSyncModes (spec .getSupportedDestinationSyncModes (), supportsRefreshes ))
0 commit comments