Search in sources :

Example 21 with Environment

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

the class TestUtils method mockAPIMConfiguration.

public static void mockAPIMConfiguration() throws RegistryException, UserStoreException, XMLStreamException {
    ServiceReferenceHolder sh = mockRegistryAndUserRealm(-1234);
    APIManagerConfigurationService amConfigService = Mockito.mock(APIManagerConfigurationService.class);
    APIManagerConfiguration amConfig = Mockito.mock(APIManagerConfiguration.class);
    PowerMockito.when(sh.getAPIManagerConfigurationService()).thenReturn(amConfigService);
    PowerMockito.when(amConfigService.getAPIManagerConfiguration()).thenReturn(amConfig);
    Map<String, Environment> apiGatewayEnvironments = new HashMap<String, Environment>();
    Environment env1 = new Environment();
    env1.setApiGatewayEndpoint("https://abc.com, http://abc.com");
    apiGatewayEnvironments.put("PROD", env1);
    // Mocking some commonly used configs
    PowerMockito.when(amConfig.getApiGatewayEnvironments()).thenReturn(apiGatewayEnvironments);
    PowerMockito.when(amConfig.getFirstProperty(APIConstants.API_GATEWAY_TYPE)).thenReturn(APIConstants.API_GATEWAY_TYPE_SYNAPSE);
    PowerMockito.when(amConfig.getFirstProperty(APIConstants.API_PUBLISHER_ENABLE_API_DOC_VISIBILITY_LEVELS)).thenReturn("true", "false");
    ThrottleProperties throttleProperties = new ThrottleProperties();
    PowerMockito.when(amConfig.getThrottleProperties()).thenReturn(throttleProperties);
}
Also used : ServiceReferenceHolder(org.wso2.carbon.apimgt.impl.internal.ServiceReferenceHolder) HashMap(java.util.HashMap) Environment(org.wso2.carbon.apimgt.api.model.Environment) ThrottleProperties(org.wso2.carbon.apimgt.impl.dto.ThrottleProperties)

Example 22 with Environment

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

the class APIProviderImpl method getLightweightAPIByUUID.

/**
 * Get minimal details of API by registry artifact id
 *
 * @param uuid Registry artifact id
 * @param organization identifier of the organization
 * @return API of the provided artifact id
 * @throws APIManagementException
 */
@Override
public API getLightweightAPIByUUID(String uuid, String organization) throws APIManagementException {
    try {
        Organization org = new Organization(organization);
        PublisherAPI publisherAPI = apiPersistenceInstance.getPublisherAPI(org, uuid);
        if (publisherAPI != null) {
            API api = APIMapper.INSTANCE.toApi(publisherAPI);
            checkAccessControlPermission(userNameWithoutChange, api.getAccessControl(), api.getAccessControlRoles());
            // / populate relavant external info
            // environment
            String environmentString = null;
            if (api.getEnvironments() != null) {
                environmentString = String.join(",", api.getEnvironments());
            }
            api.setEnvironments(APIUtil.extractEnvironmentsForAPI(environmentString, organization));
            // CORS . if null is returned, set default config from the configuration
            if (api.getCorsConfiguration() == null) {
                api.setCorsConfiguration(APIUtil.getDefaultCorsConfiguration());
            }
            api.setOrganization(organization);
            return api;
        } else {
            String msg = "Failed to get API. API artifact corresponding to artifactId " + uuid + " does not exist";
            throw new APIMgtResourceNotFoundException(msg);
        }
    } catch (APIPersistenceException e) {
        String msg = "Failed to get API with uuid " + uuid;
        throw new APIManagementException(msg, e);
    }
}
Also used : APIPersistenceException(org.wso2.carbon.apimgt.persistence.exceptions.APIPersistenceException) Organization(org.wso2.carbon.apimgt.persistence.dto.Organization) APIManagementException(org.wso2.carbon.apimgt.api.APIManagementException) PublisherAPI(org.wso2.carbon.apimgt.persistence.dto.PublisherAPI) API(org.wso2.carbon.apimgt.api.model.API) ImportExportAPI(org.wso2.carbon.apimgt.impl.importexport.ImportExportAPI) SubscribedAPI(org.wso2.carbon.apimgt.api.model.SubscribedAPI) PublisherAPI(org.wso2.carbon.apimgt.persistence.dto.PublisherAPI) APIMgtResourceNotFoundException(org.wso2.carbon.apimgt.api.APIMgtResourceNotFoundException)

