Search in sources :

Example 1 with CustomComplexityDetails

use of org.wso2.carbon.apimgt.api.model.graphql.queryanalysis.CustomComplexityDetails in project carbon-apimgt by wso2.

the class ApiMgtDAO method restoreAPIRevision.

/**
 * Restore API revision database records as the Current API of an API
 *
 * @param apiRevision content of the revision
 * @throws APIManagementException if an error occurs when restoring an API revision
 */
public void restoreAPIRevision(APIRevision apiRevision) throws APIManagementException {
    try (Connection connection = APIMgtDBUtil.getConnection()) {
        try {
            connection.setAutoCommit(false);
            // Retrieve API ID
            APIIdentifier apiIdentifier = APIUtil.getAPIIdentifierFromUUID(apiRevision.getApiUUID());
            int apiId = getAPIID(apiRevision.getApiUUID(), connection);
            int tenantId = APIUtil.getTenantId(APIUtil.replaceEmailDomainBack(apiIdentifier.getProviderName()));
            String tenantDomain = APIUtil.getTenantDomainFromTenantId(tenantId);
            // Removing related Current API entries from AM_API_URL_MAPPING table
            PreparedStatement removeURLMappingsStatement = connection.prepareStatement(SQLConstants.APIRevisionSqlConstants.REMOVE_CURRENT_API_ENTRIES_IN_AM_API_URL_MAPPING_BY_API_ID);
            removeURLMappingsStatement.setInt(1, apiId);
            removeURLMappingsStatement.executeUpdate();
            // Restoring to AM_API_URL_MAPPING table
            PreparedStatement getURLMappingsStatement = connection.prepareStatement(SQLConstants.APIRevisionSqlConstants.GET_URL_MAPPINGS_WITH_SCOPE_AND_PRODUCT_ID_BY_REVISION_UUID);
            getURLMappingsStatement.setInt(1, apiId);
            getURLMappingsStatement.setString(2, apiRevision.getRevisionUUID());
            List<URITemplate> urlMappingList = new ArrayList<>();
            try (ResultSet rs = getURLMappingsStatement.executeQuery()) {
                while (rs.next()) {
                    String script = null;
                    URITemplate uriTemplate = new URITemplate();
                    uriTemplate.setHTTPVerb(rs.getString(1));
                    uriTemplate.setAuthType(rs.getString(2));
                    uriTemplate.setUriTemplate(rs.getString(3));
                    uriTemplate.setThrottlingTier(rs.getString(4));
                    InputStream mediationScriptBlob = rs.getBinaryStream(5);
                    if (mediationScriptBlob != null) {
                        script = APIMgtDBUtil.getStringFromInputStream(mediationScriptBlob);
                    }
                    uriTemplate.setMediationScript(script);
                    if (!StringUtils.isEmpty(rs.getString(6))) {
                        Scope scope = new Scope();
                        scope.setKey(rs.getString(6));
                        uriTemplate.setScope(scope);
                    }
                    if (rs.getInt(7) != 0) {
                        // Adding product id to uri template id just to store value
                        uriTemplate.setId(rs.getInt(7));
                    }
                    urlMappingList.add(uriTemplate);
                }
            }
            Map<String, URITemplate> uriTemplateMap = new HashMap<>();
            for (URITemplate urlMapping : urlMappingList) {
                if (urlMapping.getScope() != null) {
                    URITemplate urlMappingNew = urlMapping;
                    URITemplate urlMappingExisting = uriTemplateMap.get(urlMapping.getUriTemplate() + urlMapping.getHTTPVerb());
                    if (urlMappingExisting != null && urlMappingExisting.getScopes() != null) {
                        if (!urlMappingExisting.getScopes().contains(urlMapping.getScope())) {
                            urlMappingExisting.setScopes(urlMapping.getScope());
                            uriTemplateMap.put(urlMappingExisting.getUriTemplate() + urlMappingExisting.getHTTPVerb(), urlMappingExisting);
                        }
                    } else {
                        urlMappingNew.setScopes(urlMapping.getScope());
                        uriTemplateMap.put(urlMappingNew.getUriTemplate() + urlMappingNew.getHTTPVerb(), urlMappingNew);
                    }
                } else {
                    uriTemplateMap.put(urlMapping.getUriTemplate() + urlMapping.getHTTPVerb(), urlMapping);
                }
            }
            setOperationPoliciesToURITemplatesMap(apiRevision.getRevisionUUID(), uriTemplateMap);
            PreparedStatement insertURLMappingsStatement = connection.prepareStatement(SQLConstants.APIRevisionSqlConstants.INSERT_URL_MAPPINGS_CURRENT_API);
            for (URITemplate urlMapping : uriTemplateMap.values()) {
                insertURLMappingsStatement.setInt(1, apiId);
                insertURLMappingsStatement.setString(2, urlMapping.getHTTPVerb());
                insertURLMappingsStatement.setString(3, urlMapping.getAuthType());
                insertURLMappingsStatement.setString(4, urlMapping.getUriTemplate());
                insertURLMappingsStatement.setString(5, urlMapping.getThrottlingTier());
                insertURLMappingsStatement.addBatch();
            }
            insertURLMappingsStatement.executeBatch();
            // Add to AM_API_RESOURCE_SCOPE_MAPPING table and to AM_API_PRODUCT_MAPPING
            PreparedStatement getCurrentAPIURLMappingsStatement = connection.prepareStatement(SQLConstants.APIRevisionSqlConstants.GET_CURRENT_API_URL_MAPPINGS_ID);
            PreparedStatement insertScopeResourceMappingStatement = connection.prepareStatement(SQLConstants.APIRevisionSqlConstants.INSERT_SCOPE_RESOURCE_MAPPING);
            PreparedStatement insertProductResourceMappingStatement = connection.prepareStatement(SQLConstants.APIRevisionSqlConstants.INSERT_PRODUCT_RESOURCE_MAPPING);
            PreparedStatement insertOperationPolicyMappingStatement = connection.prepareStatement(SQLConstants.OperationPolicyConstants.ADD_API_OPERATION_POLICY_MAPPING);
            PreparedStatement deleteOutdatedOperationPolicyStatement = connection.prepareStatement(SQLConstants.OperationPolicyConstants.DELETE_OPERATION_POLICY_BY_POLICY_ID);
            Map<String, String> restoredPolicyMap = new HashMap<>();
            Set<String> usedClonedPolicies = new HashSet<String>();
            for (URITemplate urlMapping : uriTemplateMap.values()) {
                if (urlMapping.getScopes() != null) {
                    getCurrentAPIURLMappingsStatement.setInt(1, apiId);
                    getCurrentAPIURLMappingsStatement.setString(2, urlMapping.getHTTPVerb());
                    getCurrentAPIURLMappingsStatement.setString(3, urlMapping.getAuthType());
                    getCurrentAPIURLMappingsStatement.setString(4, urlMapping.getUriTemplate());
                    getCurrentAPIURLMappingsStatement.setString(5, urlMapping.getThrottlingTier());
                    try (ResultSet rs = getCurrentAPIURLMappingsStatement.executeQuery()) {
                        while (rs.next()) {
                            for (Scope scope : urlMapping.getScopes()) {
                                insertScopeResourceMappingStatement.setString(1, scope.getKey());
                                insertScopeResourceMappingStatement.setInt(2, rs.getInt(1));
                                insertScopeResourceMappingStatement.setInt(3, tenantId);
                                insertScopeResourceMappingStatement.addBatch();
                            }
                        }
                    }
                }
                if (urlMapping.getId() != 0) {
                    getCurrentAPIURLMappingsStatement.setInt(1, apiId);
                    getCurrentAPIURLMappingsStatement.setString(2, urlMapping.getHTTPVerb());
                    getCurrentAPIURLMappingsStatement.setString(3, urlMapping.getAuthType());
                    getCurrentAPIURLMappingsStatement.setString(4, urlMapping.getUriTemplate());
                    getCurrentAPIURLMappingsStatement.setString(5, urlMapping.getThrottlingTier());
                    try (ResultSet rs = getCurrentAPIURLMappingsStatement.executeQuery()) {
                        while (rs.next()) {
                            insertProductResourceMappingStatement.setInt(1, urlMapping.getId());
                            insertProductResourceMappingStatement.setInt(2, rs.getInt(1));
                            insertProductResourceMappingStatement.addBatch();
                        }
                    }
                }
                if (!urlMapping.getOperationPolicies().isEmpty()) {
                    getCurrentAPIURLMappingsStatement.setInt(1, apiId);
                    getCurrentAPIURLMappingsStatement.setString(2, urlMapping.getHTTPVerb());
                    getCurrentAPIURLMappingsStatement.setString(3, urlMapping.getAuthType());
                    getCurrentAPIURLMappingsStatement.setString(4, urlMapping.getUriTemplate());
                    getCurrentAPIURLMappingsStatement.setString(5, urlMapping.getThrottlingTier());
                    try (ResultSet rs = getCurrentAPIURLMappingsStatement.executeQuery()) {
                        while (rs.next()) {
                            for (OperationPolicy policy : urlMapping.getOperationPolicies()) {
                                if (!restoredPolicyMap.keySet().contains(policy.getPolicyName())) {
                                    String restoredPolicyId = restoreOperationPolicyRevision(connection, apiRevision.getApiUUID(), policy.getPolicyId(), apiRevision.getId(), tenantDomain);
                                    // policy ID is stored in a map as same policy can be applied to multiple operations
                                    // and we only need to create the policy once.
                                    restoredPolicyMap.put(policy.getPolicyName(), restoredPolicyId);
                                    usedClonedPolicies.add(restoredPolicyId);
                                }
                                Gson gson = new Gson();
                                String paramJSON = gson.toJson(policy.getParameters());
                                insertOperationPolicyMappingStatement.setInt(1, rs.getInt(1));
                                insertOperationPolicyMappingStatement.setString(2, restoredPolicyMap.get(policy.getPolicyName()));
                                insertOperationPolicyMappingStatement.setString(3, policy.getDirection());
                                insertOperationPolicyMappingStatement.setString(4, paramJSON);
                                insertOperationPolicyMappingStatement.setInt(5, policy.getOrder());
                                insertOperationPolicyMappingStatement.addBatch();
                            }
                        }
                    }
                }
            }
            insertScopeResourceMappingStatement.executeBatch();
            insertProductResourceMappingStatement.executeBatch();
            insertOperationPolicyMappingStatement.executeBatch();
            deleteOutdatedOperationPolicyStatement.executeBatch();
            cleanUnusedClonedOperationPolicies(connection, usedClonedPolicies, apiRevision.getApiUUID());
            // Restoring AM_API_CLIENT_CERTIFICATE table entries
            PreparedStatement removeClientCertificatesStatement = connection.prepareStatement(SQLConstants.APIRevisionSqlConstants.REMOVE_CURRENT_API_ENTRIES_IN_AM_API_CLIENT_CERTIFICATE_BY_API_ID);
            removeClientCertificatesStatement.setInt(1, apiId);
            removeClientCertificatesStatement.executeUpdate();
            PreparedStatement getClientCertificatesStatement = connection.prepareStatement(SQLConstants.APIRevisionSqlConstants.GET_CLIENT_CERTIFICATES_BY_REVISION_UUID);
            getClientCertificatesStatement.setInt(1, apiId);
            getClientCertificatesStatement.setString(2, apiRevision.getRevisionUUID());
            List<ClientCertificateDTO> clientCertificateDTOS = new ArrayList<>();
            try (ResultSet rs = getClientCertificatesStatement.executeQuery()) {
                while (rs.next()) {
                    ClientCertificateDTO clientCertificateDTO = new ClientCertificateDTO();
                    clientCertificateDTO.setAlias(rs.getString(1));
                    clientCertificateDTO.setCertificate(APIMgtDBUtil.getStringFromInputStream(rs.getBinaryStream(2)));
                    clientCertificateDTO.setTierName(rs.getString(3));
                    clientCertificateDTOS.add(clientCertificateDTO);
                }
            }
            PreparedStatement insertClientCertificateStatement = connection.prepareStatement(SQLConstants.APIRevisionSqlConstants.INSERT_CLIENT_CERTIFICATES_AS_CURRENT_API);
            for (ClientCertificateDTO clientCertificateDTO : clientCertificateDTOS) {
                insertClientCertificateStatement.setInt(1, tenantId);
                insertClientCertificateStatement.setString(2, clientCertificateDTO.getAlias());
                insertClientCertificateStatement.setInt(3, apiId);
                insertClientCertificateStatement.setBinaryStream(4, getInputStream(clientCertificateDTO.getCertificate()));
                insertClientCertificateStatement.setBoolean(5, false);
                insertClientCertificateStatement.setString(6, clientCertificateDTO.getTierName());
                insertClientCertificateStatement.setString(7, "Current API");
                insertClientCertificateStatement.addBatch();
            }
            insertClientCertificateStatement.executeBatch();
            // Restoring AM_GRAPHQL_COMPLEXITY table
            PreparedStatement removeGraphQLComplexityStatement = connection.prepareStatement(SQLConstants.APIRevisionSqlConstants.REMOVE_CURRENT_API_ENTRIES_IN_AM_GRAPHQL_COMPLEXITY_BY_API_ID);
            removeGraphQLComplexityStatement.setInt(1, apiId);
            removeGraphQLComplexityStatement.executeUpdate();
            PreparedStatement getGraphQLComplexityStatement = connection.prepareStatement(SQLConstants.APIRevisionSqlConstants.GET_GRAPHQL_COMPLEXITY_BY_REVISION_UUID);
            List<CustomComplexityDetails> customComplexityDetailsList = new ArrayList<>();
            getGraphQLComplexityStatement.setInt(1, apiId);
            getGraphQLComplexityStatement.setString(2, apiRevision.getRevisionUUID());
            try (ResultSet rs1 = getGraphQLComplexityStatement.executeQuery()) {
                while (rs1.next()) {
                    CustomComplexityDetails customComplexityDetails = new CustomComplexityDetails();
                    customComplexityDetails.setType(rs1.getString("TYPE"));
                    customComplexityDetails.setField(rs1.getString("FIELD"));
                    customComplexityDetails.setComplexityValue(rs1.getInt("COMPLEXITY_VALUE"));
                    customComplexityDetailsList.add(customComplexityDetails);
                }
            }
            PreparedStatement insertGraphQLComplexityStatement = connection.prepareStatement(SQLConstants.APIRevisionSqlConstants.INSERT_GRAPHQL_COMPLEXITY_AS_CURRENT_API);
            for (CustomComplexityDetails customComplexityDetails : customComplexityDetailsList) {
                insertGraphQLComplexityStatement.setString(1, UUID.randomUUID().toString());
                insertGraphQLComplexityStatement.setInt(2, apiId);
                insertGraphQLComplexityStatement.setString(3, customComplexityDetails.getType());
                insertGraphQLComplexityStatement.setString(4, customComplexityDetails.getField());
                insertGraphQLComplexityStatement.setInt(5, customComplexityDetails.getComplexityValue());
                insertGraphQLComplexityStatement.addBatch();
            }
            insertGraphQLComplexityStatement.executeBatch();
            restoreAPIRevisionMetaDataToWorkingCopy(connection, apiRevision.getApiUUID(), apiRevision.getRevisionUUID());
            connection.commit();
        } catch (SQLException e) {
            connection.rollback();
            handleException("Failed to restore API Revision entry of API UUID " + apiRevision.getApiUUID(), e);
        }
    } catch (SQLException e) {
        handleException("Failed to restore API Revision entry of API UUID " + apiRevision.getApiUUID(), e);
    }
}
Also used : LinkedHashMap(java.util.LinkedHashMap) HashMap(java.util.HashMap) SQLException(java.sql.SQLException) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) Connection(java.sql.Connection) URITemplate(org.wso2.carbon.apimgt.api.model.URITemplate) ArrayList(java.util.ArrayList) Gson(com.google.gson.Gson) PreparedStatement(java.sql.PreparedStatement) CustomComplexityDetails(org.wso2.carbon.apimgt.api.model.graphql.queryanalysis.CustomComplexityDetails) Scope(org.wso2.carbon.apimgt.api.model.Scope) OperationPolicy(org.wso2.carbon.apimgt.api.model.OperationPolicy) ResultSet(java.sql.ResultSet) APIIdentifier(org.wso2.carbon.apimgt.api.model.APIIdentifier) ClientCertificateDTO(org.wso2.carbon.apimgt.api.dto.ClientCertificateDTO) LinkedHashSet(java.util.LinkedHashSet) HashSet(java.util.HashSet)

