Search in sources :

Example 1 with PluginNotFoundException

use of io.apiman.manager.api.rest.exceptions.PluginNotFoundException in project apiman by apiman.

the class PluginResourceImpl method getPolicyForm.

/**
 * @see IPluginResource#getPolicyForm(java.lang.Long, java.lang.String)
 */
@Override
public String getPolicyForm(Long pluginId, String policyDefId) throws PluginNotFoundException, PluginResourceNotFoundException, PolicyDefinitionNotFoundException {
    // No permission check is needed
    PluginBean pbean;
    PolicyDefinitionBean pdBean;
    try {
        pbean = storage.getPlugin(pluginId);
        if (pbean == null) {
            throw ExceptionFactory.pluginNotFoundException(pluginId);
        }
        pdBean = storage.getPolicyDefinition(policyDefId);
    } catch (AbstractRestException e) {
        throw e;
    } catch (Exception e) {
        throw new SystemErrorException(e);
    }
    PluginCoordinates coordinates = new PluginCoordinates(pbean.getGroupId(), pbean.getArtifactId(), pbean.getVersion(), pbean.getClassifier(), pbean.getType());
    try {
        if (pdBean == null) {
            throw ExceptionFactory.policyDefNotFoundException(policyDefId);
        }
        if (pdBean.getPluginId() == null || !pdBean.getPluginId().equals(pbean.getId())) {
            throw ExceptionFactory.pluginNotFoundException(pluginId);
        }
        if (pdBean.getFormType() == PolicyFormType.JsonSchema && pdBean.getForm() != null) {
            String formPath = pdBean.getForm();
            if (!formPath.startsWith("/")) {
                // $NON-NLS-1$
                // $NON-NLS-1$
                formPath = "META-INF/apiman/policyDefs/" + formPath;
            } else {
                formPath = formPath.substring(1);
            }
            Plugin plugin = pluginRegistry.loadPlugin(coordinates);
            PluginClassLoader loader = plugin.getLoader();
            InputStream resource = null;
            try {
                resource = loader.getResourceAsStream(formPath);
                if (resource == null) {
                    throw ExceptionFactory.pluginResourceNotFoundException(formPath, coordinates);
                }
                StringWriter writer = new StringWriter();
                IOUtils.copy(resource, writer);
                return writer.toString();
            } finally {
                IOUtils.closeQuietly(resource);
            }
        } else {
            throw ExceptionFactory.pluginResourceNotFoundException(null, coordinates);
        }
    } catch (AbstractRestException e) {
        throw e;
    } catch (Throwable t) {
        throw new SystemErrorException(t);
    }
}
Also used : SystemErrorException(io.apiman.manager.api.rest.exceptions.SystemErrorException) PolicyDefinitionBean(io.apiman.manager.api.beans.policies.PolicyDefinitionBean) StringWriter(java.io.StringWriter) InputStream(java.io.InputStream) PluginCoordinates(io.apiman.common.plugin.PluginCoordinates) PluginBean(io.apiman.manager.api.beans.plugins.PluginBean) NewPluginBean(io.apiman.manager.api.beans.plugins.NewPluginBean) AbstractRestException(io.apiman.manager.api.rest.exceptions.AbstractRestException) AbstractRestException(io.apiman.manager.api.rest.exceptions.AbstractRestException) StorageException(io.apiman.manager.api.core.exceptions.StorageException) PluginNotFoundException(io.apiman.manager.api.rest.exceptions.PluginNotFoundException) PluginResourceNotFoundException(io.apiman.manager.api.rest.exceptions.PluginResourceNotFoundException) InvalidPluginException(io.apiman.manager.api.core.exceptions.InvalidPluginException) SystemErrorException(io.apiman.manager.api.rest.exceptions.SystemErrorException) IOException(java.io.IOException) PluginAlreadyExistsException(io.apiman.manager.api.rest.exceptions.PluginAlreadyExistsException) NotAuthorizedException(io.apiman.manager.api.rest.exceptions.NotAuthorizedException) PolicyDefinitionNotFoundException(io.apiman.manager.api.rest.exceptions.PolicyDefinitionNotFoundException) Plugin(io.apiman.common.plugin.Plugin) PluginClassLoader(io.apiman.common.plugin.PluginClassLoader)

