private void addQueryParameters(final Action action, final JMethod method, final JDocComment javadoc) throws Exception { for (final Entry<String, QueryParameter> namedQueryParameter : action.getQueryParameters().entrySet()) { addParameter(namedQueryParameter.getKey(), namedQueryParameter.getValue(), QueryParam.class, method, javadoc); } }
/** * <p>addQueryParameters.</p> * * @param action a {@link org.raml.model.Action} object. * @param method a {@link com.sun.codemodel.JMethod} object. * @param javadoc a {@link com.sun.codemodel.JDocComment} object. * @throws java.lang.Exception if any. */ protected void addQueryParameters(final Action action, final JMethod method, final JDocComment javadoc) throws Exception { for (final Entry<String, QueryParameter> namedQueryParameter : action .getQueryParameters().entrySet()) { addParameter(namedQueryParameter.getKey(), namedQueryParameter.getValue(), QueryParam.class, method, javadoc); } }
@Override public Collection<Parameter> transform(final Context context, final Action source, final TransformationContext ctx) { final Map<String, Template> effectiveTemplates = getEffectiveTemplates(source, ctx); final List<Parameter> params = new ArrayList<>(); params.addAll( transformParameters(context, methodQueryParametersTransformer, source.getQueryParameters(), ctx.getNamespace(), effectiveTemplates)); params.addAll(transformParameters(context, methodHeaderParametersTransformer, source.getHeaders(), ctx.getNamespace(), effectiveTemplates)); return params; }
@Override public void apply(Action action, ResourceClassBuilder resourceClassBuilder) { LOG.info("Process action {}", action); resourceClassBuilder.getApiClass().withMethod( new ActionMethod(resourceClassBuilder.getReq(), resourceClassBuilder.getResp(), resourceClassBuilder.getUri(), action)); action.getQueryParameters().forEach(resourceClassBuilder.applyParamRule); action.getHeaders().forEach(resourceClassBuilder.applyParamRule); if (action.getBody() != null) { action.getBody().values().forEach(resourceClassBuilder.applyBodyRule); } action.getResponses().values().forEach(resourceClassBuilder.applyResponseRule); } }
private static void createTotalUsage(Usage usage, Map<String, Resource> resources) { for (final Map.Entry<String, Resource> resourceEntry : resources.entrySet()) { resourceUsage(usage, resourceEntry.getValue()); for (final Action action : resourceEntry.getValue().getActions().values()) { actionUsage(usage, action).initQueryParameters(action.getQueryParameters().keySet()); actionUsage(usage, action).initResponseCodes(action.getResponses().keySet()); actionUsage(usage, action).initRequestHeaders(action.getHeaders().keySet()); if (action.getBody() != null) { for (final MimeType mimeType : action.getBody().values()) { if (mimeType.getFormParameters() != null) { UsageBuilder.mimeTypeUsage(usage, action, mimeType).initFormParameters(mimeType.getFormParameters().keySet()); } } } for (final Map.Entry<String, Response> responseEntry : action.getResponses().entrySet()) { responseUsage(usage, action, responseEntry.getKey()).initResponseHeaders(responseEntry.getValue().getHeaders().keySet()); } } createTotalUsage(usage, resourceEntry.getValue().getResources()); } } }
final Map<String, QueryParameter> ramlActionQeuryParams = ramlAction.getQueryParameters(); if (!ramlActionQeuryParams.isEmpty())
private void action(Action action) { locator.action(action); checker.parameters(action.getBaseUriParameters(), BASE_URI); checker.parameters(action.getQueryParameters(), QUERY); checker.headerPattern(action.getHeaders().keySet()); checker.description(action.getDescription()); checker.description(action.getBaseUriParameters(), BASE_URI); checker.description(action.getQueryParameters(), QUERY); checker.description(action.getHeaders(), HEADER); checker.empty(action); if (action.getBody() != null) { for (final MimeType mimeType : action.getBody().values()) { locator.requestMime(mimeType); mimeType(mimeType); } } for (final Map.Entry<String, Response> entry : action.getResponses().entrySet()) { locator.responseCode(entry.getKey()); response(entry.getValue()); } }
@Override public Object getProperty(Interpreter interp, ST self, Object o, Object property, String propertyName) throws STNoSuchPropertyException { final Action a = (Action) o; switch (propertyName) { case "securitySchemes": if (a.getSecuredBy() != null && !a.getSecuredBy().isEmpty()) { return a.getSecuredBy(); } if (a.getResource().getSecuredBy() != null && !a.getResource().getSecuredBy().isEmpty()) { return a.getResource().getSecuredBy(); } if (raml.getSecuredBy() != null && !raml.getSecuredBy().isEmpty()) { return raml.getSecuredBy(); } return Collections.emptyList(); case "type": return a.getType().toString(); case "responses": return new TreeMap<>(a.getResponses()); case "queryParameters": return new TreeMap<>(a.getQueryParameters()); case "headers": return new TreeMap<>(a.getHeaders()); case "body": return a.getBody() == null ? null : new TreeMap<>(a.getBody()); default: return super.getProperty(interp, self, o, property, propertyName); } } }
for (Map.Entry<String, QueryParameter> entry : action.getQueryParameters().entrySet()) { updateMethod(api, method, "querystring", entry.getKey(), entry.getValue().isRequired()); cleanupMethod(method, "path", action.getResource().getUriParameters().keySet()); cleanupMethod(method, "header", action.getHeaders().keySet()); cleanupMethod(method, "querystring", action.getQueryParameters().keySet());
private void checkQueryParameters(Values values, Action action, SecurityExtractor security) { //TODO usage is multiplied by security schemes for (final SecurityScheme scheme : security.getSchemes()) { actionUsage(usage, action).addQueryParameters( new ParameterChecker(violationsPerSecurity.requestViolations(scheme)) .checkParameters(mergeMaps(action.getQueryParameters(), security.queryParameters(scheme)), values, new Message("queryParam", locator)) ); } }
@Test public void testEnumsTypesQueryForRaml() { processResource("RestDocEndpoint.java", "raml", "all"); Raml raml = new RamlDocumentBuilder().build(defaultApiOutput, "http://example.com"); AssertJUnit.assertNotNull("RAML not parseable", raml); Resource resource = raml.getResource("/mount/api/v1/whirlygigs"); AssertJUnit.assertNotNull("Resource /mount/api/v1/whirlygigs not found", resource); Action action = resource.getAction(ActionType.GET); AssertJUnit.assertNotNull("Method GET not found on /mount/api/v1/whirlygigs", action); QueryParameter qp = action.getQueryParameters().get("color"); AssertJUnit.assertNotNull("No color query param found on GET method of /mount/api/v1/whirlygigs", qp); List<String> enums = qp.getEnumeration(); AssertJUnit.assertNotNull("Color query param on GET method of /mount/api/v1/whirlygigs not enum", enums); AssertJUnit.assertEquals("Color query param on GET /mount/api/v1/whirlygigs is wrong size", 3, enums.size()); }
ramlQueryParameter.setRepeat(queryParameter .isAllowMultiple()); action.getQueryParameters().put(queryParameter.getName(), ramlQueryParameter);
ramlQueryParameter.setRepeat(queryParameter .isAllowMultiple()); action.getQueryParameters().put(queryParameter.getName(), ramlQueryParameter);
ramlQueryParameter.setRepeat(queryParameter .isAllowMultiple()); action.getQueryParameters().put(queryParameter.getName(), ramlQueryParameter);
ramlQueryParameter.setRepeat(queryParameter .isAllowMultiple()); action.getQueryParameters().put(queryParameter.getName(), ramlQueryParameter);
ramlQueryParameter.setRepeat(queryParameter .isAllowMultiple()); action.getQueryParameters().put(queryParameter.getName(), ramlQueryParameter);