Search in sources :

Example 46 with Scope

use of org.wso2.carbon.apimgt.api.model.Scope in project carbon-apimgt by wso2.

the class AsyncApiParser method buildURITemplate.

private URITemplate buildURITemplate(String target, String verb, Aai20Operation operation, Set<Scope> scopes, Aai20ChannelItem channel) throws APIManagementException {
    URITemplate template = new URITemplate();
    template.setHTTPVerb(verb);
    template.setHttpVerbs(verb);
    template.setUriTemplate(target);
    Extension authTypeExtension = channel.getExtension(APIConstants.SWAGGER_X_AUTH_TYPE);
    if (authTypeExtension != null && authTypeExtension.value instanceof String) {
        template.setAuthType(authTypeExtension.value.toString());
    }
    List<String> opScopes = getScopeOfOperations(operation);
    if (!opScopes.isEmpty()) {
        if (opScopes.size() == 1) {
            String firstScope = opScopes.get(0);
            Scope scope = APIUtil.findScopeByKey(scopes, firstScope);
            if (scope == null) {
                throw new APIManagementException("Scope '" + firstScope + "' not found.");
            }
            template.setScope(scope);
            template.setScopes(scope);
        } else {
            for (String scopeName : opScopes) {
                Scope scope = APIUtil.findScopeByKey(scopes, scopeName);
                if (scope == null) {
                    throw new APIManagementException("Resource Scope '" + scopeName + "' not found.");
                }
                template.setScopes(scope);
            }
        }
    }
    return template;
}
Also used : Extension(io.apicurio.datamodels.core.models.Extension) Scope(org.wso2.carbon.apimgt.api.model.Scope) APIManagementException(org.wso2.carbon.apimgt.api.APIManagementException) URITemplate(org.wso2.carbon.apimgt.api.model.URITemplate)

Example 47 with Scope

use of org.wso2.carbon.apimgt.api.model.Scope in project carbon-apimgt by wso2.

the class ScopesDAO method deleteScopes.

public boolean deleteScopes(Set<String> scopes, int tenantId) throws APIManagementException {
    try (Connection connection = APIMgtDBUtil.getConnection()) {
        connection.setAutoCommit(false);
        try (PreparedStatement preparedStatement = connection.prepareStatement(SQLConstants.DELETE_SCOPE_SQL)) {
            for (String scope : scopes) {
                preparedStatement.setString(1, scope);
                preparedStatement.setInt(2, tenantId);
                preparedStatement.addBatch();
            }
            preparedStatement.executeBatch();
            connection.commit();
            return true;
        } catch (SQLException e) {
            connection.rollback();
            throw new APIManagementException("Error while deleting scopes from db", e, ExceptionCodes.INTERNAL_ERROR);
        }
    } catch (SQLException e) {
        throw new APIManagementException("Error while retrieving database connection", e, ExceptionCodes.INTERNAL_ERROR);
    }
}
Also used : APIManagementException(org.wso2.carbon.apimgt.api.APIManagementException) SQLException(java.sql.SQLException) Connection(java.sql.Connection) PreparedStatement(java.sql.PreparedStatement)

Example 48 with Scope

use of org.wso2.carbon.apimgt.api.model.Scope in project carbon-apimgt by wso2.

the class SystemScopesApiServiceImpl method systemScopesScopeNameGet.

public Response systemScopesScopeNameGet(String scope, String username, MessageContext messageContext) throws APIManagementException {
    ScopeSettingsDTO scopeSettingsDTO = new ScopeSettingsDTO();
    APIAdmin apiAdmin = new APIAdminImpl();
    String decodedScope = new String(Base64.getDecoder().decode(scope));
    boolean existence;
    if (username == null) {
        existence = apiAdmin.isScopeExists(RestApiCommonUtil.getLoggedInUsername(), decodedScope);
        if (existence) {
            scopeSettingsDTO.setName(decodedScope);
        } else {
            throw new APIManagementException("Scope Not Found. Scope : " + decodedScope, ExceptionCodes.SCOPE_NOT_FOUND);
        }
    } else {
        existence = apiAdmin.isScopeExistsForUser(username, decodedScope);
        if (existence) {
            scopeSettingsDTO.setName(decodedScope);
        } else {
            throw new APIManagementException("User does not have scope. Username : " + username + " Scope : " + decodedScope, ExceptionCodes.SCOPE_NOT_FOUND_FOR_USER);
        }
    }
    return Response.ok().entity(scopeSettingsDTO).build();
}
Also used : APIManagementException(org.wso2.carbon.apimgt.api.APIManagementException) APIAdmin(org.wso2.carbon.apimgt.api.APIAdmin) APIAdminImpl(org.wso2.carbon.apimgt.impl.APIAdminImpl) ScopeSettingsDTO(org.wso2.carbon.apimgt.rest.api.admin.v1.dto.ScopeSettingsDTO)

Example 49 with Scope

use of org.wso2.carbon.apimgt.api.model.Scope 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 50 with Scope

use of org.wso2.carbon.apimgt.api.model.Scope in project carbon-apimgt by wso2.

the class ApiMgtDAO method deleteAPI.