Example 2 with PluginNotFoundException

use of io.apiman.manager.api.rest.exceptions.PluginNotFoundException in project apiman by apiman.

the class PluginResourceImpl method delete.

/**
 * @see IPluginResource#delete(java.lang.Long)
 */
@Override
public void delete(Long pluginId) throws PluginNotFoundException, NotAuthorizedException {
    securityContext.checkAdminPermissions();
    try {
        List<PolicyDefinitionSummaryBean> policyDefs = query.listPluginPolicyDefs(pluginId);
        PluginBean pbean = storage.getPlugin(pluginId);
        if (pbean == null) {
            throw ExceptionFactory.pluginNotFoundException(pluginId);
        }
        pbean.setDeleted(true);
        storage.updatePlugin(pbean);
        // Now delete all the policy definitions for this plugin.
        for (PolicyDefinitionSummaryBean policyDef : policyDefs) {
            PolicyDefinitionBean definition = storage.getPolicyDefinition(policyDef.getId());
            if (definition != null) {
                definition.setDeleted(true);
                storage.updatePolicyDefinition(definition);
            }
        }
        LOGGER.info(// $NON-NLS-1$
        String.format(// $NON-NLS-1$
        "Deleted plugin mvn:%s:%s:%s", // $NON-NLS-1$
        pbean.getGroupId(), // $NON-NLS-1$
        pbean.getArtifactId(), pbean.getVersion()));
    } catch (AbstractRestException e) {
        throw e;
    } catch (Exception e) {
        throw new SystemErrorException(e);
    }
}
Also used : SystemErrorException(io.apiman.manager.api.rest.exceptions.SystemErrorException) PolicyDefinitionBean(io.apiman.manager.api.beans.policies.PolicyDefinitionBean) PluginBean(io.apiman.manager.api.beans.plugins.PluginBean) NewPluginBean(io.apiman.manager.api.beans.plugins.NewPluginBean) PolicyDefinitionSummaryBean(io.apiman.manager.api.beans.summary.PolicyDefinitionSummaryBean) AbstractRestException(io.apiman.manager.api.rest.exceptions.AbstractRestException) AbstractRestException(io.apiman.manager.api.rest.exceptions.AbstractRestException) StorageException(io.apiman.manager.api.core.exceptions.StorageException) PluginNotFoundException(io.apiman.manager.api.rest.exceptions.PluginNotFoundException) PluginResourceNotFoundException(io.apiman.manager.api.rest.exceptions.PluginResourceNotFoundException) InvalidPluginException(io.apiman.manager.api.core.exceptions.InvalidPluginException) SystemErrorException(io.apiman.manager.api.rest.exceptions.SystemErrorException) IOException(java.io.IOException) PluginAlreadyExistsException(io.apiman.manager.api.rest.exceptions.PluginAlreadyExistsException) NotAuthorizedException(io.apiman.manager.api.rest.exceptions.NotAuthorizedException) PolicyDefinitionNotFoundException(io.apiman.manager.api.rest.exceptions.PolicyDefinitionNotFoundException)

Example 3 with PluginNotFoundException

use of io.apiman.manager.api.rest.exceptions.PluginNotFoundException in project apiman by apiman.

the class PluginResourceImpl method create.

/**
 * @see IPluginResource#create(io.apiman.manager.api.beans.plugins.NewPluginBean)
 */
