Search in sources :

Example 11 with ClientBean

use of io.apiman.manager.api.beans.clients.ClientBean in project apiman by apiman.

the class ClientAppService method deleteClient.

public void deleteClient(String organizationId, String clientId) throws OrganizationNotFoundException, NotAuthorizedException, EntityStillActiveException {
    tryAction(() -> {
        ClientBean client = getClientFromStorage(organizationId, clientId);
        Iterator<ClientVersionBean> clientVersions = storage.getAllClientVersions(organizationId, clientId);
        Iterable<ClientVersionBean> iterable = () -> clientVersions;
        List<ClientVersionBean> registeredElems = StreamSupport.stream(iterable.spliterator(), false).filter(clientVersion -> clientVersion.getStatus() == ClientStatus.Registered).limit(5).collect(toList());
        if (!registeredElems.isEmpty()) {
            throw ExceptionFactory.entityStillActiveExceptionClientVersions(registeredElems);
        }
        storage.deleteClient(client);
        if (client.getImage() != null) {
            blobstore.remove(client.getImage());
        }
        // $NON-NLS-1$
        LOGGER.debug("Deleted ClientApp: {0}", client.getName());
    });
}
Also used : NewClientVersionBean(io.apiman.manager.api.beans.clients.NewClientVersionBean) ClientVersionBean(io.apiman.manager.api.beans.clients.ClientVersionBean) UpdateClientBean(io.apiman.manager.api.beans.clients.UpdateClientBean) ClientBean(io.apiman.manager.api.beans.clients.ClientBean) NewClientBean(io.apiman.manager.api.beans.clients.NewClientBean)

Example 12 with ClientBean

use of io.apiman.manager.api.beans.clients.ClientBean in project apiman by apiman.

the class ClientAppService method fireClientStatusChangeEvent.

// TODO: make private at some point
public void fireClientStatusChangeEvent(ClientVersionBean cvb, ClientStatus oldStatus) {
    if (oldStatus == cvb.getStatus()) {
        LOGGER.debug("Old status and new status same {0} => {1}", cvb.getId(), cvb.getStatus());
        return;
    }
    ClientBean cb = cvb.getClient();
    ApimanEventHeaders headers = ApimanEventHeaders.builder().setId(UUID.randomUUID().toString().substring(8)).setSource(URI.create("/apiman/events/clients")).setSubject("status.change").build();
    var event = ClientVersionStatusEvent.builder().setHeaders(headers).setClientOrgId(cb.getOrganization().getId()).setClientId(cvb.getClient().getId()).setClientVersion(cvb.getVersion()).setPreviousStatus(oldStatus).setNewStatus(cvb.getStatus()).build();
    eventService.fireEvent(event);
    LOGGER.debug("Sending client status change event: {0}");
}
Also used : UpdateClientBean(io.apiman.manager.api.beans.clients.UpdateClientBean) ClientBean(io.apiman.manager.api.beans.clients.ClientBean) NewClientBean(io.apiman.manager.api.beans.clients.NewClientBean) ApimanEventHeaders(io.apiman.manager.api.beans.events.ApimanEventHeaders)

Example 13 with ClientBean

use of io.apiman.manager.api.beans.clients.ClientBean in project apiman by apiman.

the class JpaStorage method getContracts.

/**
 * {@inheritDoc}
 */
