use of org.wso2.ballerinalang.compiler.codegen.CodeGenerator.VariableIndex.Kind.LOCAL in project carbon-apimgt by wso2.
the class DefaultClaimsRetriever method getClaims.
public SortedMap<String, String> getClaims(String endUserName) throws APIManagementException {
String strEnabledJWTClaimCache = ServiceReferenceHolder.getInstance().getAPIManagerConfigurationService().getAPIManagerConfiguration().getFirstProperty(APIConstants.ENABLED_JWT_CLAIM_CACHE);
boolean enabledJWTClaimCache = true;
if (strEnabledJWTClaimCache != null) {
enabledJWTClaimCache = Boolean.valueOf(strEnabledJWTClaimCache);
}
SortedMap<String, String> claimValues;
if (endUserName != null) {
int tenantId = APIUtil.getTenantId(endUserName);
String tenantAwareUserName = MultitenantUtils.getTenantAwareUsername(endUserName);
// check in local cache
String key = endUserName + ':' + tenantId;
ClaimCacheKey cacheKey = new ClaimCacheKey(key);
Object result = null;
if (enabledJWTClaimCache) {
result = getClaimsLocalCache().get(cacheKey);
}
if (result != null) {
return ((UserClaims) result).getClaimValues();
} else {
claimValues = APIUtil.getClaims(endUserName, tenantId, dialectURI);
UserClaims userClaims = new UserClaims(claimValues);
// add to cache
if (enabledJWTClaimCache) {
getClaimsLocalCache().put(cacheKey, userClaims);
}
return claimValues;
}
}
return null;
}
use of org.wso2.ballerinalang.compiler.codegen.CodeGenerator.VariableIndex.Kind.LOCAL in project carbon-apimgt by wso2.
the class APIConsumerImplTest method testGetPublishedAPIsByProvider1.
@Test
public void testGetPublishedAPIsByProvider1() throws APIManagementException, RegistryException, org.wso2.carbon.user.core.UserStoreException {
APIConsumerImpl apiConsumer = new APIConsumerImplWrapper(userRegistry, apiMgtDAO);
String providerId = "1";
API api = new API(new APIIdentifier(API_PROVIDER, SAMPLE_API_NAME, SAMPLE_API_VERSION));
API api1 = new API(new APIIdentifier(API_PROVIDER, "pizza_api", "2.0.0"));
PowerMockito.when(APIUtil.isAllowDisplayMultipleVersions()).thenReturn(true, false);
PowerMockito.when(APIUtil.isAllowDisplayAPIsWithMultipleStatus()).thenReturn(true, false);
PowerMockito.when(APIUtil.getArtifactManager(userRegistry, APIConstants.API_KEY)).thenReturn(genericArtifactManager);
PowerMockito.when(APIUtil.getMountedPath(Mockito.any(), Mockito.anyString())).thenReturn("system/governance");
PowerMockito.when(APIUtil.getAPI(Mockito.any())).thenReturn(api);
PowerMockito.when(APIUtil.replaceEmailDomainBack(Mockito.anyString())).thenReturn(providerId);
PowerMockito.when(APIUtil.getLcStateFromArtifact((GovernanceArtifact) Mockito.any())).thenReturn(APIConstants.PUBLISHED);
GenericArtifact genericArtifact1 = new GenericArtifactImpl(new QName("local"), "artifact1");
GenericArtifact genericArtifact2 = new GenericArtifactImpl(new QName("local"), "artifact2");
GenericArtifact[] genericArtifacts = new GenericArtifact[] { genericArtifact1, genericArtifact2 };
Mockito.when(genericArtifactManager.findGenericArtifacts((Map<String, List<String>>) Mockito.any())).thenThrow(GovernanceException.class).thenReturn(genericArtifacts);
PowerMockito.mockStatic(GovernanceUtils.class);
PowerMockito.when(GovernanceUtils.getArtifactPath(Mockito.any(), Mockito.anyString())).thenReturn("/path1");
PowerMockito.when(RegistryUtils.getAbsolutePath(Mockito.any(), Mockito.anyString())).thenReturn("/path1");
Assert.assertNull(apiConsumer.getPublishedAPIsByProvider("1", "test_user", 5, API_PROVIDER, "John"));
Assert.assertEquals(0, apiConsumer.getPublishedAPIsByProvider("1", "test_user", 5, API_PROVIDER, "John").size());
Mockito.when(authorizationManager.isUserAuthorized(Mockito.anyString(), Mockito.anyString(), Mockito.anyString())).thenReturn(true);
Resource resource = new ResourceImpl();
resource.setUUID(UUID.randomUUID().toString());
Mockito.when(userRegistry.get(Mockito.anyString())).thenReturn(resource);
GenericArtifact genericArtifact = Mockito.mock(GenericArtifactImpl.class);
Mockito.when(genericArtifactManager.getGenericArtifact(Mockito.anyString())).thenReturn(genericArtifact);
Assert.assertEquals(1, apiConsumer.getPublishedAPIsByProvider("1", "test_user", 1, API_PROVIDER, "John").size());
api.setVisibility("specific_to_roles");
PowerMockito.when(MultitenantUtils.getTenantDomain(Mockito.anyString())).thenReturn("carbon.super", "carbon.super", SAMPLE_TENANT_DOMAIN_1);
PowerMockito.when(APIUtil.getAPI((GenericArtifact) Mockito.any())).thenReturn(api, api1);
Assert.assertEquals(1, apiConsumer.getPublishedAPIsByProvider("1", "test_user", 5, API_PROVIDER, "John").size());
Mockito.when(authorizationManager.isRoleAuthorized(Mockito.anyString(), Mockito.anyString(), Mockito.anyString())).thenReturn(true);
Assert.assertEquals(1, apiConsumer.getPublishedAPIsByProvider("1", "", 5, API_PROVIDER, "John").size());
}
use of org.wso2.ballerinalang.compiler.codegen.CodeGenerator.VariableIndex.Kind.LOCAL in project carbon-apimgt by wso2.
the class APIConsumerImplTest method testGetPublishedAPIsByProvider2.
@Test
public void testGetPublishedAPIsByProvider2() throws APIManagementException, RegistryException, org.wso2.carbon.user.core.UserStoreException {
APIConsumerImpl apiConsumer = new APIConsumerImplWrapper(userRegistry, apiMgtDAO);
String providerId = "2";
API api = new API(new APIIdentifier(API_PROVIDER, SAMPLE_API_NAME, SAMPLE_API_VERSION));
API api1 = new API(new APIIdentifier(API_PROVIDER, SAMPLE_API_NAME, "2.0.0"));
PowerMockito.mockStatic(APIUtil.class);
PowerMockito.when(APIUtil.isAllowDisplayMultipleVersions()).thenReturn(true, false);
PowerMockito.when(APIUtil.isAllowDisplayAPIsWithMultipleStatus()).thenReturn(true, false);
PowerMockito.when(APIUtil.getArtifactManager(userRegistry, APIConstants.API_KEY)).thenReturn(genericArtifactManager);
PowerMockito.when(APIUtil.getMountedPath(Mockito.any(), Mockito.anyString())).thenReturn("system/governance");
PowerMockito.when(APIUtil.getAPI(Mockito.any())).thenReturn(api);
PowerMockito.when(APIUtil.replaceEmailDomainBack(Mockito.anyString())).thenReturn(providerId);
PowerMockito.when(APIUtil.getLcStateFromArtifact((GovernanceArtifact) Mockito.any())).thenReturn(APIConstants.PUBLISHED);
GenericArtifact genericArtifact1 = new GenericArtifactImpl(new QName("local"), "artifact1");
GenericArtifact genericArtifact2 = new GenericArtifactImpl(new QName("local"), "artifact2");
GenericArtifact[] genericArtifacts = new GenericArtifact[] { genericArtifact1, genericArtifact2 };
Mockito.when(genericArtifactManager.findGenericArtifacts((Map<String, List<String>>) Mockito.any())).thenReturn(genericArtifacts);
PowerMockito.mockStatic(GovernanceUtils.class);
PowerMockito.when(GovernanceUtils.getArtifactPath(Mockito.any(), Mockito.anyString())).thenReturn("/path1");
PowerMockito.when(RegistryUtils.getAbsolutePath(Mockito.any(), Mockito.anyString())).thenReturn("/path1");
Association association = new Association();
association.setDestinationPath("/destPath1");
Association association2 = new Association();
association2.setDestinationPath("/destPath2");
Association[] associations = new Association[] { association, association2 };
Mockito.when(userRegistry.getAssociations(Mockito.anyString(), Mockito.anyString())).thenThrow(RegistryException.class).thenReturn(associations);
try {
apiConsumer.getPublishedAPIsByProvider("1", "test_user", 5, API_PROVIDER, "");
Assert.fail("Registry exception not thrown for error scenario");
} catch (APIManagementException e) {
Assert.assertTrue(e.getMessage().contains("Failed to get Published APIs for provider :"));
}
Assert.assertEquals(0, apiConsumer.getPublishedAPIsByProvider("1", "test_user", 2, API_PROVIDER, "").size());
Mockito.when(authorizationManager.isUserAuthorized(Mockito.anyString(), Mockito.anyString(), Mockito.anyString())).thenThrow(UserStoreException.class).thenThrow(org.wso2.carbon.user.core.UserStoreException.class).thenReturn(true);
try {
apiConsumer.getPublishedAPIsByProvider("1", "test_user", 5, API_PROVIDER, "");
Assert.fail("User store exception not thrown for error scenario");
} catch (APIManagementException e) {
Assert.assertTrue(e.getMessage().contains("Failed to get Published APIs for provider :"));
}
try {
apiConsumer.getPublishedAPIsByProvider("1", "test_user", 5, API_PROVIDER, "");
Assert.fail("User store exception not thrown for error scenario");
} catch (APIManagementException e) {
Assert.assertTrue(e.getMessage().contains("Failed to get Published APIs for provider :"));
}
Resource resource = new ResourceImpl();
resource.setUUID(UUID.randomUUID().toString());
Mockito.when(userRegistry.get(Mockito.anyString())).thenReturn(resource);
GenericArtifact genericArtifact = Mockito.mock(GenericArtifactImpl.class);
Mockito.when(genericArtifact.getLifecycleState(Mockito.anyString())).thenReturn(APIConstants.PUBLISHED);
Mockito.when(genericArtifactManager.getGenericArtifact(Mockito.anyString())).thenReturn(genericArtifact);
Assert.assertEquals(1, apiConsumer.getPublishedAPIsByProvider("1", "test_user", 1, API_PROVIDER, "").size());
PowerMockito.when(APIUtil.getAPI((GenericArtifact) Mockito.any())).thenReturn(api, api1);
Assert.assertEquals(1, apiConsumer.getPublishedAPIsByProvider("1", "test_user", 5, API_PROVIDER, "").size());
PowerMockito.when(APIUtil.isAllowDisplayAPIsWithMultipleStatus()).thenReturn(true);
Set<API> apiSet = apiConsumer.getPublishedAPIsByProvider("1", "test_user", 5, API_PROVIDER, "");
Assert.assertEquals(1, apiSet.size());
Assert.assertTrue(apiSet.contains(api1));
String apiOwner = "Smith";
PowerMockito.when(APIUtil.replaceEmailDomainBack(apiOwner)).thenReturn(apiOwner);
api.setApiOwner("John");
PowerMockito.when(APIUtil.isAllowDisplayMultipleVersions()).thenReturn(true);
Assert.assertEquals(1, apiConsumer.getPublishedAPIsByProvider(apiOwner, "test_user", 1, apiOwner, "").size());
Assert.assertEquals(0, apiConsumer.getPublishedAPIsByProvider("1", "test_user", 1, apiOwner, "").size());
}
use of org.wso2.ballerinalang.compiler.codegen.CodeGenerator.VariableIndex.Kind.LOCAL in project carbon-apimgt by wso2.
the class APIManagerExtensionHandler method mediate.
@MethodStats
public boolean mediate(MessageContext messageContext, String direction) {
// In order to avoid a remote registry call occurring on each invocation, we
// directly get the extension sequences from the local registry.
Map localRegistry = messageContext.getConfiguration().getLocalRegistry();
Object sequence = localRegistry.get(EXT_SEQUENCE_PREFIX + direction);
if (sequence instanceof Mediator) {
if (!((Mediator) sequence).mediate(messageContext)) {
return false;
}
}
String apiName = (String) messageContext.getProperty(RESTConstants.SYNAPSE_REST_API);
sequence = localRegistry.get(apiName + "--" + direction);
if (sequence instanceof Mediator) {
return ((Mediator) sequence).mediate(messageContext);
}
return true;
}
use of org.wso2.ballerinalang.compiler.codegen.CodeGenerator.VariableIndex.Kind.LOCAL in project carbon-apimgt by wso2.
the class APIProviderImpl method addAPI.
/**
* Add API metadata, local scopes and URI templates to the database and KeyManager.
*
* @param api API to add
* @param tenantId Tenant Id
* @throws APIManagementException if an error occurs while adding the API
*/
private void addAPI(API api, int tenantId) throws APIManagementException {
int apiId = apiMgtDAO.addAPI(api, tenantId, api.getOrganization());
addLocalScopes(api.getId().getApiName(), api.getUriTemplates(), api.getOrganization());
String tenantDomain = MultitenantUtils.getTenantDomain(APIUtil.replaceEmailDomainBack(api.getId().getProviderName()));
validateOperationPolicyParameters(api, tenantDomain);
addURITemplates(apiId, api, tenantId);
APIEvent apiEvent = new APIEvent(UUID.randomUUID().toString(), System.currentTimeMillis(), APIConstants.EventType.API_CREATE.name(), tenantId, tenantDomain, api.getId().getApiName(), apiId, api.getUuid(), api.getId().getVersion(), api.getType(), api.getContext(), APIUtil.replaceEmailDomainBack(api.getId().getProviderName()), api.getStatus());
APIUtil.sendNotification(apiEvent, APIConstants.NotifierType.API.name());
}
Aggregations