@Override
public PluginBean create(NewPluginBean bean) throws PluginAlreadyExistsException, PluginNotFoundException, NotAuthorizedException {
    securityContext.checkAdminPermissions();
    PluginCoordinates coordinates = new PluginCoordinates(bean.getGroupId(), bean.getArtifactId(), bean.getVersion(), bean.getClassifier(), bean.getType());
    boolean isSnapshot = PluginUtils.isSnapshot(coordinates);
    if (isSnapshot) {
        // $NON-NLS-1$
        LOGGER.debug("Loading a snapshot version of plugin: " + coordinates);
    }
    boolean isUpgrade = isSnapshot || bean.isUpgrade();
    Plugin plugin;
    try {
        plugin = pluginRegistry.loadPlugin(coordinates);
        bean.setName(plugin.getName());
        bean.setDescription(plugin.getDescription());
    } catch (InvalidPluginException e) {
        throw new PluginNotFoundException(coordinates.toString(), e);
    }
    PluginBean pluginBean = new PluginBean();
    pluginBean.setGroupId(bean.getGroupId());
    pluginBean.setArtifactId(bean.getArtifactId());
    pluginBean.setVersion(bean.getVersion());
    pluginBean.setClassifier(bean.getClassifier());
    pluginBean.setType(bean.getType());
    pluginBean.setName(bean.getName());
    pluginBean.setDescription(bean.getDescription());
    pluginBean.setCreatedBy(securityContext.getCurrentUser());
    pluginBean.setCreatedOn(new Date());
    try {
        PluginBean existingPlugin = storage.getPlugin(bean.getGroupId(), bean.getArtifactId());
        boolean hasExistingPlugin = existingPlugin != null && !existingPlugin.isDeleted();
        boolean isUpdatePolicyDefs = false;
        if (hasExistingPlugin && !isUpgrade) {
            throw ExceptionFactory.pluginAlreadyExistsException();
        } else if (hasExistingPlugin && isUpgrade) {
            isUpdatePolicyDefs = true;
            existingPlugin.setName(pluginBean.getName());
            existingPlugin.setDescription(pluginBean.getDescription());
            existingPlugin.setVersion(pluginBean.getVersion());
            existingPlugin.setClassifier(pluginBean.getClassifier());
            existingPlugin.setType(pluginBean.getType());
            pluginBean.setId(existingPlugin.getId());
            storage.updatePlugin(existingPlugin);
        } else if (!hasExistingPlugin && existingPlugin != null) {
            isUpdatePolicyDefs = true;
            existingPlugin.setName(pluginBean.getName());
            existingPlugin.setDescription(pluginBean.getDescription());
            existingPlugin.setVersion(pluginBean.getVersion());
            existingPlugin.setClassifier(pluginBean.getClassifier());
            existingPlugin.setType(pluginBean.getType());
            existingPlugin.setCreatedOn(new Date());
            existingPlugin.setCreatedBy(securityContext.getCurrentUser());
            existingPlugin.setDeleted(false);
            pluginBean.setId(existingPlugin.getId());
            storage.updatePlugin(existingPlugin);
        } else {
            if (bean.isUpgrade()) {
                throw ExceptionFactory.pluginNotFoundException(0L);
            }
            storage.createPlugin(pluginBean);
        }
        // Process any contributed policy definitions.
        List<URL> policyDefs = plugin.getPolicyDefinitions();
        int createdPolicyDefCounter = 0;
        int updatedPolicyDefCounter = 0;
        for (URL url : policyDefs) {
            PolicyDefinitionBean policyDef = (PolicyDefinitionBean) MAPPER.reader(PolicyDefinitionBean.class).readValue(url);
            if (policyDef.getId() == null || policyDef.getId().trim().isEmpty()) {
                // $NON-NLS-1$
                throw ExceptionFactory.policyDefInvalidException(Messages.i18n.format("PluginResourceImpl.MissingPolicyDefId", policyDef.getName()));
            }
            policyDef.setPluginId(pluginBean.getId());
            if (policyDef.getId() == null) {
                policyDef.setId(BeanUtils.idFromName(policyDef.getName()));
            } else {
                policyDef.setId(BeanUtils.idFromName(policyDef.getId()));
            }
            if (policyDef.getFormType() == null) {
                policyDef.setFormType(PolicyFormType.Default);
            }
            PolicyDefinitionBean existingPolicyDef = storage.getPolicyDefinition(policyDef.getId());
            if (existingPolicyDef == null) {
                storage.createPolicyDefinition(policyDef);
                createdPolicyDefCounter++;
            } else if (isUpdatePolicyDefs) {
                existingPolicyDef.setName(policyDef.getName());
                existingPolicyDef.setDescription(policyDef.getDescription());
                existingPolicyDef.setIcon(policyDef.getIcon());
                existingPolicyDef.getTemplates().clear();
                existingPolicyDef.getTemplates().addAll(policyDef.getTemplates());
                existingPolicyDef.setFormType(policyDef.getFormType());
                existingPolicyDef.setForm(policyDef.getForm());
                existingPolicyDef.setDeleted(false);
                existingPolicyDef.setPolicyImpl(policyDef.getPolicyImpl());
                storage.updatePolicyDefinition(existingPolicyDef);
                updatedPolicyDefCounter++;
            } else {
                // $NON-NLS-1$
                throw ExceptionFactory.policyDefInvalidException(Messages.i18n.format("PluginResourceImpl.DuplicatePolicyDef", policyDef.getId()));
            }
        }
        LOGGER.info(// $NON-NLS-1$
        String.format(// $NON-NLS-1$
        "Created plugin mvn:%s:%s:%s", // $NON-NLS-1$
        pluginBean.getGroupId(), // $NON-NLS-1$
        pluginBean.getArtifactId(), pluginBean.getVersion()));
        // $NON-NLS-1$
        LOGGER.info(String.format("\tCreated %s policy definitions from plugin.", String.valueOf(createdPolicyDefCounter)));
        if (isUpdatePolicyDefs) {
            // $NON-NLS-1$
            LOGGER.info(String.format("\tUpdated %s policy definitions from plugin.", String.valueOf(updatedPolicyDefCounter)));
        }
    } catch (AbstractRestException e) {
        throw e;
    } catch (Exception e) {
        throw new SystemErrorException(e);
    }
    return pluginBean;
}
Also used : SystemErrorException(io.apiman.manager.api.rest.exceptions.SystemErrorException) PluginNotFoundException(io.apiman.manager.api.rest.exceptions.PluginNotFoundException) Date(java.util.Date) URL(java.net.URL) AbstractRestException(io.apiman.manager.api.rest.exceptions.AbstractRestException) StorageException(io.apiman.manager.api.core.exceptions.StorageException) PluginNotFoundException(io.apiman.manager.api.rest.exceptions.PluginNotFoundException) PluginResourceNotFoundException(io.apiman.manager.api.rest.exceptions.PluginResourceNotFoundException) InvalidPluginException(io.apiman.manager.api.core.exceptions.InvalidPluginException) SystemErrorException(io.apiman.manager.api.rest.exceptions.SystemErrorException) IOException(java.io.IOException) PluginAlreadyExistsException(io.apiman.manager.api.rest.exceptions.PluginAlreadyExistsException) NotAuthorizedException(io.apiman.manager.api.rest.exceptions.NotAuthorizedException) PolicyDefinitionNotFoundException(io.apiman.manager.api.rest.exceptions.PolicyDefinitionNotFoundException) PolicyDefinitionBean(io.apiman.manager.api.beans.policies.PolicyDefinitionBean) InvalidPluginException(io.apiman.manager.api.core.exceptions.InvalidPluginException) PluginCoordinates(io.apiman.common.plugin.PluginCoordinates) PluginBean(io.apiman.manager.api.beans.plugins.PluginBean) NewPluginBean(io.apiman.manager.api.beans.plugins.NewPluginBean) AbstractRestException(io.apiman.manager.api.rest.exceptions.AbstractRestException) Plugin(io.apiman.common.plugin.Plugin)