Example 2 with CustomComplexityDetails

use of org.wso2.carbon.apimgt.api.model.graphql.queryanalysis.CustomComplexityDetails in project carbon-apimgt by wso2.

the class ApiMgtDAO method updateComplexityDetails.

/**
 * Update custom complexity details for a particular API
 *
 * @param uuid         API uuid object to retrieve API ID
 * @param graphqlComplexityInfo GraphqlComplexityInfo object
 * @throws APIManagementException
 */
public void updateComplexityDetails(String uuid, GraphqlComplexityInfo graphqlComplexityInfo) throws APIManagementException {
    String updateCustomComplexityDetails = SQLConstants.UPDATE_CUSTOM_COMPLEXITY_DETAILS_SQL;
    try (Connection conn = APIMgtDBUtil.getConnection();
        PreparedStatement ps = conn.prepareStatement(updateCustomComplexityDetails)) {
        conn.setAutoCommit(false);
        int apiId = getAPIID(uuid, conn);
        // Entries already exists for this API_ID. Hence an update is performed.
        for (CustomComplexityDetails customComplexity : graphqlComplexityInfo.getList()) {
            ps.setInt(1, customComplexity.getComplexityValue());
            ps.setInt(2, apiId);
            ps.setString(3, customComplexity.getType());
            ps.setString(4, customComplexity.getField());
            ps.executeUpdate();
        }
        conn.commit();
    } catch (SQLException e) {
        handleException("Error while updating custom complexity details: ", e);
    }
}
Also used : SQLException(java.sql.SQLException) Connection(java.sql.Connection) PreparedStatement(java.sql.PreparedStatement) CustomComplexityDetails(org.wso2.carbon.apimgt.api.model.graphql.queryanalysis.CustomComplexityDetails)