@Override
public List<ContractSummaryBean> getContracts(String organizationId, String apiId, String version, int page, int pageSize) throws StorageException {
    int start = (page - 1) * pageSize;
    try {
        EntityManager entityManager = getActiveEntityManager();
        String jpql = "SELECT c from ContractBean c " + "  JOIN c.api apiv " + "  JOIN apiv.api api " + "  JOIN c.client clientv " + "  JOIN clientv.client client " + "  JOIN api.organization sorg" + "  JOIN client.organization aorg" + " WHERE api.id = :apiId " + "   AND sorg.id = :orgId " + "   AND apiv.version = :version " + " ORDER BY sorg.id, api.id ASC";
        Query query = entityManager.createQuery(jpql);
        query.setParameter("orgId", organizationId);
        query.setParameter("apiId", apiId);
        query.setParameter("version", version);
        query.setFirstResult(start);
        query.setMaxResults(pageSize);
        List<ContractBean> contracts = query.getResultList();
        List<ContractSummaryBean> rval = new ArrayList<>(contracts.size());
        for (ContractBean contractBean : contracts) {
            ClientBean client = contractBean.getClient().getClient();
            ApiBean api = contractBean.getApi().getApi();
            PlanBean plan = contractBean.getPlan().getPlan();
            OrganizationBean clientOrg = entityManager.find(OrganizationBean.class, client.getOrganization().getId());
            OrganizationBean apiOrg = entityManager.find(OrganizationBean.class, api.getOrganization().getId());
            ContractSummaryBean csb = new ContractSummaryBean();
            csb.setStatus(contractBean.getStatus());
            csb.setClientId(client.getId());
            csb.setClientOrganizationId(client.getOrganization().getId());
            csb.setClientOrganizationName(clientOrg.getName());
            csb.setClientName(client.getName());
            csb.setClientVersion(contractBean.getClient().getVersion());
            csb.setContractId(contractBean.getId());
            csb.setCreatedOn(contractBean.getCreatedOn());
            csb.setPlanId(plan.getId());
            csb.setPlanName(plan.getName());
            csb.setPlanVersion(contractBean.getPlan().getVersion());
            csb.setApiDescription(api.getDescription());
            csb.setApiId(api.getId());
            csb.setApiName(api.getName());
            csb.setApiOrganizationId(apiOrg.getId());
            csb.setApiOrganizationName(apiOrg.getName());
            csb.setApiVersion(contractBean.getApi().getVersion());
            rval.add(csb);
        }
        return rval;
    } catch (Throwable t) {
        LOGGER.error(t.getMessage(), t);
        throw new StorageException(t);
    }
}
Also used : Query(javax.persistence.Query) TypedQuery(javax.persistence.TypedQuery) IStorageQuery(io.apiman.manager.api.core.IStorageQuery) ClientBean(io.apiman.manager.api.beans.clients.ClientBean) ArrayList(java.util.ArrayList) ApiPlanBean(io.apiman.manager.api.beans.apis.ApiPlanBean) PlanBean(io.apiman.manager.api.beans.plans.PlanBean) PermissionConstraint(io.apiman.manager.api.beans.idm.PermissionConstraint) ContractBean(io.apiman.manager.api.beans.contracts.ContractBean) ApiBean(io.apiman.manager.api.beans.apis.ApiBean) EntityManager(javax.persistence.EntityManager) ContractSummaryBean(io.apiman.manager.api.beans.summary.ContractSummaryBean) OrganizationBean(io.apiman.manager.api.beans.orgs.OrganizationBean) StorageException(io.apiman.manager.api.core.exceptions.StorageException)

Example 14 with ClientBean

use of io.apiman.manager.api.beans.clients.ClientBean in project apiman by apiman.

the class JpaStorage method findClients.

/**
 * {@inheritDoc}
 */
