use of org.mule.runtime.api.util.Pair in project mule by mulesoft.
the class SoapConnectionProviderObjectBuilder method build.
/**
* Build a new {@link ForwardingSoapClientConnectionProvider} based on a {@link SoapServiceProvider} instance.
*
* @param result the {@link ResolverSetResult} with the values for the {@link SoapServiceProvider} instance.
* @return a wrapped {@link ForwardingSoapClientConnectionProvider} with error handling and polling mechanisms.
* @throws MuleException
*/
@Override
public Pair<ConnectionProvider<SoapClient>, ResolverSetResult> build(ResolverSetResult result) throws MuleException {
SoapServiceProvider serviceProvider = objectBuilder.build(result);
MessageDispatcherProvider<? extends MessageDispatcher> transport = getCustomTransport(result);
ConnectionProvider<ForwardingSoapClient> provider = new ForwardingSoapClientConnectionProvider(serviceProvider, transport, muleContext);
provider = new ReconnectableConnectionProviderWrapper<>(provider, reconnectionConfig);
provider = new ErrorTypeHandlerConnectionProviderWrapper<>(provider, extensionModel, reconnectionConfig, muleContext);
return new Pair(provider, result);
}
use of org.mule.runtime.api.util.Pair in project mule by mulesoft.
the class OAuthConnectionProviderObjectBuilder method build.
@Override
public Pair<ConnectionProvider<C>, ResolverSetResult> build(ValueResolvingContext context) throws MuleException {
ResolverSetResult result = resolverSet.resolve(context);
ConnectionProvider<C> provider = super.doBuild(result);
OAuthConfig config = new OAuthConfig(ownerConfigName, buildAuthCodeConfig(context.getEvent()), buildOAuthCallbackConfig(context.getEvent()), buildOAuthObjectStoreConfig(context.getEvent()), grantType, getCustomParameters(result), getCallbackValues());
provider = new OAuthConnectionProviderWrapper<>(provider, config, getCallbackValues(), oauthManager, reconnectionConfig);
return new Pair<>(provider, result);
}
use of org.mule.runtime.api.util.Pair in project mule by mulesoft.
the class FileSystemServiceProviderDiscoverer method createServiceProviders.
private List<Pair<ArtifactClassLoader, ServiceProvider>> createServiceProviders(List<ServiceDescriptor> serviceDescriptors, ArtifactClassLoaderFactory<ServiceDescriptor> serviceClassLoaderFactory) throws ServiceResolutionError {
List<Pair<ArtifactClassLoader, ServiceProvider>> serviceProviders = new LinkedList<>();
for (ServiceDescriptor serviceDescriptor : serviceDescriptors) {
final ArtifactClassLoader serviceClassLoader = serviceClassLoaderFactory.create(getServiceArtifactId(serviceDescriptor), serviceDescriptor, apiClassLoader.getClassLoader(), apiClassLoader.getClassLoaderLookupPolicy());
final ServiceProvider serviceProvider = instantiateServiceProvider(serviceClassLoader.getClassLoader(), serviceDescriptor.getServiceProviderClassName());
serviceProviders.add(new Pair<>(serviceClassLoader, serviceProvider));
}
return serviceProviders;
}
use of org.mule.runtime.api.util.Pair in project mule by mulesoft.
the class ReflectionServiceResolver method resolveServices.
@Override
public List<Pair<ArtifactClassLoader, Service>> resolveServices(List<Pair<ArtifactClassLoader, ServiceProvider>> serviceProviders) throws ServiceResolutionError {
List<DependencyAwareServiceProvider> dependencyAwareServiceProviders = createDependencyAwareServiceProviders(serviceProviders);
Map<Class<? extends Service>, Pair<ArtifactClassLoader, ServiceDefinition>> registeredServices = new LinkedHashMap<>();
List<DependencyAwareServiceProvider> unresolvedServiceProviders = new LinkedList<>(dependencyAwareServiceProviders);
List<DependencyAwareServiceProvider> resolvedServiceProviders = new LinkedList<>();
boolean continueResolution = true;
while (continueResolution) {
int initialResolvedCount = resolvedServiceProviders.size();
List<DependencyAwareServiceProvider> pendingUnresolvedServices = new LinkedList<>();
for (DependencyAwareServiceProvider dependencyAwareServiceProvider : unresolvedServiceProviders) {
List<ServiceDefinition> serviceDefinitions = registeredServices.values().stream().map(pair -> pair.getSecond()).collect(toList());
if (isResolvedService(dependencyAwareServiceProvider, serviceDefinitions)) {
serviceProviderResolutionHelper.injectInstance(dependencyAwareServiceProvider.serviceProvider, serviceDefinitions);
for (ServiceDefinition serviceDefinition : dependencyAwareServiceProvider.providedServices()) {
registeredServices.put(serviceDefinition.getServiceClass(), new Pair<>(dependencyAwareServiceProvider.getArtifactClassLoader(), serviceDefinition));
}
resolvedServiceProviders.add(dependencyAwareServiceProvider);
} else {
pendingUnresolvedServices.add(dependencyAwareServiceProvider);
}
}
// Will try to resolve the services that are still unresolved
unresolvedServiceProviders = pendingUnresolvedServices;
continueResolution = resolvedServiceProviders.size() > initialResolvedCount;
}
if (!unresolvedServiceProviders.isEmpty()) {
final Set<Class<? extends Service>> dependencies = new HashSet<>();
for (DependencyAwareServiceProvider dependencyAwareServiceProvider : unresolvedServiceProviders) {
dependencies.addAll(dependencyAwareServiceProvider.getDependencies());
}
throw new ServiceResolutionError("Unable to resolve core service dependencies. Missing some of: " + dependencies);
}
List<Pair<ArtifactClassLoader, Service>> servicePairs = new ArrayList<>();
for (Pair<ArtifactClassLoader, ServiceDefinition> pair : registeredServices.values()) {
servicePairs.add(new Pair<>(pair.getFirst(), pair.getSecond().getService()));
}
return servicePairs;
}
use of org.mule.runtime.api.util.Pair in project mule by mulesoft.
the class DefaultServiceDiscovererTestCase method propagatesServiceResolutionErrors.
@Test(expected = ServiceResolutionError.class)
public void propagatesServiceResolutionErrors() throws Exception {
final List<Pair<ArtifactClassLoader, ServiceProvider>> serviceProviders = new ArrayList<>();
when(serviceProviderDiscoverer.discover()).thenReturn(serviceProviders);
when(serviceResolver.resolveServices(serviceProviders)).thenThrow(new ServiceResolutionError("Error"));
serviceDiscoverer.discoverServices();
}
Aggregations