public void deleteAPI(String uuid) throws APIManagementException {
    Connection connection = null;
    PreparedStatement prepStmt = null;
    int id;
    String deleteLCEventQuery = SQLConstants.REMOVE_FROM_API_LIFECYCLE_SQL;
    String deleteAuditAPIMapping = SQLConstants.REMOVE_SECURITY_AUDIT_MAP_SQL;
    String deleteCommentQuery = SQLConstants.REMOVE_FROM_API_COMMENT_SQL;
    String deleteRatingsQuery = SQLConstants.REMOVE_FROM_API_RATING_SQL;
    String deleteSubscriptionQuery = SQLConstants.REMOVE_FROM_API_SUBSCRIPTION_SQL;
    String deleteExternalAPIStoresQuery = SQLConstants.REMOVE_FROM_EXTERNAL_STORES_SQL;
    String deleteAPIQuery = SQLConstants.REMOVE_FROM_API_SQL_BY_UUID;
    String deleteResourceScopeMappingsQuery = SQLConstants.REMOVE_RESOURCE_SCOPE_URL_MAPPING_SQL;
    String deleteURLTemplateQuery = SQLConstants.REMOVE_FROM_API_URL_MAPPINGS_SQL;
    String deleteGraphqlComplexityQuery = SQLConstants.REMOVE_FROM_GRAPHQL_COMPLEXITY_SQL;
    try {
        connection = APIMgtDBUtil.getConnection();
        connection.setAutoCommit(false);
        APIIdentifier identifier = ApiMgtDAO.getInstance().getAPIIdentifierFromUUID(uuid);
        id = getAPIID(uuid, connection);
        prepStmt = connection.prepareStatement(deleteAuditAPIMapping);
        prepStmt.setInt(1, id);
        prepStmt.execute();
        // If exception occurs at execute, this statement will close in finally else here
        prepStmt.close();
        prepStmt = connection.prepareStatement(deleteGraphqlComplexityQuery);
        prepStmt.setInt(1, id);
        prepStmt.execute();
        // If exception occurs at execute, this statement will close in finally else here
        prepStmt.close();
        prepStmt = connection.prepareStatement(deleteSubscriptionQuery);
        prepStmt.setInt(1, id);
        prepStmt.execute();
        // If exception occurs at execute, this statement will close in finally else here
        prepStmt.close();
        // Delete all comments associated with given API
        deleteAPIComments(id, uuid, connection);
        prepStmt = connection.prepareStatement(deleteRatingsQuery);
        prepStmt.setInt(1, id);
        prepStmt.execute();
        // If exception occurs at execute, this statement will close in finally else here
        prepStmt.close();
        prepStmt = connection.prepareStatement(deleteLCEventQuery);
        prepStmt.setInt(1, id);
        prepStmt.execute();
        // If exception occurs at execute, this statement will close in finally else here
        prepStmt.close();
        // Delete all external APIStore details associated with a given API
        prepStmt = connection.prepareStatement(deleteExternalAPIStoresQuery);
        prepStmt.setInt(1, id);
        prepStmt.execute();
        // If exception occurs at execute, this statement will close in finally else here
        prepStmt.close();
        // Delete resource scope mappings of the API
        prepStmt = connection.prepareStatement(deleteResourceScopeMappingsQuery);
        prepStmt.setInt(1, id);
        prepStmt.execute();
        // If exception occurs at execute, this statement will close in finally else here
        prepStmt.close();
        // Delete URL Templates (delete the resource scope mappings on delete cascade)
        prepStmt = connection.prepareStatement(deleteURLTemplateQuery);
        prepStmt.setInt(1, id);
        prepStmt.execute();
        deleteAllAPISpecificOperationPoliciesByAPIUUID(connection, uuid, null);
        prepStmt = connection.prepareStatement(deleteAPIQuery);
        prepStmt.setString(1, uuid);
        prepStmt.execute();
        // If exception occurs at execute, this statement will close in finally else here
        prepStmt.close();
        String curDefaultVersion = getDefaultVersion(identifier);
        String pubDefaultVersion = getPublishedDefaultVersion(identifier);
        if (identifier.getVersion().equals(curDefaultVersion)) {
            ArrayList<APIIdentifier> apiIdList = new ArrayList<APIIdentifier>() {

                {
                    add(identifier);
                }
            };
            removeAPIFromDefaultVersion(apiIdList, connection);
        } else if (identifier.getVersion().equals(pubDefaultVersion)) {
            setPublishedDefVersion(identifier, connection, null);
        }
        connection.commit();
    } catch (SQLException e) {
        handleException("Error while removing the API with UUID: " + uuid + " from the database", e);
    } finally {
        APIMgtDBUtil.closeAllConnections(prepStmt, connection, null);
    }
}
Also used : SQLException(java.sql.SQLException) Connection(java.sql.Connection) ArrayList(java.util.ArrayList) PreparedStatement(java.sql.PreparedStatement) APIIdentifier(org.wso2.carbon.apimgt.api.model.APIIdentifier)

Aggregations

Scope (org.wso2.carbon.apimgt.api.model.Scope)97 HashMap (java.util.HashMap)76 ArrayList (java.util.ArrayList)58 APIManagementException (org.wso2.carbon.apimgt.api.APIManagementException)50 Scope (org.wso2.carbon.apimgt.core.models.Scope)41 Map (java.util.Map)39 URITemplate (org.wso2.carbon.apimgt.api.model.URITemplate)39 LinkedHashSet (java.util.LinkedHashSet)32 LinkedHashMap (java.util.LinkedHashMap)29 HashSet (java.util.HashSet)26 RestVariable (org.wso2.carbon.bpmn.rest.engine.variable.RestVariable)25 List (java.util.List)24 Test (org.testng.annotations.Test)23 JSONObject (org.json.simple.JSONObject)22 APIManagementException (org.wso2.carbon.apimgt.core.exception.APIManagementException)19 PreparedStatement (java.sql.PreparedStatement)17 APIIdentifier (org.wso2.carbon.apimgt.api.model.APIIdentifier)17 SQLException (java.sql.SQLException)16 Gson (com.google.gson.Gson)15 Connection (java.sql.Connection)15