Example 23 with Environment

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

the class APIManagerConfiguration method setEnvironmentConfig.

/**
 * Set property values for each gateway environments defined in the api-manager.xml config file
 *
 * @param environmentElem OMElement of a single environment in the gateway environments list
 */
void setEnvironmentConfig(OMElement environmentElem) throws APIManagementException {
    Environment environment = new Environment();
    environment.setType(environmentElem.getAttributeValue(new QName("type")));
    String showInConsole = environmentElem.getAttributeValue(new QName("api-console"));
    if (showInConsole != null) {
        environment.setShowInConsole(Boolean.parseBoolean(showInConsole));
    } else {
        environment.setShowInConsole(true);
    }
    String isDefault = environmentElem.getAttributeValue(new QName("isDefault"));
    if (isDefault != null) {
        environment.setDefault(Boolean.parseBoolean(isDefault));
    } else {
        environment.setDefault(false);
    }
    environment.setName(APIUtil.replaceSystemProperty(environmentElem.getFirstChildWithName(new QName(APIConstants.API_GATEWAY_NAME)).getText()));
    environment.setDisplayName(APIUtil.replaceSystemProperty(environmentElem.getFirstChildWithName(new QName(APIConstants.API_GATEWAY_DISPLAY_NAME)).getText()));
    if (StringUtils.isEmpty(environment.getDisplayName())) {
        environment.setDisplayName(environment.getName());
    }
    environment.setServerURL(APIUtil.replaceSystemProperty(environmentElem.getFirstChildWithName(new QName(APIConstants.API_GATEWAY_SERVER_URL)).getText()));
    environment.setUserName(APIUtil.replaceSystemProperty(environmentElem.getFirstChildWithName(new QName(APIConstants.API_GATEWAY_USERNAME)).getText()));
    OMElement passwordElement = environmentElem.getFirstChildWithName(new QName(APIConstants.API_GATEWAY_PASSWORD));
    String resolvedPassword = MiscellaneousUtil.resolve(passwordElement, secretResolver);
    environment.setPassword(APIUtil.replaceSystemProperty(resolvedPassword));
    String provider = environmentElem.getFirstChildWithName(new QName(APIConstants.API_GATEWAY_PROVIDER)).getText();
    if (StringUtils.isNotEmpty(provider)) {
        environment.setProvider(APIUtil.replaceSystemProperty(provider));
    } else {
        environment.setProvider(APIUtil.replaceSystemProperty(DEFAULT_PROVIDER));
    }
    environment.setApiGatewayEndpoint(APIUtil.replaceSystemProperty(environmentElem.getFirstChildWithName(new QName(APIConstants.API_GATEWAY_ENDPOINT)).getText()));
    OMElement websocketGatewayEndpoint = environmentElem.getFirstChildWithName(new QName(APIConstants.API_WEBSOCKET_GATEWAY_ENDPOINT));
    if (websocketGatewayEndpoint != null) {
        environment.setWebsocketGatewayEndpoint(APIUtil.replaceSystemProperty(websocketGatewayEndpoint.getText()));
    } else {
        environment.setWebsocketGatewayEndpoint(WEBSOCKET_DEFAULT_GATEWAY_URL);
    }
    OMElement webSubGatewayEndpoint = environmentElem.getFirstChildWithName(new QName(APIConstants.API_WEBSUB_GATEWAY_ENDPOINT));
    if (webSubGatewayEndpoint != null) {
        environment.setWebSubGatewayEndpoint(APIUtil.replaceSystemProperty(webSubGatewayEndpoint.getText()));
    } else {
        environment.setWebSubGatewayEndpoint(WEBSUB_DEFAULT_GATEWAY_URL);
    }
    OMElement description = environmentElem.getFirstChildWithName(new QName("Description"));
    if (description != null) {
        environment.setDescription(description.getText());
    } else {
        environment.setDescription("");
    }
    environment.setReadOnly(true);
    List<VHost> vhosts = new LinkedList<>();
    environment.setVhosts(vhosts);
    environment.setEndpointsAsVhost();
    Iterator vhostIterator = environmentElem.getFirstChildWithName(new QName(APIConstants.API_GATEWAY_VIRTUAL_HOSTS)).getChildrenWithLocalName(APIConstants.API_GATEWAY_VIRTUAL_HOST);
    while (vhostIterator.hasNext()) {
        OMElement vhostElem = (OMElement) vhostIterator.next();
        String httpEp = APIUtil.replaceSystemProperty(vhostElem.getFirstChildWithName(new QName(APIConstants.API_GATEWAY_VIRTUAL_HOST_HTTP_ENDPOINT)).getText());
        String httpsEp = APIUtil.replaceSystemProperty(vhostElem.getFirstChildWithName(new QName(APIConstants.API_GATEWAY_VIRTUAL_HOST_HTTPS_ENDPOINT)).getText());
        String wsEp = APIUtil.replaceSystemProperty(vhostElem.getFirstChildWithName(new QName(APIConstants.API_GATEWAY_VIRTUAL_HOST_WS_ENDPOINT)).getText());
        String wssEp = APIUtil.replaceSystemProperty(vhostElem.getFirstChildWithName(new QName(APIConstants.API_GATEWAY_VIRTUAL_HOST_WSS_ENDPOINT)).getText());
        String webSubHttpEp = APIUtil.replaceSystemProperty(vhostElem.getFirstChildWithName(new QName(APIConstants.API_GATEWAY_VIRTUAL_HOST_WEBSUB_HTTP_ENDPOINT)).getText());
        String webSubHttpsEp = APIUtil.replaceSystemProperty(vhostElem.getFirstChildWithName(new QName(APIConstants.API_GATEWAY_VIRTUAL_HOST_WEBSUB_HTTPS_ENDPOINT)).getText());
        // Prefix websub endpoints with 'websub_' so that the endpoint URL
        // would begin with: 'websub_http://', since API type is identified by the URL protocol below.
        webSubHttpEp = "websub_" + webSubHttpEp;
        webSubHttpsEp = "websub_" + webSubHttpsEp;
        VHost vhost = VHost.fromEndpointUrls(new String[] { httpEp, httpsEp, wsEp, wssEp, webSubHttpEp, webSubHttpsEp });
        vhosts.add(vhost);
    }
    OMElement properties = environmentElem.getFirstChildWithName(new QName(APIConstants.API_GATEWAY_ADDITIONAL_PROPERTIES));
    Map<String, String> additionalProperties = new HashMap<>();
    if (properties != null) {
        Iterator gatewayAdditionalProperties = properties.getChildrenWithLocalName(APIConstants.API_GATEWAY_ADDITIONAL_PROPERTY);
        while (gatewayAdditionalProperties.hasNext()) {
            OMElement propertyElem = (OMElement) gatewayAdditionalProperties.next();
            String propName = propertyElem.getAttributeValue(new QName("name"));
            String resolvedValue = MiscellaneousUtil.resolve(propertyElem, secretResolver);
            additionalProperties.put(propName, resolvedValue);
        }
    }
    environment.setAdditionalProperties(additionalProperties);
    if (!apiGatewayEnvironments.containsKey(environment.getName())) {
        apiGatewayEnvironments.put(environment.getName(), environment);
    } else {
        // This will happen only on server startup therefore we log and continue the startup
        log.error("Duplicate environment name found in api-manager.xml " + environment.getName());
    }
}
Also used : VHost(org.wso2.carbon.apimgt.api.model.VHost) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) QName(javax.xml.namespace.QName) Iterator(java.util.Iterator) Environment(org.wso2.carbon.apimgt.api.model.Environment) RecommendationEnvironment(org.wso2.carbon.apimgt.impl.recommendationmgt.RecommendationEnvironment) OMElement(org.apache.axiom.om.OMElement) LinkedList(java.util.LinkedList)

