Search in sources :

Example 11 with NotifierException

use of org.wso2.carbon.apimgt.impl.notifier.exceptions.NotifierException in project carbon-apimgt by wso2.

the class ExternallyDeployedApiNotifier method undeployWhenDeleting.

/**
 * Undeploy APIs from external gateway when API is deleted
 *
 * @param apiEvent APIEvent to undeploy APIs from external gateway
 * @throws NotifierException if error occurs when undeploying APIs from external gateway
 */
private void undeployWhenDeleting(APIEvent apiEvent) throws NotifierException {
    Map<String, Environment> gatewayEnvironments = APIUtil.getReadOnlyGatewayEnvironments();
    boolean deleted;
    String apiId = apiEvent.getUuid();
    try {
        List<APIRevisionDeployment> test = apiMgtDAO.getAPIRevisionDeploymentsByApiUUID(apiId);
        for (APIRevisionDeployment deployment : test) {
            String deploymentEnv = deployment.getDeployment();
            if (gatewayEnvironments.containsKey(deploymentEnv)) {
                ExternalGatewayDeployer deployer = ServiceReferenceHolder.getInstance().getExternalGatewayDeployer(gatewayEnvironments.get(deploymentEnv).getProvider());
                if (deployer != null) {
                    try {
                        deleted = deployer.undeploy(apiEvent.getApiName(), apiEvent.getApiVersion(), apiEvent.getApiContext(), gatewayEnvironments.get(deploymentEnv));
                        if (!deleted) {
                            throw new NotifierException("Error while deleting API product from Solace broker");
                        }
                    } catch (DeployerException e) {
                        throw new NotifierException(e.getMessage());
                    }
                }
            }
        }
    } catch (APIManagementException e) {
        throw new NotifierException(e.getMessage());
    }
}
Also used : APIManagementException(org.wso2.carbon.apimgt.api.APIManagementException) ExternalGatewayDeployer(org.wso2.carbon.apimgt.impl.deployer.ExternalGatewayDeployer) Environment(org.wso2.carbon.apimgt.api.model.Environment) DeployerException(org.wso2.carbon.apimgt.impl.deployer.exceptions.DeployerException) APIRevisionDeployment(org.wso2.carbon.apimgt.api.model.APIRevisionDeployment) NotifierException(org.wso2.carbon.apimgt.impl.notifier.exceptions.NotifierException)

Example 12 with NotifierException

use of org.wso2.carbon.apimgt.impl.notifier.exceptions.NotifierException in project carbon-apimgt by wso2.

the class SolaceApplicationNotifier method process.

/**
 * Process Application notifier event related to Solace applications
 *
 * @param event related to Application handling
 * @throws NotifierException if error occurs when casting event
 */
private void process(Event event) throws NotifierException {
    ApplicationEvent applicationEvent;
    applicationEvent = (ApplicationEvent) event;
    if (APIConstants.EventType.APPLICATION_DELETE.name().equals(event.getType())) {
        removeSolaceApplication(applicationEvent);
    } else if (APIConstants.EventType.APPLICATION_UPDATE.name().equals(event.getType())) {
        renameSolaceApplication(applicationEvent);
    }
}
Also used : ApplicationEvent(org.wso2.carbon.apimgt.impl.notifier.events.ApplicationEvent)

Example 13 with NotifierException

use of org.wso2.carbon.apimgt.impl.notifier.exceptions.NotifierException in project carbon-apimgt by wso2.

the class SolaceSubscriptionsNotifier method updateSubscription.

/**
 * Update subscriptions related to Solace APIs
 *
 * @param event SubscriptionEvent to update Solace API subscriptions
 * @throws NotifierException if error occurs when updating subscription for Solace APIs
 */
private void updateSubscription(SubscriptionEvent event) throws NotifierException {
    String apiUUID = event.getApiUUID();
    String applicationUUID = event.getApplicationUUID();
    try {
        APIProvider apiProvider = APIManagerFactory.getInstance().getAPIProvider(CarbonContext.getThreadLocalCarbonContext().getUsername());
        API api = apiProvider.getAPIbyUUID(apiUUID, apiMgtDAO.getOrganizationByAPIUUID(apiUUID));
        APIConsumer apiConsumer = APIManagerFactory.getInstance().getAPIConsumer(CarbonContext.getThreadLocalCarbonContext().getUsername());
        Application application = apiMgtDAO.getApplicationByUUID(applicationUUID);
        Set<APIKey> consumerKeys = apiConsumer.getApplicationKeysOfApplication(application.getId());
        for (APIKey apiKey : consumerKeys) {
            application.addKey(apiKey);
        }
        // Check whether the subscription is belongs to an API deployed in Solace
        if (SolaceConstants.SOLACE_ENVIRONMENT.equals(api.getGatewayVendor())) {
            ArrayList<String> solaceApiProducts = new ArrayList<>();
            List<Environment> deployedSolaceEnvironments = SolaceNotifierUtils.getDeployedSolaceEnvironmentsFromRevisionDeployments(api);
            String applicationOrganizationName = SolaceNotifierUtils.getSolaceOrganizationName(deployedSolaceEnvironments);
            if (applicationOrganizationName != null) {
                try {
                    boolean apiProductDeployedIntoSolace = SolaceNotifierUtils.checkApiProductAlreadyDeployedIntoSolaceEnvironments(api, deployedSolaceEnvironments);
                    if (apiProductDeployedIntoSolace) {
                        for (Environment environment : deployedSolaceEnvironments) {
                            solaceApiProducts.add(SolaceNotifierUtils.generateApiProductNameForSolaceBroker(api, environment.getName()));
                        }
                        SolaceNotifierUtils.deployApplicationToSolaceBroker(application, solaceApiProducts, applicationOrganizationName);
                    }
                } catch (IOException e) {
                    log.error(e.getMessage());
                }
            } else {
                if (log.isDebugEnabled()) {
                    log.error("Cannot create solace application " + application.getName() + "with API product " + "deployed in different organizations...");
                }
                throw new APIManagementException("Cannot create solace application " + application.getName() + "with API product deployed in different organizations...");
            }
        }
    } catch (APIManagementException e) {
        throw new NotifierException(e.getMessage());
    }
}
Also used : ArrayList(java.util.ArrayList) IOException(java.io.IOException) APIProvider(org.wso2.carbon.apimgt.api.APIProvider) NotifierException(org.wso2.carbon.apimgt.impl.notifier.exceptions.NotifierException) APIKey(org.wso2.carbon.apimgt.api.model.APIKey) APIManagementException(org.wso2.carbon.apimgt.api.APIManagementException) Environment(org.wso2.carbon.apimgt.api.model.Environment) API(org.wso2.carbon.apimgt.api.model.API) APIConsumer(org.wso2.carbon.apimgt.api.APIConsumer) Application(org.wso2.carbon.apimgt.api.model.Application)

