/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.module.extension.internal.config.dsl.connection; import static org.mule.runtime.api.i18n.I18nMessageFactory.createStaticMessage; import org.mule.runtime.api.config.PoolingProfile; import org.mule.runtime.api.meta.model.ExtensionModel; import org.mule.runtime.api.meta.model.connection.ConnectionProviderModel; import org.mule.runtime.core.api.MuleContext; import org.mule.runtime.core.api.config.ConfigurationException; import org.mule.runtime.core.api.registry.RegistrationException; import org.mule.runtime.core.api.retry.RetryPolicyTemplate; import org.mule.runtime.core.internal.connection.ConnectionManagerAdapter; import org.mule.runtime.extension.api.connectivity.oauth.OAuthModelProperty; import org.mule.runtime.module.extension.internal.config.dsl.AbstractExtensionObjectFactory; import org.mule.runtime.module.extension.internal.runtime.config.ConnectionProviderObjectBuilder; import org.mule.runtime.module.extension.internal.runtime.config.DefaultConnectionProviderObjectBuilder; import org.mule.runtime.module.extension.internal.runtime.connectivity.oauth.ExtensionsOAuthManager; import org.mule.runtime.module.extension.internal.runtime.connectivity.oauth.OAuthConnectionProviderObjectBuilder; import org.mule.runtime.module.extension.internal.runtime.resolver.ConnectionProviderResolver; import org.mule.runtime.module.extension.internal.runtime.resolver.ResolverSet; import org.mule.runtime.module.extension.soap.internal.loader.property.SoapExtensionModelProperty; import org.mule.runtime.module.extension.soap.internal.runtime.connection.SoapConnectionProviderObjectBuilder; import javax.inject.Inject; /** * A {@link AbstractExtensionObjectFactory} that produces {@link ConnectionProviderResolver} instances * * @since 4.0 */ public class ConnectionProviderObjectFactory extends AbstractExtensionObjectFactory<ConnectionProviderResolver> { private final ConnectionProviderModel providerModel; private final ExtensionModel extensionModel; private final ExtensionsOAuthManager oauthManager; private PoolingProfile poolingProfile = null; private RetryPolicyTemplate retryPolicyTemplate = null; private boolean disableValidation = false; @Inject private MuleContext muleContext; public ConnectionProviderObjectFactory(ConnectionProviderModel providerModel, ExtensionModel extensionModel, ExtensionsOAuthManager oauthManager, MuleContext muleContext) { super(muleContext); this.providerModel = providerModel; this.extensionModel = extensionModel; this.oauthManager = oauthManager; } @Override public ConnectionProviderResolver doGetObject() throws Exception { ResolverSet resolverSet = parametersResolver.getParametersAsHashedResolverSet(providerModel, muleContext); ConnectionManagerAdapter connectionManager = getConnectionManager(); ConnectionProviderObjectBuilder builder; if (extensionModel.getModelProperty(SoapExtensionModelProperty.class).isPresent()) { builder = new SoapConnectionProviderObjectBuilder(providerModel, resolverSet, poolingProfile, disableValidation, retryPolicyTemplate, connectionManager, extensionModel, muleContext); } else if (providerModel.getModelProperty(OAuthModelProperty.class).isPresent()) { builder = new OAuthConnectionProviderObjectBuilder(providerModel, resolverSet, poolingProfile, disableValidation, retryPolicyTemplate, oauthManager, connectionManager, extensionModel, muleContext); } else { builder = new DefaultConnectionProviderObjectBuilder(providerModel, resolverSet, poolingProfile, disableValidation, retryPolicyTemplate, connectionManager, extensionModel, muleContext); } return new ConnectionProviderResolver<>(builder, resolverSet, muleContext); } private ConnectionManagerAdapter getConnectionManager() throws ConfigurationException { try { return muleContext.getRegistry().lookupObject(ConnectionManagerAdapter.class); } catch (RegistrationException e) { throw new ConfigurationException(createStaticMessage("Could not obtain connection manager adapter form registry"), e); } } public void setPoolingProfile(PoolingProfile poolingProfile) { this.poolingProfile = poolingProfile; } public void setRetryPolicyTemplate(RetryPolicyTemplate retryPolicyTemplate) { this.retryPolicyTemplate = retryPolicyTemplate; } public void setDisableValidation(boolean disableValidation) { this.disableValidation = disableValidation; } }