Example 4 with PluginNotFoundException

use of io.apiman.manager.api.rest.exceptions.PluginNotFoundException in project apiman by apiman.

the class PluginResourceImpl method get.

/**
 * @see IPluginResource#get(java.lang.Long)
 */
@Override
public PluginBean get(Long pluginId) throws PluginNotFoundException, NotAuthorizedException {
    securityContext.checkAdminPermissions();
    try {
        storage.beginTx();
        PluginBean bean = storage.getPlugin(pluginId);
        if (bean == null) {
            throw ExceptionFactory.pluginNotFoundException(pluginId);
        }
        storage.commitTx();
        return bean;
    } catch (AbstractRestException e) {
        storage.rollbackTx();
        throw e;
    } catch (Exception e) {
        storage.rollbackTx();
        throw new SystemErrorException(e);
    }
}
Also used : SystemErrorException(io.apiman.manager.api.rest.exceptions.SystemErrorException) PluginBean(io.apiman.manager.api.beans.plugins.PluginBean) NewPluginBean(io.apiman.manager.api.beans.plugins.NewPluginBean) AbstractRestException(io.apiman.manager.api.rest.exceptions.AbstractRestException) AbstractRestException(io.apiman.manager.api.rest.exceptions.AbstractRestException) StorageException(io.apiman.manager.api.core.exceptions.StorageException) PluginNotFoundException(io.apiman.manager.api.rest.exceptions.PluginNotFoundException) PluginResourceNotFoundException(io.apiman.manager.api.rest.exceptions.PluginResourceNotFoundException) InvalidPluginException(io.apiman.manager.api.core.exceptions.InvalidPluginException) SystemErrorException(io.apiman.manager.api.rest.exceptions.SystemErrorException) IOException(java.io.IOException) PluginAlreadyExistsException(io.apiman.manager.api.rest.exceptions.PluginAlreadyExistsException) NotAuthorizedException(io.apiman.manager.api.rest.exceptions.NotAuthorizedException) PolicyDefinitionNotFoundException(io.apiman.manager.api.rest.exceptions.PolicyDefinitionNotFoundException)