Example 14 with NotifierException

use of org.wso2.carbon.apimgt.impl.notifier.exceptions.NotifierException in project carbon-apimgt by wso2.

the class SolaceSubscriptionsNotifier method removeSubscription.

/**
 * Remove subscriptions from Solace APIs
 *
 * @param event SubscriptionEvent to remove Solace API subscriptions
 * @throws NotifierException if error occurs when deleting subscriptions from Solace APIs
 */
private void removeSubscription(SubscriptionEvent event) throws NotifierException {
    String apiUUID = event.getApiUUID();
    String applicationUUID = event.getApplicationUUID();
    try {
        APIProvider apiProvider = APIManagerFactory.getInstance().getAPIProvider(CarbonContext.getThreadLocalCarbonContext().getUsername());
        API api = apiProvider.getAPIbyUUID(apiUUID, apiMgtDAO.getOrganizationByAPIUUID(apiUUID));
        Application application = apiProvider.getApplicationByUUID(applicationUUID);
        // Check whether the subscription is belongs to an API deployed in Solace
        if (SolaceConstants.SOLACE_ENVIRONMENT.equals(api.getGatewayVendor())) {
            SolaceNotifierUtils.unsubscribeAPIProductFromSolaceApplication(api, application);
        }
    } catch (APIManagementException e) {
        throw new NotifierException(e.getMessage());
    }
}
Also used : APIManagementException(org.wso2.carbon.apimgt.api.APIManagementException) API(org.wso2.carbon.apimgt.api.model.API) APIProvider(org.wso2.carbon.apimgt.api.APIProvider) Application(org.wso2.carbon.apimgt.api.model.Application) NotifierException(org.wso2.carbon.apimgt.impl.notifier.exceptions.NotifierException)

Example 15 with NotifierException

use of org.wso2.carbon.apimgt.impl.notifier.exceptions.NotifierException in project carbon-apimgt by wso2.

the class SolaceSubscriptionsNotifier method process.

/**
 * Process gateway notifier events related to Solace API subscriptions
 *
 * @param event related to subscription handling
 * @throws NotifierException if error occurs when casting event
 */
private void process(Event event) throws NotifierException {
    SubscriptionEvent subscriptionEvent;
    subscriptionEvent = (SubscriptionEvent) event;
    if (APIConstants.EventType.SUBSCRIPTIONS_CREATE.name().equals(event.getType())) {
        crateSubscription(subscriptionEvent);
    } else if (APIConstants.EventType.SUBSCRIPTIONS_UPDATE.name().equals(event.getType())) {
        updateSubscription(subscriptionEvent);
    } else if (APIConstants.EventType.SUBSCRIPTIONS_DELETE.name().equals(event.getType())) {
        removeSubscription(subscriptionEvent);
    }
}
Also used : SubscriptionEvent(org.wso2.carbon.apimgt.impl.notifier.events.SubscriptionEvent)

Aggregations

APIManagementException (org.wso2.carbon.apimgt.api.APIManagementException)10 NotifierException (org.wso2.carbon.apimgt.impl.notifier.exceptions.NotifierException)10 Environment (org.wso2.carbon.apimgt.api.model.Environment)9 APIProvider (org.wso2.carbon.apimgt.api.APIProvider)6 API (org.wso2.carbon.apimgt.api.model.API)6 APIRevisionDeployment (org.wso2.carbon.apimgt.api.model.APIRevisionDeployment)5 Application (org.wso2.carbon.apimgt.api.model.Application)5 ArrayList (java.util.ArrayList)4 ExternalGatewayDeployer (org.wso2.carbon.apimgt.impl.deployer.ExternalGatewayDeployer)4 DeployerException (org.wso2.carbon.apimgt.impl.deployer.exceptions.DeployerException)4 List (java.util.List)3 APIConsumer (org.wso2.carbon.apimgt.api.APIConsumer)3 APIKey (org.wso2.carbon.apimgt.api.model.APIKey)3 SubscribedAPI (org.wso2.carbon.apimgt.api.model.SubscribedAPI)3 IOException (java.io.IOException)2 Subscriber (org.wso2.carbon.apimgt.api.model.Subscriber)2 CloseableHttpResponse (org.apache.http.client.methods.CloseableHttpResponse)1 APIEvent (org.wso2.carbon.apimgt.impl.notifier.events.APIEvent)1 ApplicationEvent (org.wso2.carbon.apimgt.impl.notifier.events.ApplicationEvent)1 ApplicationRegistrationEvent (org.wso2.carbon.apimgt.impl.notifier.events.ApplicationRegistrationEvent)1