private void checkParameters(Link link, Operation op) { // TODO Q: parameter name is not sufficient to identify param in // operation; will // allow if it's unique, warn if // it's not Map<String, Integer> opParamCounts = getParamNameCounts(op.getParameters()); Map<String, String> params = link.getParameters(); for (String paramName : params.keySet()) { int count = opParamCounts.get(paramName); if (count == 0) { results.addError(msg(OpenApi3Messages.BadLinkParam, paramName), Overlay.of(params, paramName)); } else if (count > 1) { results.addWarning(msg(OpenApi3Messages.AmbigLinkParam, paramName), Overlay.of(params, paramName)); } } }
private Operation checkValidOperation(Link link) { String opId = link.getOperationId(); String operationRef = link.getOperationRef(); Operation op = null; if (opId == null && operationRef == null) { results.addError(msg(NoOpIdNoOpRefInLink), value); } else if (opId != null && operationRef != null) { results.addError(msg(OpIdAndOpRefInLink), value); } if (opId != null) { op = findOperationById(Overlay.of(link).getModel(), opId); if (op == null) { results.addError(msg(OpIdNotFound, opId), value); } } String relativePath = getRelativePath(operationRef, results); if (relativePath != null) { op = findOperationByPath(Overlay.of(link).getModel(), relativePath, results); if (op == null) { results.addError(msg(OpPathNotFound, operationRef), value); } } return op; }
@Override public void runObjectValidations() { // TODO: Validate operationRef value (why didn't they must make it a ref // object???!) Link link = (Link) value.getOverlay(); validateStringField(F_description, false); Operation op = checkValidOperation(link); if (op != null) { checkParameters(link, op); } Overlay<Object> requestBody = validateField(F_requestBody, false, Object.class, null); checkRequestBody(requestBody); validateField(LinkImpl.F_server, false, Server.class, new ServerValidator()); validateExtensions(link.getExtensions()); }
private Operation checkValidOperation(Link link) { String opId = link.getOperationId(); String operationRef = link.getOperationRef(); Operation op = null; if (opId == null && operationRef == null) { results.addError(msg(NoOpIdNoOpRefInLink), value); } else if (opId != null && operationRef != null) { results.addError(msg(OpIdAndOpRefInLink), value); } if (opId != null) { op = findOperationById(Overlay.of(link).getModel(), opId); if (op == null) { results.addError(msg(OpIdNotFound, opId), value); } } String relativePath = getRelativePath(operationRef, results); if (relativePath != null) { op = findOperationByPath(Overlay.of(link).getModel(), relativePath, results); if (op == null) { results.addError(msg(OpPathNotFound, operationRef), value); } } return op; }
@Override public void runObjectValidations() { // TODO: Validate operationRef value (why didn't they must make it a ref // object???!) Link link = (Link) value.getOverlay(); validateStringField(F_description, false); Operation op = checkValidOperation(link); if (op != null) { checkParameters(link, op); } Overlay<Object> requestBody = validateField(F_requestBody, false, Object.class, null); checkRequestBody(requestBody); validateField(LinkImpl.F_server, false, Server.class, new ServerValidator()); validateExtensions(link.getExtensions()); }
private void checkParameters(Link link, Operation op) { // TODO Q: parameter name is not sufficient to identify param in // operation; will // allow if it's unique, warn if // it's not Map<String, Integer> opParamCounts = getParamNameCounts(op.getParameters()); Map<String, String> params = link.getParameters(); for (String paramName : params.keySet()) { int count = opParamCounts.get(paramName); if (count == 0) { results.addError(msg(OpenApi3Messages.BadLinkParam, paramName), Overlay.of(params, paramName)); } else if (count > 1) { results.addWarning(msg(OpenApi3Messages.AmbigLinkParam, paramName), Overlay.of(params, paramName)); } } }