/** * Check if model is non-null and array. * @param currentPath * @param model * @param ctx * @return false if current evaluation call must be skipped, true otherwise * @throws PathNotFoundException if model is null and evaluation must be interrupted * @throws InvalidPathException if model is not an array and evaluation must be interrupted */ protected boolean checkArrayModel(String currentPath, Object model, EvaluationContextImpl ctx) { if (model == null){ if (! isUpstreamDefinite()) { return false; } else { throw new PathNotFoundException("The path " + currentPath + " is null"); } } if (!ctx.jsonProvider().isArray(model)) { if (! isUpstreamDefinite()) { return false; } else { throw new PathNotFoundException(format("Filter: %s can only be applied to arrays. Current context is: %s", toString(), model)); } } return true; } }
public void sliceFrom(ArraySliceOperation operation, String currentPath, PathRef parent, Object model, EvaluationContextImpl ctx) { int length = ctx.jsonProvider().length(model); int from = operation.from(); if (from < 0) { //calculate slice start from array length from = length + from; } from = Math.max(0, from); logger.debug("Slice from index on array with length: {}. From index: {} to: {}. Input: {}", length, from, length - 1, toString()); if (length == 0 || from >= length) { return; } for (int i = from; i < length; i++) { handleArrayIndex(i, currentPath, model, ctx); } }
public void sliceTo(ArraySliceOperation operation, String currentPath, PathRef parent, Object model, EvaluationContextImpl ctx) { int length = ctx.jsonProvider().length(model); if (length == 0) { return; } int to = operation.to(); if (to < 0) { //calculate slice end from array length to = length + to; } to = Math.min(length, to); logger.debug("Slice to index on array with length: {}. From index: 0 to: {}. Input: {}", length, to, toString()); for (int i = 0; i < to; i++) { handleArrayIndex(i, currentPath, model, ctx); } }
public void sliceBetween(ArraySliceOperation operation, String currentPath, PathRef parent, Object model, EvaluationContextImpl ctx) { int length = ctx.jsonProvider().length(model); int from = operation.from(); int to = operation.to(); to = Math.min(length, to); if (from >= to || length == 0) { return; } logger.debug("Slice between indexes on array with length: {}. From index: {} to: {}. Input: {}", length, from, to, toString()); for (int i = from; i < to; i++) { handleArrayIndex(i, currentPath, model, ctx); } }
/** * Check if model is non-null and array. * @param currentPath * @param model * @param ctx * @return false if current evaluation call must be skipped, true otherwise * @throws PathNotFoundException if model is null and evaluation must be interrupted * @throws InvalidPathException if model is not an array and evaluation must be interrupted */ protected boolean checkArrayModel(String currentPath, Object model, EvaluationContextImpl ctx) { if (model == null){ if (! isUpstreamDefinite()) { return false; } else { throw new PathNotFoundException("The path " + currentPath + " is null"); } } if (!ctx.jsonProvider().isArray(model)) { if (! isUpstreamDefinite()) { return false; } else { throw new PathNotFoundException(format("Filter: %s can only be applied to arrays. Current context is: %s", toString(), model)); } } return true; } }
public void sliceTo(ArraySliceOperation operation, String currentPath, PathRef parent, Object model, EvaluationContextImpl ctx) { int length = ctx.jsonProvider().length(model); if (length == 0) { return; } int to = operation.to(); if (to < 0) { //calculate slice end from array length to = length + to; } to = Math.min(length, to); logger.debug("Slice to index on array with length: {}. From index: 0 to: {}. Input: {}", length, to, toString()); for (int i = 0; i < to; i++) { handleArrayIndex(i, currentPath, model, ctx); } }
public void sliceBetween(ArraySliceOperation operation, String currentPath, PathRef parent, Object model, EvaluationContextImpl ctx) { int length = ctx.jsonProvider().length(model); int from = operation.from(); int to = operation.to(); to = Math.min(length, to); if (from >= to || length == 0) { return; } logger.debug("Slice between indexes on array with length: {}. From index: {} to: {}. Input: {}", length, from, to, toString()); for (int i = from; i < to; i++) { handleArrayIndex(i, currentPath, model, ctx); } }
public void sliceFrom(ArraySliceOperation operation, String currentPath, PathRef parent, Object model, EvaluationContextImpl ctx) { int length = ctx.jsonProvider().length(model); int from = operation.from(); if (from < 0) { //calculate slice start from array length from = length + from; } from = Math.max(0, from); logger.debug("Slice from index on array with length: {}. From index: {} to: {}. Input: {}", length, from, length - 1, toString()); if (length == 0 || from >= length) { return; } for (int i = from; i < length; i++) { handleArrayIndex(i, currentPath, model, ctx); } }
/** * Check if model is non-null and array. * @param currentPath * @param model * @param ctx * @return false if current evaluation call must be skipped, true otherwise * @throws PathNotFoundException if model is null and evaluation must be interrupted * @throws InvalidPathException if model is not an array and evaluation must be interrupted */ protected boolean checkArrayModel(String currentPath, Object model, EvaluationContextImpl ctx) { if (model == null){ if (! isUpstreamDefinite()) { return false; } else { throw new PathNotFoundException("The path " + currentPath + " is null"); } } if (!ctx.jsonProvider().isArray(model)) { if (! isUpstreamDefinite()) { return false; } else { throw new PathNotFoundException(format("Filter: %s can only be applied to arrays. Current context is: %s", toString(), model)); } } return true; } }