Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Marketplace assistant #12355

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -548,6 +548,17 @@ private AI() {
public static final String FIRST_NAME = DEFAULT_CARBON_DIALECT + "/givenname";
public static final String LAST_NAME = DEFAULT_CARBON_DIALECT + "/lastname";

// constants for marketplace assistant
public static final String MARKETPLACE_ASSISTANT = "MarketplaceAssistant";
public static final String MARKETPLACE_ASSISTANT_ENABLED = "Enabled";
public static final String MARKETPLACE_ASSISTANT_AUTH_TOKEN = "AuthToken";
public static final String MARKETPLACE_ASSISTANT_ENDPOINT = "Endpoint";
public static final String MARKETPLACE_ASSISTANT_CHAT_RESOURCE = "ChatResource";
public static final String MARKETPLACE_ASSISTANT_PUBLISH_API_RESOURCE = "ApiPublishResource";
public static final String MARKETPLACE_ASSISTANT_DELETE_API_RESOURCE = "ApiDeleteResource";
public static final String MARKETPLACE_ASSISTANT_API_COUNT_RESOURCE = "ApiCountResource";


//Overview constants for CORS configuration
public static final String API_OVERVIEW_CORS_CONFIGURATION = "overview_corsConfiguration";
//Registry lifecycle related info
Expand Down Expand Up @@ -1695,6 +1706,34 @@ private ConfigParameters() {
public static final String API_DATA_URL = "url";
public static final String API_UUID = "apiUUID";


public static final String UUID = "uuid";
public static final String API_SPEC_TYPE = "api_type";
public static final String API_SPEC_NAME = "api_name";
public static final String TENANT_DOMAIN = "tenant_domain";
public static final String QUERY = "query";
public static final String HISTORY = "history";
public static final String VERSION = "version";
public static final String DESCRIPTION = "description";

public static final String DEMOTE_TO_CREATED= "Demote to Created";
public static final String BLOCK = "Block";
public static final String DEPRECATE = "Deprecate";
public static final String PUBLISH = "Publish";
public static final String DEPLOY_AS_A_PROTOTYPE = "Deploy as a Prototype";
public static final String REPUBLISH = "Re-Publish";

public static final String API_SPEC_TYPE_REST = "api_spec";
public static final String API_SPEC_TYPE_GRAPHQL = "sdl_schema";
public static final String API_SPEC_TYPE_ASYNC = "async_spec";
public static final String API_TYPE_HTTP = "HTTP";
public static final String API_TYPE_WEBHOOK = "WEBHOOK";

public static final String API_TYPE_REST = "REST";

public static final String API_TYPE_GRAPHQL = "GRAPHQL";
public static final String API_TYPE_ASYNC = "ASYNC";

public static final String TRANSPORT_URL_IN = "TransportInURL";

// mock response generation
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import org.wso2.carbon.apimgt.api.model.Environment;
import org.wso2.carbon.apimgt.api.model.VHost;
import org.wso2.carbon.apimgt.common.gateway.configdto.HttpClientConfigurationDTO;
import org.wso2.carbon.apimgt.impl.ai.MarketplaceAssistantConfigurationDto;
import org.wso2.carbon.apimgt.common.gateway.dto.ClaimMappingDto;
import org.wso2.carbon.apimgt.common.gateway.dto.JWKSConfigurationDTO;
import org.wso2.carbon.apimgt.common.gateway.dto.TokenIssuerDto;
Expand Down Expand Up @@ -107,6 +108,7 @@ public class APIManagerConfiguration {
private JSONArray applicationAttributes = new JSONArray();
private CacheInvalidationConfiguration cacheInvalidationConfiguration;


private HttpClientConfigurationDTO httpClientConfiguration;

private RecommendationEnvironment recommendationEnvironment;
Expand All @@ -116,6 +118,8 @@ public class APIManagerConfiguration {
private boolean initialized;
private ThrottleProperties throttleProperties = new ThrottleProperties();
private ExtendedJWTConfigurationDto jwtConfigurationDto = new ExtendedJWTConfigurationDto();
private static MarketplaceAssistantConfigurationDto marketplaceAssistantConfigurationDto = new MarketplaceAssistantConfigurationDto();

private WorkflowProperties workflowProperties = new WorkflowProperties();
private Map<String, Environment> apiGatewayEnvironments = new LinkedHashMap<String, Environment>();
private static Properties realtimeNotifierProperties;
Expand Down Expand Up @@ -160,6 +164,11 @@ public static boolean isTokenRevocationEnabled() {
return !tokenRevocationClassName.isEmpty();
}

public MarketplaceAssistantConfigurationDto getMarketplaceAssistantConfigurationDto() {

return marketplaceAssistantConfigurationDto;
}

private Set<APIStore> externalAPIStores = new HashSet<APIStore>();
private EventHubConfigurationDto eventHubConfigurationDto;
private MonetizationConfigurationDto monetizationConfigurationDto = new MonetizationConfigurationDto();
Expand Down Expand Up @@ -624,6 +633,8 @@ private void readChildElements(OMElement serverConfig,
jsonObject.put(APIConstants.CustomPropertyAttributes.REQUIRED, isRequired);
customProperties.add(jsonObject);
}
} else if (APIConstants.MARKETPLACE_ASSISTANT.equals(localName)) {
setMarketplaceAssistantConfiguration(element);
}
readChildElements(element, nameStack);
nameStack.pop();
Expand Down Expand Up @@ -2326,4 +2337,46 @@ public HttpClientConfigurationDTO getHttpClientConfiguration() {
public void setHttpClientConfiguration(HttpClientConfigurationDTO httpClientConfiguration) {
this.httpClientConfiguration = httpClientConfiguration;
}

public void setMarketplaceAssistantConfiguration(OMElement omElement){
OMElement marketplaceAssistantEnableElement =
omElement.getFirstChildWithName(new QName(APIConstants.MARKETPLACE_ASSISTANT_ENABLED));
if (marketplaceAssistantEnableElement != null) {
marketplaceAssistantConfigurationDto.setEnabled(Boolean.parseBoolean(marketplaceAssistantEnableElement.getText()));
}
if (marketplaceAssistantConfigurationDto.isEnabled()) {
OMElement marketplaceAssistantEndpoint =
omElement.getFirstChildWithName(new QName(APIConstants.MARKETPLACE_ASSISTANT_ENDPOINT));
if (marketplaceAssistantEndpoint != null) {
marketplaceAssistantConfigurationDto.setEndpoint(marketplaceAssistantEndpoint.getText());
}
OMElement marketplaceAssistantToken =
omElement.getFirstChildWithName(new QName(APIConstants.MARKETPLACE_ASSISTANT_AUTH_TOKEN));

if (marketplaceAssistantToken != null) {
String AccessToken = MiscellaneousUtil.resolve(marketplaceAssistantToken, secretResolver);
marketplaceAssistantConfigurationDto.setAccessToken(AccessToken);
}
OMElement marketplaceAssistantApiCountResource =
omElement.getFirstChildWithName(new QName(APIConstants.MARKETPLACE_ASSISTANT_API_COUNT_RESOURCE));
if (marketplaceAssistantApiCountResource != null) {
marketplaceAssistantConfigurationDto.setApiCountResource(marketplaceAssistantApiCountResource.getText());
}
OMElement marketplaceAssistantApiDeleteResource =
omElement.getFirstChildWithName(new QName(APIConstants.MARKETPLACE_ASSISTANT_DELETE_API_RESOURCE));
if (marketplaceAssistantApiDeleteResource != null) {
marketplaceAssistantConfigurationDto.setApiDeleteResource(marketplaceAssistantApiDeleteResource.getText());
}
OMElement marketplaceAssistantApiPublishResource =
omElement.getFirstChildWithName(new QName(APIConstants.MARKETPLACE_ASSISTANT_PUBLISH_API_RESOURCE));
if (marketplaceAssistantApiPublishResource != null) {
marketplaceAssistantConfigurationDto.setApiPublishResource(marketplaceAssistantApiPublishResource.getText());
}
OMElement marketplaceAssistantChatResource =
omElement.getFirstChildWithName(new QName(APIConstants.MARKETPLACE_ASSISTANT_CHAT_RESOURCE));
if (marketplaceAssistantChatResource != null) {
marketplaceAssistantConfigurationDto.setChatResource(marketplaceAssistantChatResource.getText());
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2336,7 +2336,7 @@ public void deleteAPI(String apiUuid, String organization) throws APIManagementE
APIConstants.EventType.API_DELETE.name(), tenantId, organization, api.getId().getApiName(), apiId,
api.getUuid(), api.getId().getVersion(), api.getType(), api.getContext(),
APIUtil.replaceEmailDomainBack(api.getId().getProviderName()),
api.getStatus(), api.getApiSecurity());
api.getStatus(), api.getApiSecurity(), api.getStatus(), api.getVisibility());
APIUtil.sendNotification(apiEvent, APIConstants.NotifierType.API.name());
} else {
log.debug("Event has not published to gateways due to API id has failed to retrieve from DB for API "
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package org.wso2.carbon.apimgt.impl.ai;

public class MarketplaceAssistantConfigurationDto {

private String AccessToken;
private String Endpoint;
private String ApiPublishResource;
private String ChatResource;
private String ApiDeleteResource;
private String ApiCountResource;
private boolean isEnabled;



public String getAccessToken() {
return AccessToken;
}

public void setAccessToken(String AccessToken) {
this.AccessToken = AccessToken;
}

public String getEndpoint() {
return Endpoint;
}

public void setEndpoint(String Endpoint) {
this.Endpoint = Endpoint;
}

public String getApiPublishResource() {
return ApiPublishResource;
}

public void setApiPublishResource(String ApiPublishResource) {
this.ApiPublishResource = ApiPublishResource;
}

public String getChatResource() {
return ChatResource;
}

public void setChatResource(String ChatResource) {
this.ChatResource = ChatResource;
}

public String getApiDeleteResource() {
return ApiDeleteResource;
}

public void setApiDeleteResource(String ApiDeleteResource) {
this.ApiDeleteResource = ApiDeleteResource;
}

public String getApiCountResource() {
return ApiCountResource;
}

public void setApiCountResource(String ApiCountResource) {
this.ApiCountResource = ApiCountResource;
}

public boolean isEnabled() {
return isEnabled;
}

public void setEnabled(boolean Enabled) {
this.isEnabled = Enabled;
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
import org.wso2.carbon.apimgt.impl.notifier.ScopesNotifier;
import org.wso2.carbon.apimgt.impl.notifier.SubscriptionsNotifier;
import org.wso2.carbon.apimgt.impl.notifier.KeyTemplateNotifier;
import org.wso2.carbon.apimgt.impl.notifier.MarketplaceAssistantApiPublisherNotifier;
import org.wso2.carbon.apimgt.impl.observers.APIStatusObserverList;
import org.wso2.carbon.apimgt.impl.observers.CommonConfigDeployer;
import org.wso2.carbon.apimgt.impl.observers.KeyMgtConfigDeployer;
Expand Down Expand Up @@ -201,6 +202,8 @@ protected void activate(ComponentContext componentContext) throws Exception {
String tenantDomain = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain();
configuration.load(filePath);

boolean isMarketplaceAssistantEnabled = configuration.getMarketplaceAssistantConfigurationDto().isEnabled();

//Registering Notifiers
bundleContext.registerService(Notifier.class.getName(), new SubscriptionsNotifier(), null);
bundleContext.registerService(Notifier.class.getName(), new ApisNotifier(), null);
Expand All @@ -216,6 +219,9 @@ protected void activate(ComponentContext componentContext) throws Exception {
bundleContext.registerService(Notifier.class.getName(),new KeyTemplateNotifier(), null);
bundleContext.registerService(Notifier.class.getName(), new CorrelationConfigNotifier(), null);
bundleContext.registerService(Notifier.class.getName(), new GatewayPolicyNotifier(), null);
if (isMarketplaceAssistantEnabled) {
bundleContext.registerService(Notifier.class.getName(), new MarketplaceAssistantApiPublisherNotifier(), null);
}
APIManagerConfigurationServiceImpl configurationService = new APIManagerConfigurationServiceImpl(configuration);
ServiceReferenceHolder.getInstance().setAPIManagerConfigurationService(configurationService);
APIMgtDBUtil.initialize();
Expand Down Expand Up @@ -1097,4 +1103,3 @@ protected void unsetWorkflowTaskService(WorkflowTaskService workflowTaskService)
ServiceReferenceHolder.getInstance().setWorkflowTaskService(null);
}
}

Loading