use of org.eclipse.epp.internal.mpc.core.transport.httpclient.HttpClientTransport in project epp.mpc by eclipse.
the class TransportFactoryTest method createClient.
private static HttpClientTransport createClient(HttpClientCustomizer... customizers) {
if (customizers == null || customizers.length == 0) {
return new HttpClientTransport();
}
List<ServiceRegistration<?>> registrations = new ArrayList<ServiceRegistration<?>>();
for (int i = 0; i < customizers.length; i++) {
HttpClientCustomizer customizer = customizers[i];
Dictionary<String, Object> serviceProperties = ServiceUtil.serviceName("org.eclipse.epp.mpc.core.transport.http.test.customizer." + i, ServiceUtil.serviceRanking(1000 + i, null));
ServiceRegistration<?> registration = FrameworkUtil.getBundle(HttpClientCustomizer.class).getBundleContext().registerService(HttpClientCustomizer.class, customizer, serviceProperties);
registrations.add(registration);
}
HttpClientTransport httpClientTransport;
try {
httpClientTransport = new HttpClientTransport();
} finally {
for (ServiceRegistration<?> registration : registrations) {
registration.unregister();
}
}
return httpClientTransport;
}
use of org.eclipse.epp.internal.mpc.core.transport.httpclient.HttpClientTransport in project epp.mpc by eclipse.
the class TransportFactoryTest method interceptRequest.
private static AbortRequestCustomizer interceptRequest(HttpClientCustomizer... customizers) throws Exception {
AbortRequestCustomizer abortRequestCustomizer = new AbortRequestCustomizer();
HttpClientCustomizer[] mergedCustomizers;
if (customizers == null || customizers.length == 0) {
mergedCustomizers = new HttpClientCustomizer[] { abortRequestCustomizer };
} else {
mergedCustomizers = new HttpClientCustomizer[customizers.length + 1];
System.arraycopy(customizers, 0, mergedCustomizers, 0, customizers.length);
mergedCustomizers[customizers.length] = abortRequestCustomizer;
}
HttpClientTransport httpClientTransport = createClient(mergedCustomizers);
HttpClient client = httpClientTransport.getClient();
HttpContext context = new BasicHttpContext();
try {
client.execute(new HttpGet("http://localhost/test"), context);
fail("Expected request execution to fail");
} catch (ConnectionClosedException ex) {
// ignore expected exception
}
return abortRequestCustomizer;
}
use of org.eclipse.epp.internal.mpc.core.transport.httpclient.HttpClientTransport in project epp.mpc by eclipse.
the class TransportFactoryTest method testHttpClientTransportFallback.
@Test
public void testHttpClientTransportFallback() throws Exception {
HttpClientTransport httpClientTransport = createFailingHttpClientTransport();
HttpClientTransportFactory httpClientFactory = new HttpClientTransportFactory();
httpClientFactory.setTransport(httpClientTransport);
ITransportFactory secondaryFactory = Mockito.mock(ITransportFactory.class);
ITransport secondaryTransport = Mockito.mock(ITransport.class);
InputStream expectedResultStream = new ByteArrayInputStream("Secondary transport".getBytes("UTF-8"));
Mockito.when(secondaryFactory.getTransport()).thenReturn(secondaryTransport);
Mockito.when(secondaryTransport.stream(Matchers.<URI>any(), Matchers.<IProgressMonitor>any())).thenReturn(expectedResultStream);
FallbackTransportFactory fallbackTransportFactory = new FallbackTransportFactory();
fallbackTransportFactory.setPrimaryFactory(httpClientFactory);
fallbackTransportFactory.setSecondaryFactory(secondaryFactory);
InputStream stream = fallbackTransportFactory.getTransport().stream(URI.create("http://127.0.0.1:54321"), null);
assertSame(expectedResultStream, stream);
}
use of org.eclipse.epp.internal.mpc.core.transport.httpclient.HttpClientTransport in project epp.mpc by eclipse.
the class TransportFactoryTest method createFailingHttpClientTransport.
private static HttpClientTransport createFailingHttpClientTransport() {
return new HttpClientTransport() {
@Override
protected Response execute(Request request, URI uri) throws ClientProtocolException, IOException {
HttpResponse mockResponse = mockResponse(mockStatusLine(503, "Expected test error"), null);
try {
Constructor<Response> ctor = Response.class.getDeclaredConstructor(HttpResponse.class);
ctor.setAccessible(true);
return ctor.newInstance(mockResponse);
} catch (Exception e) {
try {
fail("Failed to create response");
} catch (AssertionError ae) {
ae.initCause(e);
throw ae;
}
return null;
}
}
};
}
use of org.eclipse.epp.internal.mpc.core.transport.httpclient.HttpClientTransport in project epp.mpc by eclipse.
the class MappedTransportFactory method getTransport.
public ITransport getTransport() {
return new ITransport() {
private final ITransport delegateTransport = delegate.getTransport();
public InputStream stream(URI location, IProgressMonitor monitor) throws FileNotFoundException, ServiceUnavailableException, CoreException {
URI mapped = mapping.get(location);
if (mapped == null) {
if (location.getQuery() != null || location.getFragment() != null) {
try {
URI stripped = new URI(location.getScheme(), location.getHost(), location.getPath(), null);
mapped = mapping.get(stripped);
} catch (URISyntaxException e) {
}
}
}
if (mapped == null) {
mapped = location;
} else if (!mapped.getScheme().toLowerCase().startsWith("http")) {
ITransport nonHttpTransport = getNonHttpTransport(delegate, delegateTransport);
if (nonHttpTransport != null) {
return nonHttpTransport.stream(mapped, monitor);
}
}
return delegateTransport.stream(mapped, monitor);
}
private ITransport getNonHttpTransport(ITransportFactory delegate, ITransport delegateTransport) {
ITransport nonHttpTransport = delegateTransport;
if (delegate instanceof HttpClientTransportFactory) {
FallbackTransportFactory fallbackFactory = new FallbackTransportFactory();
fallbackFactory.setPrimaryFactory(delegate);
delegate = fallbackFactory;
}
if (delegate instanceof FallbackTransportFactory) {
FallbackTransportFactory fallbackFactory = (FallbackTransportFactory) delegate;
ITransportFactory primaryFactory = fallbackFactory.getPrimaryFactory();
if (primaryFactory instanceof HttpClientTransportFactory) {
ITransportFactory secondaryFactory = fallbackFactory.getFallbackFactory();
if (secondaryFactory != null) {
nonHttpTransport = secondaryFactory.getTransport();
}
}
}
if (nonHttpTransport instanceof HttpClientTransport) {
nonHttpTransport = new JavaPlatformTransportFactory().getTransport();
}
return nonHttpTransport;
}
};
}
Aggregations