@Override
public SearchResultsBean<ClientSummaryBean> findClients(SearchCriteriaBean criteria, PermissionConstraint permissionConstraint) throws StorageException {
    // If unconstrained, do nothing.
    Consumer<CriteriaBuilder<ClientBean>> constraintFunc = builder -> {
    };
    if (permissionConstraint.isConstrained()) {
        constraintFunc = (builder) -> builder.where("organization.id").in(permissionConstraint.getPermittedOrgs());
    }
    SearchResultsBean<ClientBean> result = find(criteria, List.of(new OrderByBean(true, ClientBean_.ID), new OrderByBean(true, "organization.id")), constraintFunc, ClientBean.class, "client", true);
    SearchResultsBean<ClientSummaryBean> rval = new SearchResultsBean<>();
    rval.setTotalSize(result.getTotalSize());
    List<ClientBean> beans = result.getBeans();
    rval.setBeans(new ArrayList<>(beans.size()));
    for (ClientBean client : beans) {
        ClientSummaryBean summary = new ClientSummaryBean();
        OrganizationBean organization = client.getOrganization();
        summary.setId(client.getId());
        summary.setName(client.getName());
        summary.setDescription(client.getDescription());
        summary.setImage(client.getImage());
        // TODO find the number of contracts - probably need native SQL for that
        summary.setNumContracts(0);
        summary.setOrganizationId(client.getOrganization().getId());
        summary.setOrganizationName(organization.getName());
        rval.getBeans().add(summary);
    }
    return rval;
}
Also used : CriteriaBuilder(com.blazebit.persistence.CriteriaBuilder) DeleteCriteriaBuilder(com.blazebit.persistence.DeleteCriteriaBuilder) PermissionConstraint(io.apiman.manager.api.beans.idm.PermissionConstraint) RoleBean_(io.apiman.manager.api.beans.idm.RoleBean_) ApiGatewayBean(io.apiman.manager.api.beans.apis.ApiGatewayBean) ApiPlanSummaryBean(io.apiman.manager.api.beans.summary.ApiPlanSummaryBean) StorageException(io.apiman.manager.api.core.exceptions.StorageException) ApiVersionBean(io.apiman.manager.api.beans.apis.ApiVersionBean) NoResultException(javax.persistence.NoResultException) IDataEncrypter(io.apiman.common.util.crypt.IDataEncrypter) ApiDefinitionBean(io.apiman.manager.api.beans.apis.ApiDefinitionBean) UserBean(io.apiman.manager.api.beans.idm.UserBean) SearchCriteriaFilterOperator(io.apiman.manager.api.beans.search.SearchCriteriaFilterOperator) ApiBean(io.apiman.manager.api.beans.apis.ApiBean) DeveloperBean(io.apiman.manager.api.beans.developers.DeveloperBean) ByteArrayInputStream(java.io.ByteArrayInputStream) Locale(java.util.Locale) CriteriaBuilder(com.blazebit.persistence.CriteriaBuilder) PagingBean(io.apiman.manager.api.beans.search.PagingBean) Map(java.util.Map) DiscoverabilityEntity(io.apiman.manager.api.beans.idm.DiscoverabilityEntity) ApimanLoggerFactory(io.apiman.common.logging.ApimanLoggerFactory) OrganizationBean(io.apiman.manager.api.beans.orgs.OrganizationBean) GatewayType(io.apiman.manager.api.beans.gateways.GatewayType) ApiEntryBean(io.apiman.manager.api.beans.summary.ApiEntryBean) Transactional(javax.transaction.Transactional) Set(java.util.Set) UserBean_(io.apiman.manager.api.beans.idm.UserBean_) GatewaySummaryBean(io.apiman.manager.api.beans.summary.GatewaySummaryBean) PermissionBean(io.apiman.manager.api.beans.idm.PermissionBean) PluginSummaryBean(io.apiman.manager.api.beans.summary.PluginSummaryBean) Collectors(java.util.stream.Collectors) ApiVersionSummaryBean(io.apiman.manager.api.beans.summary.ApiVersionSummaryBean) ApiSummaryBean(io.apiman.manager.api.beans.summary.ApiSummaryBean) ClientSummaryBean(io.apiman.manager.api.beans.summary.ClientSummaryBean) IOUtils(org.apache.commons.io.IOUtils) List(java.util.List) Query(javax.persistence.Query) IApimanLogger(io.apiman.common.logging.IApimanLogger) ApiPlanBean(io.apiman.manager.api.beans.apis.ApiPlanBean) PolicySummaryBean(io.apiman.manager.api.beans.summary.PolicySummaryBean) OrganizationBean_(io.apiman.manager.api.beans.orgs.OrganizationBean_) AuditEntryBean(io.apiman.manager.api.beans.audit.AuditEntryBean) RoleMembershipBean(io.apiman.manager.api.beans.idm.RoleMembershipBean) PostConstruct(javax.annotation.PostConstruct) SearchCriteriaBean(io.apiman.manager.api.beans.search.SearchCriteriaBean) ApplicationScoped(javax.enterprise.context.ApplicationScoped) ClientBean_(io.apiman.manager.api.beans.clients.ClientBean_) PermissionType(io.apiman.manager.api.beans.idm.PermissionType) OrganizationSummaryBean(io.apiman.manager.api.beans.summary.OrganizationSummaryBean) PlanVersionSummaryBean(io.apiman.manager.api.beans.summary.PlanVersionSummaryBean) DiscoverabilityLevel(io.apiman.manager.api.beans.idm.DiscoverabilityLevel) ByteArrayOutputStream(java.io.ByteArrayOutputStream) PluginBean(io.apiman.manager.api.beans.plugins.PluginBean) Alternative(javax.enterprise.inject.Alternative) PlanBean(io.apiman.manager.api.beans.plans.PlanBean) PlanSummaryBean(io.apiman.manager.api.beans.summary.PlanSummaryBean) ApiStatus(io.apiman.manager.api.beans.apis.ApiStatus) PolicyBean(io.apiman.manager.api.beans.policies.PolicyBean) TypedQuery(javax.persistence.TypedQuery) AuditEntryBean_(io.apiman.manager.api.beans.audit.AuditEntryBean_) ArrayList(java.util.ArrayList) AuditEntityType(io.apiman.manager.api.beans.audit.AuditEntityType) ContractBean(io.apiman.manager.api.beans.contracts.ContractBean) HashSet(java.util.HashSet) Inject(javax.inject.Inject) ClientBean(io.apiman.manager.api.beans.clients.ClientBean) DataEncryptionContext(io.apiman.common.util.crypt.DataEncryptionContext) PlanBean_(io.apiman.manager.api.beans.plans.PlanBean_) DeleteCriteriaBuilder(com.blazebit.persistence.DeleteCriteriaBuilder) RoleBean(io.apiman.manager.api.beans.idm.RoleBean) IStorageQuery(io.apiman.manager.api.core.IStorageQuery) QualifiedType(org.jdbi.v3.core.qualifier.QualifiedType) PolicyTemplateUtil(io.apiman.manager.api.core.util.PolicyTemplateUtil) OrderByBean(io.apiman.manager.api.beans.search.OrderByBean) PlanVersionBean(io.apiman.manager.api.beans.plans.PlanVersionBean) MetadataBean(io.apiman.manager.api.beans.system.MetadataBean) ClientVersionSummaryBean(io.apiman.manager.api.beans.summary.ClientVersionSummaryBean) Iterator(java.util.Iterator) GatewayBean(io.apiman.manager.api.beans.gateways.GatewayBean) ClientStatus(io.apiman.manager.api.beans.clients.ClientStatus) SearchResultsBean(io.apiman.manager.api.beans.search.SearchResultsBean) ContractSummaryBean(io.apiman.manager.api.beans.summary.ContractSummaryBean) ApiMapper(io.apiman.manager.api.beans.summary.mappers.ApiMapper) PolicyDefinitionBean(io.apiman.manager.api.beans.policies.PolicyDefinitionBean) IStorage(io.apiman.manager.api.core.IStorage) ClientVersionBean(io.apiman.manager.api.beans.clients.ClientVersionBean) IOException(java.io.IOException) EntityManager(javax.persistence.EntityManager) ApiRegistryBean(io.apiman.manager.api.beans.summary.ApiRegistryBean) PolicyBean_(io.apiman.manager.api.beans.policies.PolicyBean_) Consumer(java.util.function.Consumer) DownloadBean(io.apiman.manager.api.beans.download.DownloadBean) PolicyType(io.apiman.manager.api.beans.policies.PolicyType) PolicyDefinitionSummaryBean(io.apiman.manager.api.beans.summary.PolicyDefinitionSummaryBean) PlanStatus(io.apiman.manager.api.beans.plans.PlanStatus) Collections(java.util.Collections) InputStream(java.io.InputStream) ClientBean(io.apiman.manager.api.beans.clients.ClientBean) SearchResultsBean(io.apiman.manager.api.beans.search.SearchResultsBean) ClientSummaryBean(io.apiman.manager.api.beans.summary.ClientSummaryBean) OrganizationBean(io.apiman.manager.api.beans.orgs.OrganizationBean) OrderByBean(io.apiman.manager.api.beans.search.OrderByBean)

