Skip to content

Commit c4a6d3a

Browse files
author
Chamila
committed
Add org id to application property bag
1 parent f6d7bf1 commit c4a6d3a

File tree

3 files changed

+48
-6
lines changed

3 files changed

+48
-6
lines changed

components/apimgt/org.wso2.carbon.apimgt.api/src/main/java/org/wso2/carbon/apimgt/api/APIManager.java

+9
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,15 @@ void addOrUpdateComplexityDetails(String uuid, GraphqlComplexityInfo graphqlComp
277277
* @throws org.wso2.carbon.apimgt.api.APIManagementException if failed add subscriber
278278
*/
279279
void addSubscriber(String username, String groupingId) throws APIManagementException;
280+
281+
/**
282+
* Creates a new subscriber given the username, the grouping Id and organization
283+
*
284+
* @param username Username of the subscriber to be added
285+
* @param groupingId - the groupId to which the subscriber belongs to
286+
* @throws org.wso2.carbon.apimgt.api.APIManagementException if failed add subscriber
287+
*/
288+
void addSubscriber(String username, String groupingId, String organization) throws APIManagementException;
280289

281290
/**
282291
* Updates the details of the given subscriber.

components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/AbstractAPIManager.java

+10-2
Original file line numberDiff line numberDiff line change
@@ -607,6 +607,11 @@ public boolean isApiNameWithDifferentCaseExist(String apiName, String organizati
607607

608608
public void addSubscriber(String username, String groupingId)
609609
throws APIManagementException {
610+
addSubscriber(username, groupingId, null);
611+
}
612+
613+
public void addSubscriber(String username, String groupingId, String organization)
614+
throws APIManagementException {
610615

611616
Subscriber subscriber = new Subscriber(username);
612617
subscriber.setSubscribedDate(new Date());
@@ -619,7 +624,7 @@ public void addSubscriber(String username, String groupingId)
619624
if (APIUtil.isDefaultApplicationCreationEnabled() &&
620625
!APIUtil.isDefaultApplicationCreationDisabledForTenant(getTenantDomain(username))) {
621626
// Add a default application once subscriber is added
622-
addDefaultApplicationForSubscriber(subscriber);
627+
addDefaultApplicationForSubscriber(subscriber, organization);
623628
}
624629
} catch (APIManagementException e) {
625630
String msg = "Error while adding the subscriber " + subscriber.getName();
@@ -641,7 +646,7 @@ protected String getTenantDomain(String username) {
641646
* @param subscriber Subscriber
642647
* @throws APIManagementException if an error occurs while adding default application
643648
*/
644-
private void addDefaultApplicationForSubscriber(Subscriber subscriber) throws APIManagementException {
649+
private void addDefaultApplicationForSubscriber(Subscriber subscriber, String organization) throws APIManagementException {
645650

646651
Application defaultApp = new Application(APIConstants.DEFAULT_APPLICATION_NAME, subscriber);
647652
defaultApp.setTier(APIUtil.getDefaultApplicationLevelPolicy(subscriber.getTenantId()));
@@ -650,6 +655,9 @@ private void addDefaultApplicationForSubscriber(Subscriber subscriber) throws AP
650655
defaultApp.setTokenType(APIConstants.TOKEN_TYPE_JWT);
651656
defaultApp.setUUID(UUID.randomUUID().toString());
652657
defaultApp.setDescription(APIConstants.DEFAULT_APPLICATION_DESCRIPTION);
658+
if (organization != null) {
659+
defaultApp.setSubOrganization(organization);
660+
}
653661
int applicationId = apiMgtDAO.addApplication(defaultApp, subscriber.getName(), tenantDomain);
654662

655663
ApplicationEvent applicationEvent = new ApplicationEvent(UUID.randomUUID().toString(),

components/apimgt/org.wso2.carbon.apimgt.rest.api.util/src/main/java/org/wso2/carbon/apimgt/rest/api/util/interceptors/SubscriberRegistrationInterceptor.java

+29-4
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,27 @@
1616

1717
package org.wso2.carbon.apimgt.rest.api.util.interceptors;
1818

19+
import org.apache.commons.lang3.StringUtils;
1920
import org.apache.commons.logging.Log;
2021
import org.apache.commons.logging.LogFactory;
2122
import org.apache.cxf.message.Message;
2223
import org.apache.cxf.phase.AbstractPhaseInterceptor;
2324
import org.apache.cxf.phase.Phase;
2425
import org.wso2.carbon.apimgt.api.APIConsumer;
2526
import org.wso2.carbon.apimgt.api.APIManagementException;
27+
import org.wso2.carbon.apimgt.api.model.Application;
28+
import org.wso2.carbon.apimgt.api.model.OrganizationInfo;
2629
import org.wso2.carbon.apimgt.api.model.Subscriber;
2730
import org.wso2.carbon.apimgt.impl.APIConstants;
2831
import org.wso2.carbon.apimgt.impl.utils.APIUtil;
32+
import org.wso2.carbon.apimgt.impl.utils.ApplicationUtils;
2933
import org.wso2.carbon.apimgt.rest.api.common.RestApiCommonUtil;
3034
import org.wso2.carbon.apimgt.rest.api.common.RestApiConstants;
3135
import org.wso2.carbon.apimgt.rest.api.util.MethodStats;
3236
import org.wso2.carbon.apimgt.rest.api.util.utils.RestApiUtil;
3337
import org.wso2.carbon.context.PrivilegedCarbonContext;
3438
import org.wso2.carbon.registry.core.exceptions.RegistryException;
39+
import org.wso2.carbon.utils.multitenancy.MultitenantUtils;
3540

3641
import java.util.Arrays;
3742
import javax.cache.Cache;
@@ -76,6 +81,11 @@ public void handleMessage(Message message) {
7681
// check the existence in the database
7782
String groupId = RestApiUtil.getLoggedInUserGroupId();
7883
String tenantDomain = RestApiCommonUtil.getLoggedInUserTenantDomain();
84+
OrganizationInfo orgInfo = (OrganizationInfo) message.get(RestApiConstants.ORGANIZATION_INFO);
85+
String organizationId = null;
86+
if (orgInfo != null && !StringUtils.isEmpty(orgInfo.getOrganizationId())) {
87+
organizationId = orgInfo.getOrganizationId();
88+
}
7989
try {
8090
//takes a consumer object using the user set in thread local carbon context
8191
APIConsumer apiConsumer = RestApiCommonUtil.getLoggedInUserConsumer();
@@ -98,7 +108,7 @@ public void handleMessage(Message message) {
98108
if (!APIConstants.SUPER_TENANT_DOMAIN.equalsIgnoreCase(tenantDomain)) {
99109
loadTenantRegistry();
100110
}
101-
apiConsumer.addSubscriber(username, groupId);
111+
apiConsumer.addSubscriber(username, groupId, organizationId);
102112

103113
// The subscriber object added here is not a complete subscriber object. It will only contain
104114
// username
@@ -108,9 +118,24 @@ public void handleMessage(Message message) {
108118
}
109119
}
110120
}
111-
} else {
112-
subscriberCache.put(username, subscriber);
113-
}
121+
} else {
122+
if (organizationId != null && APIUtil.isDefaultApplicationCreationEnabled() && !APIUtil
123+
.isDefaultApplicationCreationDisabledForTenant(MultitenantUtils.getTenantDomain(username))) {
124+
Application defaultAPP = ApplicationUtils.retrieveApplication(APIConstants.DEFAULT_APPLICATION_NAME,
125+
username, groupId);
126+
if (defaultAPP.getSubOrganization() == null) {
127+
synchronized ((username + LOCK_POSTFIX).intern()) {
128+
defaultAPP = ApplicationUtils.retrieveApplication(APIConstants.DEFAULT_APPLICATION_NAME,
129+
username, groupId);
130+
if (defaultAPP.getSubOrganization() == null) {
131+
defaultAPP.setSubOrganization(organizationId);
132+
apiConsumer.updateApplication(defaultAPP);
133+
}
134+
}
135+
}
136+
}
137+
subscriberCache.put(username, subscriber);
138+
}
114139
} catch (APIManagementException e) {
115140
RestApiUtil.handleInternalServerError("Unable to add the subscriber " + username, e, logger);
116141
}

0 commit comments

Comments
 (0)