Hi, We have a requirement to automatically publish APIs when the EMM server starts-up. We need to also add the scopes to APIs when its get published. For that we are calling addAPI method if its a new API or updateAPI method if that API already exists (in APIProvider implementation).
This is working fine in the first server start-up. But when I restart the EMM server all the added scopes to an API is lost from related database tables. After analyzing the issue I've found out that the updateScopes method in [1] deletes all existing scopes of an API and then adding the updated scopes to the API using URI templates (api.getUriTemplates()). But in addAPI method, it uses api.getScopes() to add the scope data to the database. If I change the line "addScopes(api.getUriTemplates(),apiId,tenantId);" to "addScopes(api.getScopes(),apiId,tenantId);" this functionality works fine. So is there a specific reason to populate scopes of a updated API using api.getUriTemplates()? public void updateScopes(API api, int tenantId) throws APIManagementException { Connection connection = null; PreparedStatement prepStmt = null; int apiId = -1; String deleteScopes = "DELETE FROM IDN_OAUTH2_SCOPE WHERE SCOPE_ID IN ( SELECT SCOPE_ID FROM AM_API_SCOPES WHERE API_ID = ? )"; try { connection = APIMgtDBUtil.getConnection(); connection.setAutoCommit(false); apiId = getAPIID(api.getId(),connection); if (apiId == -1) { //application addition has failed return; } prepStmt = connection.prepareStatement(deleteScopes); prepStmt.setInt(1,apiId); prepStmt.execute(); prepStmt.close(); connection.commit(); } catch (SQLException e) { handleException("Error while deleting Scopes for API : " + api.getId().toString(), e); } finally { APIMgtDBUtil.closeAllConnections(prepStmt, connection, null); } //addScopes(api.getScopes(),apiId,tenantId); addScopes(api.getUriTemplates(),apiId,tenantId); } [1]. https://github.com/wso2/carbon-apimgt/blob/435163dd0f60058d8cfecbb0c4230984f0882fb6/components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/dao/ApiMgtDAO.java Thanks, Harshan Liyanage Software Engineer Mobile: *+94724423048* Email: hars...@wso2.com Blog : http://harshanliyanage.blogspot.com/ *WSO2, Inc. :** wso2.com <http://wso2.com/>* lean.enterprise.middleware.
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev