Skip to content

Commit 6984829

Browse files
authored
Merge pull request #12355 from Thenujan-Nagaratnam/marketplace-assistant-ai
Marketplace assistant
2 parents 1ab51af + 16dd85c commit 6984829

File tree

27 files changed

+1683
-15
lines changed

27 files changed

+1683
-15
lines changed

Diff for: components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/APIConstants.java

+39
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,17 @@ private AI() {
548548
public static final String FIRST_NAME = DEFAULT_CARBON_DIALECT + "/givenname";
549549
public static final String LAST_NAME = DEFAULT_CARBON_DIALECT + "/lastname";
550550

551+
// constants for marketplace assistant
552+
public static final String MARKETPLACE_ASSISTANT = "MarketplaceAssistant";
553+
public static final String MARKETPLACE_ASSISTANT_ENABLED = "Enabled";
554+
public static final String MARKETPLACE_ASSISTANT_AUTH_TOKEN = "AuthToken";
555+
public static final String MARKETPLACE_ASSISTANT_ENDPOINT = "Endpoint";
556+
public static final String MARKETPLACE_ASSISTANT_CHAT_RESOURCE = "ChatResource";
557+
public static final String MARKETPLACE_ASSISTANT_PUBLISH_API_RESOURCE = "ApiPublishResource";
558+
public static final String MARKETPLACE_ASSISTANT_DELETE_API_RESOURCE = "ApiDeleteResource";
559+
public static final String MARKETPLACE_ASSISTANT_API_COUNT_RESOURCE = "ApiCountResource";
560+
561+
551562
//Overview constants for CORS configuration
552563
public static final String API_OVERVIEW_CORS_CONFIGURATION = "overview_corsConfiguration";
553564
//Registry lifecycle related info
@@ -1695,6 +1706,34 @@ private ConfigParameters() {
16951706
public static final String API_DATA_URL = "url";
16961707
public static final String API_UUID = "apiUUID";
16971708

1709+
1710+
public static final String UUID = "uuid";
1711+
public static final String API_SPEC_TYPE = "api_type";
1712+
public static final String API_SPEC_NAME = "api_name";
1713+
public static final String TENANT_DOMAIN = "tenant_domain";
1714+
public static final String QUERY = "query";
1715+
public static final String HISTORY = "history";
1716+
public static final String VERSION = "version";
1717+
public static final String DESCRIPTION = "description";
1718+
1719+
public static final String DEMOTE_TO_CREATED= "Demote to Created";
1720+
public static final String BLOCK = "Block";
1721+
public static final String DEPRECATE = "Deprecate";
1722+
public static final String PUBLISH = "Publish";
1723+
public static final String DEPLOY_AS_A_PROTOTYPE = "Deploy as a Prototype";
1724+
public static final String REPUBLISH = "Re-Publish";
1725+
1726+
public static final String API_SPEC_TYPE_REST = "api_spec";
1727+
public static final String API_SPEC_TYPE_GRAPHQL = "sdl_schema";
1728+
public static final String API_SPEC_TYPE_ASYNC = "async_spec";
1729+
public static final String API_TYPE_HTTP = "HTTP";
1730+
public static final String API_TYPE_WEBHOOK = "WEBHOOK";
1731+
1732+
public static final String API_TYPE_REST = "REST";
1733+
1734+
public static final String API_TYPE_GRAPHQL = "GRAPHQL";
1735+
public static final String API_TYPE_ASYNC = "ASYNC";
1736+
16981737
public static final String TRANSPORT_URL_IN = "TransportInURL";
16991738

17001739
// mock response generation

Diff for: components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/APIManagerConfiguration.java

+53
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.wso2.carbon.apimgt.api.model.Environment;
3535
import org.wso2.carbon.apimgt.api.model.VHost;
3636
import org.wso2.carbon.apimgt.common.gateway.configdto.HttpClientConfigurationDTO;
37+
import org.wso2.carbon.apimgt.impl.ai.MarketplaceAssistantConfigurationDto;
3738
import org.wso2.carbon.apimgt.common.gateway.dto.ClaimMappingDto;
3839
import org.wso2.carbon.apimgt.common.gateway.dto.JWKSConfigurationDTO;
3940
import org.wso2.carbon.apimgt.common.gateway.dto.TokenIssuerDto;
@@ -107,6 +108,7 @@ public class APIManagerConfiguration {
107108
private JSONArray applicationAttributes = new JSONArray();
108109
private CacheInvalidationConfiguration cacheInvalidationConfiguration;
109110

111+
110112
private HttpClientConfigurationDTO httpClientConfiguration;
111113

112114
private RecommendationEnvironment recommendationEnvironment;
@@ -116,6 +118,8 @@ public class APIManagerConfiguration {
116118
private boolean initialized;
117119
private ThrottleProperties throttleProperties = new ThrottleProperties();
118120
private ExtendedJWTConfigurationDto jwtConfigurationDto = new ExtendedJWTConfigurationDto();
121+
private static MarketplaceAssistantConfigurationDto marketplaceAssistantConfigurationDto = new MarketplaceAssistantConfigurationDto();
122+
119123
private WorkflowProperties workflowProperties = new WorkflowProperties();
120124
private Map<String, Environment> apiGatewayEnvironments = new LinkedHashMap<String, Environment>();
121125
private static Properties realtimeNotifierProperties;
@@ -160,6 +164,11 @@ public static boolean isTokenRevocationEnabled() {
160164
return !tokenRevocationClassName.isEmpty();
161165
}
162166

167+
public MarketplaceAssistantConfigurationDto getMarketplaceAssistantConfigurationDto() {
168+
169+
return marketplaceAssistantConfigurationDto;
170+
}
171+
163172
private Set<APIStore> externalAPIStores = new HashSet<APIStore>();
164173
private EventHubConfigurationDto eventHubConfigurationDto;
165174
private MonetizationConfigurationDto monetizationConfigurationDto = new MonetizationConfigurationDto();
@@ -624,6 +633,8 @@ private void readChildElements(OMElement serverConfig,
624633
jsonObject.put(APIConstants.CustomPropertyAttributes.REQUIRED, isRequired);
625634
customProperties.add(jsonObject);
626635
}
636+
} else if (APIConstants.MARKETPLACE_ASSISTANT.equals(localName)) {
637+
setMarketplaceAssistantConfiguration(element);
627638
}
628639
readChildElements(element, nameStack);
629640
nameStack.pop();
@@ -2326,4 +2337,46 @@ public HttpClientConfigurationDTO getHttpClientConfiguration() {
23262337
public void setHttpClientConfiguration(HttpClientConfigurationDTO httpClientConfiguration) {
23272338
this.httpClientConfiguration = httpClientConfiguration;
23282339
}
2340+
2341+
public void setMarketplaceAssistantConfiguration(OMElement omElement){
2342+
OMElement marketplaceAssistantEnableElement =
2343+
omElement.getFirstChildWithName(new QName(APIConstants.MARKETPLACE_ASSISTANT_ENABLED));
2344+
if (marketplaceAssistantEnableElement != null) {
2345+
marketplaceAssistantConfigurationDto.setEnabled(Boolean.parseBoolean(marketplaceAssistantEnableElement.getText()));
2346+
}
2347+
if (marketplaceAssistantConfigurationDto.isEnabled()) {
2348+
OMElement marketplaceAssistantEndpoint =
2349+
omElement.getFirstChildWithName(new QName(APIConstants.MARKETPLACE_ASSISTANT_ENDPOINT));
2350+
if (marketplaceAssistantEndpoint != null) {
2351+
marketplaceAssistantConfigurationDto.setEndpoint(marketplaceAssistantEndpoint.getText());
2352+
}
2353+
OMElement marketplaceAssistantToken =
2354+
omElement.getFirstChildWithName(new QName(APIConstants.MARKETPLACE_ASSISTANT_AUTH_TOKEN));
2355+
2356+
if (marketplaceAssistantToken != null) {
2357+
String AccessToken = MiscellaneousUtil.resolve(marketplaceAssistantToken, secretResolver);
2358+
marketplaceAssistantConfigurationDto.setAccessToken(AccessToken);
2359+
}
2360+
OMElement marketplaceAssistantApiCountResource =
2361+
omElement.getFirstChildWithName(new QName(APIConstants.MARKETPLACE_ASSISTANT_API_COUNT_RESOURCE));
2362+
if (marketplaceAssistantApiCountResource != null) {
2363+
marketplaceAssistantConfigurationDto.setApiCountResource(marketplaceAssistantApiCountResource.getText());
2364+
}
2365+
OMElement marketplaceAssistantApiDeleteResource =
2366+
omElement.getFirstChildWithName(new QName(APIConstants.MARKETPLACE_ASSISTANT_DELETE_API_RESOURCE));
2367+
if (marketplaceAssistantApiDeleteResource != null) {
2368+
marketplaceAssistantConfigurationDto.setApiDeleteResource(marketplaceAssistantApiDeleteResource.getText());
2369+
}
2370+
OMElement marketplaceAssistantApiPublishResource =
2371+
omElement.getFirstChildWithName(new QName(APIConstants.MARKETPLACE_ASSISTANT_PUBLISH_API_RESOURCE));
2372+
if (marketplaceAssistantApiPublishResource != null) {
2373+
marketplaceAssistantConfigurationDto.setApiPublishResource(marketplaceAssistantApiPublishResource.getText());
2374+
}
2375+
OMElement marketplaceAssistantChatResource =
2376+
omElement.getFirstChildWithName(new QName(APIConstants.MARKETPLACE_ASSISTANT_CHAT_RESOURCE));
2377+
if (marketplaceAssistantChatResource != null) {
2378+
marketplaceAssistantConfigurationDto.setChatResource(marketplaceAssistantChatResource.getText());
2379+
}
2380+
}
2381+
}
23292382
}

Diff for: components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/APIProviderImpl.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -2336,7 +2336,7 @@ public void deleteAPI(String apiUuid, String organization) throws APIManagementE
23362336
APIConstants.EventType.API_DELETE.name(), tenantId, organization, api.getId().getApiName(), apiId,
23372337
api.getUuid(), api.getId().getVersion(), api.getType(), api.getContext(),
23382338
APIUtil.replaceEmailDomainBack(api.getId().getProviderName()),
2339-
api.getStatus(), api.getApiSecurity());
2339+
api.getStatus(), api.getApiSecurity(), api.getStatus(), api.getVisibility());
23402340
APIUtil.sendNotification(apiEvent, APIConstants.NotifierType.API.name());
23412341
} else {
23422342
log.debug("Event has not published to gateways due to API id has failed to retrieve from DB for API "
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package org.wso2.carbon.apimgt.impl.ai;
2+
3+
public class MarketplaceAssistantConfigurationDto {
4+
5+
private String AccessToken;
6+
private String Endpoint;
7+
private String ApiPublishResource;
8+
private String ChatResource;
9+
private String ApiDeleteResource;
10+
private String ApiCountResource;
11+
private boolean isEnabled;
12+
13+
14+
15+
public String getAccessToken() {
16+
return AccessToken;
17+
}
18+
19+
public void setAccessToken(String AccessToken) {
20+
this.AccessToken = AccessToken;
21+
}
22+
23+
public String getEndpoint() {
24+
return Endpoint;
25+
}
26+
27+
public void setEndpoint(String Endpoint) {
28+
this.Endpoint = Endpoint;
29+
}
30+
31+
public String getApiPublishResource() {
32+
return ApiPublishResource;
33+
}
34+
35+
public void setApiPublishResource(String ApiPublishResource) {
36+
this.ApiPublishResource = ApiPublishResource;
37+
}
38+
39+
public String getChatResource() {
40+
return ChatResource;
41+
}
42+
43+
public void setChatResource(String ChatResource) {
44+
this.ChatResource = ChatResource;
45+
}
46+
47+
public String getApiDeleteResource() {
48+
return ApiDeleteResource;
49+
}
50+
51+
public void setApiDeleteResource(String ApiDeleteResource) {
52+
this.ApiDeleteResource = ApiDeleteResource;
53+
}
54+
55+
public String getApiCountResource() {
56+
return ApiCountResource;
57+
}
58+
59+
public void setApiCountResource(String ApiCountResource) {
60+
this.ApiCountResource = ApiCountResource;
61+
}
62+
63+
public boolean isEnabled() {
64+
return isEnabled;
65+
}
66+
67+
public void setEnabled(boolean Enabled) {
68+
this.isEnabled = Enabled;
69+
}
70+
71+
72+
}

Diff for: components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/internal/APIManagerComponent.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
import org.wso2.carbon.apimgt.impl.notifier.ScopesNotifier;
9090
import org.wso2.carbon.apimgt.impl.notifier.SubscriptionsNotifier;
9191
import org.wso2.carbon.apimgt.impl.notifier.KeyTemplateNotifier;
92+
import org.wso2.carbon.apimgt.impl.notifier.MarketplaceAssistantApiPublisherNotifier;
9293
import org.wso2.carbon.apimgt.impl.observers.APIStatusObserverList;
9394
import org.wso2.carbon.apimgt.impl.observers.CommonConfigDeployer;
9495
import org.wso2.carbon.apimgt.impl.observers.KeyMgtConfigDeployer;
@@ -201,6 +202,8 @@ protected void activate(ComponentContext componentContext) throws Exception {
201202
String tenantDomain = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain();
202203
configuration.load(filePath);
203204

205+
boolean isMarketplaceAssistantEnabled = configuration.getMarketplaceAssistantConfigurationDto().isEnabled();
206+
204207
//Registering Notifiers
205208
bundleContext.registerService(Notifier.class.getName(), new SubscriptionsNotifier(), null);
206209
bundleContext.registerService(Notifier.class.getName(), new ApisNotifier(), null);
@@ -216,6 +219,9 @@ protected void activate(ComponentContext componentContext) throws Exception {
216219
bundleContext.registerService(Notifier.class.getName(),new KeyTemplateNotifier(), null);
217220
bundleContext.registerService(Notifier.class.getName(), new CorrelationConfigNotifier(), null);
218221
bundleContext.registerService(Notifier.class.getName(), new GatewayPolicyNotifier(), null);
222+
if (isMarketplaceAssistantEnabled) {
223+
bundleContext.registerService(Notifier.class.getName(), new MarketplaceAssistantApiPublisherNotifier(), null);
224+
}
219225
APIManagerConfigurationServiceImpl configurationService = new APIManagerConfigurationServiceImpl(configuration);
220226
ServiceReferenceHolder.getInstance().setAPIManagerConfigurationService(configurationService);
221227
APIMgtDBUtil.initialize();
@@ -1097,4 +1103,3 @@ protected void unsetWorkflowTaskService(WorkflowTaskService workflowTaskService)
10971103
ServiceReferenceHolder.getInstance().setWorkflowTaskService(null);
10981104
}
10991105
}
1100-

0 commit comments

Comments
 (0)