Example 3 with CustomComplexityDetails

use of org.wso2.carbon.apimgt.api.model.graphql.queryanalysis.CustomComplexityDetails in project carbon-apimgt by wso2.

the class ApiMgtDAO method addComplexityDetails.

/**
 * Add custom complexity details for a particular API
 *
 * @param apiUuid         API uuid to retrieve API ID
 * @param graphqlComplexityInfo GraphqlComplexityInfo object
 * @throws APIManagementException
 */
public void addComplexityDetails(String apiUuid, GraphqlComplexityInfo graphqlComplexityInfo) throws APIManagementException {
    String addCustomComplexityDetails = SQLConstants.ADD_CUSTOM_COMPLEXITY_DETAILS_SQL;
    try (Connection conn = APIMgtDBUtil.getConnection();
        PreparedStatement ps = conn.prepareStatement(addCustomComplexityDetails)) {
        conn.setAutoCommit(false);
        int apiId = getAPIID(apiUuid, conn);
        for (CustomComplexityDetails customComplexity : graphqlComplexityInfo.getList()) {
            UUID uuid = UUID.randomUUID();
            String randomUUIDString = uuid.toString();
            ps.setString(1, randomUUIDString);
            ps.setInt(2, apiId);
            ps.setString(3, customComplexity.getType());
            ps.setString(4, customComplexity.getField());
            ps.setInt(5, customComplexity.getComplexityValue());
            ps.executeUpdate();
        }
        conn.commit();
    } catch (SQLException ex) {
        handleException("Error while adding custom complexity details: ", ex);
    }
}
Also used : SQLException(java.sql.SQLException) Connection(java.sql.Connection) PreparedStatement(java.sql.PreparedStatement) UUID(java.util.UUID) CustomComplexityDetails(org.wso2.carbon.apimgt.api.model.graphql.queryanalysis.CustomComplexityDetails)

