Search in sources :

Example 21 with JsonMapObjectReaderWriter

use of org.apache.cxf.jaxrs.json.basic.JsonMapObjectReaderWriter in project cxf by apache.

the class SwaggerParseUtils method getUserApplicationFromJson.

public static UserApplication getUserApplicationFromJson(String json, ParseConfiguration cfg) {
    JsonMapObjectReaderWriter reader = new JsonMapObjectReaderWriter();
    Map<String, Object> map = reader.fromJson(json);
    UserApplication app = new UserApplication();
    String relativePath = (String) map.get("basePath");
    app.setBasePath(StringUtils.isEmpty(relativePath) ? "/" : relativePath);
    Map<String, List<UserOperation>> userOpsMap = new LinkedHashMap<>();
    Set<String> tags = new HashSet<>();
    List<Map<String, Object>> tagsProp = CastUtils.cast((List<?>) map.get("tags"));
    if (tagsProp != null) {
        for (Map<String, Object> tagProp : tagsProp) {
            tags.add((String) tagProp.get("name"));
        }
    } else {
        tags.add("");
    }
    for (String tag : tags) {
        userOpsMap.put(tag, new LinkedList<UserOperation>());
    }
    Map<String, Map<String, Object>> paths = CastUtils.cast((Map<?, ?>) map.get("paths"));
    for (Map.Entry<String, Map<String, Object>> pathEntry : paths.entrySet()) {
        String operPath = pathEntry.getKey();
        Map<String, Object> operations = pathEntry.getValue();
        for (Map.Entry<String, Object> operEntry : operations.entrySet()) {
            UserOperation userOp = new UserOperation();
            userOp.setVerb(operEntry.getKey().toUpperCase());
            Map<String, Object> oper = CastUtils.cast((Map<?, ?>) operEntry.getValue());
            // operations but Swagger may still include it.
            if (oper != null) {
                userOp.setPath(operPath);
                userOp.setName((String) oper.get("operationId"));
                List<String> opProduces = CastUtils.cast((List<?>) oper.get("produces"));
                userOp.setProduces(listToString(opProduces));
                List<String> opConsumes = CastUtils.cast((List<?>) oper.get("consumes"));
                userOp.setConsumes(listToString(opConsumes));
                List<Parameter> userOpParams = new LinkedList<>();
                List<Map<String, Object>> params = CastUtils.cast((List<?>) oper.get("parameters"));
                for (Map<String, Object> param : params) {
                    String name = (String) param.get("name");
                    // "query", "header", "path", "formData" or "body"
                    String paramType = (String) param.get("in");
                    ParameterType pType = "body".equals(paramType) ? ParameterType.REQUEST_BODY : "formData".equals(paramType) ? ParameterType.FORM : ParameterType.valueOf(paramType.toUpperCase());
                    Parameter userParam = new Parameter(pType, name);
                    setJavaType(userParam, (String) param.get("type"));
                    userOpParams.add(userParam);
                }
                if (!userOpParams.isEmpty()) {
                    userOp.setParameters(userOpParams);
                }
                List<String> opTags = CastUtils.cast((List<?>) oper.get("tags"));
                if (opTags == null) {
                    opTags = Collections.singletonList("");
                }
                for (String opTag : opTags) {
                    userOpsMap.get(opTag).add(userOp);
                }
            }
        }
    }
    List<UserResource> resources = new LinkedList<>();
    for (Map.Entry<String, List<UserOperation>> entry : userOpsMap.entrySet()) {
        UserResource ur = new UserResource();
        ur.setPath("/");
        ur.setOperations(entry.getValue());
        ur.setName(entry.getKey());
        resources.add(ur);
    }
    app.setResources(resources);
    return app;
}
Also used : LinkedHashMap(java.util.LinkedHashMap) LinkedList(java.util.LinkedList) List(java.util.List) HashSet(java.util.HashSet) ParameterType(org.apache.cxf.jaxrs.model.ParameterType) JsonMapObjectReaderWriter(org.apache.cxf.jaxrs.json.basic.JsonMapObjectReaderWriter) UserResource(org.apache.cxf.jaxrs.model.UserResource) LinkedList(java.util.LinkedList) UserApplication(org.apache.cxf.jaxrs.model.UserApplication) UserOperation(org.apache.cxf.jaxrs.model.UserOperation) Parameter(org.apache.cxf.jaxrs.model.Parameter) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map)

