Hi Joe,

We are using publishAPI method in [1] to publish APIs. For that we are
populating the API object (org.wso2.carbon.apimgt.api.model) using the
custom parameters defined in web.xml of jax-rs webapp. When constructing
the API object we populate the scopes property with "Scope" objects.

[1].
https://github.com/wso2/carbon-device-mgt/blob/master/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/src/main/java/org/wso2/carbon/apimgt/webapp/publisher/APIPublisherServiceImpl.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.

On Fri, Sep 18, 2015 at 10:53 AM, Joseph Fonseka <jos...@wso2.com> wrote:

> Hi Harshan
>
> How do you add/update APIs do you use are jaggery APIs or do you invoke
> OSGi services. If you are using jaggery APIs can you send the request
> payload.
>
>
>
> Thanks
> Jo
>
>
>
> On Fri, Sep 18, 2015 at 9:35 AM, Prabath Abeysekera <praba...@wso2.com>
> wrote:
>
>>
>> On Fri, Sep 18, 2015 at 9:25 AM, Nuwan Dias <nuw...@wso2.com> wrote:
>>
>>> Adding Jo
>>>
>>> On Thu, Sep 17, 2015 at 5:27 PM, Harshan Liyanage <hars...@wso2.com>
>>> wrote:
>>>
>>>> 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()?
>>>>
>>>
>> Well, IMO, if there's some change introduced to the "resources" as part
>> of the "update" event, then it might make sense to remove scopes, etc just
>> to make sure that the changes introduced wouldn't make it possible for
>> people who are not intended to have access to those, get access to them. If
>> not, this looks like a bug.
>>
>>
>>>
>>>> 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();
>>>>
>>>>
>> BTW, the above line seems redundant and inappropriate as prepStmt is
>> anyway closed in the finally block. ;). Also, there seem to be a few
>> formatting issues as well, which need to be fixed. ;)
>>
>>
>>> 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.
>>>>
>>>
>>>
>>>
>>> --
>>> Nuwan Dias
>>>
>>> Technical Lead - WSO2, Inc. http://wso2.com
>>> email : nuw...@wso2.com
>>> Phone : +94 777 775 729
>>>
>>
>>
>> Cheers,
>> Prabath
>> --
>> Prabath Abeysekara
>> Technical Lead
>> WSO2 Inc.
>> Email: praba...@wso2.com
>> Mobile: +94774171471
>>
>
>
>
> --
>
> --
> *Joseph Fonseka*
> WSO2 Inc.; http://wso2.com
> lean.enterprise.middleware
>
> mobile: +94 772 512 430
> skype: jpfonseka
>
> * <http://lk.linkedin.com/in/rumeshbandara>*
>
>
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to