Example 4 with CustomComplexityDetails

use of org.wso2.carbon.apimgt.api.model.graphql.queryanalysis.CustomComplexityDetails in project carbon-apimgt by wso2.

the class GraphqlQueryAnalysisMappingUtil method fromGraphqlComplexityInfotoDTO.

/**
 * Converts a GraphqlComplexityInfo object into a DTO object.
 *
 * @param graphqlComplexityInfo GraphqlComplexityInfo object
 * @return a new GraphQLQueryComplexityInfoDTO object corresponding to given GraphqlComplexityInfo object
 */
public static GraphQLQueryComplexityInfoDTO fromGraphqlComplexityInfotoDTO(GraphqlComplexityInfo graphqlComplexityInfo) {
    GraphQLQueryComplexityInfoDTO graphQLQueryComplexityInfoDTO = new GraphQLQueryComplexityInfoDTO();
    List<GraphQLCustomComplexityInfoDTO> graphQLCustomComplexityInfoDTOList = new ArrayList<GraphQLCustomComplexityInfoDTO>();
    for (CustomComplexityDetails customComplexityDetails : graphqlComplexityInfo.getList()) {
        GraphQLCustomComplexityInfoDTO graphQLCustomComplexityInfoDTO = new GraphQLCustomComplexityInfoDTO();
        graphQLCustomComplexityInfoDTO.setType(customComplexityDetails.getType());
        graphQLCustomComplexityInfoDTO.setField(customComplexityDetails.getField());
        graphQLCustomComplexityInfoDTO.setComplexityValue(customComplexityDetails.getComplexityValue());
        graphQLCustomComplexityInfoDTOList.add(graphQLCustomComplexityInfoDTO);
    }
    graphQLQueryComplexityInfoDTO.setList(graphQLCustomComplexityInfoDTOList);
    return graphQLQueryComplexityInfoDTO;
}
Also used : ArrayList(java.util.ArrayList) GraphQLCustomComplexityInfoDTO(org.wso2.carbon.apimgt.rest.api.publisher.v1.dto.GraphQLCustomComplexityInfoDTO) CustomComplexityDetails(org.wso2.carbon.apimgt.api.model.graphql.queryanalysis.CustomComplexityDetails) GraphQLQueryComplexityInfoDTO(org.wso2.carbon.apimgt.rest.api.publisher.v1.dto.GraphQLQueryComplexityInfoDTO)