Example 22 with JsonMapObjectReaderWriter

use of org.apache.cxf.jaxrs.json.basic.JsonMapObjectReaderWriter in project cxf by apache.

the class OpenApiParseUtils method getUserApplicationFromJson.

public static UserApplication getUserApplicationFromJson(String json, ParseConfiguration cfg) {
    JsonMapObjectReaderWriter reader = new JsonMapObjectReaderWriter();
    Map<String, Object> map = reader.fromJson(json);
    UserApplication app = new UserApplication();
    app.setBasePath("/");
    List<Map<String, Object>> servers = CastUtils.cast((List<?>) map.get("servers"));
    if (servers != null && !servers.isEmpty()) {
        final String url = (String) servers.get(0).get("url");
        if (url != null) {
            app.setBasePath(url);
        }
    }
    Map<String, List<UserOperation>> userOpsMap = new LinkedHashMap<>();
    Set<String> tags = new HashSet<>();
    List<Map<String, Object>> tagsProp = CastUtils.cast((List<?>) map.get("tags"));
    if (tagsProp != null) {
        for (Map<String, Object> tagProp : tagsProp) {
            tags.add((String) tagProp.get("name"));
        }
    } else {
        tags.add("");
    }
    for (String tag : tags) {
        userOpsMap.put(tag, new LinkedList<UserOperation>());
    }
    Map<String, Map<String, Object>> paths = CastUtils.cast((Map<?, ?>) map.get("paths"));
    for (Map.Entry<String, Map<String, Object>> pathEntry : paths.entrySet()) {
        String operPath = pathEntry.getKey();
        Map<String, Object> operations = pathEntry.getValue();
        for (Map.Entry<String, Object> operEntry : operations.entrySet()) {
            UserOperation userOp = new UserOperation();
            userOp.setVerb(operEntry.getKey().toUpperCase());
            Map<String, Object> oper = CastUtils.cast((Map<?, ?>) operEntry.getValue());
            userOp.setPath(operPath);
            userOp.setName((String) oper.get("operationId"));
            Map<String, Object> responses = CastUtils.cast((Map<?, ?>) oper.get("responses"));
            if (responses != null) {
                userOp.setProduces(listToString(responses.entrySet().stream().map(entry -> CastUtils.cast((Map<?, ?>) entry.getValue())).map(value -> CastUtils.cast((Map<?, ?>) value.get("content"))).filter(Objects::nonNull).flatMap(content -> content.keySet().stream().map(type -> (String) type)).collect(Collectors.toList())));
            }
            Map<String, Object> payloads = CastUtils.cast((Map<?, ?>) oper.get("requestBody"));
            if (payloads != null) {
                userOp.setConsumes(listToString(payloads.entrySet().stream().map(entry -> CastUtils.cast((Map<?, ?>) entry.getValue())).map(value -> CastUtils.cast((Map<?, ?>) value.get("content"))).filter(Objects::nonNull).flatMap(content -> content.keySet().stream().map(type -> (String) type)).collect(Collectors.toList())));
            }
            List<Parameter> userOpParams = new LinkedList<>();
            List<Map<String, Object>> params = CastUtils.cast((List<?>) oper.get("parameters"));
            if (params != null) {
                for (Map<String, Object> param : params) {
                    String name = (String) param.get("name");
                    // "query", "header", "path" or "cookie".
                    String paramType = (String) param.get("in");
                    final ParameterType pType;
                    if ("query".equals(paramType)) {
                        pType = ParameterType.QUERY;
                    } else if ("header".equals(paramType)) {
                        pType = ParameterType.HEADER;
                    } else if ("path".equals(paramType)) {
                        pType = ParameterType.PATH;
                    } else if ("cookie".equals(paramType)) {
                        pType = ParameterType.COOKIE;
                    } else {
                        pType = ParameterType.REQUEST_BODY;
                    }
                    Parameter userParam = new Parameter(pType, name);
                    setJavaType(userParam, (String) param.get("type"));
                    userOpParams.add(userParam);
                }
            }
            if (!userOpParams.isEmpty()) {
                userOp.setParameters(userOpParams);
            }
            List<String> opTags = CastUtils.cast((List<?>) oper.get("tags"));
            if (opTags == null) {
                opTags = Collections.singletonList("");
            }
            for (String opTag : opTags) {
                userOpsMap.putIfAbsent(opTag, new LinkedList<UserOperation>());
                userOpsMap.get(opTag).add(userOp);
            }
        }
    }
    List<UserResource> resources = new LinkedList<>();
    for (Map.Entry<String, List<UserOperation>> entry : userOpsMap.entrySet()) {
        if (!entry.getValue().isEmpty()) {
            UserResource ur = new UserResource();
            ur.setPath("/");
            ur.setOperations(entry.getValue());
            ur.setName(entry.getKey());
            resources.add(ur);
        }
    }
    app.setResources(resources);
    return app;
}
Also used : Bus(org.apache.cxf.Bus) UserApplication(org.apache.cxf.jaxrs.model.UserApplication) HashMap(java.util.HashMap) UserResource(org.apache.cxf.jaxrs.model.UserResource) Parameter(org.apache.cxf.jaxrs.model.Parameter) HashSet(java.util.HashSet) LinkedHashMap(java.util.LinkedHashMap) ParameterType(org.apache.cxf.jaxrs.model.ParameterType) LogUtils(org.apache.cxf.common.logging.LogUtils) Map(java.util.Map) ResourceUtils(org.apache.cxf.jaxrs.utils.ResourceUtils) LinkedList(java.util.LinkedList) UserOperation(org.apache.cxf.jaxrs.model.UserOperation) CastUtils(org.apache.cxf.helpers.CastUtils) IOUtils(org.apache.cxf.helpers.IOUtils) Set(java.util.Set) IOException(java.io.IOException) Logger(java.util.logging.Logger) ClassLoaderUtils(org.apache.cxf.common.classloader.ClassLoaderUtils) Collectors(java.util.stream.Collectors) Objects(java.util.Objects) List(java.util.List) BusFactory(org.apache.cxf.BusFactory) Collections(java.util.Collections) InputStream(java.io.InputStream) JsonMapObjectReaderWriter(org.apache.cxf.jaxrs.json.basic.JsonMapObjectReaderWriter) LinkedHashMap(java.util.LinkedHashMap) LinkedList(java.util.LinkedList) List(java.util.List) HashSet(java.util.HashSet) ParameterType(org.apache.cxf.jaxrs.model.ParameterType) JsonMapObjectReaderWriter(org.apache.cxf.jaxrs.json.basic.JsonMapObjectReaderWriter) UserResource(org.apache.cxf.jaxrs.model.UserResource) LinkedList(java.util.LinkedList) UserApplication(org.apache.cxf.jaxrs.model.UserApplication) UserOperation(org.apache.cxf.jaxrs.model.UserOperation) Objects(java.util.Objects) Parameter(org.apache.cxf.jaxrs.model.Parameter) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map)