Example 15 with ClientBean

use of io.apiman.manager.api.beans.clients.ClientBean in project apiman by apiman.

the class StorageImportDispatcher method clientContract.

/**
 * @see io.apiman.manager.api.exportimport.read.IImportReaderDispatcher#clientContract(io.apiman.manager.api.beans.contracts.ContractBean)
 */
@Override
public void clientContract(ContractBean contract) {
    ClientVersionBean clientVersion = new ClientVersionBean();
    clientVersion.setClient(new ClientBean());
    clientVersion.getClient().setOrganization(new OrganizationBean());
    clientVersion.getClient().setId(currentClient.getId());
    clientVersion.getClient().getOrganization().setId(currentOrg.getId());
    clientVersion.setVersion(currentClientVersion.getVersion());
    contract.setClient(clientVersion);
    contracts.add(contract);
}
Also used : ClientVersionBean(io.apiman.manager.api.beans.clients.ClientVersionBean) ClientBean(io.apiman.manager.api.beans.clients.ClientBean) OrganizationBean(io.apiman.manager.api.beans.orgs.OrganizationBean)

Aggregations

ClientBean (io.apiman.manager.api.beans.clients.ClientBean)27 NewClientBean (io.apiman.manager.api.beans.clients.NewClientBean)11 UpdateClientBean (io.apiman.manager.api.beans.clients.UpdateClientBean)11 OrganizationBean (io.apiman.manager.api.beans.orgs.OrganizationBean)10 StorageException (io.apiman.manager.api.core.exceptions.StorageException)10 ClientVersionBean (io.apiman.manager.api.beans.clients.ClientVersionBean)7 NewClientVersionBean (io.apiman.manager.api.beans.clients.NewClientVersionBean)6 AbstractRestException (io.apiman.manager.api.rest.exceptions.AbstractRestException)6 ClientAlreadyExistsException (io.apiman.manager.api.rest.exceptions.ClientAlreadyExistsException)6 ClientNotFoundException (io.apiman.manager.api.rest.exceptions.ClientNotFoundException)6 ClientVersionAlreadyExistsException (io.apiman.manager.api.rest.exceptions.ClientVersionAlreadyExistsException)6 ClientVersionNotFoundException (io.apiman.manager.api.rest.exceptions.ClientVersionNotFoundException)6 EntityStillActiveException (io.apiman.manager.api.rest.exceptions.EntityStillActiveException)6 InvalidClientStatusException (io.apiman.manager.api.rest.exceptions.InvalidClientStatusException)6 InvalidNameException (io.apiman.manager.api.rest.exceptions.InvalidNameException)6 InvalidVersionException (io.apiman.manager.api.rest.exceptions.InvalidVersionException)6 NotAuthorizedException (io.apiman.manager.api.rest.exceptions.NotAuthorizedException)6 OrganizationNotFoundException (io.apiman.manager.api.rest.exceptions.OrganizationNotFoundException)6 IOException (java.io.IOException)6 ResponseStatsPerClientBean (io.apiman.manager.api.beans.metrics.ResponseStatsPerClientBean)5