use of io.apiman.manager.api.beans.plans.NewPlanVersionBean in project apiman by apiman.
the class OrganizationResourceImpl method createPlan.
/**
* @see IOrganizationResource#createPlan(java.lang.String,
* io.apiman.manager.api.beans.plans.NewPlanBean)
*/
@Override
public PlanBean createPlan(String organizationId, NewPlanBean bean) throws OrganizationNotFoundException, PlanAlreadyExistsException, NotAuthorizedException, InvalidNameException {
securityContext.checkPermissions(PermissionType.planEdit, organizationId);
FieldValidator.validateName(bean.getName());
PlanBean newPlan = new PlanBean();
newPlan.setName(bean.getName());
newPlan.setDescription(bean.getDescription());
newPlan.setId(BeanUtils.idFromName(bean.getName()));
newPlan.setCreatedOn(new Date());
newPlan.setCreatedBy(securityContext.getCurrentUser());
try {
// Store/persist the new plan
storage.beginTx();
OrganizationBean orgBean = getOrganizationFromStorage(organizationId);
if (storage.getPlan(orgBean.getId(), newPlan.getId()) != null) {
throw ExceptionFactory.planAlreadyExistsException(newPlan.getName());
}
newPlan.setOrganization(orgBean);
storage.createPlan(newPlan);
storage.createAuditEntry(AuditUtils.planCreated(newPlan, securityContext));
if (bean.getInitialVersion() != null) {
NewPlanVersionBean newPlanVersion = new NewPlanVersionBean();
newPlanVersion.setVersion(bean.getInitialVersion());
createPlanVersionInternal(newPlanVersion, newPlan);
}
storage.commitTx();
// $NON-NLS-1$
log.debug(String.format("Created plan: %s", newPlan));
return newPlan;
} catch (AbstractRestException e) {
storage.rollbackTx();
throw e;
} catch (Exception e) {
storage.rollbackTx();
throw new SystemErrorException(e);
}
}
use of io.apiman.manager.api.beans.plans.NewPlanVersionBean in project apiman by apiman.
the class OrganizationResourceImpl method createPlanVersionInternal.
/**
* Creates a plan version.
* @param bean
* @param plan
* @throws StorageException
*/
private PlanVersionBean createPlanVersionInternal(NewPlanVersionBean bean, PlanBean plan) throws StorageException {
if (!BeanUtils.isValidVersion(bean.getVersion())) {
// $NON-NLS-1$
throw new StorageException("Invalid/illegal plan version: " + bean.getVersion());
}
PlanVersionBean newVersion = new PlanVersionBean();
newVersion.setCreatedBy(securityContext.getCurrentUser());
newVersion.setCreatedOn(new Date());
newVersion.setModifiedBy(securityContext.getCurrentUser());
newVersion.setModifiedOn(new Date());
newVersion.setStatus(PlanStatus.Created);
newVersion.setPlan(plan);
newVersion.setVersion(bean.getVersion());
storage.createPlanVersion(newVersion);
storage.createAuditEntry(AuditUtils.planVersionCreated(newVersion, securityContext));
return newVersion;
}
use of io.apiman.manager.api.beans.plans.NewPlanVersionBean in project apiman by apiman.
the class PlanService method createPlan.
public PlanBean createPlan(String organizationId, NewPlanBean bean) throws OrganizationNotFoundException, PlanAlreadyExistsException, NotAuthorizedException, InvalidNameException {
securityContext.checkPermissions(PermissionType.planEdit, organizationId);
FieldValidator.validateName(bean.getName());
PlanBean newPlan = new PlanBean();
newPlan.setName(bean.getName());
newPlan.setDescription(bean.getDescription());
newPlan.setId(BeanUtils.idFromName(bean.getName()));
newPlan.setCreatedOn(new Date());
newPlan.setCreatedBy(securityContext.getCurrentUser());
return tryAction(() -> {
// Store/persist the new plan
OrganizationBean orgBean = organizationService.getOrg(organizationId);
if (storage.getPlan(orgBean.getId(), newPlan.getId()) != null) {
throw ExceptionFactory.planAlreadyExistsException(newPlan.getName());
}
newPlan.setOrganization(orgBean);
storage.createPlan(newPlan);
storage.createAuditEntry(AuditUtils.planCreated(newPlan, securityContext));
if (bean.getInitialVersion() != null) {
NewPlanVersionBean newPlanVersion = new NewPlanVersionBean();
newPlanVersion.setVersion(bean.getInitialVersion());
createPlanVersionInternal(newPlanVersion, newPlan);
}
// $NON-NLS-1$
LOGGER.debug(String.format("Created plan: %s", newPlan));
return newPlan;
});
}
use of io.apiman.manager.api.beans.plans.NewPlanVersionBean in project apiman by apiman.
the class PlanService method createPlanVersion.
public PlanVersionBean createPlanVersion(String organizationId, String planId, NewPlanVersionBean bean) throws PlanNotFoundException, NotAuthorizedException, InvalidVersionException, PlanVersionAlreadyExistsException {
FieldValidator.validateVersion(bean.getVersion());
PlanVersionBean newVersion = tryAction(() -> {
PlanBean plan = storage.getPlan(organizationId, planId);
if (plan == null) {
throw ExceptionFactory.planNotFoundException(planId);
}
if (storage.getPlanVersion(organizationId, planId, bean.getVersion()) != null) {
throw ExceptionFactory.planVersionAlreadyExistsException(planId, bean.getVersion());
}
return createPlanVersionInternal(bean, plan);
});
if (bean.isClone() && bean.getCloneVersion() != null) {
try {
List<PolicySummaryBean> policies = listPlanPolicies(organizationId, planId, bean.getCloneVersion());
for (PolicySummaryBean policySummary : policies) {
PolicyBean policy = getPlanPolicy(organizationId, planId, bean.getCloneVersion(), policySummary.getId());
NewPolicyBean npb = new NewPolicyBean();
npb.setDefinitionId(policy.getDefinition().getId());
npb.setConfiguration(policy.getConfiguration());
createPlanPolicy(organizationId, planId, newVersion.getVersion(), npb);
}
} catch (Exception e) {
// TODO it's ok if the clone fails - we did our best
}
}
// $NON-NLS-1$
LOGGER.debug(String.format("Created plan %s version: %s", planId, newVersion));
return newVersion;
}
use of io.apiman.manager.api.beans.plans.NewPlanVersionBean in project apiman by apiman.
the class PlanService method createPlanVersionInternal.
/**
* Creates a plan version.
*/
private PlanVersionBean createPlanVersionInternal(NewPlanVersionBean bean, PlanBean plan) throws StorageException {
if (!BeanUtils.isValidVersion(bean.getVersion())) {
// $NON-NLS-1$
throw new StorageException("Invalid/illegal plan version: " + bean.getVersion());
}
PlanVersionBean newVersion = new PlanVersionBean();
newVersion.setCreatedBy(securityContext.getCurrentUser());
newVersion.setCreatedOn(new Date());
newVersion.setModifiedBy(securityContext.getCurrentUser());
newVersion.setModifiedOn(new Date());
newVersion.setStatus(PlanStatus.Created);
newVersion.setPlan(plan);
newVersion.setVersion(bean.getVersion());
storage.createPlanVersion(newVersion);
storage.createAuditEntry(AuditUtils.planVersionCreated(newVersion, securityContext));
return newVersion;
}
Aggregations