Example 5 with CustomComplexityDetails

use of org.wso2.carbon.apimgt.api.model.graphql.queryanalysis.CustomComplexityDetails in project carbon-apimgt by wso2.

the class GraphQLSchemaDefinition method policyDefinitionToJson.

/**
 * Method to convert GraphqlComplexityInfo object to a JSONObject
 *
 * @param graphqlComplexityInfo GraphqlComplexityInfo object
 * @return json object which contains the policy definition
 */
public JSONObject policyDefinitionToJson(GraphqlComplexityInfo graphqlComplexityInfo) {
    JSONObject policyDefinition = new JSONObject();
    HashMap<String, HashMap<String, Integer>> customComplexityMap = new HashMap<>();
    List<CustomComplexityDetails> list = graphqlComplexityInfo.getList();
    for (CustomComplexityDetails customComplexityDetails : list) {
        String type = customComplexityDetails.getType();
        String field = customComplexityDetails.getField();
        int complexityValue = customComplexityDetails.getComplexityValue();
        if (customComplexityMap.containsKey(type)) {
            customComplexityMap.get(type).put(field, complexityValue);
        } else {
            HashMap<String, Integer> complexityValueMap = new HashMap<>();
            complexityValueMap.put(field, complexityValue);
            customComplexityMap.put(type, complexityValueMap);
        }
    }
    Map<String, Map<String, Object>> customComplexityObject = new LinkedHashMap<>(customComplexityMap.size());
    for (HashMap.Entry<String, HashMap<String, Integer>> entry : customComplexityMap.entrySet()) {
        HashMap<String, Integer> fieldValueMap = entry.getValue();
        String type = entry.getKey();
        Map<String, Object> fieldValueObject = new LinkedHashMap<>(fieldValueMap.size());
        for (HashMap.Entry<String, Integer> subEntry : fieldValueMap.entrySet()) {
            String field = subEntry.getKey();
            int complexityValue = subEntry.getValue();
            fieldValueObject.put(field, complexityValue);
        }
        customComplexityObject.put(type, fieldValueObject);
    }
    policyDefinition.put(APIConstants.QUERY_ANALYSIS_COMPLEXITY, customComplexityObject);
    return policyDefinition;
}
Also used : CustomComplexityDetails(org.wso2.carbon.apimgt.api.model.graphql.queryanalysis.CustomComplexityDetails) JSONObject(org.json.simple.JSONObject) JSONObject(org.json.simple.JSONObject)