Aggregations

JsonMapObjectReaderWriter (org.apache.cxf.jaxrs.json.basic.JsonMapObjectReaderWriter)22 Test (org.junit.Test)9 JwsHeaders (org.apache.cxf.rs.security.jose.jws.JwsHeaders)7 Map (java.util.Map)6 JsonWebKey (org.apache.cxf.rs.security.jose.jwk.JsonWebKey)6 JsonWebKeys (org.apache.cxf.rs.security.jose.jwk.JsonWebKeys)6 LinkedHashMap (java.util.LinkedHashMap)5 JsonMapObject (org.apache.cxf.jaxrs.json.basic.JsonMapObject)5 JwsCompactConsumer (org.apache.cxf.rs.security.jose.jws.JwsCompactConsumer)5 JwsCompactProducer (org.apache.cxf.rs.security.jose.jws.JwsCompactProducer)5 JwsJsonConsumer (org.apache.cxf.rs.security.jose.jws.JwsJsonConsumer)5 JwsJsonProducer (org.apache.cxf.rs.security.jose.jws.JwsJsonProducer)5 HashMap (java.util.HashMap)3 List (java.util.List)3 BouncyCastleProvider (org.bouncycastle.jce.provider.BouncyCastleProvider)3 IOException (java.io.IOException)2 InputStream (java.io.InputStream)2 HashSet (java.util.HashSet)2 LinkedList (java.util.LinkedList)2 Parameter (org.apache.cxf.jaxrs.model.Parameter)2