@Override public SPageURL resolvePageURL(final SPageMapping pageMapping, final Map<String, Serializable> context, final boolean executeAuthorizationRules) throws SExecutionException, SAuthorizationException { if (executeAuthorizationRules) { final List<String> pageAuthorizationRules = pageMapping.getPageAuthorizationRules(); if (!isAllowedToAccess(pageMapping, context, pageAuthorizationRules)) { throw new SAuthorizationException("Access to Page or URL with key " + pageMapping.getKey() + " is not allowed"); } } String url = pageMapping.getUrl(); final String urlAdapter = pageMapping.getUrlAdapter(); if (urlAdapter != null) { url = getUrlAdapter(urlAdapter).adapt(url, pageMapping.getKey(), context); } return new SPageURL(url, pageMapping.getPageId()); }
public static FormMapping toFormMapping(final SFormMapping sFormMapping, final FormRequiredAnalyzer formRequiredAnalyzer) { if (sFormMapping == null) { return null; } final FormMapping formMapping = new FormMapping(); formMapping.setId(sFormMapping.getId()); formMapping.setTask(sFormMapping.getTask()); final SPageMapping pageMapping = sFormMapping.getPageMapping(); if (pageMapping != null) { formMapping.setPageMappingKey(pageMapping.getKey()); formMapping.setPageId(pageMapping.getPageId()); formMapping.setPageURL(pageMapping.getUrl()); } formMapping.setType(FormMappingType.getTypeFromId(sFormMapping.getType())); formMapping.setTarget(sFormMapping.getTarget() == null ? null : FormMappingTarget.valueOf(sFormMapping.getTarget())); formMapping.setProcessDefinitionId(sFormMapping.getProcessDefinitionId()); final long lastUpdateDate = sFormMapping.getLastUpdateDate(); formMapping.setLastUpdateDate(lastUpdateDate > 0 ? new Date(lastUpdateDate) : null); formMapping.setLastUpdatedBy(sFormMapping.getLastUpdatedBy()); formMapping.setFormRequired(formRequiredAnalyzer.isFormRequired(sFormMapping)); return formMapping; }
((SFormMappingImpl) formMapping).setPageMapping(sPageMapping); } else { oldPageId = formMapping.getPageMapping().getPageId(); oldUrlAdapter = formMapping.getPageMapping().getUrlAdapter(); oldUrl = formMapping.getPageMapping().getUrl();
protected void checkFormMappingResolution(SFormMapping formMapping, List<Problem> problems) throws SBonitaReadException, SObjectNotFoundException { String errorMessage; if (isMappingRelatedToCustomPage(formMapping)) { SPageMapping pageMapping = formMapping.getPageMapping(); if (pageMapping == null) { errorMessage = String.format(ERROR_MESSAGE_FORM_NOT_SET, formMapping.getProcessDefinitionId(), formMapping.getTask()); addProblem(formMapping, problems, errorMessage); return; } final Long pageId = pageMapping.getPageId(); if (pageId == null || pageService.getPage(pageId) == null) { errorMessage = String.format(ERROR_MESSAGE_FORM_NOT_FOUND, pageMapping.getKey(), pageId); addProblem(formMapping, problems, errorMessage); } } else if (isUndefined(formMapping)) { errorMessage = String.format(ERROR_MESSAGE_FORM_UNDEFINED, formMapping.getProcessDefinitionId(), formMapping.getTask()); addProblem(formMapping, problems, errorMessage); } }
@Override public SPageMapping create(final String key, final Long pageId, final List<String> authorizationRules) throws SObjectCreationException { SPageMapping pageMapping = null; try { pageMapping = findMapping(key); } catch (final SBonitaReadException e) { throw new SObjectCreationException(String.format("Failed to get page mapping %s", key), e); } if (pageMapping == null) { final SPageMappingImpl entity = new SPageMappingImpl(); entity.setPageId(pageId); entity.setPageAuthorizationRules(authorizationRules); entity.setKey(key); return insert(entity); } throw new SObjectCreationException(String.format("Mapping key %s already exists for page with id %s", key, pageMapping.getPageId())); }
protected boolean isAllowedToAccess(final SPageMapping pageMapping, final Map<String, Serializable> context, final List<String> pageAuthorizationRules) throws SExecutionException { boolean authorized = true; for (final String rule : pageAuthorizationRules) { final AuthorizationRule authorizationRule = authorizationRuleMap.get(rule); if (authorizationRule == null) { throw new SExecutionException("Authorization rule " + rule + " is not known. Cannot check if authorized or not."); } if (authorizationRule.isAllowed(pageMapping.getKey(), context)) { return true; } else { authorized = false; } } return authorized; }
public static FormMapping toFormMapping(final SFormMapping sFormMapping, final FormRequiredAnalyzer formRequiredAnalyzer) { if (sFormMapping == null) { return null; } final FormMapping formMapping = new FormMapping(); formMapping.setId(sFormMapping.getId()); formMapping.setTask(sFormMapping.getTask()); final SPageMapping pageMapping = sFormMapping.getPageMapping(); if (pageMapping != null) { formMapping.setPageMappingKey(pageMapping.getKey()); formMapping.setPageId(pageMapping.getPageId()); formMapping.setPageURL(pageMapping.getUrl()); } formMapping.setType(FormMappingType.getTypeFromId(sFormMapping.getType())); formMapping.setTarget(sFormMapping.getTarget() == null ? null : FormMappingTarget.valueOf(sFormMapping.getTarget())); formMapping.setProcessDefinitionId(sFormMapping.getProcessDefinitionId()); final long lastUpdateDate = sFormMapping.getLastUpdateDate(); formMapping.setLastUpdateDate(lastUpdateDate > 0 ? new Date(lastUpdateDate) : null); formMapping.setLastUpdatedBy(sFormMapping.getLastUpdatedBy()); formMapping.setFormRequired(formRequiredAnalyzer.isFormRequired(sFormMapping)); return formMapping; }
((SFormMappingImpl) formMapping).setPageMapping(sPageMapping); } else { oldPageId = formMapping.getPageMapping().getPageId(); oldUrlAdapter = formMapping.getPageMapping().getUrlAdapter(); oldUrl = formMapping.getPageMapping().getUrl();
protected void checkFormMappingResolution(SFormMapping formMapping, List<Problem> problems) throws SBonitaReadException, SObjectNotFoundException { String errorMessage; if (isMappingRelatedToCustomPage(formMapping)) { SPageMapping pageMapping = formMapping.getPageMapping(); if (pageMapping == null) { errorMessage = String.format(ERROR_MESSAGE_FORM_NOT_SET, formMapping.getProcessDefinitionId(), formMapping.getTask()); addProblem(formMapping, problems, errorMessage); return; } final Long pageId = pageMapping.getPageId(); if (pageId == null || pageService.getPage(pageId) == null) { errorMessage = String.format(ERROR_MESSAGE_FORM_NOT_FOUND, pageMapping.getKey(), pageId); addProblem(formMapping, problems, errorMessage); } } else if (isUndefined(formMapping)) { errorMessage = String.format(ERROR_MESSAGE_FORM_UNDEFINED, formMapping.getProcessDefinitionId(), formMapping.getTask()); addProblem(formMapping, problems, errorMessage); } }
@Override public SPageMapping create(final String key, final Long pageId, final List<String> authorizationRules) throws SObjectCreationException { SPageMapping pageMapping = null; try { pageMapping = findMapping(key); } catch (final SBonitaReadException e) { throw new SObjectCreationException(String.format("Failed to get page mapping %s", key), e); } if (pageMapping == null) { final SPageMappingImpl entity = new SPageMappingImpl(); entity.setPageId(pageId); entity.setPageAuthorizationRules(authorizationRules); entity.setKey(key); return insert(entity); } throw new SObjectCreationException(String.format("Mapping key %s already exists for page with id %s", key, pageMapping.getPageId())); }
protected boolean isAllowedToAccess(final SPageMapping pageMapping, final Map<String, Serializable> context, final List<String> pageAuthorizationRules) throws SExecutionException { boolean authorized = true; for (final String rule : pageAuthorizationRules) { final AuthorizationRule authorizationRule = authorizationRuleMap.get(rule); if (authorizationRule == null) { throw new SExecutionException("Authorization rule " + rule + " is not known. Cannot check if authorized or not."); } if (authorizationRule.isAllowed(pageMapping.getKey(), context)) { return true; } else { authorized = false; } } return authorized; }
@Override public SPageURL resolvePageURL(final SPageMapping pageMapping, final Map<String, Serializable> context, final boolean executeAuthorizationRules) throws SExecutionException, SAuthorizationException { if (executeAuthorizationRules) { final List<String> pageAuthorizationRules = pageMapping.getPageAuthorizationRules(); if (!isAllowedToAccess(pageMapping, context, pageAuthorizationRules)) { throw new SAuthorizationException("Access to Page or URL with key " + pageMapping.getKey() + " is not allowed"); } } String url = pageMapping.getUrl(); final String urlAdapter = pageMapping.getUrlAdapter(); if (urlAdapter != null) { url = getUrlAdapter(urlAdapter).adapt(url, pageMapping.getKey(), context); } return new SPageURL(url, pageMapping.getPageId()); }
@Override public SPageMapping create(final String key, final String url, final String urlAdapter, final List<String> authorizationRules) throws SObjectCreationException { SPageMapping pageMapping = null; try { pageMapping = findMapping(key); } catch (final SBonitaReadException e) { throw new SObjectCreationException(String.format("Failed to get page mapping %s", key), e); } if (pageMapping == null) { final SPageMappingImpl entity = new SPageMappingImpl(); entity.setUrl(url); entity.setUrlAdapter(urlAdapter); entity.setPageAuthorizationRules(authorizationRules); entity.setKey(key); return insert(entity); } throw new SObjectCreationException(String.format("Mapping key %s already exists for page with id %s", key, pageMapping.getPageId())); }
private void updateMappings(final SPage page, final Properties apiProperties) throws SObjectCreationException, SBonitaReadException, SDeletionException { final List<String> keys = getKeysOfPageMappings(apiProperties); final List<String> existingKeys = new ArrayList<>(); List<SPageMapping> mappings; do { mappings = pageMappingService.get(page.getId(), 0, MAX_RESULTS); for (final SPageMapping mapping : mappings) { if (keys.contains(mapping.getKey())) { existingKeys.add(mapping.getKey()); } else { pageMappingService.delete(mapping); } } } while (mappings.size() == MAX_RESULTS); keys.removeAll(existingKeys); for (final String key : keys) { pageMappingService.create(key, page.getId(), Collections.<String> emptyList()); } }
@Override public SPageMapping create(final String key, final String url, final String urlAdapter, final List<String> authorizationRules) throws SObjectCreationException { SPageMapping pageMapping = null; try { pageMapping = findMapping(key); } catch (final SBonitaReadException e) { throw new SObjectCreationException(String.format("Failed to get page mapping %s", key), e); } if (pageMapping == null) { final SPageMappingImpl entity = new SPageMappingImpl(); entity.setUrl(url); entity.setUrlAdapter(urlAdapter); entity.setPageAuthorizationRules(authorizationRules); entity.setKey(key); return insert(entity); } throw new SObjectCreationException(String.format("Mapping key %s already exists for page with id %s", key, pageMapping.getPageId())); }
private void updateMappings(final SPage page, final Properties apiProperties) throws SObjectCreationException, SBonitaReadException, SDeletionException { final List<String> keys = getKeysOfPageMappings(apiProperties); final List<String> existingKeys = new ArrayList<>(); List<SPageMapping> mappings; do { mappings = pageMappingService.get(page.getId(), 0, MAX_RESULTS); for (final SPageMapping mapping : mappings) { if (keys.contains(mapping.getKey())) { existingKeys.add(mapping.getKey()); } else { pageMappingService.delete(mapping); } } } while (mappings.size() == MAX_RESULTS); keys.removeAll(existingKeys); for (final String key : keys) { pageMappingService.create(key, page.getId(), Collections.<String> emptyList()); } }
@Override public void delete(final SPageMapping sPageMapping) throws SDeletionException { try { recorder.recordDelete(new DeleteRecord(sPageMapping), PAGE_MAPPING); } catch (final SRecorderException e) { throw new SDeletionException("Unable to delete the page mapping with key " + sPageMapping.getKey(), e); } }
@Override public void delete(final SPageMapping sPageMapping) throws SDeletionException { try { recorder.recordDelete(new DeleteRecord(sPageMapping), PAGE_MAPPING); } catch (final SRecorderException e) { throw new SDeletionException("Unable to delete the page mapping with key " + sPageMapping.getKey(), e); } }