Aggregations

CustomComplexityDetails (org.wso2.carbon.apimgt.api.model.graphql.queryanalysis.CustomComplexityDetails)11 ArrayList (java.util.ArrayList)8 Connection (java.sql.Connection)7 PreparedStatement (java.sql.PreparedStatement)7 SQLException (java.sql.SQLException)7 ResultSet (java.sql.ResultSet)5 Gson (com.google.gson.Gson)4 ByteArrayInputStream (java.io.ByteArrayInputStream)4 InputStream (java.io.InputStream)4 HashMap (java.util.HashMap)4 LinkedHashMap (java.util.LinkedHashMap)4 ClientCertificateDTO (org.wso2.carbon.apimgt.api.dto.ClientCertificateDTO)4 OperationPolicy (org.wso2.carbon.apimgt.api.model.OperationPolicy)4 Scope (org.wso2.carbon.apimgt.api.model.Scope)4 URITemplate (org.wso2.carbon.apimgt.api.model.URITemplate)4 GraphqlComplexityInfo (org.wso2.carbon.apimgt.api.model.graphql.queryanalysis.GraphqlComplexityInfo)3 Timestamp (java.sql.Timestamp)2 HashSet (java.util.HashSet)2 LinkedHashSet (java.util.LinkedHashSet)2 APIIdentifier (org.wso2.carbon.apimgt.api.model.APIIdentifier)2