Example 24 with Environment

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

the class APIProviderImpl method removeUnDeployedAPIRevision.

@Override
public void removeUnDeployedAPIRevision(String apiId, String apiRevisionUUID, String environment) throws APIManagementException {
    Set<DeployedAPIRevision> environmentsToRemove = new HashSet<>();
    environmentsToRemove.add(new DeployedAPIRevision(apiRevisionUUID, environment));
    apiMgtDAO.removeDeployedAPIRevision(apiId, environmentsToRemove);
}
Also used : DeployedAPIRevision(org.wso2.carbon.apimgt.api.model.DeployedAPIRevision) HashSet(java.util.HashSet) LinkedHashSet(java.util.LinkedHashSet)

Example 25 with Environment

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

the class APIManagerConfiguration method readChildElements.

private void readChildElements(OMElement serverConfig, Stack<String> nameStack) throws APIManagementException {
    for (Iterator childElements = serverConfig.getChildElements(); childElements.hasNext(); ) {
        OMElement element = (OMElement) childElements.next();
        String localName = element.getLocalName();
        nameStack.push(localName);
        if ("APIKeyValidator".equals(localName)) {
            OMElement keyManagerServiceUrl = element.getFirstChildWithName(new QName(APIConstants.AUTHSERVER_URL));
            if (keyManagerServiceUrl != null) {
                String serviceUrl = keyManagerServiceUrl.getText();
                addKeyManagerConfigsAsSystemProperties(APIUtil.replaceSystemProperty(serviceUrl));
            }
        } else if (TOKEN_REVOCATION_NOTIFIERS.equals(localName)) {
            tokenRevocationClassName = element.getAttributeValue(new QName("class"));
        } else if (REALTIME_NOTIFIER.equals(localName)) {
            Iterator revocationPropertiesIterator = element.getChildrenWithLocalName("Property");
            Properties properties = new Properties();
            while (revocationPropertiesIterator.hasNext()) {
                OMElement propertyElem = (OMElement) revocationPropertiesIterator.next();
                properties.setProperty(propertyElem.getAttributeValue(new QName("name")), propertyElem.getText());
            }
            realtimeNotifierProperties = properties;
        } else if (PERSISTENT_NOTIFIER.equals(localName)) {
            Iterator revocationPropertiesIterator = element.getChildrenWithLocalName("Property");
            Properties properties = new Properties();
            while (revocationPropertiesIterator.hasNext()) {
                OMElement propertyElem = (OMElement) revocationPropertiesIterator.next();
                if (propertyElem.getAttributeValue(new QName("name")).equalsIgnoreCase("password")) {
                    if (secretResolver.isInitialized() && secretResolver.isTokenProtected(TOKEN_REVOCATION_NOTIFIERS_PASSWORD)) {
                        properties.setProperty(propertyElem.getAttributeValue(new QName("name")), secretResolver.resolve(TOKEN_REVOCATION_NOTIFIERS_PASSWORD));
                    } else {
                        properties.setProperty(propertyElem.getAttributeValue(new QName("name")), propertyElem.getText());
                    }
                } else {
                    properties.setProperty(propertyElem.getAttributeValue(new QName("name")), propertyElem.getText());
                }
            }
            persistentNotifierProperties = properties;
        } else if ("Analytics".equals(localName)) {
            OMElement properties = element.getFirstChildWithName(new QName("Properties"));
            Iterator analyticsPropertiesIterator = properties.getChildrenWithLocalName("Property");
            Map<String, String> analyticsProps = new HashMap<>();
            while (analyticsPropertiesIterator.hasNext()) {
                OMElement propertyElem = (OMElement) analyticsPropertiesIterator.next();
                String name = propertyElem.getAttributeValue(new QName("name"));
                String value = propertyElem.getText();
                analyticsProps.put(name, value);
            }
            OMElement authTokenElement = element.getFirstChildWithName(new QName("AuthToken"));
            String resolvedAuthToken = MiscellaneousUtil.resolve(authTokenElement, secretResolver);
            analyticsProps.put("auth.api.token", resolvedAuthToken);
            analyticsProperties = analyticsProps;
        } else if ("PersistenceConfigs".equals(localName)) {
            OMElement properties = element.getFirstChildWithName(new QName("Properties"));
            Iterator analyticsPropertiesIterator = properties.getChildrenWithLocalName("Property");
            Map<String, String> persistenceProps = new HashMap<>();
            while (analyticsPropertiesIterator.hasNext()) {
                OMElement propertyElem = (OMElement) analyticsPropertiesIterator.next();
                String name = propertyElem.getAttributeValue(new QName("name"));
                String value = propertyElem.getText();
                persistenceProps.put(name, value);
            }
            persistenceProperties = persistenceProps;
        } else if (APIConstants.REDIS_CONFIG.equals(localName)) {
            OMElement redisHost = element.getFirstChildWithName(new QName(APIConstants.CONFIG_REDIS_HOST));
            OMElement redisPort = element.getFirstChildWithName(new QName(APIConstants.CONFIG_REDIS_PORT));
            OMElement redisUser = element.getFirstChildWithName(new QName(APIConstants.CONFIG_REDIS_USER));
            OMElement redisPassword = element.getFirstChildWithName(new QName(APIConstants.CONFIG_REDIS_PASSWORD));
            OMElement redisDatabaseId = element.getFirstChildWithName(new QName(APIConstants.CONFIG_REDIS_DATABASE_ID));
            OMElement redisConnectionTimeout = element.getFirstChildWithName(new QName(APIConstants.CONFIG_REDIS_CONNECTION_TIMEOUT));
            OMElement redisIsSslEnabled = element.getFirstChildWithName(new QName(APIConstants.CONFIG_REDIS_IS_SSL_ENABLED));
            OMElement propertiesElement = element.getFirstChildWithName(new QName(APIConstants.CONFIG_REDIS_PROPERTIES));
            redisConfig.setRedisEnabled(true);
            redisConfig.setHost(redisHost.getText());
            redisConfig.setPort(Integer.parseInt(redisPort.getText()));
            if (redisUser != null && redisPassword != null && redisDatabaseId != null && redisConnectionTimeout != null && redisIsSslEnabled != null) {
                redisConfig.setUser(redisUser.getText());
                redisConfig.setPassword(MiscellaneousUtil.resolve(redisPassword, secretResolver).toCharArray());
                redisConfig.setDatabaseId(Integer.parseInt(redisDatabaseId.getText()));
                redisConfig.setConnectionTimeout(Integer.parseInt(redisConnectionTimeout.getText()));
                redisConfig.setSslEnabled(Boolean.parseBoolean(redisIsSslEnabled.getText()));
            }
            if (propertiesElement != null) {
                Iterator<OMElement> properties = propertiesElement.getChildElements();
                if (properties != null) {
                    while (properties.hasNext()) {
                        OMElement propertyNode = properties.next();
                        if (APIConstants.CONFIG_REDIS_MAX_TOTAL.equals(propertyNode.getLocalName())) {
                            redisConfig.setMaxTotal(Integer.parseInt(propertyNode.getText()));
                        } else if (APIConstants.CONFIG_REDIS_MAX_IDLE.equals(propertyNode.getLocalName())) {
                            redisConfig.setMaxIdle(Integer.parseInt(propertyNode.getText()));
                        } else if (APIConstants.CONFIG_REDIS_MIN_IDLE.equals(propertyNode.getLocalName())) {
                            redisConfig.setMinIdle(Integer.parseInt(propertyNode.getText()));
                        } else if (APIConstants.CONFIG_REDIS_TEST_ON_BORROW.equals(propertyNode.getLocalName())) {
                            redisConfig.setTestOnBorrow(Boolean.parseBoolean(propertyNode.getText()));
                        } else if (APIConstants.CONFIG_REDIS_TEST_ON_RETURN.equals(propertyNode.getLocalName())) {
                            redisConfig.setTestOnReturn(Boolean.parseBoolean(propertyNode.getText()));
                        } else if (APIConstants.CONFIG_REDIS_TEST_WHILE_IDLE.equals(propertyNode.getLocalName())) {
                            redisConfig.setTestWhileIdle(Boolean.parseBoolean(propertyNode.getText()));
                        } else if (APIConstants.CONFIG_REDIS_BLOCK_WHEN_EXHAUSTED.equals(propertyNode.getLocalName())) {
                            redisConfig.setBlockWhenExhausted(Boolean.parseBoolean(propertyNode.getText()));
                        } else if (APIConstants.CONFIG_REDIS_MIN_EVICTABLE_IDLE_TIME_IN_MILLIS.equals(propertyNode.getLocalName())) {
                            redisConfig.setMinEvictableIdleTimeMillis(Long.parseLong(propertyNode.getText()));
                        } else if (APIConstants.CONFIG_REDIS_TIME_BETWEEN_EVICTION_RUNS_IN_MILLIS.equals(propertyNode.getLocalName())) {
                            redisConfig.setTimeBetweenEvictionRunsMillis(Long.parseLong(propertyNode.getText()));
                        } else if (APIConstants.CONFIG_REDIS_NUM_TESTS_PER_EVICTION_RUNS.equals(propertyNode.getLocalName())) {
                            redisConfig.setNumTestsPerEvictionRun(Integer.parseInt(propertyNode.getText()));
                        }
                    }
                }
            }
        } else if (elementHasText(element)) {
            String key = getKey(nameStack);
            String value = MiscellaneousUtil.resolve(element, secretResolver);
            addToConfiguration(key, APIUtil.replaceSystemProperty(value));
        } else if ("Environments".equals(localName)) {
            Iterator environmentIterator = element.getChildrenWithLocalName("Environment");
            apiGatewayEnvironments = new LinkedHashMap<String, Environment>();
            while (environmentIterator.hasNext()) {
                OMElement environmentElem = (OMElement) environmentIterator.next();
                setEnvironmentConfig(environmentElem);
            }
        } else if (APIConstants.EXTERNAL_API_STORES.equals(localName)) {
            // Initialize 'externalAPIStores' config elements
            Iterator apistoreIterator = element.getChildrenWithLocalName("ExternalAPIStore");
            externalAPIStores = new HashSet<APIStore>();
            while (apistoreIterator.hasNext()) {
                APIStore store = new APIStore();
                OMElement storeElem = (OMElement) apistoreIterator.next();
                String type = storeElem.getAttributeValue(new QName(APIConstants.EXTERNAL_API_STORE_TYPE));
                // Set Store type [eg:wso2]
                store.setType(type);
                String className = storeElem.getAttributeValue(new QName(APIConstants.EXTERNAL_API_STORE_CLASS_NAME));
                try {
                    store.setPublisher((APIPublisher) APIUtil.getClassInstance(className));
                } catch (InstantiationException e) {
                    String msg = "One or more classes defined in" + APIConstants.EXTERNAL_API_STORE_CLASS_NAME + "cannot be instantiated";
                    log.error(msg, e);
                    throw new APIManagementException(msg, e);
                } catch (IllegalAccessException e) {
                    String msg = "One or more classes defined in" + APIConstants.EXTERNAL_API_STORE_CLASS_NAME + "cannot be access";
                    log.error(msg, e);
                    throw new APIManagementException(msg, e);
                } catch (ClassNotFoundException e) {
                    String msg = "One or more classes defined in" + APIConstants.EXTERNAL_API_STORE_CLASS_NAME + "cannot be found";
                    log.error(msg, e);
                    throw new APIManagementException(msg, e);
                }
                String name = storeElem.getAttributeValue(new QName(APIConstants.EXTERNAL_API_STORE_ID));
                if (name == null) {
                    log.error("The ExternalAPIStore name attribute is not defined in api-manager.xml.");
                }
                // Set store name
                store.setName(name);
                OMElement configDisplayName = storeElem.getFirstChildWithName(new QName(APIConstants.EXTERNAL_API_STORE_DISPLAY_NAME));
                String displayName = (configDisplayName != null) ? APIUtil.replaceSystemProperty(configDisplayName.getText()) : name;
                // Set store display name
                store.setDisplayName(displayName);
                store.setEndpoint(APIUtil.replaceSystemProperty(storeElem.getFirstChildWithName(new QName(APIConstants.EXTERNAL_API_STORE_ENDPOINT)).getText()));
                store.setPublished(false);
                if (APIConstants.WSO2_API_STORE_TYPE.equals(type)) {
                    OMElement password = storeElem.getFirstChildWithName(new QName(APIConstants.EXTERNAL_API_STORE_PASSWORD));
                    if (password != null) {
                        String value = MiscellaneousUtil.resolve(password, secretResolver);
                        store.setPassword(APIUtil.replaceSystemProperty(value));
                        store.setUsername(APIUtil.replaceSystemProperty(storeElem.getFirstChildWithName(new QName(APIConstants.EXTERNAL_API_STORE_USERNAME)).getText()));
                    } else {
                        log.error("The user-credentials of API Publisher is not defined in the <ExternalAPIStore> " + "config of api-manager.xml.");
                    }
                }
                externalAPIStores.add(store);
            }
        } else if (APIConstants.LOGIN_CONFIGS.equals(localName)) {
            Iterator loginConfigIterator = element.getChildrenWithLocalName(APIConstants.LOGIN_CONFIGS);
            while (loginConfigIterator.hasNext()) {
                OMElement loginOMElement = (OMElement) loginConfigIterator.next();
                parseLoginConfig(loginOMElement);
            }
        } else if (APIConstants.AdvancedThrottleConstants.THROTTLING_CONFIGURATIONS.equals(localName)) {
            setThrottleProperties(serverConfig);
        } else if (APIConstants.WorkflowConfigConstants.WORKFLOW.equals(localName)) {
            setWorkflowProperties(serverConfig);
        } else if (APIConstants.ApplicationAttributes.APPLICATION_ATTRIBUTES.equals(localName)) {
            Iterator iterator = element.getChildrenWithLocalName(APIConstants.ApplicationAttributes.ATTRIBUTE);
            while (iterator.hasNext()) {
                OMElement omElement = (OMElement) iterator.next();
                Iterator attributes = omElement.getChildElements();
                JSONObject jsonObject = new JSONObject();
                boolean isHidden = Boolean.parseBoolean(omElement.getAttributeValue(new QName(APIConstants.ApplicationAttributes.HIDDEN)));
                boolean isRequired = Boolean.parseBoolean(omElement.getAttributeValue(new QName(APIConstants.ApplicationAttributes.REQUIRED)));
                jsonObject.put(APIConstants.ApplicationAttributes.HIDDEN, isHidden);
                while (attributes.hasNext()) {
                    OMElement attribute = (OMElement) attributes.next();
                    if (attribute.getLocalName().equals(APIConstants.ApplicationAttributes.NAME)) {
                        jsonObject.put(APIConstants.ApplicationAttributes.ATTRIBUTE, attribute.getText());
                    } else if (attribute.getLocalName().equals(APIConstants.ApplicationAttributes.DESCRIPTION)) {
                        jsonObject.put(APIConstants.ApplicationAttributes.DESCRIPTION, attribute.getText());
                    } else if (attribute.getLocalName().equals(APIConstants.ApplicationAttributes.TOOLTIP)) {
                        jsonObject.put(APIConstants.ApplicationAttributes.TOOLTIP, attribute.getText());
                    } else if (attribute.getLocalName().equals(APIConstants.ApplicationAttributes.TYPE)) {
                        jsonObject.put(APIConstants.ApplicationAttributes.TYPE, attribute.getText());
                    } else if (attribute.getLocalName().equals(APIConstants.ApplicationAttributes.DEFAULT) && isRequired) {
                        jsonObject.put(APIConstants.ApplicationAttributes.DEFAULT, attribute.getText());
                    }
                }
                if (isHidden && isRequired && !jsonObject.containsKey(APIConstants.ApplicationAttributes.DEFAULT)) {
                    log.error("A default value needs to be given for required, hidden application attributes.");
                }
                jsonObject.put(APIConstants.ApplicationAttributes.REQUIRED, isRequired);
                applicationAttributes.add(jsonObject);
            }
        } else if (APIConstants.Monetization.MONETIZATION_CONFIG.equals(localName)) {
            OMElement additionalAttributes = element.getFirstChildWithName(new QName(APIConstants.Monetization.ADDITIONAL_ATTRIBUTES));
            if (additionalAttributes != null) {
                setMonetizationAdditionalAttributes(additionalAttributes);
            }
        } else if (APIConstants.JWT_CONFIGS.equals(localName)) {
            setJWTConfiguration(element);
        } else if (APIConstants.TOKEN_ISSUERS.equals(localName)) {
            setJWTTokenIssuers(element);
        } else if (APIConstants.API_RECOMMENDATION.equals(localName)) {
            setRecommendationConfigurations(element);
        } else if (APIConstants.GlobalCacheInvalidation.GLOBAL_CACHE_INVALIDATION.equals(localName)) {
            setGlobalCacheInvalidationConfiguration(element);
        } else if (APIConstants.KeyManager.EVENT_HUB_CONFIGURATIONS.equals(localName)) {
            setEventHubConfiguration(element);
        } else if (APIConstants.GatewayArtifactSynchronizer.SYNC_RUNTIME_ARTIFACTS_PUBLISHER_CONFIG.equals(localName)) {
            setRuntimeArtifactsSyncPublisherConfig(element);
        } else if (APIConstants.GatewayArtifactSynchronizer.SYNC_RUNTIME_ARTIFACTS_GATEWAY_CONFIG.equals(localName)) {
            setRuntimeArtifactsSyncGatewayConfig(element);
        } else if (APIConstants.SkipListConstants.SKIP_LIST_CONFIG.equals(localName)) {
            setSkipListConfigurations(element);
        } else if (APIConstants.ExtensionListenerConstants.EXTENSION_LISTENERS.equals(localName)) {
            setExtensionListenerConfigurations(element);
        } else if (APIConstants.JWT_AUDIENCES.equals(localName)) {
            setRestApiJWTAuthAudiences(element);
        }
        readChildElements(element, nameStack);
        nameStack.pop();
    }
}
Also used : ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) QName(javax.xml.namespace.QName) OMElement(org.apache.axiom.om.OMElement) GatewayArtifactSynchronizerProperties(org.wso2.carbon.apimgt.impl.dto.GatewayArtifactSynchronizerProperties) WorkflowProperties(org.wso2.carbon.apimgt.impl.dto.WorkflowProperties) Properties(java.util.Properties) ThrottleProperties(org.wso2.carbon.apimgt.impl.dto.ThrottleProperties) APIManagementException(org.wso2.carbon.apimgt.api.APIManagementException) JSONObject(org.json.simple.JSONObject) Iterator(java.util.Iterator) Environment(org.wso2.carbon.apimgt.api.model.Environment) RecommendationEnvironment(org.wso2.carbon.apimgt.impl.recommendationmgt.RecommendationEnvironment) APIPublisher(org.wso2.carbon.apimgt.api.model.APIPublisher) Map(java.util.Map) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) HashSet(java.util.HashSet) APIStore(org.wso2.carbon.apimgt.api.model.APIStore)

Aggregations

Environment (org.wso2.carbon.apimgt.api.model.Environment)67 APIManagementException (org.wso2.carbon.apimgt.api.APIManagementException)53 ArrayList (java.util.ArrayList)38 HashMap (java.util.HashMap)28 API (org.wso2.carbon.apimgt.api.model.API)22 IOException (java.io.IOException)21 APIRevisionDeployment (org.wso2.carbon.apimgt.api.model.APIRevisionDeployment)19 Map (java.util.Map)17 APIProvider (org.wso2.carbon.apimgt.api.APIProvider)13 APIIdentifier (org.wso2.carbon.apimgt.api.model.APIIdentifier)12 JsonObject (com.google.gson.JsonObject)11 Gson (com.google.gson.Gson)10 PreparedStatement (java.sql.PreparedStatement)10 SQLException (java.sql.SQLException)10 HashSet (java.util.HashSet)10 APIConsumer (org.wso2.carbon.apimgt.api.APIConsumer)10 SolaceAdminApis (org.wso2.carbon.apimgt.solace.SolaceAdminApis)10 JSONObject (org.json.simple.JSONObject)9 Test (org.junit.Test)9 SubscribedAPI (org.wso2.carbon.apimgt.api.model.SubscribedAPI)9