Aggregations

NewPluginBean (io.apiman.manager.api.beans.plugins.NewPluginBean)4 PluginBean (io.apiman.manager.api.beans.plugins.PluginBean)4 InvalidPluginException (io.apiman.manager.api.core.exceptions.InvalidPluginException)4 StorageException (io.apiman.manager.api.core.exceptions.StorageException)4 AbstractRestException (io.apiman.manager.api.rest.exceptions.AbstractRestException)4 NotAuthorizedException (io.apiman.manager.api.rest.exceptions.NotAuthorizedException)4 PluginAlreadyExistsException (io.apiman.manager.api.rest.exceptions.PluginAlreadyExistsException)4 PluginNotFoundException (io.apiman.manager.api.rest.exceptions.PluginNotFoundException)4 PluginResourceNotFoundException (io.apiman.manager.api.rest.exceptions.PluginResourceNotFoundException)4 PolicyDefinitionNotFoundException (io.apiman.manager.api.rest.exceptions.PolicyDefinitionNotFoundException)4 SystemErrorException (io.apiman.manager.api.rest.exceptions.SystemErrorException)4 IOException (java.io.IOException)4 PolicyDefinitionBean (io.apiman.manager.api.beans.policies.PolicyDefinitionBean)3 Plugin (io.apiman.common.plugin.Plugin)2 PluginCoordinates (io.apiman.common.plugin.PluginCoordinates)2 PluginClassLoader (io.apiman.common.plugin.PluginClassLoader)1 PolicyDefinitionSummaryBean (io.apiman.manager.api.beans.summary.PolicyDefinitionSummaryBean)1 InputStream (java.io.InputStream)1 StringWriter (java.io.StringWriter)1 URL (java.net.URL)1