use of io.apiman.manager.api.beans.clients.ClientVersionBean in project apiman by apiman.
the class OrganizationResourceImpl method getApiRegistry.
/**
* Gets the API registry.
* @param organizationId
* @param clientId
* @param version
* @throws ClientVersionNotFoundException
*/
private ApiRegistryBean getApiRegistry(String organizationId, String clientId, String version) throws ClientVersionNotFoundException {
// Try to get the client first - will throw a ClientVersionNotFoundException if not found.
ClientVersionBean clientVersion = getClientVersionInternal(organizationId, clientId, version);
Map<String, IGatewayLink> gatewayLinks = new HashMap<>();
Map<String, GatewayBean> gateways = new HashMap<>();
boolean txStarted = false;
try {
ApiRegistryBean apiRegistry = query.getApiRegistry(organizationId, clientId, version);
apiRegistry.setApiKey(clientVersion.getApikey());
List<ApiEntryBean> apis = apiRegistry.getApis();
storage.beginTx();
txStarted = true;
for (ApiEntryBean api : apis) {
String gatewayId = api.getGatewayId();
// Don't return the gateway id.
api.setGatewayId(null);
GatewayBean gateway = gateways.get(gatewayId);
if (gateway == null) {
gateway = storage.getGateway(gatewayId);
gateways.put(gatewayId, gateway);
}
IGatewayLink link = gatewayLinks.get(gatewayId);
if (link == null) {
link = gatewayLinkFactory.create(gateway);
gatewayLinks.put(gatewayId, link);
}
ApiEndpoint se = link.getApiEndpoint(api.getApiOrgId(), api.getApiId(), api.getApiVersion());
String apiEndpoint = se.getEndpoint();
api.setHttpEndpoint(apiEndpoint);
}
return apiRegistry;
} catch (StorageException | GatewayAuthenticationException e) {
throw new SystemErrorException(e);
} finally {
if (txStarted) {
storage.rollbackTx();
}
for (IGatewayLink link : gatewayLinks.values()) {
link.close();
}
}
}
use of io.apiman.manager.api.beans.clients.ClientVersionBean in project apiman by apiman.
the class EsMarshalling method unmarshallClientVersion.
/**
* Unmarshals the given map source into a bean.
* @param source the source
* @return the client version
*/
public static ClientVersionBean unmarshallClientVersion(Map<String, Object> source) {
if (source == null) {
return null;
}
ClientVersionBean bean = new ClientVersionBean();
bean.setVersion(asString(source.get("version")));
bean.setApikey(asString(source.get("apikey")));
bean.setStatus(asEnum(source.get("status"), ClientStatus.class));
bean.setCreatedBy(asString(source.get("createdBy")));
bean.setCreatedOn(asDate(source.get("createdOn")));
bean.setModifiedBy(asString(source.get("modifiedBy")));
bean.setModifiedOn(asDate(source.get("modifiedOn")));
bean.setPublishedOn(asDate(source.get("publishedOn")));
bean.setRetiredOn(asDate(source.get("retiredOn")));
postMarshall(bean);
return bean;
}
use of io.apiman.manager.api.beans.clients.ClientVersionBean in project apiman by apiman.
the class OrganizationResourceImpl method deleteClient.
/**
* @see IOrganizationResource#deleteClient(java.lang.String, java.lang.String)
*/
@Override
public void deleteClient(@PathParam("organizationId") String organizationId, @PathParam("clientId") String clientId) throws OrganizationNotFoundException, NotAuthorizedException, EntityStillActiveException {
securityContext.checkPermissions(PermissionType.clientAdmin, organizationId);
try {
storage.beginTx();
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);
storage.commitTx();
// $NON-NLS-1$
log.debug("Deleted ClientApp: " + client.getName());
} catch (AbstractRestException e) {
storage.rollbackTx();
throw e;
} catch (Exception e) {
storage.rollbackTx();
throw new SystemErrorException(e);
}
}
use of io.apiman.manager.api.beans.clients.ClientVersionBean in project apiman by apiman.
the class OrganizationResourceImpl method getClientApiKey.
/**
* @see IOrganizationResource#getClientApiKey(java.lang.String, java.lang.String, java.lang.String)
*/
@Override
public ApiKeyBean getClientApiKey(String organizationId, String clientId, String version) throws ClientNotFoundException, NotAuthorizedException, InvalidVersionException {
securityContext.checkPermissions(PermissionType.clientView, organizationId);
ClientVersionBean client = getClientVersionInternal(organizationId, clientId, version);
ApiKeyBean apiKeyBean = new ApiKeyBean();
apiKeyBean.setApiKey(client.getApikey());
return apiKeyBean;
}
use of io.apiman.manager.api.beans.clients.ClientVersionBean in project apiman by apiman.
the class OrganizationResourceImpl method deleteContract.
/**
* @see IOrganizationResource#deleteContract(java.lang.String, java.lang.String, java.lang.String, java.lang.Long)
*/
@Override
public void deleteContract(String organizationId, String clientId, String version, Long contractId) throws ClientNotFoundException, ContractNotFoundException, NotAuthorizedException, InvalidClientStatusException {
securityContext.checkPermissions(PermissionType.clientEdit, organizationId);
try {
storage.beginTx();
ContractBean contract = storage.getContract(contractId);
if (contract == null) {
throw ExceptionFactory.contractNotFoundException(contractId);
}
if (!contract.getClient().getClient().getOrganization().getId().equals(organizationId)) {
throw ExceptionFactory.contractNotFoundException(contractId);
}
if (!contract.getClient().getClient().getId().equals(clientId)) {
throw ExceptionFactory.contractNotFoundException(contractId);
}
if (!contract.getClient().getVersion().equals(version)) {
throw ExceptionFactory.contractNotFoundException(contractId);
}
if (contract.getClient().getStatus() == ClientStatus.Retired) {
throw ExceptionFactory.invalidClientStatusException();
}
storage.deleteContract(contract);
storage.createAuditEntry(AuditUtils.contractBrokenFromClient(contract, securityContext));
storage.createAuditEntry(AuditUtils.contractBrokenToApi(contract, securityContext));
// Update the version with new meta-data (e.g. modified-by)
ClientVersionBean clientV = getClientVersionFromStorage(organizationId, clientId, version);
clientV.setModifiedBy(securityContext.getCurrentUser());
clientV.setModifiedOn(new Date());
storage.updateClientVersion(clientV);
storage.commitTx();
// $NON-NLS-1$
log.debug(String.format("Deleted contract: %s", contract));
} catch (AbstractRestException e) {
storage.rollbackTx();
throw e;
} catch (Exception e) {
storage.rollbackTx();
throw new SystemErrorException(e);
}
}
Aggregations