public String evaluateXPath(String xPathExpression) { return getXPathEvaluator().evaluateXPath(xPathExpression); }
public String replaceXPathOrI18n(String expression) { return getXPathEvaluator().replaceXPathOrI18n(expression); }
public String replaceXPaths(String text) { return getXPathEvaluator().replaceXPaths(text, false); }
public MCRXPathEvaluator getXPathEvaluator() { if (currentBinding != null) { return currentBinding.getXPathEvaluator(); } else { return new MCRXPathEvaluator(editorSession.getVariables(), (Parent) null); } }
public boolean test(String xPathExpression) { return getXPathEvaluator().test(xPathExpression); }
public MCRXPathEvaluator getXPathEvaluator() { return new MCRXPathEvaluator(buildXPathVariables(), getBoundNodes()); }
@Override public boolean validateBinding(MCRValidationResults results, MCRBinding binding) { boolean isValid = true; // all nodes must validate List<Object> boundNodes = binding.getBoundNodes(); for (int i = 0; i < boundNodes.size(); i++) { Object node = boundNodes.get(i); String absPath = MCRXPathBuilder.buildXPath(node); if (results.hasError(absPath)) { continue; } MCRBinding nodeBinding = new MCRBinding(i + 1, binding); MCRXPathEvaluator evaluator = nodeBinding.getXPathEvaluator(); boolean result = evaluator.test(xPathExpression); nodeBinding.detach(); results.mark(absPath, result, this); isValid = isValid && result; } return isValid; } }
public String replaceParameters(String uri) { return getXPathEvaluator().replaceXPaths(uri, false); }
public void handleSubmission(ServletContext context, MCRServletJob job, MCREditorSession session, String parameter) throws Exception { session.getSubmission().setSubmittedValues(job.getRequest().getParameterMap()); int pos = parameter.lastIndexOf(":"); String xPath = parameter.substring(0, pos); String href = decode(parameter.substring(pos + 1)); LOGGER.info("New subselect for {} using pattern {}", xPath, href); MCRBinding binding = new MCRBinding(xPath, false, session.getRootBinding()); href = binding.getXPathEvaluator().replaceXPaths(href, true); binding.detach(); session.setBreakpoint("After starting subselect at " + href + " for " + xPath); href += (href.contains("?") ? "&" : "?") + PARAM_SUBSELECT_SESSION + "=" + session.getCombinedSessionStepID(); LOGGER.info("Redirecting to subselect {}", href); job.getResponse().sendRedirect(job.getResponse().encodeRedirectURL(href)); }